diff --git a/dlls/fltmgr.sys/fltmgr.sys.spec b/dlls/fltmgr.sys/fltmgr.sys.spec index c217ad38918..7b1ba2983c2 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 2ffde97da2b..16ca2845c26 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 00b7dc53635..8ebebfa2e81 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);