mirror of
https://github.com/winfsp/winfsp.git
synced 2025-07-03 17:32:57 -05:00
sys: IRP_MJ_CREATE: refactoring to support Overwrite
This commit is contained in:
@ -517,6 +517,8 @@ typedef struct
|
||||
/* interlocked access */
|
||||
LONG RefCount;
|
||||
LONG OpenCount;
|
||||
/* locked access */
|
||||
SHARE_ACCESS ShareAccess;
|
||||
/* read-only after creation (and insertion in the GenericTable) */
|
||||
PDEVICE_OBJECT FsvolDeviceObject;
|
||||
UINT64 UserContext;
|
||||
@ -527,21 +529,15 @@ typedef struct
|
||||
NTSTATUS FspFileContextCreate(PDEVICE_OBJECT DeviceObject,
|
||||
ULONG ExtraSize, FSP_FILE_CONTEXT **PFsContext);
|
||||
VOID FspFileContextDelete(FSP_FILE_CONTEXT *FsContext);
|
||||
FSP_FILE_CONTEXT *FspFileContextOpen(PDEVICE_OBJECT FsvolDeviceObject,
|
||||
FSP_FILE_CONTEXT *FsContext);
|
||||
VOID FspFileContextClose(PDEVICE_OBJECT FsvolDeviceObject,
|
||||
FSP_FILE_CONTEXT *FsContext);
|
||||
FSP_FILE_CONTEXT *FspFileContextOpen(FSP_FILE_CONTEXT *FsContext, PFILE_OBJECT FileObject,
|
||||
DWORD GrantedAccess, DWORD ShareAccess, NTSTATUS *PResult);
|
||||
VOID FspFileContextClose(FSP_FILE_CONTEXT *FsContext, PFILE_OBJECT FileObject);
|
||||
static inline
|
||||
VOID FspFileContextRetain(FSP_FILE_CONTEXT *FsContext)
|
||||
{
|
||||
InterlockedIncrement(&FsContext->RefCount);
|
||||
}
|
||||
static inline
|
||||
VOID FspFileContextRetain2(FSP_FILE_CONTEXT *FsContext)
|
||||
{
|
||||
InterlockedAdd(&FsContext->RefCount, 2);
|
||||
}
|
||||
static inline
|
||||
VOID FspFileContextRelease(FSP_FILE_CONTEXT *FsContext)
|
||||
{
|
||||
LONG RefCount = InterlockedDecrement(&FsContext->RefCount);
|
||||
|
Reference in New Issue
Block a user