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
返回时,进程中与 PartitionId、 ApplicationId 和 Flags 指定的筛选条件匹配的组件数。
[out] Components
返回时,是匹配组件的 ComponentSummary 结构的数组。
返回值
此方法可以返回标准返回值E_INVALIDARG和E_OUTOFMEMORY,以及以下值。
返回代码 | 说明 |
---|---|
|
方法已成功完成,结果位于 Components 参数中。 |
|
方法已成功完成,但没有与筛选条件匹配的组件。 |
|
指定的进程不存在,或者未承载任何跟踪的 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 |