libloaderapi.h 8.6 KB

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