当前位置: 首页 > news >正文

网站代百度指数平台

网站代,百度指数平台,山东营销网站建设设计,jsp网站制作系统设备调查器提供了一个统一的方法去列举出系统中用户所有按类型注册的过滤器。系统设备调查器通过创建一个指定类型调查器(比如音频捕获类型或者视频压缩类型) (enumerator)来工作,这个调查器会返回系统中所有该类设备的唯一名称。 按一下…

系统设备调查器提供了一个统一的方法去列举出系统中用户所有按类型注册的过滤器。系统设备调查器通过创建一个指定类型调查器(比如音频捕获类型或者视频压缩类型) (enumerator)来工作,这个调查器会返回系统中所有该类设备的唯一名称。

按一下步骤操作去使用设备调查器:

1.         调用CoCreateInstance 创建系统设备调查器。

类标识(CLSID)参数是CLSID_SystemDeviceEnum.

2.         调用ICreateDevEnum::CreateClassEnumerator 创建你想要的指定类型调查器,在类标识(CLSID)参数中指定你想要列举的设备类型。调用该方法后,将返回一个IenumMoniker指针。如果指定类型设备为空或者不存在该设备,将返回S_FALSE。同时IenumMoniker指针为NULL并且会造成一个异常。所有,在调用该方法的时候,要检查其返回值是否为S_OK,而不要使用SUCCEEDED宏去检测。

3.         使用 IEnumMoniker::Next 方法去列举出每个设备名称。该方法将返回一个Imoniker接口指针。当Next方法列举出最后一个设备名称后,它将返回S_FALSE,为S_OK表示还有设备没有列举完。

4.         调用IMoniker::BindToStorage 方法去获得设备的名称。

5.         调用IMoniker::BindToObject去创建并初始化DirectShow过滤器去管理选择的设备。调用IFilterGraph::AddFilter把创建的过滤器加到过滤器图表中。

下图显示处理流程

 


下面代码演示了列举出用户系统上安装的视频压缩设备。为了方便阅读,该例只加了最基本的错误检查。

// 创建系统设备调查器

HRESULT hr;

ICreateDevEnum *pSysDevEnum = NULL;

hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,

    IID_ICreateDevEnum, (void **)&pSysDevEnum);

if (FAILED(hr))

{

    return hr;

}

 

// 获得视频压缩类型的制定类型调查器

IEnumMoniker *pEnumCat = NULL;

hr = pSysDevEnum->CreateClassEnumerator(CLSID_VideoCompressorCategory, &pEnumCat, 0);

 

if (hr == S_OK)

{

    //列举所有设备

    IMoniker *pMoniker = NULL;

    ULONG cFetched;

    while(pEnumCat->Next(1, &pMoniker, &cFetched) == S_OK)

    {

        IPropertyBag *pPropBag;

        hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag,

            (void **)&pPropBag);

        if (SUCCEEDED(hr))

        {

            // 获得设备名称

            VARIANT varName;

            VariantInit(&varName);

            hr = pPropBag->Read(L"FriendlyName", &varName, 0);

            if (SUCCEEDED(hr))

            {

                // 在你的程序中显示设备名称

            }

            VariantClear(&varName);

 

            // 创建过滤器

            IBaseFilter *pFilter;

            hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter,

                (void**)&pFilter);

            // 把过滤器加入到过滤器图表中

            //记住在以后要释放掉pFilter指向的过滤器对象

            pPropBag->Release();

        }

        pMoniker->Release();

    }

    pEnumCat->Release();

}

pSysDevEnum->Release();

 

设备 Monikers

IMoniker::GetDisplayName 方法将返回moniker的显示名称(display name)。对于设备monikers,你可以通过显示名称,使用IFilterGraph2::AddSourceFilterForMoniker方法为设备,创建一个捕获过滤器。

LPOLESTR strName = NULL;

IBaseFilter pSrc = NULL;

hr = pMoniker->GetDisplayName(NULL, NULL, &strName);

if (SUCCEEDED(hr))

{

    // 为IFilterGraph2查找过滤器图表管理器

    IFilterGraph2 *pFG2 = NULL;

    hr = pGraph->QueryInterface(IID_IFilterGraph2, (void**)&pFG2);

    if (SUCCEEDED(hr))

    {

        hr = pFG2->AddSourceFilterForMoniker(pMoniker, 0, L"Source", &pSrc);

        pFG2->Release();

    }

    CoTaskMemFree(strName);

}

 

// 如果成功,要记住释放掉pSrc

 

虽然,设备显示名称便于阅读理解,你可能不会向用户显示该名称。而是用设备的Friendly名称显示给用户。

IMoniker::ParseDisplayName 方法和MkParseDisplayName函数可用于从获得的指定类型过滤器中创建一个默认的设备名称(moniker),它可以从类标识(GUID)中解析出显示名称(display name)。类标识表示方法为@device:*:{category-clsid}。默认的设备名称就是指定类型设备调查器中的第一个名称。

下面例子,创建视频捕获类设备的默认设备名称。

// 视频捕获类

WCHAR szMon[] = L"@device:*:{860BB310-5D01-11d0-BD3B-00A0C911CE86}";

IBindCtx *pBindCtx;

hr = CreateBindCtx(0, &pBindCtx);

 

ULONG chEaten = 0;

IMoniker *pMoniker = 0;

hr = MkParseDisplayName(pBindCtx, szMon, &chEaten, &pMoniker);

pBindCtx->Release();

if (SUCCEEDED(hr))

{

    //获得显示名称(display name),或建立一个DirectShow 过滤器。

    pMoniker->Release();

}

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/suntaoznz/archive/2006/02/17/601170.aspx

转载于:https://www.cnblogs.com/wqj1212/archive/2010/10/24/1859926.html

http://www.lbrq.cn/news/2598157.html

相关文章:

  • 嘉定区做网站网店培训
  • c 博客网站开发教程宁波网站推广网站优化
  • 程序员做项目的网站网络seo啥意思
  • 武汉网站服务站长工具平台
  • 学校网站模板html线上营销手段有哪些
  • 建筑网站do网站页面设计模板
  • 网站建设第三方平台网络推广有效果吗
  • 做网站在手机显示怎么很乱国外媒体报道
  • 上海新媒体运营公司排名厦门seo总部电话
  • 镇江做网站哪家公司好网络营销做得比较好的企业
  • 红河企业网络推广外包手机优化助手
  • 网站几几年做的怎么查百度竞价开户3000
  • 网站服务器出错是什么意思十大新媒体平台有哪些
  • 广州天河区建设网站公司推广
  • 徐州网站建设方案咨询如何快速搭建网站
  • 三合一网站是什么广东seo推广
  • 自已能做网站建设吗网站优化排名软件网
  • 在哪个网站可以做外单衣服网站的推广方案的内容有哪些
  • 信誉好的盐城网站开发搜索引擎优化教材答案
  • 去哪找网站建设公司游戏代理推广渠道
  • 做违法网站媒体邀约
  • 怎样做企业网站建设深圳seo网络优化公司
  • 上海做网站大的公司站长统计网站统计
  • 专业做网站建设公司seo关键词排名优化报价
  • wordpress网站导航菜单插件百度域名查询官网
  • 手机触屏网站幻灯片优化推广关键词
  • 杨浦专业做网站关键词排名代做
  • 新建的网站如何做seo网络推广软文怎么写
  • 微信网站跳转链接怎么做怎么进行推广
  • 网站建设广州营销网站设计
  • Occ3D: A Large-Scale 3D Occupancy Prediction Benchmark for Autonomous Driving
  • 深入浅出 RabbitMQ-路由模式详解
  • openeuler离线安装软件
  • 嵌入式硬件中三极管原理分析与控制详解
  • 决策树的实际案例
  • Python Seaborn【数据可视化库】 全面讲解