mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 08:23:05 -05:00
inc: fsctl: FSP_FSCTL_TRANSACT_REQ QueryDirectory: CaseSensitive
This commit is contained in:
parent
945509ef93
commit
0b61c48cd6
@ -173,7 +173,7 @@ typedef struct
|
|||||||
UINT64 LastWriteTime;
|
UINT64 LastWriteTime;
|
||||||
UINT64 ChangeTime;
|
UINT64 ChangeTime;
|
||||||
UINT64 IndexNumber;
|
UINT64 IndexNumber;
|
||||||
UINT32 HardLinks; /* currently unused: set to 0 */
|
UINT32 HardLinks; /* unimplemented: set to 0 */
|
||||||
} FSP_FSCTL_FILE_INFO;
|
} FSP_FSCTL_FILE_INFO;
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@ -334,6 +334,7 @@ typedef struct
|
|||||||
UINT64 Offset;
|
UINT64 Offset;
|
||||||
UINT32 Length;
|
UINT32 Length;
|
||||||
FSP_FSCTL_TRANSACT_BUF Pattern;
|
FSP_FSCTL_TRANSACT_BUF Pattern;
|
||||||
|
UINT32 CaseSensitive:1; /* FileName comparisons should be case-sensitive */
|
||||||
} QueryDirectory;
|
} QueryDirectory;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
@ -1002,7 +1002,9 @@ static inline
|
|||||||
BOOLEAN FspFileSystemIsOperationCaseSensitive(VOID)
|
BOOLEAN FspFileSystemIsOperationCaseSensitive(VOID)
|
||||||
{
|
{
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request = FspFileSystemGetOperationContext()->Request;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -184,10 +184,9 @@ static NTSTATUS FspFsvolCreateNoLock(
|
|||||||
ULONG Flags = IrpSp->Flags;
|
ULONG Flags = IrpSp->Flags;
|
||||||
KPROCESSOR_MODE RequestorMode =
|
KPROCESSOR_MODE RequestorMode =
|
||||||
FlagOn(Flags, SL_FORCE_ACCESS_CHECK) ? UserMode : Irp->RequestorMode;
|
FlagOn(Flags, SL_FORCE_ACCESS_CHECK) ? UserMode : Irp->RequestorMode;
|
||||||
BOOLEAN CaseSensitiveRequested =
|
|
||||||
BooleanFlagOn(Flags, SL_CASE_SENSITIVE);
|
|
||||||
BOOLEAN CaseSensitive =
|
BOOLEAN CaseSensitive =
|
||||||
CaseSensitiveRequested || FsvolDeviceExtension->VolumeParams.CaseSensitiveSearch;
|
//BooleanFlagOn(Flags, SL_CASE_SENSITIVE) ||
|
||||||
|
!!FsvolDeviceExtension->VolumeParams.CaseSensitiveSearch;
|
||||||
BOOLEAN HasTraversePrivilege =
|
BOOLEAN HasTraversePrivilege =
|
||||||
BooleanFlagOn(AccessState->Flags, TOKEN_HAS_TRAVERSE_PRIVILEGE);
|
BooleanFlagOn(AccessState->Flags, TOKEN_HAS_TRAVERSE_PRIVILEGE);
|
||||||
BOOLEAN HasBackupPrivilege =
|
BOOLEAN HasBackupPrivilege =
|
||||||
@ -501,7 +500,7 @@ static NTSTATUS FspFsvolCreateNoLock(
|
|||||||
Request->Req.Create.HasBackupPrivilege = HasBackupPrivilege;
|
Request->Req.Create.HasBackupPrivilege = HasBackupPrivilege;
|
||||||
Request->Req.Create.HasRestorePrivilege = HasRestorePrivilege;
|
Request->Req.Create.HasRestorePrivilege = HasRestorePrivilege;
|
||||||
Request->Req.Create.OpenTargetDirectory = BooleanFlagOn(Flags, SL_OPEN_TARGET_DIRECTORY);
|
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;
|
Request->Req.Create.NamedStream = MainFileName.Length;
|
||||||
|
|
||||||
ASSERT(
|
ASSERT(
|
||||||
|
@ -584,6 +584,7 @@ static NTSTATUS FspFsvolQueryDirectoryRetry(
|
|||||||
Request->Req.QueryDirectory.UserContext2 = FileDesc->UserContext2;
|
Request->Req.QueryDirectory.UserContext2 = FileDesc->UserContext2;
|
||||||
Request->Req.QueryDirectory.Offset = FileDesc->DirectoryOffset;
|
Request->Req.QueryDirectory.Offset = FileDesc->DirectoryOffset;
|
||||||
Request->Req.QueryDirectory.Length = SystemBufferLength;
|
Request->Req.QueryDirectory.Length = SystemBufferLength;
|
||||||
|
Request->Req.QueryDirectory.CaseSensitive = FileDesc->CaseSensitive;
|
||||||
|
|
||||||
if (FspFileDescDirectoryPatternMatchAll != FileDesc->DirectoryPattern.Buffer)
|
if (FspFileDescDirectoryPatternMatchAll != FileDesc->DirectoryPattern.Buffer)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user