[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