[PATCH] ntoskrnl: Add FsRtlRegisterFileSystemFilterCallbacks stub

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Tue Apr 17 00:09:00 CDT 2018


Fixes: https://bugs.winehq.org/show_bug.cgi?id=43484

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
 dlls/ntoskrnl.exe/ntoskrnl.c        |  9 ++++
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec |  2 +-
 include/ddk/ntifs.h                 | 82 +++++++++++++++++++++++++++++++++++++
 3 files changed, 92 insertions(+), 1 deletion(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 8e6fde2..99f5f92 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3516,3 +3516,12 @@ HANDLE WINAPI PsGetProcessId(PEPROCESS process)
 
     return 0;
 }
+
+/*********************************************************************
+ *           FsRtlRegisterFileSystemFilterCallbacks    (NTOSKRNL.@)
+ */
+NTSTATUS WINAPI FsRtlRegisterFileSystemFilterCallbacks( DRIVER_OBJECT *object, PFS_FILTER_CALLBACKS callbacks)
+{
+    FIXME("stub: %p %p\n", object, callbacks);
+    return STATUS_NOT_IMPLEMENTED;
+}
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index ce9f93c..0bece17 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -273,7 +273,7 @@
 @ stub FsRtlPrepareMdlWriteDev
 @ stub FsRtlPrivateLock
 @ stub FsRtlProcessFileLock
-@ stub FsRtlRegisterFileSystemFilterCallbacks
+@ stdcall FsRtlRegisterFileSystemFilterCallbacks(ptr ptr)
 @ stdcall FsRtlRegisterUncProvider(ptr ptr long)
 @ stub FsRtlReleaseFile
 @ stub FsRtlRemoveLargeMcbEntry
diff --git a/include/ddk/ntifs.h b/include/ddk/ntifs.h
index 8c63d0b..ccd1ba9 100644
--- a/include/ddk/ntifs.h
+++ b/include/ddk/ntifs.h
@@ -46,6 +46,88 @@ typedef struct _KQUEUE
   LIST_ENTRY ThreadListHead;
 } KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
 
+typedef enum _FS_FILTER_STREAM_FO_NOTIFICATION_TYPE
+{
+    NotifyTypeCreate  = 0,
+    NotifyTypeRetired
+} FS_FILTER_STREAM_FO_NOTIFICATION_TYPE, *PFS_FILTER_STREAM_FO_NOTIFICATION_TYPE;
+
+typedef union _FS_FILTER_PARAMETERS
+{
+    struct
+    {
+        PLARGE_INTEGER EndingOffset;
+        PERESOURCE     *ResourceToRelease;
+    } AcquireForModifiedPageWriter;
+
+    struct
+    {
+        PERESOURCE ResourceToRelease;
+    } ReleaseForModifiedPageWriter;
+
+    struct
+    {
+        FS_FILTER_SECTION_SYNC_TYPE    SyncType;
+        ULONG                          PageProtection;
+        PFS_FILTER_SECTION_SYNC_OUTPUT OutputInformation;
+    } AcquireForSectionSynchronization;
+
+    struct
+    {
+        FS_FILTER_STREAM_FO_NOTIFICATION_TYPE NotificationType;
+        BOOLEAN POINTER_ALIGNMENT             SafeToRecurse;
+    } NotifyStreamFileObject;
+
+    struct
+    {
+        PIRP                   Irp;
+        void                   *FileInformation;
+        PULONG                 Length;
+        FILE_INFORMATION_CLASS FileInformationClass;
+        NTSTATUS               CompletionStatus;
+    } QueryOpen;
+
+    struct
+    {
+        void *Argument1;
+        void *Argument2;
+        void *Argument3;
+        void *Argument4;
+        void *Argument5;
+    } Others;
+
+} FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;
+
+typedef struct _FS_FILTER_CALLBACK_DATA
+{
+    ULONG SizeOfFsFilterCallbackData;
+    UCHAR Operation;
+    UCHAR Reserved;
+    struct _DEVICE_OBJECT *DeviceObject;
+    struct _FILE_OBJECT   *FileObject;
+    FS_FILTER_PARAMETERS  Parameters;
+} FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;
+
+typedef NTSTATUS (*PFS_FILTER_CALLBACK)(PFS_FILTER_CALLBACK_DATA, void **);
+typedef void     (*PFS_FILTER_COMPLETION_CALLBACK)(PFS_FILTER_CALLBACK_DATA, NTSTATUS, void *context);
+
+typedef struct _FS_FILTER_CALLBACKS
+{
+    ULONG SizeOfFsFilterCallbacks;
+    ULONG Reserved;
+    PFS_FILTER_CALLBACK            PreAcquireForSectionSynchronization;
+    PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization;
+    PFS_FILTER_CALLBACK            PreReleaseForSectionSynchronization;
+    PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization;
+    PFS_FILTER_CALLBACK            PreAcquireForCcFlush;
+    PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush;
+    PFS_FILTER_CALLBACK            PreReleaseForCcFlush;
+    PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush;
+    PFS_FILTER_CALLBACK            PreAcquireForModifiedPageWriter;
+    PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter;
+    PFS_FILTER_CALLBACK            PreReleaseForModifiedPageWriter;
+    PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
+} FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
 
 NTSTATUS WINAPI ObQueryNameString(PVOID,POBJECT_NAME_INFORMATION,ULONG,PULONG);
 
-- 
1.9.1




More information about the wine-devel mailing list