diff --git a/dll/windivert.c b/dll/windivert.c index d42e489..07d5c02 100644 --- a/dll/windivert.c +++ b/dll/windivert.c @@ -220,16 +220,22 @@ static void WinDivertFilterDump(windivert_ioctl_filter_t filter, UINT16 len); */ static DWORD windivert_tls_idx; +/* + * Current DLL hmodule. + */ +static HMODULE module = NULL; + /* * Dll Entry */ -extern BOOL APIENTRY WinDivertDllEntry(HANDLE module, DWORD reason, +extern BOOL APIENTRY WinDivertDllEntry(HANDLE module0, DWORD reason, LPVOID reserved) { HANDLE event; switch (reason) { case DLL_PROCESS_ATTACH: + module = module0; if ((windivert_tls_idx = TlsAlloc()) == TLS_OUT_OF_INDEXES) { return FALSE; @@ -309,8 +315,8 @@ static BOOLEAN WinDivertGetDriverFileName(LPWSTR sys_str) return FALSE; } } - - dir_len = (size_t)GetCurrentDirectory(MAX_PATH, sys_str); + + dir_len = (size_t)GetModuleFileName(module, sys_str, MAX_PATH); if (dir_len == 0) { return FALSE;