IDebugHostSymbols::FindModuleByName 方法 (dbgmodel.h)
FindModuleByName 方法将浏览给定的主机上下文,找到具有指定名称的模块,并返回该模块的接口。 使用或不带文件扩展名按名称搜索模块是合法的。
语法
HRESULT FindModuleByName(
IDebugHostContext *context,
PCWSTR moduleName,
IDebugHostModule **module
);
参数
context
将在此主机上下文中搜索与给定名称匹配的已加载模块。
moduleName
要搜索的模块的名称。 可以使用或不带文件扩展名指定名称。
module
如果找到模块,则会在此处返回模块的接口。
返回值
此方法返回指示成功或失败的 HRESULT。
注解
示例代码
ComPtr<IDebugHost> spHost; /* get the host */
ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
// Find the "notepad.exe" module in the current UI context (process)
// of the debug host:
ComPtr<IDebugHostModule> spModule;
if (SUCCEEDED(spSym->FindModuleByName(USE_CURRENT_HOST_CONTEXT,
L"notepad.exe",
&spModule)))
{
// spModule is the module "notepad.exe"
}
}
FindModuleByName、CreateTypeSignature 和 CreateTypeSignatureForModuleRange 中的符号模块匹配的差异
FindModuleByName 将允许传递的模块名称是模块的真实映像名称(例如 My Module.dll),或者可以在调试器引擎 (引用它的名称,例如:MyModule 或 MyModule_<hex_base>) 。
调用 CreateTypeSignatureForModuleRange 并传递 name/nullptr/nullptr 将创建一个签名,该签名将与任何版本的名称匹配的任何模块匹配。
传递给 CreateTypeSignature 函数的模块名称将仅接受模块的真实图像名称 (,例如:MyModule.dll) 。
调用 FindModuleByName,然后使用该模块调用 CreateTypeSignature 将创建仅匹配传递给它的模块的特定实例的签名。 如果在 64 位 Windows) 上运行的 32 位进程中有两个模块副本加载 (ntdll,则只会匹配传递的特定实例。 如果卸载并重新加载该 DLL,该 DLL 也将不再匹配。 签名与调试器所称的模块的特定实例相关联。
要求
要求 | 值 |
---|---|
Header | dbgmodel.h |