IGetAppTrackerData::GetComponentsInProcess 方法 (comsvcs.h)

检索单个进程中托管的所有 COM+ 组件或这些组件的指定子集的摘要信息。

语法

HRESULT GetComponentsInProcess(
  [in]  REFGUID          ApplicationInstanceId,
  [in]  DWORD            ProcessId,
  [in]  REFGUID          PartitionId,
  [in]  REFGUID          ApplicationId,
  [in]  DWORD            Flags,
  [out] ULONG            *NumComponentsInProcess,
  [out] ComponentSummary **Components
);

参数

[in] ApplicationInstanceId

唯一标识要选择的跟踪进程的应用程序实例 GUID;如果将改用 ProcessId 参数进行选择,则GUID_NULL。

[in] ProcessId

标识要选择的进程的进程 ID;如果改用 ApplicationInstanceId 参数进行选择,则为 0。

[in] PartitionId

用于筛选结果的分区 ID,或为所有分区GUID_NULL。

[in] ApplicationId

用于筛选结果的应用程序 ID,或为所有应用程序GUID_NULL。

[in] Flags

来自 GetAppTrackerDataFlags 枚举的标志的组合,用于筛选结果和选择返回的数据。 支持以下标志:GATD_INCLUDE_LIBRARY_APPS、GATD_INCLUDE_SWC、GATD_INCLUDE_CLASS_NAME、GATD_INCLUDE_APPLICATION_NAME。 有关详细信息,请参阅下面的“备注”。

[out] NumComponentsInProcess

返回时,进程中与 PartitionIdApplicationIdFlags 指定的筛选条件匹配的组件数。

[out] Components

返回时,是匹配组件的 ComponentSummary 结构的数组。

返回值

此方法可以返回标准返回值E_INVALIDARG和E_OUTOFMEMORY,以及以下值。

返回代码 说明
S_OK
方法已成功完成,结果位于 Components 参数中。
S_FALSE
方法已成功完成,但没有与筛选条件匹配的组件。
COMADMIN_E_APP_NOT_RUNNING
指定的进程不存在,或者未承载任何跟踪的 COM+ 应用程序。

注解

进程可以按应用程序实例 ID 或进程 ID 选择,但不能同时选择这两者。 通常首选按应用程序实例 ID 进行选择,因为在进程终止后可能会重复使用进程 ID。 但是,如果从其他源(例如程序的命令行参数)获取进程 ID,则按进程 ID 进行选择可能很有用。

如果在 Flags 中未设置GATD_INCLUDE_LIBRARY_APPS和GATD_INCLUDE_SWC,则结果中仅包含 COM+ 服务器应用程序中的组件。 如果设置了GATD_INCLUDE_LIBRARY_APPS,则还包含进程中 COM+ 库应用程序中的组件(如果有)。 如果设置了GATD_INCLUDE_SWC,则结果还将包含“无组件服务”上下文的条目。

如果使用 ApplicationId 指定应用程序 (它未设置为 GUID_NULL) ,则GATD_INCLUDE_LIBRARY_APPS和GATD_INCLUDE_SWC标志没有意义,并且使用它们无效。 无论该应用程序的类型如何,都将返回指定应用程序中的组件。

要求

要求
最低受支持的客户端 Windows XP SP2 [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 SP1 [仅限桌面应用]
目标平台 Windows
标头 comsvcs.h

另请参阅

IGetAppTrackerData