sys: FSP_FILE_NODE/FSP_FILE_DESC: improve DeleteOnClose/DeletePending handling

This commit is contained in:
Bill Zissimopoulos
2016-02-03 11:50:50 -08:00
parent 93e3e37960
commit 72e0d5a96b
3 changed files with 16 additions and 21 deletions

View File

@ -451,7 +451,6 @@ NTSTATUS FspFsvolCreateComplete(
FSP_FILE_NODE *FileNode = FileDesc->FileNode;
FSP_FILE_NODE *OpenedFileNode;
UNICODE_STRING ReparseFileName;
BOOLEAN DeleteOnClose;
if (FspFsctlTransactCreateKind == Request->Kind)
{
@ -526,13 +525,11 @@ NTSTATUS FspFsvolCreateComplete(
FileNode->IsDirectory = BooleanFlagOn(Response->Rsp.Create.Opened.FileInfo.FileAttributes,
FILE_ATTRIBUTE_DIRECTORY);
FileDesc->UserContext2 = Response->Rsp.Create.Opened.UserContext2;
DeleteOnClose = BooleanFlagOn(IrpSp->Parameters.Create.Options, FILE_DELETE_ON_CLOSE);
FileDesc->DeleteOnClose = BooleanFlagOn(IrpSp->Parameters.Create.Options, FILE_DELETE_ON_CLOSE);
/* open the FileNode */
OpenedFileNode = FspFileNodeOpen(FileNode, FileObject,
Response->Rsp.Create.Opened.GrantedAccess, IrpSp->Parameters.Create.ShareAccess,
DeleteOnClose,
&Result);
if (0 == OpenedFileNode)
{
@ -572,7 +569,7 @@ NTSTATUS FspFsvolCreateComplete(
BOOLEAN FlushImage =
!FlagOn(Response->Rsp.Create.Opened.FileInfo.FileAttributes, FILE_ATTRIBUTE_DIRECTORY) &&
(FlagOn(Response->Rsp.Create.Opened.GrantedAccess, FILE_WRITE_DATA) ||
DeleteOnClose);
BooleanFlagOn(IrpSp->Parameters.Create.Options, FILE_DELETE_ON_CLOSE));
Result = FspFsvolCreateTryOpen(Irp, Response, FileNode, FileDesc, FileObject, FlushImage);
}