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 デバイス マネージャーエラー コード
注釈
返されるデバイス インターフェイスは、キャッシュされたデバイスの一覧に基づいています。 プラグ アンド プレイ デバイスがアタッチまたは削除された場合、現在の列挙子には反映されないため、キャッシュされたリストに基づいてデバイスが返されます。 アプリケーションでは、 IWMDeviceManager::EnumDevices を呼び出して新しい列挙子オブジェクトを取得し、更新されたデバイスの一覧を取得する必要があります。
一度に 1 つのインターフェイスのみを取得する場合は、次のコードに示すように、このメソッドに配列を割り当てる必要はありません。
// 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 |
Library | Mssachlp.lib |