I just tried the following code(windows xp sp3, vs2010) and LoadLibrary seems to be returning Null.
#include "windows.h"
#include "stdio.h"
int main() {
HMODULE hNtdll;
hNtdll = LoadLibrary(LPCWSTR("ntdll.dll"));
printf("%08x\n", hNtdll);
}
The output I get is 00000000. According to the docs, NULL is returned when the function fails. I tried using GetLastError and the error code is 126(0x7e, Error Mod Not Found).
How can I correct this issue?
Thanks!
You have a string literal, which consists of narrow characters. Your
LoadLibrarycall apparently expects wide characters. Type-casting isn’t the way to convert from one to the other. Use theLprefix to get a wide string literal:Type-casting tells the compiler that your
char const*is really awchar_t const*, which isn’t true. The compiler trusts you and passes the pointer along toLoadLibraryanyway, but when interpreted as a wide string, the thing you passed is nonsense. It doesn’t represent the name of any file on your system, so the API correctly reports that it cannot find the module.