inc: fsctl: FSP_FSCTL_TRANSACT_REQ QueryDirectory: CaseSensitive

This commit is contained in:
Bill Zissimopoulos 2016-12-09 15:35:55 -08:00
parent 945509ef93
commit 0b61c48cd6
4 changed files with 9 additions and 6 deletions

View File

@ -173,7 +173,7 @@ typedef struct
UINT64 LastWriteTime;
UINT64 ChangeTime;
UINT64 IndexNumber;
UINT32 HardLinks; /* currently unused: set to 0 */
UINT32 HardLinks; /* unimplemented: set to 0 */
} FSP_FSCTL_FILE_INFO;
typedef struct
{
@ -334,6 +334,7 @@ typedef struct
UINT64 Offset;
UINT32 Length;
FSP_FSCTL_TRANSACT_BUF Pattern;
UINT32 CaseSensitive:1; /* FileName comparisons should be case-sensitive */
} QueryDirectory;
struct
{

View File

@ -1002,7 +1002,9 @@ static inline
BOOLEAN FspFileSystemIsOperationCaseSensitive(VOID)
{
FSP_FSCTL_TRANSACT_REQ *Request = FspFileSystemGetOperationContext()->Request;
return FspFsctlTransactCreateKind == Request->Kind && Request->Req.Create.CaseSensitive;
return
FspFsctlTransactCreateKind == Request->Kind && Request->Req.Create.CaseSensitive ||
FspFsctlTransactQueryDirectoryKind == Request->Kind && Request->Req.QueryDirectory.CaseSensitive;
}
/*

View File

@ -184,10 +184,9 @@ static NTSTATUS FspFsvolCreateNoLock(
ULONG Flags = IrpSp->Flags;
KPROCESSOR_MODE RequestorMode =
FlagOn(Flags, SL_FORCE_ACCESS_CHECK) ? UserMode : Irp->RequestorMode;
BOOLEAN CaseSensitiveRequested =
BooleanFlagOn(Flags, SL_CASE_SENSITIVE);
BOOLEAN CaseSensitive =
CaseSensitiveRequested || FsvolDeviceExtension->VolumeParams.CaseSensitiveSearch;
//BooleanFlagOn(Flags, SL_CASE_SENSITIVE) ||
!!FsvolDeviceExtension->VolumeParams.CaseSensitiveSearch;
BOOLEAN HasTraversePrivilege =
BooleanFlagOn(AccessState->Flags, TOKEN_HAS_TRAVERSE_PRIVILEGE);
BOOLEAN HasBackupPrivilege =
@ -501,7 +500,7 @@ static NTSTATUS FspFsvolCreateNoLock(
Request->Req.Create.HasBackupPrivilege = HasBackupPrivilege;
Request->Req.Create.HasRestorePrivilege = HasRestorePrivilege;
Request->Req.Create.OpenTargetDirectory = BooleanFlagOn(Flags, SL_OPEN_TARGET_DIRECTORY);
Request->Req.Create.CaseSensitive = CaseSensitiveRequested;
Request->Req.Create.CaseSensitive = CaseSensitive;
Request->Req.Create.NamedStream = MainFileName.Length;
ASSERT(

View File

@ -584,6 +584,7 @@ static NTSTATUS FspFsvolQueryDirectoryRetry(
Request->Req.QueryDirectory.UserContext2 = FileDesc->UserContext2;
Request->Req.QueryDirectory.Offset = FileDesc->DirectoryOffset;
Request->Req.QueryDirectory.Length = SystemBufferLength;
Request->Req.QueryDirectory.CaseSensitive = FileDesc->CaseSensitive;
if (FspFileDescDirectoryPatternMatchAll != FileDesc->DirectoryPattern.Buffer)
{