Jinoh Kang (@iamahuman) commented about dlls/ntdll/misc.c:
+/******************************************************************************
NtdllDefWindowProc_A (NTDLL.@)
- */
+LRESULT WINAPI NtdllDefWindowProc_A( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) +{
- static LPARAM (WINAPI *pDefWindowProcA)(HWND,UINT,WPARAM,LPARAM); /* DefWindowProcA */
- UNICODE_STRING name;
- NTSTATUS status;
- HMODULE module;
- if (pDefWindowProcA) return pDefWindowProcA( hwnd, msg, wParam, lParam );
- RtlCreateUnicodeString( &name, L"user32.dll" );
- if (( status = LdrLoadDll( NULL, 0, &name, &module )))
Don't keep reference to implicitly loaded DLL, which is effectively a memory leak.
Use `LdrGetDllHandle` instead, assuming user32.dll is already loaded (this should be guaranteed by the application).