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 |