PIMAGEHLP_STATUS_ROUTINE回调函数 (imagehlp.h)
与 BindImageEx 函数一起使用的应用程序定义的回调函数。 在映像绑定过程中调用状态例程。
PIMAGEHLP_STATUS_ROUTINE类型定义指向此回调函数的指针。 StatusRoutine 是应用程序定义的函数名称的占位符。
语法
PIMAGEHLP_STATUS_ROUTINE PimagehlpStatusRoutine;
BOOL PimagehlpStatusRoutine(
[in] IMAGEHLP_STATUS_REASON Reason,
[in] PCSTR ImageName,
[in] PCSTR DllName,
[in] ULONG_PTR Va,
[in] ULONG_PTR Parameter
)
{...}
参数
[in] Reason
绑定操作的当前状态。 此参数的取值可为下列值之一:
[in] ImageName
要绑定的文件的名称。 此值可以是文件名、部分路径或完整路径。
[in] DllName
DLL 的名称。
[in] Va
计算的虚拟地址。
[in] Parameter
任何其他状态信息。 此值取决于 Reason 参数的值。 有关详细信息,请参阅以下“备注”部分中的代码片段。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。 若要检索扩展的错误信息,请调用 GetLastError。
注解
所有 ImageHlp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。
以下代码片段介绍如何在状态为 BindImageComplete 时使用 Va 值。
case BindImageComplete:
if (fVerbose) {
fprintf(stderr, "BIND: Details of binding %s\n", ImageName );
NewImports = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)Va;
NewImport = NewImports;
while (NewImport->OffsetModuleName) {
fprintf( stderr, " Import from %s [%x]",
(LPSTR)NewImports + NewImport->OffsetModuleName,
NewImport->TimeDateStamp
);
if (NewImport->NumberOfModuleForwarderRefs != 0) {
fprintf( stderr, " with %u forwarders", NewImport->
NumberOfModuleForwarderRefs );
}
fprintf( stderr, "\n" );
NewForwarder = (PIMAGE_BOUND_FORWARDER_REF)(NewImport+1);
for (i=0; i<NewImport->NumberOfModuleForwarderRefs; i++)
{
fprintf( stderr, " Forward to %s [%x]\n",
(LPSTR)NewImports + NewForwarder->OffsetModuleName,
NewForwarder->TimeDateStamp);
NewForwarder += 1;
}
NewImport = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)NewForwarder;
}
}
break;
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | imagehlp.h |