dll: FspFileSystemOpEnter, FspFileSystemOpLeave

This commit is contained in:
Bill Zissimopoulos
2016-06-08 20:43:52 -07:00
parent 20fc185530
commit 0f63dddb32
5 changed files with 125 additions and 25 deletions

View File

@@ -577,6 +577,11 @@ typedef struct _FSP_FILE_SYSTEM_INTERFACE
PWSTR Pattern,
PULONG PBytesTransferred);
} FSP_FILE_SYSTEM_INTERFACE;
typedef enum
{
FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_FINE = 0,
FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_COARSE,
} FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY;
typedef struct _FSP_FILE_SYSTEM
{
UINT16 Version;
@@ -592,6 +597,8 @@ typedef struct _FSP_FILE_SYSTEM
PWSTR MountPoint;
LIST_ENTRY MountEntry;
UINT32 DebugLog;
FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY OpGuardStrategy;
SRWLOCK OpGuardLock;
} FSP_FILE_SYSTEM;
/**
* Create a file system object.
@@ -716,6 +723,12 @@ VOID FspFileSystemSetOperationGuard(FSP_FILE_SYSTEM *FileSystem,
FileSystem->LeaveOperation = LeaveOperation;
}
static inline
VOID FspFileSystemSetOperationGuardStrategy(FSP_FILE_SYSTEM *FileSystem,
FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY GuardStrategy)
{
FileSystem->OpGuardStrategy = GuardStrategy;
}
static inline
VOID FspFileSystemSetOperation(FSP_FILE_SYSTEM *FileSystem,
ULONG Index,
FSP_FILE_SYSTEM_OPERATION *Operation)
@@ -748,6 +761,10 @@ VOID FspFileSystemSetDebugLog(FSP_FILE_SYSTEM *FileSystem,
/*
* Operations
*/
FSP_API VOID FspFileSystemOpEnter(FSP_FILE_SYSTEM *FileSystem,
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response);
FSP_API VOID FspFileSystemOpLeave(FSP_FILE_SYSTEM *FileSystem,
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response);
FSP_API NTSTATUS FspFileSystemOpCreate(FSP_FILE_SYSTEM *FileSystem,
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FSCTL_TRANSACT_RSP *Response);
FSP_API NTSTATUS FspFileSystemOpOverwrite(FSP_FILE_SYSTEM *FileSystem,