Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/boost/winapi/dll.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * Copyright 2010 Vicente J. Botet Escriba
0003  * Copyright 2014 Renato Tegon Forti, Antony Polukhin
0004  * Copyright 2015, 2020 Andrey Semashev
0005  * Copyright 2015 Antony Polukhin
0006  *
0007  * Distributed under the Boost Software License, Version 1.0.
0008  * See http://www.boost.org/LICENSE_1_0.txt
0009  */
0010 
0011 #ifndef BOOST_WINAPI_DLL_HPP_INCLUDED_
0012 #define BOOST_WINAPI_DLL_HPP_INCLUDED_
0013 
0014 #include <boost/winapi/basic_types.hpp>
0015 #include <boost/winapi/get_proc_address.hpp>
0016 #include <boost/winapi/detail/header.hpp>
0017 
0018 #ifdef BOOST_HAS_PRAGMA_ONCE
0019 #pragma once
0020 #endif
0021 
0022 #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
0023 
0024 #if !defined( BOOST_USE_WINDOWS_H )
0025 extern "C" {
0026 
0027 #if !defined( BOOST_NO_ANSI_APIS )
0028 BOOST_WINAPI_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
0029 LoadLibraryA(boost::winapi::LPCSTR_ lpFileName);
0030 
0031 BOOST_WINAPI_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
0032 LoadLibraryExA(
0033     boost::winapi::LPCSTR_ lpFileName,
0034     boost::winapi::HANDLE_ hFile,
0035     boost::winapi::DWORD_ dwFlags
0036 );
0037 
0038 BOOST_WINAPI_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
0039 GetModuleHandleA(boost::winapi::LPCSTR_ lpFileName);
0040 
0041 BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
0042 GetModuleFileNameA(
0043     boost::winapi::HMODULE_ hModule,
0044     boost::winapi::LPSTR_ lpFilename,
0045     boost::winapi::DWORD_ nSize
0046 );
0047 #endif
0048 
0049 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
0050 LoadLibraryW(boost::winapi::LPCWSTR_ lpFileName);
0051 
0052 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
0053 LoadLibraryExW(
0054     boost::winapi::LPCWSTR_ lpFileName,
0055     boost::winapi::HANDLE_ hFile,
0056     boost::winapi::DWORD_ dwFlags
0057 );
0058 
0059 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
0060 GetModuleHandleW(boost::winapi::LPCWSTR_ lpFileName);
0061 
0062 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
0063 GetModuleFileNameW(
0064     boost::winapi::HMODULE_ hModule,
0065     boost::winapi::LPWSTR_ lpFilename,
0066     boost::winapi::DWORD_ nSize
0067 );
0068 
0069 struct _MEMORY_BASIC_INFORMATION;
0070 
0071 #if !defined( BOOST_WINAPI_IS_MINGW )
0072 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::SIZE_T_ BOOST_WINAPI_WINAPI_CC
0073 VirtualQuery(
0074     boost::winapi::LPCVOID_ lpAddress,
0075     ::_MEMORY_BASIC_INFORMATION* lpBuffer,
0076     boost::winapi::SIZE_T_ dwLength
0077 );
0078 #else // !defined( BOOST_WINAPI_IS_MINGW )
0079 BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
0080 VirtualQuery(
0081     boost::winapi::LPCVOID_ lpAddress,
0082     ::_MEMORY_BASIC_INFORMATION* lpBuffer,
0083     boost::winapi::DWORD_ dwLength
0084 );
0085 #endif // !defined( BOOST_WINAPI_IS_MINGW )
0086 } // extern "C"
0087 #endif // #if !defined( BOOST_USE_WINDOWS_H )
0088 
0089 namespace boost {
0090 namespace winapi {
0091 
0092 typedef struct BOOST_MAY_ALIAS MEMORY_BASIC_INFORMATION_ {
0093     PVOID_  BaseAddress;
0094     PVOID_  AllocationBase;
0095     DWORD_  AllocationProtect;
0096     SIZE_T_ RegionSize;
0097     DWORD_  State;
0098     DWORD_  Protect;
0099     DWORD_  Type;
0100 } *PMEMORY_BASIC_INFORMATION_;
0101 
0102 #if defined( BOOST_USE_WINDOWS_H )
0103 BOOST_CONSTEXPR_OR_CONST DWORD_ DONT_RESOLVE_DLL_REFERENCES_           = DONT_RESOLVE_DLL_REFERENCES;
0104 BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_WITH_ALTERED_SEARCH_PATH_         = LOAD_WITH_ALTERED_SEARCH_PATH;
0105 #else // defined( BOOST_USE_WINDOWS_H )
0106 BOOST_CONSTEXPR_OR_CONST DWORD_ DONT_RESOLVE_DLL_REFERENCES_           = 0x00000001;
0107 BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_WITH_ALTERED_SEARCH_PATH_         = 0x00000008;
0108 #endif // defined( BOOST_USE_WINDOWS_H )
0109 
0110 // This one is not defined by MinGW
0111 BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_IGNORE_CODE_AUTHZ_LEVEL_          = 0x00000010;
0112 
0113 #if !defined( BOOST_NO_ANSI_APIS )
0114 using ::LoadLibraryA;
0115 using ::LoadLibraryExA;
0116 using ::GetModuleHandleA;
0117 using ::GetModuleFileNameA;
0118 #endif // !defined( BOOST_NO_ANSI_APIS )
0119 using ::LoadLibraryW;
0120 using ::LoadLibraryExW;
0121 using ::GetModuleHandleW;
0122 using ::GetModuleFileNameW;
0123 
0124 BOOST_FORCEINLINE SIZE_T_ VirtualQuery(LPCVOID_ lpAddress, MEMORY_BASIC_INFORMATION_* lpBuffer, SIZE_T_ dwLength)
0125 {
0126     return ::VirtualQuery(lpAddress, reinterpret_cast< ::_MEMORY_BASIC_INFORMATION* >(lpBuffer), dwLength);
0127 }
0128 
0129 #if !defined( BOOST_NO_ANSI_APIS )
0130 BOOST_FORCEINLINE HMODULE_ load_library(LPCSTR_ lpFileName)
0131 {
0132     return ::LoadLibraryA(lpFileName);
0133 }
0134 
0135 BOOST_FORCEINLINE HMODULE_ load_library_ex(LPCSTR_ lpFileName, HANDLE_ hFile, DWORD_ dwFlags)
0136 {
0137     return ::LoadLibraryExA(lpFileName, hFile, dwFlags);
0138 }
0139 
0140 BOOST_FORCEINLINE HMODULE_ get_module_handle(LPCSTR_ lpFileName)
0141 {
0142     return ::GetModuleHandleA(lpFileName);
0143 }
0144 
0145 BOOST_FORCEINLINE DWORD_ get_module_file_name(HMODULE_ hModule, LPSTR_ lpFilename, DWORD_ nSize)
0146 {
0147     return ::GetModuleFileNameA(hModule, lpFilename, nSize);
0148 }
0149 #endif // #if !defined( BOOST_NO_ANSI_APIS )
0150 
0151 BOOST_FORCEINLINE HMODULE_ load_library(LPCWSTR_ lpFileName)
0152 {
0153     return ::LoadLibraryW(lpFileName);
0154 }
0155 
0156 BOOST_FORCEINLINE HMODULE_ load_library_ex(LPCWSTR_ lpFileName, HANDLE_ hFile, DWORD_ dwFlags)
0157 {
0158     return ::LoadLibraryExW(lpFileName, hFile, dwFlags);
0159 }
0160 
0161 BOOST_FORCEINLINE HMODULE_ get_module_handle(LPCWSTR_ lpFileName)
0162 {
0163     return ::GetModuleHandleW(lpFileName);
0164 }
0165 
0166 BOOST_FORCEINLINE DWORD_ get_module_file_name(HMODULE_ hModule, LPWSTR_ lpFilename, DWORD_ nSize)
0167 {
0168     return ::GetModuleFileNameW(hModule, lpFilename, nSize);
0169 }
0170 
0171 } // namespace winapi
0172 } // namespace boost
0173 
0174 #endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
0175 
0176 //
0177 // FreeLibrary is in a different partition set (slightly)
0178 //
0179 
0180 #if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
0181 
0182 #if !defined(BOOST_USE_WINDOWS_H)
0183 extern "C" {
0184 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
0185 FreeLibrary(boost::winapi::HMODULE_ hModule);
0186 }
0187 #endif
0188 
0189 namespace boost {
0190 namespace winapi {
0191 using ::FreeLibrary;
0192 }
0193 }
0194 
0195 #endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
0196 
0197 #include <boost/winapi/detail/footer.hpp>
0198 
0199 #endif // BOOST_WINAPI_DLL_HPP_INCLUDED_