Fixes: https://bugs.winehq.org/show_bug.cgi?id=43484
Signed-off-by: Alistair Leslie-Hughes leslie_alistair@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);