Método IDebugHostSymbols::FindModuleByName (dbgmodel.h)
El método FindModuleByName buscará en el contexto de host especificado y buscará un módulo que tenga el nombre especificado y devolverá una interfaz a él. Es legal buscar el módulo por nombre con o sin la extensión de archivo.
Sintaxis
HRESULT FindModuleByName(
IDebugHostContext *context,
PCWSTR moduleName,
IDebugHostModule **module
);
Parámetros
context
Este contexto de host se buscará en un módulo cargado que coincida con el nombre especificado.
moduleName
Nombre del módulo que se va a buscar. El nombre se puede especificar con o sin una extensión de archivo.
module
Si se encuentra el módulo, se devolverá una interfaz al módulo aquí.
Valor devuelto
Este método devuelve HRESULT que indica éxito o error.
Comentarios
Código de ejemplo
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"
}
}
Diferencias en la coincidencia de módulos de símbolos en FindModuleByName, CreateTypeSignature y CreateTypeSignatureForModuleRange
FindModuleByName permitirá que el nombre del módulo pasado sea el nombre de imagen real del módulo, por ejemplo, Mi Module.dll, o el que puede hacer referencia a él en el motor del depurador (por ejemplo: MyModule o MyModule_<hex_base>).
Al llamar a CreateTypeSignatureForModuleRange y pasar un nombre,nullptr/nullptr/nullptr, se creará una firma que coincidirá con cualquier módulo que coincida con ese nombre de cualquier versión.
El nombre del módulo pasado a las funciones CreateTypeSignature solo aceptará el nombre de imagen real del módulo (por ejemplo, MyModule.dll).
Al llamar a FindModuleByName y, a continuación, CreateTypeSignature con ese módulo se creará una firma que coincidirá solo con la instancia concreta del módulo que se le ha pasado. Si hay dos copias de un módulo que se carga (por ejemplo, ntdll en un proceso de 32 bits que se ejecuta en Windows de 64 bits), solo coincidiría con la instancia específica pasada. Tampoco coincidiría si ese archivo DLL se descargara y se volvera a cargar. La firma está asociada a una instancia específica de un módulo, como lo conoce el depurador.
Requisitos
Requisito | Valor |
---|---|
Header | dbgmodel.h |