捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >API档案 > 正文
5 2017.06

GetProcAddress

点击次数:1232 更新时间:2017-6-5 20:05:17  【打印此页

原文链接 -> 传送门

函数功能:

GetProcAddress 函数用于获取指定动态链接库(DLL)中的一个导出函数或变量的地址。


API 函数原型:

注释:_In_ 说明该参数是输入的。

FARPROC WINAPI GetProcAddress(
  _In_ HMODULE hModule,
  _In_ LPCSTR  lpProcName
);


参数解析:

参数

含义

hModule

1. 该参数指定一个包含函数或者变量的 DLL 模块的句柄。由 LoadLibrary 函数,LoadLibraryEx 函数,LoadPackagedLibrary 函数,或者 GetModuleHandle 函数返回该句柄

2. GetProcAddress 函数不会从用 LOAD_LIBRARY_AS_DATAFILE 标识加载的模块中获得地址。更多信息请参照 LoadLibraryEx 函数

lpProcName

该参数指定该函数或者变量名,或者该函数的序号值。如果该参数是一个序号值,该序号值一定在低位字;高位字一定是 0



返回值:

1. 如果函数运行成功,则返回值为导出函数或变量的地址;

2. 如果函数运行失败,则返回值为 NULL。

想要调用更多的错误信息,请调用 GetLastError 函数。


备注:

1. 一个被 IpProcName 参数指出的函数名的拼写方法和示例必须与源 DDL 模板定义文件(.def)的 EXPORTS 声明一致。当调用在你代码里的函数时,输出的函数名可能与你用的函数名不同。该不同被在 SDK 头文件中使用的宏命令所隐藏。想要更多信息,请参照 Conventions for Function Prototypes(函数原型约定)。

2. IpProcName 参数能够通过一个在 EXPORTS 声明里的函数有关的指定的序号值来确定 DLL 函数。GetProcAddress 函数检查指定的序号是不是在范围 1 到从 .def 文件导出的最高值之间。然后该函数用这个序号作为一个索引去从一个函数表中读取该函数的地址。如果 .def 文件不从 1 到 N(在这里 N 是导出函数的个数)连续地编号函数,在 GetProcAddress 函数返回一个无效地址,非空地址的地方可能发生一个错误,即使没有任何函数配有该指定的序号。

3. 如果一个函数可能在 DLL 模块不存在 —— 例如,如果一个函数仅仅在 Windows Vista 系统中可用,但是该应用也可以在 Windows XP 系统里运行 —— 通过名字指定该函名代替序号值并且当函数不可用时设计你的应用去处理该情况,就像下面的代码段中展示的一样。

typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);

// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.

   PGNSI pGNSI;
   SYSTEM_INFO si;

   ZeroMemory(&si, sizeof(SYSTEM_INFO));
   
   pGNSI = (PGNSI) GetProcAddress(
      GetModuleHandle(TEXT("kernel32.dll")),
      "GetNativeSystemInfo");
   if(NULL != pGNSI)
   {
      pGNSI(&si);
   }
   else
   {
       GetSystemInfo(&si);
   }



需求:

Minimum supported client

Windows XP [桌面应用程序 | Windows 商店应用程序]

Minimum supported server

Windows 2003 服务器版 [桌面应用程序 | Windows 商店应用程序]

Minimum supported phone

Windows Phone 8

Header

Winbase.h (包含于 Windows.h)

Library

Kernel32.lib

DLL

Kernel32.dll


 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1232 更新时间:2017-6-5 20:05:17  【打印此页

上一条:AttachThreadInput

下一条:EnumObjectsProc

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修