From a11005c5b5dc28ca64ebd3f8d2e9a5754fc78b59 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Tue, 8 Dec 2015 13:57:06 -0800 Subject: [PATCH] sys: IRP_MJ_CREATE --- inc/winfsp/fsctl.h | 3 +-- src/sys/create.c | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/inc/winfsp/fsctl.h b/inc/winfsp/fsctl.h index 56c83ed9..6d1c1029 100644 --- a/inc/winfsp/fsctl.h +++ b/inc/winfsp/fsctl.h @@ -93,8 +93,7 @@ typedef struct { struct { - UINT32 CreateDisposition; /* FILE_{SUPERSEDE,CREATE,OPEN,OPEN_IF,OVERWRITE,OVERWRITE_IF} */ - UINT32 CreateOptions; /* FILE_{DIRECTORY_FILE,NON_DIRECTORY_FILE,etc.} */ + UINT32 CreateOptions; /* Disposition: high 8 bits; Options: low 24 bits */ UINT32 FileAttributes; /* FILE_ATTRIBUTE_{NORMAL,DIRECTORY,etc.} */ FSP_FSCTL_TRANSACT_BUF SecurityDescriptor; /* security descriptor for new files */ UINT64 AllocationSize; /* initial allocation size */ diff --git a/src/sys/create.c b/src/sys/create.c index 61555edc..733fe0b6 100644 --- a/src/sys/create.c +++ b/src/sys/create.c @@ -67,8 +67,7 @@ static NTSTATUS FspFsvolCreate( PFILE_OBJECT RelatedFileObject = FileObject->RelatedFileObject; UNICODE_STRING FileName = FileObject->FileName; PACCESS_STATE AccessState = IrpSp->Parameters.Create.SecurityContext->AccessState; - ULONG CreateDisposition = (IrpSp->Parameters.Create.Options >> 24) & 0xff; - ULONG CreateOptions = IrpSp->Parameters.Create.Options & 0xffffff; + ULONG CreateOptions = IrpSp->Parameters.Create.Options; USHORT FileAttributes = IrpSp->Parameters.Create.FileAttributes; PSECURITY_DESCRIPTOR SecurityDescriptor = AccessState->SecurityDescriptor; ULONG SecurityDescriptorSize = 0; @@ -275,7 +274,6 @@ static NTSTATUS FspFsvolCreate( /* populate the Create request */ Request->Kind = FspFsctlTransactCreateKind; - Request->Req.Create.CreateDisposition = CreateDisposition; Request->Req.Create.CreateOptions = CreateOptions; Request->Req.Create.FileAttributes = FileAttributes; Request->Req.Create.SecurityDescriptor.Offset = 0 == SecurityDescriptorSize ? 0 : @@ -398,7 +396,7 @@ VOID FspFsvolCreateComplete( FspFsvrtDeviceExtension(FsvolDeviceExtension->FsvrtDeviceObject); PFILE_OBJECT FileObject = IrpSp->FileObject; PACCESS_STATE AccessState = IrpSp->Parameters.Create.SecurityContext->AccessState; - ULONG CreateOptions = IrpSp->Parameters.Create.Options & 0xffffff; + ULONG CreateOptions = IrpSp->Parameters.Create.Options; BOOLEAN FileCreated = FILE_CREATED == Response->IoStatus.Information; UINT32 ResponseFileAttributes = Response->Rsp.Create.Opened.FileAttributes; PSECURITY_DESCRIPTOR SecurityDescriptor;