mirror of
https://github.com/reactos/reactos.git
synced 2024-07-01 10:20:03 +00:00
- Use LoadLibrary and only free it only when loaded.
svn path=/trunk/; revision=60862
This commit is contained in:
parent
821b74d168
commit
d6132d4c02
|
@ -241,8 +241,7 @@ VersionRegisterClass(
|
||||||
{
|
{
|
||||||
_SEH2_TRY
|
_SEH2_TRY
|
||||||
{
|
{
|
||||||
hLibModule = GetModuleHandleW( comctl32W );
|
hLibModule = LoadLibraryW(comctl32W);
|
||||||
if (!hLibModule) hLibModule = LoadLibraryW(comctl32W);
|
|
||||||
if ( hLibModule )
|
if ( hLibModule )
|
||||||
{
|
{
|
||||||
if ((pRegisterClassNameW = (void*) GetProcAddress(hLibModule, "RegisterClassNameW")))
|
if ((pRegisterClassNameW = (void*) GetProcAddress(hLibModule, "RegisterClassNameW")))
|
||||||
|
|
|
@ -571,8 +571,9 @@ User32CallHookProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||||
WPARAM wParam = 0;
|
WPARAM wParam = 0;
|
||||||
LPARAM lParam = 0;
|
LPARAM lParam = 0;
|
||||||
LRESULT Result = 0;
|
LRESULT Result = 0;
|
||||||
BOOL Hit = FALSE;
|
BOOL Hit = FALSE, Loaded = FALSE;
|
||||||
HMODULE mod = NULL;
|
HMODULE mod = NULL;
|
||||||
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
Common = (PHOOKPROC_CALLBACK_ARGUMENTS) Arguments;
|
Common = (PHOOKPROC_CALLBACK_ARGUMENTS) Arguments;
|
||||||
|
|
||||||
|
@ -587,6 +588,10 @@ User32CallHookProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||||
{
|
{
|
||||||
ERR("Failed to load Hook Module.\n");
|
ERR("Failed to load Hook Module.\n");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Loaded = TRUE; // Free it only when loaded.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (mod)
|
if (mod)
|
||||||
{
|
{
|
||||||
|
@ -634,7 +639,7 @@ User32CallHookProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||||
lParam = Common->lParam;
|
lParam = Common->lParam;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (mod) FreeLibrary(mod);
|
if (Loaded) FreeLibrary(mod);
|
||||||
ERR("HCBT_ not supported = %d\n", Common->Code);
|
ERR("HCBT_ not supported = %d\n", Common->Code);
|
||||||
return ZwCallbackReturn(NULL, 0, STATUS_NOT_SUPPORTED);
|
return ZwCallbackReturn(NULL, 0, STATUS_NOT_SUPPORTED);
|
||||||
}
|
}
|
||||||
|
@ -758,15 +763,16 @@ User32CallHookProcFromKernel(PVOID Arguments, ULONG ArgumentLength)
|
||||||
_SEH2_END;
|
_SEH2_END;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (mod) FreeLibrary(mod);
|
if (Loaded) FreeLibrary(mod);
|
||||||
return ZwCallbackReturn(NULL, 0, STATUS_NOT_SUPPORTED);
|
return ZwCallbackReturn(NULL, 0, STATUS_NOT_SUPPORTED);
|
||||||
}
|
}
|
||||||
if (Hit)
|
if (Hit)
|
||||||
{
|
{
|
||||||
ERR("Hook Exception! Id: %d, Code %d, Proc 0x%x\n",Common->HookId,Common->Code,Proc);
|
ERR("Hook Exception! Id: %d, Code %d, Proc 0x%x\n",Common->HookId,Common->Code,Proc);
|
||||||
|
Status = STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
if (mod) FreeLibrary(mod);
|
if (Loaded) FreeLibrary(mod);
|
||||||
return ZwCallbackReturn(&Result, sizeof(LRESULT), STATUS_SUCCESS);
|
return ZwCallbackReturn(&Result, sizeof(LRESULT), Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS WINAPI
|
NTSTATUS WINAPI
|
||||||
|
|
Loading…
Reference in a new issue