mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-14 15:52:47 -05:00
sys,dll: Cleanup/TruncateOnClose overhaul
This commit is contained in:
@ -146,7 +146,7 @@ typedef struct
|
||||
UINT32 ExtendedAttributes:1; /* unimplemented; set to 0 */
|
||||
UINT32 ReadOnlyVolume:1;
|
||||
/* kernel-mode flags */
|
||||
UINT32 PostCleanupOnDeleteOnly:1; /* post Cleanup when deleting a file only */
|
||||
UINT32 PostCleanupWhenModifiedOnly:1; /* post Cleanup when a file was modified/deleted */
|
||||
UINT32 KmReservedFlags:5;
|
||||
/* user-mode flags */
|
||||
UINT32 UmFileContextIsUserContext2:1; /* user mode: FileContext parameter is UserContext2 */
|
||||
@ -248,6 +248,11 @@ typedef struct
|
||||
UINT64 UserContext;
|
||||
UINT64 UserContext2;
|
||||
UINT32 Delete:1; /* file must be deleted */
|
||||
UINT32 SetAllocationSize:1;
|
||||
UINT32 SetArchiveBit:1;
|
||||
UINT32 SetLastAccessTime:1;
|
||||
UINT32 SetLastWriteTime:1;
|
||||
UINT32 SetChangeTime:1;
|
||||
} Cleanup;
|
||||
struct
|
||||
{
|
||||
|
@ -122,6 +122,15 @@ typedef enum
|
||||
FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_FINE = 0,
|
||||
FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY_COARSE,
|
||||
} FSP_FILE_SYSTEM_OPERATION_GUARD_STRATEGY;
|
||||
enum
|
||||
{
|
||||
FspCleanupDelete = 0x01,
|
||||
FspCleanupSetAllocationSize = 0x02,
|
||||
FspCleanupSetArchiveBit = 0x10,
|
||||
FspCleanupSetLastAccessTime = 0x20,
|
||||
FspCleanupSetLastWriteTime = 0x40,
|
||||
FspCleanupSetChangeTime = 0x80,
|
||||
};
|
||||
/**
|
||||
* @class FSP_FILE_SYSTEM
|
||||
* File system interface.
|
||||
@ -332,8 +341,8 @@ typedef struct _FSP_FILE_SYSTEM_INTERFACE
|
||||
* deleted during Cleanup.
|
||||
*
|
||||
* As an optimization a file system may specify the FSP_FSCTL_VOLUME_PARAMS ::
|
||||
* PostCleanupOnDeleteOnly flag. In this case the FSD will only post Cleanup requests when a
|
||||
* file is being deleted.
|
||||
* PostCleanupWhenModifiedOnly flag. In this case the FSD will only post Cleanup requests when
|
||||
* the file was modified/deleted.
|
||||
*
|
||||
* @param FileSystem
|
||||
* The file system on which this request is posted.
|
||||
@ -341,16 +350,17 @@ typedef struct _FSP_FILE_SYSTEM_INTERFACE
|
||||
* The file context of the file or directory to cleanup.
|
||||
* @param FileName
|
||||
* The name of the file or directory to cleanup. Sent only when a Delete is requested.
|
||||
* @param Delete
|
||||
* Determines whether to delete the file. Note that there is no way to report failure of
|
||||
* this operation. Also note that when this parameter is TRUE this is the last outstanding
|
||||
* cleanup for this particular file node.
|
||||
* @param Flags
|
||||
* These flags determine whether the file was modified and whether to delete the file.
|
||||
* Note that there is no way to report failure of this operation. Also note that when
|
||||
* this parameter has the FspCleanupDelete bit set, this is the last outstanding cleanup
|
||||
* for this particular file node.
|
||||
* @see
|
||||
* Close
|
||||
* CanDelete
|
||||
*/
|
||||
VOID (*Cleanup)(FSP_FILE_SYSTEM *FileSystem,
|
||||
PVOID FileContext, PWSTR FileName, BOOLEAN Delete);
|
||||
PVOID FileContext, PWSTR FileName, ULONG Flags);
|
||||
/**
|
||||
* Close a file.
|
||||
*
|
||||
|
Reference in New Issue
Block a user