directX枚举系统设备类

void CSysEnumDlg::DisplayFullCategorySet(void)
{
    USES_CONVERSION;

    HRESULT hr;
    IEnumMoniker *pEmCat = 0;
    ICreateDevEnum *pCreateDevEnum = NULL;
    int nClasses=0;

    // Create an enumerator
    hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
                          IID_ICreateDevEnum, (void**)&pCreateDevEnum);
    ASSERT(SUCCEEDED(hr));
    if (FAILED(hr))
        return;

    // Use the meta-category that contains a list of all categories.
    // This emulates the behavior of GraphEdit.
    hr = pCreateDevEnum->CreateClassEnumerator(
                         CLSID_ActiveMovieCategories, &pEmCat, 0);
    ASSERT(SUCCEEDED(hr));

    if(hr == S_OK)
    {
        IMoniker *pMCat;
        ULONG cFetched;

        // Enumerate over every category
        while(hr = pEmCat->Next(1, &pMCat, &cFetched),
              hr == S_OK)
        {
            IPropertyBag *pPropBag;

            // Associate moniker with a file
            hr = pMCat->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag);
            if(SUCCEEDED(hr))
            {
                VARIANT varCatClsid;
                varCatClsid.vt = VT_BSTR;

                // Read CLSID string from property bag
                hr = pPropBag->Read(L"CLSID", &varCatClsid, 0);
                if(SUCCEEDED(hr))
                {
                    CLSID clsidCat;//枚举所有的设备类

                    if(CLSIDFromString(varCatClsid.bstrVal, &clsidCat) == S_OK)
                    {
                        // Use the guid if we can't get the name
                        WCHAR *wszCatName;
                        TCHAR szCatDesc[MAX_PATH];

                        VARIANT varCatName;
                        varCatName.vt = VT_BSTR;

                        // Read filter name
                        hr = pPropBag->Read(L"FriendlyName", &varCatName, 0);
                        if(SUCCEEDED(hr))
                            wszCatName = varCatName.bstrVal;
                        else
                            wszCatName = varCatClsid.bstrVal;

#ifndef UNICODE
                        WideCharToMultiByte(
                                CP_ACP, 0, wszCatName, -1,
                                szCatDesc, sizeof(szCatDesc), 0, 0);
#else
                        lstrcpy(szCatDesc, W2T(wszCatName));
#endif

                        if(SUCCEEDED(hr))
                            SysFreeString(varCatName.bstrVal);

                        // Add category name and CLSID to list box
                        AddFilterCategory(szCatDesc, &clsidCat);
                        nClasses++;
                    }

                    SysFreeString(varCatClsid.bstrVal);
                }

                pPropBag->Release();
            }
            else
            {
                break;
            }

            pMCat->Release();
        } // for loop

        pEmCat->Release();
    }

    pCreateDevEnum->Release();

    // Update listbox title with number of classes
    SetNumClasses(nClasses);
}

时间: 2024-12-23 04:00:43

directX枚举系统设备类的相关文章

枚举系统设备

#include <windows.h> #include <stdio.h> #include <setupapi.h> #include <devguid.h> #include <regstr.h> #include <shlwapi.h> #pragma comment(lib,"setupapi.lib") #define BUFSIZE1024 #define SM_SERVERR289 void ma

如何使用系统设备枚举器

系统设备枚举器为我们按类型枚举已注册在系统中的Fitler提供了统一的方法.而且它能够区分不同的硬件设备,即便是同一个Filter支持它们.这对那些使用Windows驱动模型和KSProxy Filter的设备来说是非常有用的.系统设备枚举器对它们按不同的设备实例进行对待(译注:虽然它们支持相同Filter). 当我们利用系统设备枚举器查询设备的时候,系统设备枚举器为特定类型的设备(如,音频捕获和视频压缩)生成了一张枚举表(Enumerator).类型枚举器(Category enumerato

directX根据设备类GUID查询所属的filter

hr = m_pSysDevEnum->CreateClassEnumerator(*clsid, &pEnumCat, 0);    ASSERT(SUCCEEDED(hr));    if FAILED(hr)        return;     // Enumerate all filters using the category enumerator    hr = EnumFilters(pEnumCat); IBaseFilter *buf[20]; HRESULT CSysE

波形捕捉:(1)枚举&quot;捕捉设备&quot;

枚举"捕捉设备"后在网上找到类似翻译:DirectSound学习笔记(1):枚举声音设备  作者:pyundeng 而且作者是在06年发表的,哎~~~ 犹豫了半天是否有必要继续翻译下去,最后打算还是继续写吧.就当做练英文好了.刚刚又搜了下博客圆,没有发现类似文章,所以更坚定要继续写下去. 大家可别怀疑我只是复制粘贴哦,我可是一字一句翻译出来的,当然也会参考一些已有的资料.       如果你的应用程序只是单纯得通过用户首选设备用来捕捉声音,那就没有必要来枚举可用的设备.当你通过调用 D

C#枚举硬件设备(升级版)

原文:C#枚举硬件设备(升级版) 先取设备类型: /// <summary>/// 设备类型/// </summary> class DeviceClasses {public static Guid ClassesGuid;public const int MAX_SIZE_DEVICE_DESCRIPTION = 1000;public const int CR_SUCCESS = 0x00000000;public const int CR_NO_SUCH_VALUE = 0

TD联盟称国产3G系统设备已稳定量产

TD-SCDMA联盟近日介绍了国产3G标准TD-SCDMA的产业链进展,尤其值得注意的是包括基站等在内的TD-SCDMA的无线接入网设备已实现稳定量产,各项性能全面达标.产业链已完整成熟TD-SCDMA联盟称," 经过多年不懈的奋斗,TD-SCDMA已经形 成了覆盖系统设备.网管.核心芯片. 终端产品.业务应用.测试仪表及关键元器件在内的完整.成熟的产业链,在各产品环节,TD-SCDMA产业链多厂商供货环境已经形成.据悉,国产3G标准TD-SCDMA的天线企业在原产品的基础上进一步拓展了产品系列

Snapdeal与国防土地系统公司合作,提供汽车防弹系统设备

4月4日消息,印度电商网站Snapdeal与印度国防土地系统Mahindra公司合作,为顾客提供汽车防弹系统设备. 据Snapdeal的商务开发副总Tony Navin表示,这是印度电商第一次提供汽车防弹系统设备,并且在选举季还会进行特别关注. 据了解,Snapdeal是第一个可以为消费者提供可靠的-防弹装备的网站,因为之前已经积累了很高的用户信任. 印度国防系统的高级指挥官Sukhvindar Hayer表示,我们通过Snapdeal给寻求安全设备的人提供帮助,双方的合作将会给用户带来帮助.

数据中心系统设备发热量的组成及估算

数据中心的正常运作需要一个标准的温度,然而在数据中心机房中有很多因素会导致机房温度过高从而影响到机房的正常使用和工作.那么数据中心的热负荷到底是从哪里来呢?我们又改如何去计算数据中心的热负荷呢?今天我们就从数据中心系统设备发热量的组成来分析其来源及热负荷的计算方法. 1.数据中心热负荷的组成 建筑围护结构的传热 从玻璃投入的太阳辐射热 人体散热.散湿 照明装置的散热 机房加湿产生的热负荷 新风负荷 2.IT设备热负荷 IT设备机箱可以分成三种类型:塔式.机架式和刀片式.其中机架式和刀片式可以直接

Linux chroot 并使用之前系统设备节点

/********************************************************************************* * Linux chroot 并使用之前系统设备节点 * 说明: * 直接使用chroot结果/dev下没有设备,所有有些东西需要提前挂载,在进入chroot. * * 2016-12-30 深圳 南山平山村 曾剑锋 **********************************************************