#define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800
#define LOAD_LIBRARY_SEARCH_USER_DIRS 0x00000400
+#define DONT_RESOLVE_DLL_REFERENCES 0x00000001
+#define LOAD_LIBRARY_AS_DATAFILE 0x00000002
+#define LOAD_WITH_ALTERED_SEARCH_PATH 0x00000008
+#define LOAD_IGNORE_CODE_AUTHZ_LEVEL 0x00000010
+#define LOAD_LIBRARY_AS_IMAGE_RESOURCE 0x00000020
+#define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE 0x00000040
+#define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x00000100
+#define LOAD_LIBRARY_SEARCH_APPLICATION_DIR 0x00000200
+#define LOAD_LIBRARY_SEARCH_USER_DIRS 0x00000400
+#define LOAD_LIBRARY_SEARCH_SYSTEM32 0x00000800
+#define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x00001000
+
#ifdef __cplusplus
extern "C" {
#endif
DLL_DIRECTORY_COOKIE AddDllDirectory(PCWSTR NewDirectory)
{
+ /* TODO: Implement */
+ WLog_ERR(TAG, "%s not implemented", __FUNCTION__);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return NULL;
}
BOOL RemoveDllDirectory(DLL_DIRECTORY_COOKIE Cookie)
{
- return TRUE;
+ /* TODO: Implement */
+ WLog_ERR(TAG, "%s not implemented", __FUNCTION__);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
}
BOOL SetDefaultDllDirectories(DWORD DirectoryFlags)
{
- return TRUE;
+ /* TODO: Implement */
+ WLog_ERR(TAG, "%s not implemented", __FUNCTION__);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
}
HMODULE LoadLibraryA(LPCSTR lpLibFileName)
if (status < 1)
return NULL;
- hModule = LoadPackagedLibrary(filenameW, 0);
+ hModule = LoadLibraryW(filenameW);
free(filenameW);
return hModule;
#else
if (!library)
{
- WLog_ERR(TAG, "LoadLibraryA: %s", dlerror());
+ WLog_ERR(TAG, "%s failed with %s", __FUNCTION__, dlerror());
return NULL;
}
#if defined(_UWP)
return LoadPackagedLibrary(lpLibFileName, 0);
#else
- return (HMODULE) NULL;
+ char* name = NULL;
+ HMODULE module;
+ int rc = ConvertFromUnicode(CP_UTF8, 0, lpLibFileName, -1, &name, 0, NULL, NULL);
+
+ if (rc < 0)
+ return NULL;
+
+ module = LoadLibraryA(name);
+ free(name);
+ return module;
#endif
}
HMODULE LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
{
-#if !defined(_UWP)
- HMODULE library;
- library = dlopen(lpLibFileName, RTLD_LOCAL | RTLD_LAZY);
+ if (dwFlags != 0)
+ WLog_WARN(TAG, "%s does not support dwFlags 0x%08"PRIx32, __FUNCTION__, dwFlags);
- if (!library)
- {
- WLog_ERR(TAG, "LoadLibraryExA: failed to open %s: %s", lpLibFileName, dlerror());
- return NULL;
- }
+ if (hFile)
+ WLog_WARN(TAG, "%s does not support hFile != NULL", __FUNCTION__);
- return library;
-#else
- return (HMODULE)NULL;
-#endif
+ return LoadLibraryA(lpLibFileName);
}
HMODULE LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
{
- return (HMODULE) NULL;
+ if (dwFlags != 0)
+ WLog_WARN(TAG, "%s does not support dwFlags 0x%08"PRIx32, __FUNCTION__, dwFlags);
+
+ if (hFile)
+ WLog_WARN(TAG, "%s does not support hFile != NULL", __FUNCTION__);
+
+ return LoadLibraryW(lpLibFileName);
}
#endif
HMODULE GetModuleHandleA(LPCSTR lpModuleName)
{
+ /* TODO: Implement */
+ WLog_ERR(TAG, "%s not implemented", __FUNCTION__);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return NULL;
}
HMODULE GetModuleHandleW(LPCWSTR lpModuleName)
{
+ /* TODO: Implement */
+ WLog_ERR(TAG, "%s not implemented", __FUNCTION__);
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return NULL;
}
DWORD GetModuleFileNameW(HMODULE hModule, LPWSTR lpFilename, DWORD nSize)
{
+ /* TODO: Implement */
WLog_ERR(TAG, "%s is not implemented", __FUNCTION__);
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
return 0;