mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-25 01:42:24 -05:00
sys: IRP_MJ_CREATE
This commit is contained in:
parent
171c8eff04
commit
a29506341c
@ -57,17 +57,17 @@ static NTSTATUS FspFsvolCreate(
|
|||||||
PFILE_OBJECT RelatedFileObject = FileObject->RelatedFileObject;
|
PFILE_OBJECT RelatedFileObject = FileObject->RelatedFileObject;
|
||||||
UNICODE_STRING FileName = FileObject->FileName;
|
UNICODE_STRING FileName = FileObject->FileName;
|
||||||
ULONG Flags = IrpSp->Flags;
|
ULONG Flags = IrpSp->Flags;
|
||||||
KPROCESSOR_MODE RequestorMode = FlagOn(Flags, SL_FORCE_ACCESS_CHECK) ? UserMode : Irp->RequestorMode;
|
//KPROCESSOR_MODE RequestorMode = FlagOn(Flags, SL_FORCE_ACCESS_CHECK) ? UserMode : Irp->RequestorMode;
|
||||||
PACCESS_STATE AccessState = IrpSp->Parameters.Create.SecurityContext->AccessState;
|
//PACCESS_STATE AccessState = IrpSp->Parameters.Create.SecurityContext->AccessState;
|
||||||
ACCESS_MASK DesiredAccess = IrpSp->Parameters.Create.SecurityContext->DesiredAccess;
|
//ACCESS_MASK DesiredAccess = IrpSp->Parameters.Create.SecurityContext->DesiredAccess;
|
||||||
USHORT ShareAccess = IrpSp->Parameters.Create.ShareAccess;
|
//USHORT ShareAccess = IrpSp->Parameters.Create.ShareAccess;
|
||||||
ULONG CreateDisposition = IrpSp->Parameters.Create.Options >> 24;
|
//ULONG CreateDisposition = IrpSp->Parameters.Create.Options >> 24;
|
||||||
ULONG CreateOptions = IrpSp->Parameters.Create.Options & 0xffffff;
|
ULONG CreateOptions = IrpSp->Parameters.Create.Options & 0xffffff;
|
||||||
USHORT FileAttributes = IrpSp->Parameters.Create.FileAttributes;
|
//USHORT FileAttributes = IrpSp->Parameters.Create.FileAttributes;
|
||||||
LARGE_INTEGER AllocationSize = Irp->Overlay.AllocationSize;
|
//LARGE_INTEGER AllocationSize = Irp->Overlay.AllocationSize;
|
||||||
PFILE_FULL_EA_INFORMATION EaBuffer = Irp->AssociatedIrp.SystemBuffer;
|
PFILE_FULL_EA_INFORMATION EaBuffer = Irp->AssociatedIrp.SystemBuffer;
|
||||||
ULONG EaLength = IrpSp->Parameters.Create.EaLength;
|
//ULONG EaLength = IrpSp->Parameters.Create.EaLength;
|
||||||
BOOLEAN HasTraversePrivilege = BooleanFlagOn(AccessState->Flags, TOKEN_HAS_TRAVERSE_PRIVILEGE);
|
//BOOLEAN HasTraversePrivilege = BooleanFlagOn(AccessState->Flags, TOKEN_HAS_TRAVERSE_PRIVILEGE);
|
||||||
BOOLEAN HasTrailingBackslash = FALSE;
|
BOOLEAN HasTrailingBackslash = FALSE;
|
||||||
FSP_FILE_CONTEXT *FsContext = 0;
|
FSP_FILE_CONTEXT *FsContext = 0;
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request;
|
FSP_FSCTL_TRANSACT_REQ *Request;
|
||||||
|
@ -330,6 +330,8 @@ VOID FspDeviceDeleteAll(VOID);
|
|||||||
/* file objects */
|
/* file objects */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
ERESOURCE Resource;
|
||||||
|
ERESOURCE PagingIoResource;
|
||||||
FAST_MUTEX HeaderFastMutex;
|
FAST_MUTEX HeaderFastMutex;
|
||||||
} FSP_FILE_CONTEXT_NONPAGED;
|
} FSP_FILE_CONTEXT_NONPAGED;
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -34,9 +34,16 @@ NTSTATUS FspFileContextCreate(ULONG ExtraSize, FSP_FILE_CONTEXT **PFsContext)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RtlZeroMemory(NonPaged, sizeof *NonPaged);
|
RtlZeroMemory(NonPaged, sizeof *NonPaged);
|
||||||
|
ExInitializeResourceLite(&NonPaged->Resource);
|
||||||
|
ExInitializeResourceLite(&NonPaged->PagingIoResource);
|
||||||
ExInitializeFastMutex(&NonPaged->HeaderFastMutex);
|
ExInitializeFastMutex(&NonPaged->HeaderFastMutex);
|
||||||
|
|
||||||
RtlZeroMemory(FsContext, sizeof *FsContext);
|
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);
|
FsRtlSetupAdvancedHeader(&FsContext->Header, &NonPaged->HeaderFastMutex);
|
||||||
FsContext->NonPaged = NonPaged;
|
FsContext->NonPaged = NonPaged;
|
||||||
RtlInitEmptyUnicodeString(&FsContext->FileName, FsContext->FileNameBuf, (USHORT)ExtraSize);
|
RtlInitEmptyUnicodeString(&FsContext->FileName, FsContext->FileNameBuf, (USHORT)ExtraSize);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user