ICreateDevEnum::CreateClassEnumerator 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
CreateClassEnumerator 方法为指定的设备类别创建枚举器。
语法
HRESULT CreateClassEnumerator(
[in] REFCLSID clsidDeviceClass,
[out] IEnumMoniker **ppEnumMoniker,
[in] DWORD dwFlags
);
参数
[in] clsidDeviceClass
指定设备类别 (CLSID) 的类标识符。 请参阅 筛选器类别。
[out] ppEnumMoniker
接收指向 IEnumMoniker 接口的 指针。 调用方必须释放接口。
[in] dwFlags
零个或多个标志的按位组合。 如果为零,该方法将枚举类别中的每个筛选器。 如果设置了任何标志,则枚举仅包含与指定标志匹配的筛选器。 定义了以下标志:
标志 | 描述 |
---|---|
CDEF_DEVMON_CMGR_DEVICE | 使用音频压缩管理器 (ACM) 或视频压缩管理器 (VCM) 枚举音频或视频编解码器。 |
CDEF_DEVMON_DMO | (DMO) 枚举 DirectX 媒体对象。 |
CDEF_DEVMON_FILTER | 枚举本机 DirectShow 筛选器。 |
CDEF_DEVMON_PNP_DEVICE | 枚举即插即用硬件设备。 |
返回值
返回以下 HRESULT 值之一。
返回代码 | 说明 |
---|---|
|
成功。 |
|
内存不足。 |
|
clsidDeviceClass 指定的类别不存在或为空。 |
|
NULL 指针参数。 |
注解
如果类别不存在或为空,则返回值为S_FALSE, 并且 ppEnumMoniker 参数接收值 NULL。 因此,S_OK而不是使用 SUCCEEDED 宏测试返回值:
C++ |
---|
IEnumMoniker *pEnum = NULL; hr = pSysDevEnum->CreateClassEnumerator( CLSID_VideoCompressorCategory, &pEnum, 0); if (hr == S_OK) { // Safe to dereference pEnum. pEnum->Release(); } |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |