共用方式為


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

另請參閱

列舉裝置

IWMDMEnumDevice 介面

IWMDeviceManager::EnumDevices