mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-14 15:52:47 -05:00
dll: overwrite refactoring
This commit is contained in:
@ -162,6 +162,7 @@ typedef struct
|
||||
{
|
||||
UINT64 UserContext; /* open file user context (unique file id) */
|
||||
UINT64 UserContext2; /* kernel file object user context (stores as many bits as a pointer) */
|
||||
UINT32 FileAttributes; /* FILE_ATTRIBUTE_{NORMAL,DIRECTORY,etc.} */
|
||||
UINT64 AllocationSize; /* file allocation size */
|
||||
UINT64 FileSize; /* file size */
|
||||
UINT32 GrantedAccess; /* FILE_{READ_DATA,WRITE_DATA,etc.} */
|
||||
|
@ -27,23 +27,39 @@
|
||||
typedef struct _FSP_FILE_SYSTEM FSP_FILE_SYSTEM;
|
||||
typedef VOID FSP_FILE_SYSTEM_DISPATCHER(FSP_FILE_SYSTEM *, FSP_FSCTL_TRANSACT_REQ *);
|
||||
typedef NTSTATUS FSP_FILE_SYSTEM_OPERATION(FSP_FILE_SYSTEM *, FSP_FSCTL_TRANSACT_REQ *);
|
||||
typedef struct _FSP_FILE_NODE_INFO
|
||||
{
|
||||
PVOID FileNode;
|
||||
DWORD FileAttributes;
|
||||
UINT64 AllocationSize;
|
||||
UINT64 FileSize;
|
||||
} FSP_FILE_NODE_INFO;
|
||||
typedef struct _FSP_FILE_SIZE_INFO
|
||||
{
|
||||
UINT64 AllocationSize;
|
||||
UINT64 FileSize;
|
||||
} FSP_FILE_SIZE_INFO;
|
||||
typedef struct _FSP_FILE_SYSTEM_INTERFACE
|
||||
{
|
||||
NTSTATUS (*GetSecurity)(FSP_FILE_SYSTEM *FileSystem,
|
||||
PWSTR FileName, PDWORD PFileAttributes,
|
||||
PSECURITY_DESCRIPTOR SecurityDescriptor, SIZE_T *PSecurityDescriptorSize);
|
||||
#if 0
|
||||
NTSTATUS (*Create)(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE **PFileNode);
|
||||
FSP_FSCTL_TRANSACT_REQ *Request,
|
||||
FSP_FILE_NODE_INFO *Info);
|
||||
NTSTATUS (*Open)(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE **PFileNode);
|
||||
FSP_FSCTL_TRANSACT_REQ *Request,
|
||||
FSP_FILE_NODE_INFO *Info);
|
||||
NTSTATUS (*Overwrite)(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN ReplaceFileAttributes, FSP_FILE_NODE *FileNode);
|
||||
FSP_FSCTL_TRANSACT_REQ *Request,
|
||||
PVOID FileNode, DWORD FileAttributes, BOOLEAN ReplaceFileAttributes,
|
||||
FSP_FILE_SIZE_INFO *Info);
|
||||
VOID (*Cleanup)(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE *FileNode, BOOLEAN Delete);
|
||||
FSP_FSCTL_TRANSACT_REQ *Request,
|
||||
PVOID FileNode, BOOLEAN Delete);
|
||||
VOID (*Close)(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE *FileNode);
|
||||
#endif
|
||||
FSP_FSCTL_TRANSACT_REQ *Request,
|
||||
PVOID FileNode);
|
||||
} FSP_FILE_SYSTEM_INTERFACE;
|
||||
typedef struct _FSP_FILE_SYSTEM
|
||||
{
|
||||
@ -139,6 +155,16 @@ FSP_API NTSTATUS FspFileSystemOpCleanup(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||
FSP_API NTSTATUS FspFileSystemOpClose(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||
FSP_API NTSTATUS FspFileSystemSendCreateResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request, UINT_PTR Information,
|
||||
const FSP_FILE_NODE_INFO *NodeInfo, DWORD GrantedAccess);
|
||||
FSP_API NTSTATUS FspFileSystemSendOverwriteResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request,
|
||||
const FSP_FILE_SIZE_INFO *SizeInfo);
|
||||
FSP_API NTSTATUS FspFileSystemSendCleanupResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||
FSP_API NTSTATUS FspFileSystemSendCloseResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||
|
||||
/*
|
||||
* Path Handling
|
||||
|
Reference in New Issue
Block a user