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 |