给定模块 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 起可用