ICreateDevEnum Interface
ICreateDevEnum 接口,创建特定的类(如视频捕获设备,音频捕获设备,视频压缩等)的一个枚举器 ,可以使用CLSID_SystemDeviceEnum来得到该指针。
ICreateDevEnum::CreateClassEnumerator(
REFCLSID clsidDeviceClass, //设备类别
IEnumMoniker **ppEnumMoniker, //输出参数,IEnumMoniker ××
DWORD dwFlags
);

// enumerate all video capture devices
// 枚举所有视频捕获设备
ICreateDevEnum *pCreateDevEnum=0;
hr = CoCreateInstance(
CLSID_SystemDeviceEnum, //用来唯一标识一个对象的CLSID(128位),需要用它来创建指定对象
NULL, //指向接口IUnknown的指针
CLSCTX_INPROC_SERVER,//运行可执行代码的上下文,[in] 组件类别. 可使用CLSCTX枚举器中预定义的值
IID_ICreateDevEnum, ////创建的Com对象的接口标识符,EXTERN_C const IID IID_ICreateDevEnum;
(void**)&pCreateDevEnum//用来接收指向Com对象接口地址的指针变量
);//用指定的类标识符创建一个Com对象,用指定的类标识符创建一个未初始化的对象。当在本机中只创建一个对象时,可以调用CoCreateInstance;在远程系统中创建一个对象时,可以调用CoCreateInstanceEx;创建多个同一CLSID的对象时, 可以参考 CoGetClassObject 函数。
if(hr != NOERROR)
{
ErrMsg(TEXT("创建设备枚举器(Enumerator)时出错"));
return;
}
看了小半本COM技术内幕
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)