ICorProfilerInfo3::GetModuleInfo2 方法

若给定模块 ID,返回模块的文件名、模块父程序集的 ID 以及描述模块属性的位掩码。

语法

HRESULT GetModuleInfo2(  
    [in]  ModuleID   moduleId,  
    [out] LPCBYTE    *ppBaseLoadAddress,  
    [in]  ULONG      cchName,  
    [out] ULONG      *pcchName,  
    [out, annotation("__out_ecount_part(cchName, *pcchName)")]  
          WCHAR      szName[] ,  
    [out] AssemblyID *pAssemblyId);  
    [out] DWORD                 *pdwModuleFlags);  

参数

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

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

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

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

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

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

pdwModuleFlags
[out] 指定模块属性的 COR_PRF_MODULE_FLAGS 枚举中的值的位掩码。

注解

对于动态模块,szName 参数是此模块的元数据名称,且基址为 0(零)。 元数据名称是元数据内模块表中名称列的值。 这还公开为托管代码的 Module.ScopeName 属性以及非托管元数据客户端代码的 IMetaDataImport::GetScopeProps 方法的 szName 参数。

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

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

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

要求

平台:请参阅系统要求

头文件: CorProf.idl、CorProf.h

库:CorGuids.lib

.NET Framework 版本:自 4 起可用

另请参阅