IWMDMEnumDevice::Next 方法 (mswmdm.h)
Next 方法會傳回下一個裝置的指標,由 IWMDMDevice 介面表示。
語法
HRESULT Next(
[in] ULONG celt,
[out] IWMDMDevice **ppDevice,
[out] ULONG *pceltFetched
);
參數
[in] celt
要求的裝置數目。
[out] ppDevice
IWMDMDevice 介面指標之呼叫端配置的陣列指標。 此陣列的大小必須是 IWMDMDevice *[celt]。 呼叫端必須在使用這些介面時釋放這些介面。 若要避免配置整個陣列,只要傳入 IWMDMDevice 介面指標的位址,如所示。
[out] pceltFetched
接收 (介面) 傳回之裝置數目的變數指標。
傳回值
方法會傳回 HRESULT。 Windows Media 裝置管理員 中的所有介面方法都可以傳回下列任何一種錯誤碼類別:
- 標準 COM 錯誤碼
- 轉換成 HRESULT 值的 Windows 錯誤碼
- Windows Media 裝置管理員 錯誤碼
備註
傳回的裝置介面 () 是以裝置的快取清單為基礎。 如果連結或移除 隨插即用 裝置,目前的列舉值將不會反映,因此,Next 會根據快取清單傳回裝置。 應用程式應該藉由呼叫 IWMDeviceManager::EnumDevices 來取得新的列舉值物件,以取得裝置的重新整理清單。
如果您一次只想要擷取單一介面,就不需要為此方法配置陣列,如下列程式代碼所示:
// Get a device enumerator to examine each device.
CComPtr<IWMDeviceManager2> pIWMDevMgr2;
hr = m_IWMDeviceMgr->QueryInterface (__uuidof(IWMDeviceManager2), (void**) &pIWMDevMgr2);
if (hr == S_OK)
{
// TODO: Display a message that the application retrieved IWMDeviceManager2.
}
else
{
// TODO: Display a message that the application was not able to
// retrieve IWMDeviceManager2 in EnumDevices.
return hr;
}
// Enumerate through the devices using the faster EnumDevices2 plug-and-play method.
CComPtr<IWMDMEnumDevice> pEnumDevice;
hr = pIWMDevMgr2->EnumDevices2(&pEnumDevice);
if (hr != S_OK)
{
//.TODO: Display a message that an error occurred in calling EnumDevices2.
return hr;
}
// Enumerate through devices.
IWMDMDevice *pIWMDMDevice;
ULONG ulFetched = 0;
while(pEnumDevice->Next(1, &pIWMDMDevice, &ulFetched) == S_OK)
{
if (ulFetched != 1)
{
return E_FAIL;
}
// Do some stuff here....
}
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | mswmdm.h |
程式庫 | Mssachlp.lib |