libloaderapi.h (9200B) - Raw
1 /** 2 * This file is part of the mingw-w64 runtime package. 3 * No warranty is given; refer to the file DISCLAIMER within this package. 4 */ 5 #ifndef _APISETLIBLOADER_ 6 #define _APISETLIBLOADER_ 7 8 #include <apiset.h> 9 #include <apisetcconv.h> 10 #include <minwindef.h> 11 #include <minwinbase.h> 12 13 #ifdef __cplusplus 14 extern "C" { 15 #endif 16 17 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 18 typedef struct tagENUMUILANG { 19 ULONG NumOfEnumUILang; 20 ULONG SizeOfEnumUIBuffer; 21 LANGID *pEnumUIBuffer; 22 } ENUMUILANG, *PENUMUILANG; 23 24 #ifdef STRICT 25 typedef WINBOOL (CALLBACK *ENUMRESLANGPROCA) (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LONG_PTR lParam); 26 typedef WINBOOL (CALLBACK *ENUMRESLANGPROCW) (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LONG_PTR lParam); 27 typedef WINBOOL (CALLBACK *ENUMRESNAMEPROCA) (HMODULE hModule, LPCSTR lpType, LPSTR lpName, LONG_PTR lParam); 28 typedef WINBOOL (CALLBACK *ENUMRESNAMEPROCW) (HMODULE hModule, LPCWSTR lpType, LPWSTR lpName, LONG_PTR lParam); 29 typedef WINBOOL (CALLBACK *ENUMRESTYPEPROCA) (HMODULE hModule, LPSTR lpType, LONG_PTR lParam); 30 typedef WINBOOL (CALLBACK *ENUMRESTYPEPROCW) (HMODULE hModule, LPWSTR lpType, LONG_PTR lParam); 31 #else 32 typedef FARPROC ENUMRESTYPEPROCA; 33 typedef FARPROC ENUMRESTYPEPROCW; 34 typedef FARPROC ENUMRESNAMEPROCA; 35 typedef FARPROC ENUMRESNAMEPROCW; 36 typedef FARPROC ENUMRESLANGPROCA; 37 typedef FARPROC ENUMRESLANGPROCW; 38 #endif 39 40 typedef PVOID DLL_DIRECTORY_COOKIE, *PDLL_DIRECTORY_COOKIE; 41 42 #define FIND_RESOURCE_DIRECTORY_TYPES (0x0100) 43 #define FIND_RESOURCE_DIRECTORY_NAMES (0x0200) 44 #define FIND_RESOURCE_DIRECTORY_LANGUAGES (0x0400) 45 46 #define RESOURCE_ENUM_LN (0x0001) 47 #define RESOURCE_ENUM_MUI (0x0002) 48 #define RESOURCE_ENUM_MUI_SYSTEM (0x0004) 49 #define RESOURCE_ENUM_VALIDATE (0x0008) 50 #define RESOURCE_ENUM_MODULE_EXACT (0x0010) 51 52 #define SUPPORT_LANG_NUMBER 32 53 #endif /* WINAPI_PARTITION_DESKTOP */ 54 55 #define GET_MODULE_HANDLE_EX_FLAG_PIN (0x1) 56 #define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT (0x2) 57 #define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS (0x4) 58 59 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0A00 60 WINBASEAPI HRSRC WINAPI FindResourceW(HMODULE hModule, LPCWSTR lpName, LPCWSTR lpType); 61 #ifdef UNICODE 62 #define FindResource FindResourceW 63 #endif 64 #endif 65 66 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 67 #define ENUMRESLANGPROC __MINGW_NAME_AW(ENUMRESLANGPROC) 68 #define ENUMRESNAMEPROC __MINGW_NAME_AW(ENUMRESNAMEPROC) 69 #define ENUMRESTYPEPROC __MINGW_NAME_AW(ENUMRESTYPEPROC) 70 71 WINBASEAPI WINBOOL WINAPI EnumResourceNamesW(HMODULE hModule, LPCWSTR lpType, ENUMRESNAMEPROCW lpEnumFunc, LONG_PTR lParam); 72 WINBASEAPI WINBOOL WINAPI FreeResource (HGLOBAL hResData); 73 WINBASEAPI HGLOBAL WINAPI LoadResource (HMODULE hModule, HRSRC hResInfo); 74 WINBASEAPI LPVOID WINAPI LockResource (HGLOBAL hResData); 75 WINBASEAPI DLL_DIRECTORY_COOKIE WINAPI AddDllDirectory (PCWSTR NewDirectory); 76 WINBASEAPI WINBOOL WINAPI RemoveDllDirectory (DLL_DIRECTORY_COOKIE Cookie); 77 WINBASEAPI WINBOOL WINAPI SetDefaultDllDirectories (DWORD DirectoryFlags); 78 79 #ifdef UNICODE 80 #define EnumResourceNames EnumResourceNamesW 81 #endif 82 83 #define EnumResourceLanguages __MINGW_NAME_AW(EnumResourceLanguages) 84 WINBASEAPI WINBOOL WINAPI EnumResourceLanguagesA(HMODULE hModule,LPCSTR lpType,LPCSTR lpName,ENUMRESLANGPROCA lpEnumFunc,LONG_PTR lParam); 85 WINBASEAPI WINBOOL WINAPI EnumResourceLanguagesW(HMODULE hModule,LPCWSTR lpType,LPCWSTR lpName,ENUMRESLANGPROCW lpEnumFunc,LONG_PTR lParam); 86 87 88 #if _WIN32_WINNT >= 0x0600 89 WINBASEAPI WINBOOL APIENTRY EnumResourceLanguagesExA (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, ENUMRESLANGPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); 90 WINBASEAPI WINBOOL APIENTRY EnumResourceLanguagesExW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, ENUMRESLANGPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); 91 WINBASEAPI WINBOOL WINAPI EnumResourceNamesExA (HMODULE hModule, LPCSTR lpType, ENUMRESNAMEPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); 92 WINBASEAPI WINBOOL WINAPI EnumResourceNamesExW (HMODULE hModule, LPCWSTR lpType, ENUMRESNAMEPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); 93 WINBASEAPI WINBOOL WINAPI EnumResourceTypesExA (HMODULE hModule, ENUMRESTYPEPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); 94 WINBASEAPI WINBOOL WINAPI EnumResourceTypesExW (HMODULE hModule, ENUMRESTYPEPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId); 95 WINBASEAPI WINBOOL WINAPI QueryOptionalDelayLoadedAPI (HMODULE CallerModule, LPCSTR lpDllName, LPCSTR lpProcName, DWORD Reserved); 96 97 #define EnumResourceLanguagesEx __MINGW_NAME_AW(EnumResourceLanguagesEx) 98 #define EnumResourceNamesEx __MINGW_NAME_AW(EnumResourceNamesEx) 99 #define EnumResourceTypesEx __MINGW_NAME_AW(EnumResourceTypesEx) 100 #endif 101 #endif 102 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || defined(WINSTORECOMPAT) 103 WINBASEAPI HMODULE WINAPI LoadLibraryA(LPCSTR lpLibFileName); 104 WINBASEAPI HMODULE WINAPI LoadLibraryW(LPCWSTR lpLibFileName); 105 #define LoadLibrary __MINGW_NAME_AW(LoadLibrary) 106 #endif 107 108 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP) 109 WINBASEAPI DECLSPEC_NORETURN VOID WINAPI FreeLibraryAndExitThread (HMODULE hLibModule, DWORD dwExitCode); 110 WINBASEAPI WINBOOL WINAPI DisableThreadLibraryCalls (HMODULE hLibModule); 111 WINBASEAPI WINBOOL WINAPI FreeLibrary (HMODULE hLibModule); 112 WINBASEAPI FARPROC WINAPI GetProcAddress (HMODULE hModule, LPCSTR lpProcName); 113 WINBASEAPI DWORD WINAPI GetModuleFileNameA (HMODULE hModule, LPSTR lpFilename, DWORD nSize); 114 WINBASEAPI DWORD WINAPI GetModuleFileNameW (HMODULE hModule, LPWSTR lpFilename, DWORD nSize); 115 #define GetModuleFileName __MINGW_NAME_AW(GetModuleFileName) 116 117 #define CURRENT_IMPORT_REDIRECTION_VERSION 1 118 119 typedef struct _REDIRECTION_FUNCTION_DESCRIPTOR { 120 PCSTR DllName; 121 PCSTR FunctionName; 122 PVOID RedirectionTarget; 123 } REDIRECTION_FUNCTION_DESCRIPTOR, *PREDIRECTION_FUNCTION_DESCRIPTOR; 124 125 typedef const REDIRECTION_FUNCTION_DESCRIPTOR *PCREDIRECTION_FUNCTION_DESCRIPTOR; 126 127 typedef struct _REDIRECTION_DESCRIPTOR { 128 ULONG Version; 129 ULONG FunctionCount; 130 PCREDIRECTION_FUNCTION_DESCRIPTOR Redirections; 131 } REDIRECTION_DESCRIPTOR, *PREDIRECTION_DESCRIPTOR; 132 133 typedef const REDIRECTION_DESCRIPTOR *PCREDIRECTION_DESCRIPTOR; 134 135 #if WINVER >= 0x0601 136 WINBASEAPI int WINAPI FindStringOrdinal (DWORD dwFindStringOrdinalFlags, LPCWSTR lpStringSource, int cchSource, LPCWSTR lpStringValue, int cchValue, WINBOOL bIgnoreCase); 137 #endif 138 #endif 139 140 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || NTDDI_VERSION >= NTDDI_WIN10_19H1 141 #define DONT_RESOLVE_DLL_REFERENCES 0x1 142 #define LOAD_LIBRARY_AS_DATAFILE 0x2 143 #define LOAD_WITH_ALTERED_SEARCH_PATH 0x8 144 #define LOAD_IGNORE_CODE_AUTHZ_LEVEL 0x10 145 #define LOAD_LIBRARY_AS_IMAGE_RESOURCE 0x20 146 #define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE 0x40 147 #define LOAD_LIBRARY_REQUIRE_SIGNED_TARGET 0x80 148 #define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x100 149 #define LOAD_LIBRARY_SEARCH_APPLICATION_DIR 0x200 150 #define LOAD_LIBRARY_SEARCH_USER_DIRS 0x400 151 #define LOAD_LIBRARY_SEARCH_SYSTEM32 0x800 152 #define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x1000 153 154 #if (NTDDI_VERSION >= NTDDI_WIN10_RS1) 155 #define LOAD_LIBRARY_SAFE_CURRENT_DIRS 0x00002000 156 #define LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER 0x00004000 157 #else 158 #define LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER LOAD_LIBRARY_SEARCH_SYSTEM32 159 #endif 160 161 #if (NTDDI_VERSION >= NTDDI_WIN10_RS2) 162 #define LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY 0x00008000 163 #endif 164 165 WINBASEAPI HRSRC WINAPI FindResourceExW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage); 166 WINBASEAPI HMODULE WINAPI GetModuleHandleA (LPCSTR lpModuleName); 167 WINBASEAPI HMODULE WINAPI GetModuleHandleW (LPCWSTR lpModuleName); 168 WINBASEAPI WINBOOL WINAPI GetModuleHandleExA (DWORD dwFlags, LPCSTR lpModuleName, HMODULE *phModule); 169 WINBASEAPI WINBOOL WINAPI GetModuleHandleExW (DWORD dwFlags, LPCWSTR lpModuleName, HMODULE *phModule); 170 WINBASEAPI HMODULE WINAPI LoadLibraryExA (LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags); 171 WINBASEAPI HMODULE WINAPI LoadLibraryExW (LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags); 172 WINBASEAPI DWORD WINAPI SizeofResource (HMODULE hModule, HRSRC hResInfo); 173 174 #ifdef UNICODE 175 #define FindResourceEx FindResourceExW 176 #endif 177 178 #define GetModuleHandle __MINGW_NAME_AW(GetModuleHandle) 179 #define GetModuleHandleEx __MINGW_NAME_AW(GetModuleHandleEx) 180 #define LoadLibraryEx __MINGW_NAME_AW(LoadLibraryEx) 181 182 #ifndef RC_INVOKED 183 typedef WINBOOL (WINAPI *PGET_MODULE_HANDLE_EXA) (DWORD dwFlags, LPCSTR lpModuleName, HMODULE *phModule); 184 typedef WINBOOL (WINAPI *PGET_MODULE_HANDLE_EXW) (DWORD dwFlags, LPCWSTR lpModuleName, HMODULE *phModule); 185 #endif 186 187 #define PGET_MODULE_HANDLE_EX __MINGW_NAME_AW(PGET_MODULE_HANDLE_EX) 188 #endif 189 190 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || NTDDI_VERSION >= NTDDI_WIN10_VB 191 WINUSERAPI int WINAPI LoadStringA (HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int cchBufferMax); 192 WINUSERAPI int WINAPI LoadStringW (HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int cchBufferMax); 193 194 #define LoadString __MINGW_NAME_AW(LoadString) 195 #endif 196 197 #ifdef __cplusplus 198 } 199 #endif 200 #endif