Windows系统编程 教学课件 作者 李晓黎 第10章.ppt

Windows系统编程 教学课件 作者 李晓黎 第10章.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
调用GetProcAddress()函数获取DLL中导出函数地址 定义一个PROCSUM实例,并调用GetProcAddress()函数获取DLL中导出函数地址的代码如下: ? HINSTANCE hinstLib; hinstLib = LoadLibrary(mylib.dll); PROCSUM ProcSum; ProcSum = (PROCSUM) GetProcAddress(hinstLib, sum); ? 调用导出函数sum()的代码如下: ? (ProcSum) (4, 3) 函数FreeLibrary() 如果不再需要使用DLL模块,则可以调用FreeLibrary() 函数或 FreeLibraryAndExitThread()函数。释放DLL模块,减少DLL模块的引用计数,如果引用计数等于0,则从进程的虚拟地址空间中卸载DLL代码。函数FreeLibrary()的原型如下: BOOL FreeLibrary( HMODULE hLibModule // DLL模块句柄 ); ? 如果函数执行成功,则返回TRUE;否则返回FALSE。 FreeLibraryAndExitThread()函数 FreeLibraryAndExitThread()函数在释放DLL模块后终止调用线程,函数原型如下: ? FARPROC GetProcAddress( HMODULE hModule, // DLL模块句柄 LPCWSTR lpProcName // 导出函数名 ); 【例10.3】 演示如何使用运行时动态链接的方法引用mylib.dll中的导出函数。 在程序中调用mylib.dll中的sum()函数,计算3+4的和,代码如下: ? #include stdafx.h #include windows.h ? typedef int (*PROCSUM)(int,int); int _tmain(int argc, _TCHAR* argv[]) { HINSTANCE hinstLib; MYPROC ProcSum; BOOL fFreeResult; // 加载DLL文件,获取DLL句柄 hinstLib = LoadLibrary(mylib.dll); // 如果句柄有效,则获取函数sum()的地址. if (hinstLib != NULL) { wprintf(LLoadLibrary() is OK!\n); ProcSum = (PROCSUM) GetProcAddress(hinstLib, sum); 接上 // If the function address is valid, call the function. if (ProcSum != NULL) { printf(GetProcAddress() is OK!\n); printf(4+3 = %d\n, (ProcSum) (4, 3)); ; } else printf(GetProcAddress() failed, error %d\n, GetLastError()); // Free the DLL module. fFreeResult = FreeLibrary(hinstLib); } else printf(LoadLibrary() failed, error %d\n, GetLastError()); system(Pause); return 0; } 【例10.3】的运行结果 10.3.3 搜索DLL文件的次序 1.标准搜索次序 2.替代搜索次序 1.标准搜索次序 系统使用的DLL搜索次序取决于是否启用安全DLL搜索模式。默认情况下,安全DLL搜索模式是启用的。如果要禁用安全DLL搜索模式,则可以打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager键下创建一个DWORD值SafeDllSearchMode,并将其设置为0,如图10.10所示。 SetDllDirectory()函数 调用SetDllDirectory()函数可以禁用安全DLL搜索模式,并指定搜索DLL文件的路径,函数原型如下: ? BOOL W

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档