ICorProfilerInfo::GetModuleInfo 方法

更新: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

请参见

参考

ICorProfilerInfo

其他资源

分析接口

分析(非托管 API 参考)