1 // Copyright © 2015-2017 winapi-rs developers 2 // Licensed under the Apache License, Version 2.0 3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 5 // All files in the project carrying such notice may not be copied, modified, or distributed 6 // except according to those terms. 7 //! ApiSet Contract for api-ms-win-core-libraryloader-l1 8 use ctypes::c_int; 9 use shared::basetsd::LONG_PTR; 10 use shared::minwindef::{ 11 BOOL, DWORD, FARPROC, HGLOBAL, HINSTANCE, HMODULE, HRSRC, LPVOID, UINT, WORD 12 }; 13 use um::winnt::{HANDLE, LANGID, LPCSTR, LPCWSTR, LPSTR, LPWSTR, PCWSTR, PVOID}; 14 pub const GET_MODULE_HANDLE_EX_FLAG_PIN: DWORD = 0x00000001; 15 pub const GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT: DWORD = 0x00000002; 16 pub const GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS: DWORD = 0x00000004; 17 pub const DONT_RESOLVE_DLL_REFERENCES: DWORD = 0x00000001; 18 pub const LOAD_LIBRARY_AS_DATAFILE: DWORD = 0x00000002; 19 pub const LOAD_WITH_ALTERED_SEARCH_PATH: DWORD = 0x00000008; 20 pub const LOAD_IGNORE_CODE_AUTHZ_LEVEL: DWORD = 0x00000010; 21 pub const LOAD_LIBRARY_AS_IMAGE_RESOURCE: DWORD = 0x00000020; 22 pub const LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE: DWORD = 0x00000040; 23 pub const LOAD_LIBRARY_REQUIRE_SIGNED_TARGET: DWORD = 0x00000080; 24 pub const LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR: DWORD = 0x00000100; 25 pub const LOAD_LIBRARY_SEARCH_APPLICATION_DIR: DWORD = 0x00000200; 26 pub const LOAD_LIBRARY_SEARCH_USER_DIRS: DWORD = 0x00000400; 27 pub const LOAD_LIBRARY_SEARCH_SYSTEM32: DWORD = 0x00000800; 28 pub const LOAD_LIBRARY_SEARCH_DEFAULT_DIRS: DWORD = 0x00001000; 29 pub const LOAD_LIBRARY_SAFE_CURRENT_DIRS: DWORD = 0x00002000; 30 pub const LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER: DWORD = 0x00004000; 31 pub const LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY: DWORD = 0x00008000; 32 FN!{stdcall ENUMRESLANGPROCA( 33 hModule: HMODULE, 34 lpType: LPCSTR, 35 lpName: LPCSTR, 36 wLanguage: WORD, 37 lParam: LONG_PTR, 38 ) -> BOOL} 39 FN!{stdcall ENUMRESLANGPROCW( 40 hModule: HMODULE, 41 lpType: LPCWSTR, 42 lpName: LPCWSTR, 43 wLanguage: WORD, 44 lParam: LONG_PTR, 45 ) -> BOOL} 46 FN!{stdcall ENUMRESNAMEPROCA( 47 hModule: HMODULE, 48 lpType: LPCSTR, 49 lpName: LPSTR, 50 lParam: LONG_PTR, 51 ) -> BOOL} 52 FN!{stdcall ENUMRESNAMEPROCW( 53 hModule: HMODULE, 54 lpType: LPCWSTR, 55 lpName: LPWSTR, 56 lParam: LONG_PTR, 57 ) -> BOOL} 58 FN!{stdcall ENUMRESTYPEPROCA( 59 hModule: HMODULE, 60 lpType: LPSTR, 61 lParam: LONG_PTR, 62 ) -> BOOL} 63 FN!{stdcall ENUMRESTYPEPROCW( 64 hModule: HMODULE, 65 lpType: LPWSTR, 66 lParam: LONG_PTR, 67 ) -> BOOL} 68 extern "system" { DisableThreadLibraryCalls( hLibModule: HMODULE, ) -> BOOL69 pub fn DisableThreadLibraryCalls( 70 hLibModule: HMODULE, 71 ) -> BOOL; FindResourceExW( hModule: HMODULE, lpName: LPCWSTR, lpType: LPCWSTR, wLanguage: WORD, ) -> HRSRC72 pub fn FindResourceExW( 73 hModule: HMODULE, 74 lpName: LPCWSTR, 75 lpType: LPCWSTR, 76 wLanguage: WORD, 77 ) -> HRSRC; FindStringOrdinal( dwFindStringOrdinalFlags: DWORD, lpStringSource: LPCWSTR, cchSource: c_int, lpStringValue: LPCWSTR, cchValue: c_int, bIgnoreCase: BOOL, ) -> c_int78 pub fn FindStringOrdinal( 79 dwFindStringOrdinalFlags: DWORD, 80 lpStringSource: LPCWSTR, 81 cchSource: c_int, 82 lpStringValue: LPCWSTR, 83 cchValue: c_int, 84 bIgnoreCase: BOOL, 85 ) -> c_int; FreeLibrary( hLibModule: HMODULE, ) -> BOOL86 pub fn FreeLibrary( 87 hLibModule: HMODULE, 88 ) -> BOOL; FreeLibraryAndExitThread( hLibModule: HMODULE, dwExitCode: DWORD, )89 pub fn FreeLibraryAndExitThread( 90 hLibModule: HMODULE, 91 dwExitCode: DWORD, 92 ); FreeResource( hResData: HGLOBAL, ) -> BOOL93 pub fn FreeResource( 94 hResData: HGLOBAL, 95 ) -> BOOL; GetModuleFileNameA( hModule: HMODULE, lpFilename: LPSTR, nSize: DWORD, ) -> DWORD96 pub fn GetModuleFileNameA( 97 hModule: HMODULE, 98 lpFilename: LPSTR, 99 nSize: DWORD, 100 ) -> DWORD; GetModuleFileNameW( hModule: HMODULE, lpFilename: LPWSTR, nSize: DWORD, ) -> DWORD101 pub fn GetModuleFileNameW( 102 hModule: HMODULE, 103 lpFilename: LPWSTR, 104 nSize: DWORD, 105 ) -> DWORD; GetModuleHandleA( lpModuleName: LPCSTR, ) -> HMODULE106 pub fn GetModuleHandleA( 107 lpModuleName: LPCSTR, 108 ) -> HMODULE; GetModuleHandleW( lpModuleName: LPCWSTR, ) -> HMODULE109 pub fn GetModuleHandleW( 110 lpModuleName: LPCWSTR, 111 ) -> HMODULE; GetModuleHandleExA( dwFlags: DWORD, lpModuleName: LPCSTR, phModule: *mut HMODULE, ) -> BOOL112 pub fn GetModuleHandleExA( 113 dwFlags: DWORD, 114 lpModuleName: LPCSTR, 115 phModule: *mut HMODULE, 116 ) -> BOOL; GetModuleHandleExW( dwFlags: DWORD, lpModuleName: LPCWSTR, phModule: *mut HMODULE, ) -> BOOL117 pub fn GetModuleHandleExW( 118 dwFlags: DWORD, 119 lpModuleName: LPCWSTR, 120 phModule: *mut HMODULE, 121 ) -> BOOL; GetProcAddress( hModule: HMODULE, lpProcName: LPCSTR, ) -> FARPROC122 pub fn GetProcAddress( 123 hModule: HMODULE, 124 lpProcName: LPCSTR, 125 ) -> FARPROC; LoadLibraryExA( lpLibFileName: LPCSTR, hFile: HANDLE, dwFlags: DWORD, ) -> HMODULE126 pub fn LoadLibraryExA( 127 lpLibFileName: LPCSTR, 128 hFile: HANDLE, 129 dwFlags: DWORD, 130 ) -> HMODULE; LoadLibraryExW( lpLibFileName: LPCWSTR, hFile: HANDLE, dwFlags: DWORD, ) -> HMODULE131 pub fn LoadLibraryExW( 132 lpLibFileName: LPCWSTR, 133 hFile: HANDLE, 134 dwFlags: DWORD, 135 ) -> HMODULE; LoadResource( hModule: HMODULE, hResInfo: HRSRC, ) -> HGLOBAL136 pub fn LoadResource( 137 hModule: HMODULE, 138 hResInfo: HRSRC, 139 ) -> HGLOBAL; LoadStringA( hInstance: HINSTANCE, uID: UINT, lpBuffer: LPSTR, cchBufferMax: c_int, ) -> c_int140 pub fn LoadStringA( 141 hInstance: HINSTANCE, 142 uID: UINT, 143 lpBuffer: LPSTR, 144 cchBufferMax: c_int, 145 ) -> c_int; LoadStringW( hInstance: HINSTANCE, uID: UINT, lpBuffer: LPWSTR, cchBufferMax: c_int, ) -> c_int146 pub fn LoadStringW( 147 hInstance: HINSTANCE, 148 uID: UINT, 149 lpBuffer: LPWSTR, 150 cchBufferMax: c_int, 151 ) -> c_int; LockResource( hResData: HGLOBAL, ) -> LPVOID152 pub fn LockResource( 153 hResData: HGLOBAL, 154 ) -> LPVOID; SizeofResource( hModule: HMODULE, hResInfo: HRSRC, ) -> DWORD155 pub fn SizeofResource( 156 hModule: HMODULE, 157 hResInfo: HRSRC, 158 ) -> DWORD; 159 } 160 pub type DLL_DIRECTORY_COOKIE = PVOID; 161 pub type PDLL_DIRECTORY_COOKIE = *mut PVOID; 162 extern "system" { AddDllDirectory( NewDirectory: PCWSTR, ) -> DLL_DIRECTORY_COOKIE163 pub fn AddDllDirectory( 164 NewDirectory: PCWSTR, 165 ) -> DLL_DIRECTORY_COOKIE; RemoveDllDirectory( Cookie: DLL_DIRECTORY_COOKIE, ) -> BOOL166 pub fn RemoveDllDirectory( 167 Cookie: DLL_DIRECTORY_COOKIE, 168 ) -> BOOL; SetDefaultDllDirectories( DirectoryFlags: DWORD, ) -> BOOL169 pub fn SetDefaultDllDirectories( 170 DirectoryFlags: DWORD, 171 ) -> BOOL; EnumResourceLanguagesExA( hModule: HMODULE, lpType: LPCSTR, lpName: LPCSTR, lpEnumFunc: ENUMRESLANGPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID, ) -> BOOL172 pub fn EnumResourceLanguagesExA( 173 hModule: HMODULE, 174 lpType: LPCSTR, 175 lpName: LPCSTR, 176 lpEnumFunc: ENUMRESLANGPROCA, 177 lParam: LONG_PTR, 178 dwFlags: DWORD, 179 LangId: LANGID, 180 ) -> BOOL; EnumResourceLanguagesExW( hModule: HMODULE, lpType: LPCWSTR, lpName: LPCWSTR, lpEnumFunc: ENUMRESLANGPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID, ) -> BOOL181 pub fn EnumResourceLanguagesExW( 182 hModule: HMODULE, 183 lpType: LPCWSTR, 184 lpName: LPCWSTR, 185 lpEnumFunc: ENUMRESLANGPROCW, 186 lParam: LONG_PTR, 187 dwFlags: DWORD, 188 LangId: LANGID, 189 ) -> BOOL; EnumResourceNamesExA( hModule: HMODULE, lpType: LPCSTR, lpEnumFunc: ENUMRESNAMEPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID, ) -> BOOL190 pub fn EnumResourceNamesExA( 191 hModule: HMODULE, 192 lpType: LPCSTR, 193 lpEnumFunc: ENUMRESNAMEPROCA, 194 lParam: LONG_PTR, 195 dwFlags: DWORD, 196 LangId: LANGID, 197 ) -> BOOL; EnumResourceNamesExW( hModule: HMODULE, lpType: LPCWSTR, lpEnumFunc: ENUMRESNAMEPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID, ) -> BOOL198 pub fn EnumResourceNamesExW( 199 hModule: HMODULE, 200 lpType: LPCWSTR, 201 lpEnumFunc: ENUMRESNAMEPROCW, 202 lParam: LONG_PTR, 203 dwFlags: DWORD, 204 LangId: LANGID, 205 ) -> BOOL; EnumResourceTypesExA( hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCA, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID, ) -> BOOL206 pub fn EnumResourceTypesExA( 207 hModule: HMODULE, 208 lpEnumFunc: ENUMRESTYPEPROCA, 209 lParam: LONG_PTR, 210 dwFlags: DWORD, 211 LangId: LANGID, 212 ) -> BOOL; EnumResourceTypesExW( hModule: HMODULE, lpEnumFunc: ENUMRESTYPEPROCW, lParam: LONG_PTR, dwFlags: DWORD, LangId: LANGID, ) -> BOOL213 pub fn EnumResourceTypesExW( 214 hModule: HMODULE, 215 lpEnumFunc: ENUMRESTYPEPROCW, 216 lParam: LONG_PTR, 217 dwFlags: DWORD, 218 LangId: LANGID, 219 ) -> BOOL; FindResourceW( hModule: HMODULE, lpName: LPCWSTR, lpType: LPCWSTR, ) -> HRSRC220 pub fn FindResourceW( 221 hModule: HMODULE, 222 lpName: LPCWSTR, 223 lpType: LPCWSTR, 224 ) -> HRSRC; LoadLibraryA( lpFileName: LPCSTR, ) -> HMODULE225 pub fn LoadLibraryA( 226 lpFileName: LPCSTR, 227 ) -> HMODULE; LoadLibraryW( lpFileName: LPCWSTR, ) -> HMODULE228 pub fn LoadLibraryW( 229 lpFileName: LPCWSTR, 230 ) -> HMODULE; EnumResourceNamesW( hModule: HMODULE, lpType: LPCWSTR, lpEnumFunc: ENUMRESNAMEPROCW, lParam: LONG_PTR, ) -> BOOL231 pub fn EnumResourceNamesW( 232 hModule: HMODULE, 233 lpType: LPCWSTR, 234 lpEnumFunc: ENUMRESNAMEPROCW, 235 lParam: LONG_PTR, 236 ) -> BOOL; 237 } 238