更新:2007 年 11 月
接受模块 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。
有关这两种方法的更多信息,请参见调用方分配的缓冲区。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**CorProf.idl
**库:**CorGuids.lib
**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0