mirror of
https://github.com/winfsp/winfsp.git
synced 2025-07-03 17:32:57 -05:00
sys: implement named stream open/close and related delete/share access issues
This commit is contained in:
@ -431,6 +431,15 @@ VOID FspUnicodePathSuffix(PUNICODE_STRING Path, PUNICODE_STRING Remain, PUNICODE
|
||||
NTSTATUS FspCreateGuid(GUID *Guid);
|
||||
NTSTATUS FspGetDeviceObjectPointer(PUNICODE_STRING ObjectName, ACCESS_MASK DesiredAccess,
|
||||
PULONG PFileNameIndex, PFILE_OBJECT *PFileObject, PDEVICE_OBJECT *PDeviceObject);
|
||||
NTSTATUS FspMainStreamOpen(
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
PUNICODE_STRING MainStreamName, BOOLEAN CaseSensitive,
|
||||
ULONG Disposition,
|
||||
PHANDLE PMainStreamHandle,
|
||||
PFILE_OBJECT *PMainStreamObject);
|
||||
NTSTATUS FspMainStreamClose(
|
||||
HANDLE MainStreamHandle,
|
||||
PFILE_OBJECT MainStreamObject);
|
||||
NTSTATUS FspSendSetInformationIrp(PDEVICE_OBJECT DeviceObject, PFILE_OBJECT FileObject,
|
||||
FILE_INFORMATION_CLASS FileInformationClass, PVOID FileInformation, ULONG Length);
|
||||
NTSTATUS FspBufferUserBuffer(PIRP Irp, ULONG Length, LOCK_OPERATION Operation);
|
||||
@ -896,7 +905,7 @@ typedef struct
|
||||
UINT64 DirInfo;
|
||||
UINT64 StreamInfo;
|
||||
} FSP_FILE_NODE_NONPAGED;
|
||||
typedef struct
|
||||
typedef struct FSP_FILE_NODE
|
||||
{
|
||||
FSRTL_ADVANCED_FCB_HEADER Header;
|
||||
FSP_FILE_NODE_NONPAGED *NonPaged;
|
||||
@ -907,6 +916,8 @@ typedef struct
|
||||
LONG OpenCount; /* ContextTable ref count */
|
||||
LONG HandleCount; /* HANDLE count (CREATE/CLEANUP) */
|
||||
SHARE_ACCESS ShareAccess;
|
||||
ULONG MainStreamDenyDeleteCount; /* number of times main stream is denying delete */
|
||||
ULONG StreamDenyDeleteCount; /* number of open streams that are denying delete */
|
||||
FSP_DEVICE_CONTEXT_BY_NAME_TABLE_ELEMENT ContextByNameElementStorage;
|
||||
/* locked under FSP_FSVOL_DEVICE_EXTENSION::FileRenameResource or Header.Resource */
|
||||
UNICODE_STRING FileName;
|
||||
@ -941,6 +952,7 @@ typedef struct
|
||||
UINT64 IndexNumber;
|
||||
BOOLEAN IsDirectory;
|
||||
BOOLEAN IsRootDirectory;
|
||||
struct FSP_FILE_NODE *MainStreamFileNode; /* this becomes invalid after our last desc close */
|
||||
WCHAR FileNameBuf[];
|
||||
} FSP_FILE_NODE;
|
||||
typedef struct
|
||||
@ -955,6 +967,9 @@ typedef struct
|
||||
UINT64 DirectoryOffset;
|
||||
UINT64 DirInfo;
|
||||
ULONG DirInfoCacheHint;
|
||||
/* stream support */
|
||||
HANDLE MainStreamHandle;
|
||||
PFILE_OBJECT MainStreamObject;
|
||||
} FSP_FILE_DESC;
|
||||
NTSTATUS FspFileNodeCopyList(PDEVICE_OBJECT DeviceObject,
|
||||
FSP_FILE_NODE ***PFileNodes, PULONG PFileNodeCount);
|
||||
|
Reference in New Issue
Block a user