This commit is contained in:
Bill Zissimopoulos 2016-01-19 22:00:12 -08:00
parent 10d893e23b
commit 8264ace57a

View File

@ -40,12 +40,13 @@ enum
RequestFileDesc = 0, RequestFileDesc = 0,
RequestAccessToken = 1, RequestAccessToken = 1,
RequestProcess = 2, RequestProcess = 2,
/* OverwriteRequest */ /* OverwriteRequest */
//RequestFileDesc = 0, //RequestFileDesc = 0,
RequestFileObject = 1, RequestFileObject = 1,
RequestStatus = 2, RequestState = 2,
/* RequestFiniAction */ /* RequestState */
RequestPending = 0, RequestPending = 0,
RequestProcessing = 1, RequestProcessing = 1,
}; };
@ -410,7 +411,7 @@ NTSTATUS FspFsvolCreatePrepare(
return STATUS_USER_MAPPED_FILE; return STATUS_USER_MAPPED_FILE;
} }
FspIopRequestContext(Request, RequestStatus) = (PVOID)RequestProcessing; FspIopRequestContext(Request, RequestState) = (PVOID)RequestProcessing;
/* purge any caches on this file */ /* purge any caches on this file */
CcPurgeCacheSection(&FileNode->NonPaged->SectionObjectPointers, 0, 0, FALSE); CcPurgeCacheSection(&FileNode->NonPaged->SectionObjectPointers, 0, 0, FALSE);
@ -596,7 +597,7 @@ VOID FspFsvolCreateComplete(
/* associate the FileDesc and FileObject with the Overwrite request */ /* associate the FileDesc and FileObject with the Overwrite request */
FspIopRequestContext(Request, RequestFileDesc) = FileDesc; FspIopRequestContext(Request, RequestFileDesc) = FileDesc;
FspIopRequestContext(Request, RequestFileObject) = FileObject; FspIopRequestContext(Request, RequestFileObject) = FileObject;
FspIopRequestContext(Request, RequestStatus) = (PVOID)RequestPending; FspIopRequestContext(Request, RequestState) = (PVOID)RequestPending;
/* populate the Overwrite request */ /* populate the Overwrite request */
Request->Kind = FspFsctlTransactOverwriteKind; Request->Kind = FspFsctlTransactOverwriteKind;
@ -736,15 +737,15 @@ static VOID FspFsvolCreateOverwriteRequestFini(PVOID Context[3])
FSP_FILE_DESC *FileDesc = Context[RequestFileDesc]; FSP_FILE_DESC *FileDesc = Context[RequestFileDesc];
PFILE_OBJECT FileObject = Context[RequestFileObject]; PFILE_OBJECT FileObject = Context[RequestFileObject];
ULONG Status = (ULONG)(UINT_PTR)Context[RequestStatus]; ULONG State = (ULONG)(UINT_PTR)Context[RequestState];
if (0 != FileDesc) if (0 != FileDesc)
{ {
ASSERT(0 != FileObject); ASSERT(0 != FileObject);
if (RequestPending == Status) if (RequestPending == State)
FspFsvolCreatePostClose(FileDesc); FspFsvolCreatePostClose(FileDesc);
else if (RequestProcessing == Status) else if (RequestProcessing == State)
FspFileNodeRelease(FileDesc->FileNode, Both); FspFileNodeRelease(FileDesc->FileNode, Both);
FspFileNodeClose(FileDesc->FileNode, FileObject, 0); FspFileNodeClose(FileDesc->FileNode, FileObject, 0);
@ -752,7 +753,7 @@ static VOID FspFsvolCreateOverwriteRequestFini(PVOID Context[3])
FspFileDescDelete(FileDesc); FspFileDescDelete(FileDesc);
} }
Context[RequestFileDesc] = Context[RequestFileObject] = Context[RequestStatus] = 0; Context[RequestFileDesc] = Context[RequestFileObject] = Context[RequestState] = 0;
} }
NTSTATUS FspCreate( NTSTATUS FspCreate(