HHOOK SetWindowsHookExAW( int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadID, BOOL bAnsi) { WCHAR pwszLibFileName[MAX_PATH]; /* * If we're passing an hmod, we need to grab the file name of the * module while we're still on the client since module handles * are NOT global. */ if (hmod != NULL) { if (GetModuleFileNameW(hmod, pwszLibFileName, sizeof(pwszLibFileName)/sizeof(TCHAR)) == 0) { /* * hmod is bogus - return NULL. */ return NULL; } } return _SetWindowsHookEx(hmod, (hmod == NULL) ? NULL : pwszLibFileName, dwThreadID, idHook, (PROC)lpfn, bAnsi); }
HHOOK SetWindowsHookExAW( int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadID, DWORD dwFlags) { WCHAR pwszLibFileName[MAX_PATH]; /* * If we're passing an hmod, we need to grab the file name of the * module while we're still on the client since module handles * are NOT global. */ if (hmod != NULL) { if (GetModuleFileNameW(hmod, pwszLibFileName, sizeof(pwszLibFileName)/sizeof(TCHAR)) == 0) { /* * hmod is bogus - return NULL. */ return NULL; } #ifdef WX86 try { if (RtlImageNtHeader(hmod)->FileHeader.Machine == IMAGE_FILE_MACHINE_I386) { dwFlags |= HF_WX86KNOWNDLL; } } except (W32ExceptionHandler(FALSE, RIP_WARNING)) { return NULL; } #endif } return _SetWindowsHookEx(hmod, (hmod == NULL) ? NULL : pwszLibFileName, dwThreadID, idHook, (PROC)lpfn, dwFlags); }