共用方式為


IWMDeviceManager2::EnumDevices2 方法 (mswmdm.h)

EnumDevices2 方法會擷取列舉介面,用來列舉連線到計算機的可攜式裝置。

Microsoft 強烈建議應用程式使用 EnumDevices2 方法,而不是 IWMDeviceManager::EnumDevices

語法

HRESULT EnumDevices2(
  [out] IWMDMEnumDevice **ppEnumDevice
);

參數

[out] ppEnumDevice

IWMDMEnumDevice 介面指標的指標。 呼叫端負責在擷取的介面上呼叫 Release

傳回值

方法會傳回 HRESULT。 Windows Media 中的所有介面方法 裝置管理員 可以傳回下列任何錯誤碼類別:

  • 標準 COM 錯誤碼
  • 轉換成 HRESULT 值的 Windows 錯誤碼
  • Windows Media 裝置管理員 錯誤碼
如需可能錯誤碼的廣泛清單,請參閱 錯誤碼

備註

這個方法會傳回列舉值,利用 隨插即用 (PnP) 系統,以加快列舉速度並降低記憶體使用量。 對於 PnP 抱怨服務提供者,它只會載入記憶體中目前連線到計算機的服務提供者,並只要求這些服務提供者建立裝置物件。

這個方法會傳回第一次建立基礎物件時所連接的裝置快照集。 若要確保裝置清單是最新的,請先呼叫 Reinitialize, 再呼叫此方法。

範例

下列 C++ 程式代碼會循環處理所有裝置,並擷取每個裝置的顯示名稱。


// Enumerate through the devices using the faster EnumDevices2 Plug-and-Play method.
// IWMDevMgr2 is a global IWMDeviceManager2 pointer.
CComPtr<IWMDMEnumDevice> pEnumDevice;
hr = pIWMDevMgr2->EnumDevices2(&pEnumDevice);
if (hr == S_OK)
{
    // Length of all the strings we'll send in. 
    const UINT MAX_CHARS = 100;
    WCHAR name[MAX_CHARS];

    // Enumerate through devices using a dummy loop.
    while(TRUE)
    {
        // Get a device handle.
        IWMDMDevice* pDevice;
        ULONG ulFetched = 0;
        hr = pEnumDevice->Next(1, &pDevice, &ulFetched);
        CComQIPtr<IWMDMDevice2> pDevice2(pDevice);

        if (hr != S_OK || ulFetched != 1)
        {
            break;
        }
        ZeroMemory(name, MAX_CHARS);
        hr = pDevice2->GetName(name, MAX_CHARS);
    }
}

規格需求

需求
目標平台 Windows
標頭 mswmdm.h
程式庫 Mssachlp.lib

另請參閱

列舉裝置

IWMDMEnumDevice 介面

IWMDeviceManager2 介面