DirectShow DirectShow 레퍼런스 인터페이스 IAsyncReader WaitForNext   [목차열람] [주소복사] [슬롯비우기]
IAsyncReader::WaitForNext
 
Microsoft DirectX 9.0

IAsyncReader::WaitForNext

WaitForNext 메서드는, 다음의 보류 상태의 읽기 요구가 완료할 때까지 대기한다.

구문

HRESULT WaitForNext(
  DWORD dwTimeout,
  IMediaSample **ppSample,
  DWORD_PTR *pdwUser
);

파라미터

dwTimeout

[in] 타임 아웃값(밀리 세컨드 단위)을 지정한다. 무제한하게 대기 하면나무는, 값 INFINITE 를 사용하는 것.

ppSample

[out] IMediaSample 인터페이스 포인터를 받는 변수의 주소.

pdwUser

[out] IAsyncReader::Request 메서드로 지정되는 dwUser 인수의 값을 받는 변수에의 포인터.

반환값

HRESULT 값을 돌려준다. 가능한 값은 다음과 같다.

귀가 코드 설명
VFW_E_TIMEOUT 타임 아웃 기간이 지났는지, 핀이 플래시 하고 있다.
VFW_E_WRONG_STATE 핀이 플래시 하고 있다.
E_FAIL 읽기 에러가 발생했다.
S_OK 성공.
S_FALSE 파일의 말미에 이르렀다. 취득한 바이트의 수가 요구된 바이트의 수보다 적었다.

주의

메서드가 성공하면(자),ppSample 인수에는 그 버퍼에 요구된 데이터를 보관 유지하는 미디어 샘플에의 포인터가 포함된다. IMediaSample::GetTime 메서드를 호출해, 결과를 10,000,000 으로 나눗셈 해, 시작 바이트와 정지 바이트를 요구한다. 샘플이 순서대로 돌려주어지지 않을 가능성이 있다. 데이터의 처리가 완료하면(자), 샘플은 릴리즈 하는 것.

핀이 플래시 하고 있으면(자), 메서드는 실패한다. 다만,ppSample 로 하늘의 샘플을 돌려주는 경우가 있다. *ppSample 가 NULL 가 아니면, 샘플을 릴리즈 해, 파기하는 것. 상세한 것에 대하여는, 「IAsyncReader::BeginFlush 」를 참조할것.

읽기 에러가 발생 하면, 소스 필터가 에러 이벤트를 필터 그래프 매니저에 송신한다. 호출원래는 에러를 통지할 필요는 없다.

참조

↑TOP