github.com/searKing/golang/go@v1.2.117/os/signal/cgo/include/boost/winapi/get_proc_address.hpp (about)

     1  /*
     2   * Copyright 2020 Andrey Semashev
     3   *
     4   * Distributed under the Boost Software License, Version 1.0.
     5   * See http://www.boost.org/LICENSE_1_0.txt
     6   */
     7  
     8  #ifndef BOOST_WINAPI_GET_PROC_ADDRESS_HPP_INCLUDED_
     9  #define BOOST_WINAPI_GET_PROC_ADDRESS_HPP_INCLUDED_
    10  
    11  #include <boost/winapi/basic_types.hpp>
    12  
    13  #ifdef BOOST_HAS_PRAGMA_ONCE
    14  #pragma once
    15  #endif
    16  
    17  #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
    18  
    19  #include <boost/winapi/detail/header.hpp>
    20  
    21  #if !defined(BOOST_USE_WINDOWS_H)
    22  namespace boost { namespace winapi {
    23  #ifdef _WIN64
    24  typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *FARPROC_)();
    25  typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *NEARPROC_)();
    26  typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *PROC_)();
    27  #else
    28  typedef int (BOOST_WINAPI_WINAPI_CC *FARPROC_)();
    29  typedef int (BOOST_WINAPI_WINAPI_CC *NEARPROC_)();
    30  typedef int (BOOST_WINAPI_WINAPI_CC *PROC_)();
    31  #endif // _WIN64
    32  }} // namespace boost::winapi
    33  
    34  extern "C" {
    35  #if !defined(UNDER_CE)
    36  BOOST_WINAPI_IMPORT boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
    37  GetProcAddress(boost::winapi::HMODULE_ hModule, boost::winapi::LPCSTR_ lpProcName);
    38  #else
    39  // On Windows CE there are two functions: GetProcAddressA (since Windows CE 3.0) and GetProcAddressW.
    40  // GetProcAddress is a macro that is _always_ defined to GetProcAddressW.
    41  BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
    42  GetProcAddressA(boost::winapi::HMODULE_ hModule, boost::winapi::LPCSTR_ lpProcName);
    43  BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
    44  GetProcAddressW(boost::winapi::HMODULE_ hModule, boost::winapi::LPCWSTR_ lpProcName);
    45  #endif
    46  } // extern "C"
    47  #endif // !defined(BOOST_USE_WINDOWS_H)
    48  
    49  namespace boost {
    50  namespace winapi {
    51  
    52  #if defined(BOOST_USE_WINDOWS_H)
    53  typedef ::FARPROC FARPROC_;
    54  typedef ::NEARPROC NEARPROC_;
    55  typedef ::PROC PROC_;
    56  #endif // defined(BOOST_USE_WINDOWS_H)
    57  
    58  #if !defined(UNDER_CE)
    59  // For backward compatibility, don't use directly. Use get_proc_address instead.
    60  using ::GetProcAddress;
    61  #else
    62  using ::GetProcAddressA;
    63  using ::GetProcAddressW;
    64  #endif
    65  
    66  BOOST_FORCEINLINE FARPROC_ get_proc_address(HMODULE_ hModule, LPCSTR_ lpProcName)
    67  {
    68  #if !defined(UNDER_CE)
    69      return ::GetProcAddress(hModule, lpProcName);
    70  #else
    71      return ::GetProcAddressA(hModule, lpProcName);
    72  #endif
    73  }
    74  
    75  } // namespace winapi
    76  } // namespace boost
    77  
    78  #include <boost/winapi/detail/footer.hpp>
    79  
    80  #endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
    81  #endif // BOOST_WINAPI_GET_PROC_ADDRESS_HPP_INCLUDED_