diff --git a/src/sys/create.c b/src/sys/create.c index dffd364f..b8d86093 100644 --- a/src/sys/create.c +++ b/src/sys/create.c @@ -57,17 +57,17 @@ static NTSTATUS FspFsvolCreate( PFILE_OBJECT RelatedFileObject = FileObject->RelatedFileObject; UNICODE_STRING FileName = FileObject->FileName; ULONG Flags = IrpSp->Flags; - KPROCESSOR_MODE RequestorMode = FlagOn(Flags, SL_FORCE_ACCESS_CHECK) ? UserMode : Irp->RequestorMode; - PACCESS_STATE AccessState = IrpSp->Parameters.Create.SecurityContext->AccessState; - ACCESS_MASK DesiredAccess = IrpSp->Parameters.Create.SecurityContext->DesiredAccess; - USHORT ShareAccess = IrpSp->Parameters.Create.ShareAccess; - ULONG CreateDisposition = IrpSp->Parameters.Create.Options >> 24; + //KPROCESSOR_MODE RequestorMode = FlagOn(Flags, SL_FORCE_ACCESS_CHECK) ? UserMode : Irp->RequestorMode; + //PACCESS_STATE AccessState = IrpSp->Parameters.Create.SecurityContext->AccessState; + //ACCESS_MASK DesiredAccess = IrpSp->Parameters.Create.SecurityContext->DesiredAccess; + //USHORT ShareAccess = IrpSp->Parameters.Create.ShareAccess; + //ULONG CreateDisposition = IrpSp->Parameters.Create.Options >> 24; ULONG CreateOptions = IrpSp->Parameters.Create.Options & 0xffffff; - USHORT FileAttributes = IrpSp->Parameters.Create.FileAttributes; - LARGE_INTEGER AllocationSize = Irp->Overlay.AllocationSize; + //USHORT FileAttributes = IrpSp->Parameters.Create.FileAttributes; + //LARGE_INTEGER AllocationSize = Irp->Overlay.AllocationSize; PFILE_FULL_EA_INFORMATION EaBuffer = Irp->AssociatedIrp.SystemBuffer; - ULONG EaLength = IrpSp->Parameters.Create.EaLength; - BOOLEAN HasTraversePrivilege = BooleanFlagOn(AccessState->Flags, TOKEN_HAS_TRAVERSE_PRIVILEGE); + //ULONG EaLength = IrpSp->Parameters.Create.EaLength; + //BOOLEAN HasTraversePrivilege = BooleanFlagOn(AccessState->Flags, TOKEN_HAS_TRAVERSE_PRIVILEGE); BOOLEAN HasTrailingBackslash = FALSE; FSP_FILE_CONTEXT *FsContext = 0; FSP_FSCTL_TRANSACT_REQ *Request; diff --git a/src/sys/driver.h b/src/sys/driver.h index f97d9fb4..6c2f363c 100644 --- a/src/sys/driver.h +++ b/src/sys/driver.h @@ -330,6 +330,8 @@ VOID FspDeviceDeleteAll(VOID); /* file objects */ typedef struct { + ERESOURCE Resource; + ERESOURCE PagingIoResource; FAST_MUTEX HeaderFastMutex; } FSP_FILE_CONTEXT_NONPAGED; typedef struct diff --git a/src/sys/fileobj.c b/src/sys/fileobj.c index 4a92c577..3dae540f 100644 --- a/src/sys/fileobj.c +++ b/src/sys/fileobj.c @@ -34,9 +34,16 @@ NTSTATUS FspFileContextCreate(ULONG ExtraSize, FSP_FILE_CONTEXT **PFsContext) } RtlZeroMemory(NonPaged, sizeof *NonPaged); + ExInitializeResourceLite(&NonPaged->Resource); + ExInitializeResourceLite(&NonPaged->PagingIoResource); ExInitializeFastMutex(&NonPaged->HeaderFastMutex); RtlZeroMemory(FsContext, sizeof *FsContext); + FsContext->Header.NodeTypeCode = 'F'; + FsContext->Header.NodeByteSize = sizeof *FsContext; + FsContext->Header.IsFastIoPossible = FastIoIsQuestionable; + FsContext->Header.Resource = &NonPaged->Resource; + FsContext->Header.PagingIoResource = &NonPaged->PagingIoResource; FsRtlSetupAdvancedHeader(&FsContext->Header, &NonPaged->HeaderFastMutex); FsContext->NonPaged = NonPaged; RtlInitEmptyUnicodeString(&FsContext->FileName, FsContext->FileNameBuf, (USHORT)ExtraSize);