ICorProfilerInfo::GetModuleInfo 方法

给定模块 ID 后,将返回模块的文件名和模块的父程序集的 ID。

语法

HRESULT GetModuleInfo(  
    [in]  ModuleID   moduleId,  
    [out] LPCBYTE    *ppBaseLoadAddress,  
    [in]  ULONG      cchName,  
    [out] ULONG      *pcchName,  
    [out, size_is(cchName), length_is(*pcchName)]  
          WCHAR      szName[] ,  
    [out] AssemblyID *pAssemblyId);  

参数

moduleId
[in] 将为其检索信息的模块的 ID。

ppBaseLoadAddress
[out] 加载模块的基址。

cchName
[in] szName 返回缓冲区的长度(以字符为单位)。

pcchName
[out] 指向返回的模块文件名总字符长度的指针。

szName
[out] 调用方提供的宽字符缓冲区。 方法返回后,此缓冲区包含模块的文件名。

pAssemblyId
[out] 指向模块的父程序集的 ID 的指针。

注解

对于动态模块,szName 参数是空字符串,并且基址是 0(零)。

尽管只要存在模块的 ID,就可能调用 GetModuleInfo 方法,但在探查器接收到 ICorProfilerCallback::ModuleAttachedToAssembly 回调前,父程序集的 ID 不可用。

返回 GetModuleInfo 后,必须验证 szName 缓冲区的大小是否足够包含模块的完整文件名。 为此,请比较 pcchName 指向的值和 cchName 参数的值。 如果 pcchName 指向的值大于 cchName,请分配更大的 szName 缓冲区,并用新的、更大的大小更新 cchName,然后再次调用 GetModuleInfo

或者,可以先用长度为零的 szName 缓冲区调用 GetModuleInfo 以获取正确的缓冲区大小。 然后,可将缓冲区大小设置为 pcchName 中返回的值,并再次调用 GetModuleInfo

要求

平台:请参阅系统要求

头文件: CorProf.idl、CorProf.h

库:CorGuids.lib

.NET Framework 版本:自 2.0 起可用

另请参阅