Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com --- dlls/fltmgr.sys/fltmgr.sys.spec | 2 +- dlls/fltmgr.sys/main.c | 15 +++++++++++++++ include/ddk/fltkernel.h | 1 + 3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/dlls/fltmgr.sys/fltmgr.sys.spec b/dlls/fltmgr.sys/fltmgr.sys.spec index c217ad3..7b1ba29 100644 --- a/dlls/fltmgr.sys/fltmgr.sys.spec +++ b/dlls/fltmgr.sys/fltmgr.sys.spec @@ -79,7 +79,7 @@ @ stub FltGetLowerInstance @ stub FltGetRequestorProcess @ stub FltGetRequestorProcessId -@ stub FltGetRoutineAddress +@ stdcall FltGetRoutineAddress(str) @ stub FltGetStreamContext @ stub FltGetStreamHandleContext @ stub FltGetSwappedBufferMdlAddress diff --git a/dlls/fltmgr.sys/main.c b/dlls/fltmgr.sys/main.c index 2ffde97..16ca284 100644 --- a/dlls/fltmgr.sys/main.c +++ b/dlls/fltmgr.sys/main.c @@ -64,3 +64,18 @@ void WINAPI FltUnregisterFilter( PFLT_FILTER filter ) { FIXME( "(%p): stub\n", filter ); } + +void* WINAPI FltGetRoutineAddress(LPCSTR name) +{ + static const WCHAR fltmgrW[] = {'f','l','t','m','g','r','.','s','y','s',0}; + HMODULE mod = GetModuleHandleW(fltmgrW); + void *func; + + func = GetProcAddress(mod, name); + if (func) + TRACE( "%s -> %p\n", debugstr_a(name), func ); + else + FIXME( "%s not found\n", debugstr_a(name) ); + + return func; +} diff --git a/include/ddk/fltkernel.h b/include/ddk/fltkernel.h index 00b7dc5..8ebebfa 100644 --- a/include/ddk/fltkernel.h +++ b/include/ddk/fltkernel.h @@ -654,6 +654,7 @@ typedef struct _FLT_REGISTRATION } FLT_REGISTRATION, *PFLT_REGISTRATION;
+void* WINAPI FltGetRoutineAddress(LPCSTR name); NTSTATUS WINAPI FltRegisterFilter(PDRIVER_OBJECT, const FLT_REGISTRATION *, PFLT_FILTER *); NTSTATUS WINAPI FltStartFiltering(PFLT_FILTER); void WINAPI FltUnregisterFilter(PFLT_FILTER);