c++ - Dhcpv6CApiInitialize 在哪里?

标签 c++ windows msdn dhcp

我正在尝试动态加载 dhcpcsvc6.dll 以支持 win7 上的 ipv6 和 xp 上的 ipv4。但是 Dhcpv6CApiInitialize 的 GetProcAddress 总是失败。所以我使用 exescope 来检查 dll 的导出,这就是我得到的。

Version: 6.1.7600.16385.

00000001    404632EA    Dhcpv6AcquireParameters
00000002    40463E4F    Dhcpv6CancelOperation
00000003    40463EB9    Dhcpv6EnableTracing
00000004    40461D3B    Dhcpv6FreeLeaseInfo
00000005    404644D3    Dhcpv6GetTraceArray
00000006    404645D9    Dhcpv6GetUserClasses
00000007    404642D1    Dhcpv6IsEnabled
00000008    40461730    Dhcpv6QueryLeaseInfo
00000009    40463419    Dhcpv6ReleaseParameters
0000000A    40463E31    Dhcpv6ReleasePrefix
0000000B    40463BF5    Dhcpv6ReleasePrefixEx
0000000C    40463BD1    Dhcpv6RenewPrefix
0000000D    40463892    Dhcpv6RenewPrefixEx
0000000E    40463F51    Dhcpv6RequestParams
0000000F    40463871    Dhcpv6RequestPrefix
00000010    40463549    Dhcpv6RequestPrefixEx
00000011    404647D1    Dhcpv6SetUserClass

Dhcpv6CApiInitialize 不在其中。我还尝试了 dhcpcore6.dll、dhcpsvc.dll 和这些的 64 位版本.. 没有发现。

我想知道这个函数到底在哪里?我真的必须在任何其他 dhcp v6 api 之前调用它吗?

MSDN 引用:http://msdn.microsoft.com/en-us/library/windows/desktop/aa363306(v=vs.85).aspx

最佳答案

长话短说

功能直到 Win8 才出现。 Win8 版本(我检查了版本 6.2.9200.16433)没有任何用处。如果 dhcpcsvc6.DLL 中不存在这些函数,则忽略这些函数似乎是安全的。

解释:

  1. 静态链接需要 Win8 SDK(已内置到 VS2012 中)。
  2. 带有 Win7 SDK 的 VS2010 无法编译。
  3. 用Win8 SDK编译时,编译后的exe不能在Win7上运行,提示The procedure entry point Dhcpv6CApiInitialize could not be located in the dynamic link library dhcpcsvc6.DLL。这意味着函数确实是从 dhcpcsvc6.DLL 导出的。
  4. Win8 版本的 DLL 确实包含这些函数。

_Dhcpv6CApiInitialize@4 本质上只是将 2 放入输出参数:

10004199: mov         edi,edi                // Standard Hotpatch spot
1000419B: push        ebp                    // Standard Prologue
1000419C: mov         ebp,esp                // Standard Prologue
1000419E: mov         eax,dword ptr [ebp+8]  // eax <- param0
100041A1: test        eax,eax                // if (param0 == 0)
100041A3: je          100041AB               //    return;
100041A5: mov         dword ptr [eax],2      // *param0 = 2;
100041AB: pop         ebp                    // Standard epilogue
100041AC: ret         4                      // end of function

_Dhcpv6CApiCleanup@0 什么都不做:

100041B6: ret

关于c++ - Dhcpv6CApiInitialize 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18327664/

相关文章:

.net - 命名空间的另一个含义?

c++ - 如何在wince 6.0 r3 platform builder中使用OPENGL API

c++ - 递归查找子字符串

windows - 如果由任务计划程序运行,则无法访问网络地址

authentication - VSTS 登录失败,出现 401 未授权 - [用户] 有多个与其关联的帐户

c++ - 我在哪里可以找到 IOCTL 常量值?

c++ - C和C++相对于一元算术运算符存在差异的原因是什么 +

c++ - 添加两个大数

windows - 将外部非版本化资源链接到 SVN 存储库

c++ - MapViewOfFile 是否有可能两次返回相同的地址?