mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-24 01:13:04 -05:00
sys: IRP_MJ_QUERY_DIRECTORY
This commit is contained in:
parent
62191fba36
commit
a69908c5ec
@ -314,7 +314,7 @@ static NTSTATUS FspFsvolQueryDirectoryCopyInPlace(
|
|||||||
UINT64 DirectoryOffset = FileDesc->DirectoryOffset;
|
UINT64 DirectoryOffset = FileDesc->DirectoryOffset;
|
||||||
|
|
||||||
ASSERT(DirInfo == DestBuf);
|
ASSERT(DirInfo == DestBuf);
|
||||||
ASSERT(sizeof(FSP_FSCTL_DIR_INFO) > sizeof(FILE_ID_BOTH_DIR_INFORMATION));
|
ASSERT(sizeof(FSP_FSCTL_DIR_INFO) >= FIELD_OFFSET(FILE_ID_BOTH_DIR_INFORMATION, FileName));
|
||||||
|
|
||||||
Result = FspFsvolQueryDirectoryCopy(DirectoryPattern, CaseInsensitive, &DirectoryOffset,
|
Result = FspFsvolQueryDirectoryCopy(DirectoryPattern, CaseInsensitive, &DirectoryOffset,
|
||||||
FileInformationClass, ReturnSingleEntry,
|
FileInformationClass, ReturnSingleEntry,
|
||||||
@ -572,10 +572,11 @@ NTSTATUS FspFsvolDirectoryControlComplete(
|
|||||||
BOOLEAN Success;
|
BOOLEAN Success;
|
||||||
|
|
||||||
ASSERT(FileNode == FileDesc->FileNode);
|
ASSERT(FileNode == FileDesc->FileNode);
|
||||||
|
ASSERT(Request->Req.QueryDirectory.Offset == FileDesc->DirectoryOffset);
|
||||||
|
|
||||||
if (0 == Response->IoStatus.Information)
|
if (0 == Response->IoStatus.Information)
|
||||||
{
|
{
|
||||||
Result = 0 == Request->Req.QueryDirectory.Offset ?
|
Result = 0 == FileDesc->DirectoryOffset ?
|
||||||
STATUS_NO_SUCH_FILE : STATUS_NO_MORE_FILES;
|
STATUS_NO_SUCH_FILE : STATUS_NO_MORE_FILES;
|
||||||
FSP_RETURN();
|
FSP_RETURN();
|
||||||
}
|
}
|
||||||
@ -598,12 +599,12 @@ NTSTATUS FspFsvolDirectoryControlComplete(
|
|||||||
FSP_RETURN();
|
FSP_RETURN();
|
||||||
}
|
}
|
||||||
|
|
||||||
Success = 0 == Request->Req.QueryDirectory.Offset &&
|
if (0 == FileDesc->DirectoryOffset &&
|
||||||
FspFileNodeTrySetDirInfo(FileNode,
|
FspFileNodeTrySetDirInfo(FileNode,
|
||||||
Irp->AssociatedIrp.SystemBuffer,
|
Irp->AssociatedIrp.SystemBuffer,
|
||||||
(ULONG)Irp->IoStatus.Information,
|
(ULONG)Irp->IoStatus.Information,
|
||||||
DirInfoChangeNumber);
|
DirInfoChangeNumber) &&
|
||||||
if (Success && FspFileNodeReferenceDirInfo(FileNode, &DirInfoBuffer, &DirInfoSize))
|
FspFileNodeReferenceDirInfo(FileNode, &DirInfoBuffer, &DirInfoSize))
|
||||||
{
|
{
|
||||||
Result = FspFsvolQueryDirectoryCopyCache(FileDesc,
|
Result = FspFsvolQueryDirectoryCopyCache(FileDesc,
|
||||||
TRUE,
|
TRUE,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user