ICorProfilerInfo3::GetModuleInfo2 Method

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

Syntax

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);

Parameters

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

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

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

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

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

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

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

Remarks

对于动态模块,参数 szName 是模块的元数据名称,基址为 0(零)。 元数据名称是元数据中模块表中“名称”列中的值。 这也作为 Module.ScopeName 托管代码的属性公开,作为 szNameIMetaDataImport::GetScopeProps 方法的参数公开给非托管元数据客户端代码。

GetModuleInfo2尽管该方法可以在模块 ID 存在后立即调用,但在探查器收到 ICorProfilerCallback::ModuleAttachedToAssembly 回调之前,父程序集的 ID 将不可用。

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

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

Requirements

平台:请参阅系统要求

页眉: CorProf.idl、CorProf.h

Library: CorGuids.lib

.NET Framework 版本: 自 4 起可用

See also