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

IMediaSeeking::CheckCapabilities

CheckCapabilities 메서드는, 지정한 시크 능력을 스트림이 가지고 있을지 어떨지를 조회한다.

구문

HRESULT CheckCapabilities(
  DWORD *pCapabilities
);

파라미터

pCapabilities

[in, out] AM_SEEKING_SEEKING_CAPABILITIES 속성의 1 개 또는 복수의 비트마다 편성의 포인터. 메서드가 돌아갔을 때, 그 값은 어느 속성이 이용 가능한가를 나타낸다.

반환값

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

설명
S_FALSE pCapabilities 의 모든 능력을 가지고 있는 것은 아니다.
S_OK pCapabilities 의 모든 능력이 존재한다.
E_FAIL pCapabilities 의 능력이 전혀 없다.
E_POINTER NULL 포인터 인수.

주의

2 ~ 3 의 능력만이 필요한 경우, 모든 스트림의 시크 능력을 체크하는 IMediaSeeking::GetCapabilities 를 호출하는 것보다도, 이 메서드를 호출하는 쪽이 효율적이다.

테스트하는 AM_SEEKING_SEEKING_CAPABILITIES 속성의 비트마다 OR 의 편성과 동일한 DWORD 값을 선언한다. pCapabilities 인수에 이 값의 포인터를 건네준다. 메서드가 돌아갔을 때,pCapabilities 에는 원의 비트의 서브 세트가 들어가, 실제로 어느 능력이 있는지를 나타낸다. 반환값은, 요구한 능력이 없는, 몇개인가 있다, 또는 모두 있는 것을 나타내고 있다.

다음 샘플 코드는, 스트림이 순서 방향 시크, 역방향 시크, 절대 시크를 지원 하고 있을지 어떨지를 조사하는 방법을 나타내고 있다.

// 조사하는 능력의 플래그를 설정한다.
DWORD dwCaps = AM_SEEKING_CanSeekAbsolute | 
             AM_SEEKING_CanSeekForwards |
             AM_SEEKING_CanSeekBackwards;

HRESULT hr = pMediaSeeking->CheckCapabilities(&dwCaps);
if(FAILED(hr)) 
{
    // 스트림은 시크 할 수 없다.
}
else if (hr == S_OK) 
{   
    // 스트림은 순서 방향, 역방향, 절대 위치에 시크 할 수 있다.
}
else if (hr == S_FALSE) // 스트림은 능력을 가지고 있을 가능성이 있다.
{
    if (dwCaps & AM_SEEKING_CanSeekAbsolute)
        // 스트림은 절대 위치에 시크 할 수 있다.
    if (dwCaps & AM_SEEKING_CanSeekAbsolute)
        // 스트림은 순서 방향으로 시크 할 수 있다.
    if (dwCaps & AM_SEEKING_CanSeekBackwards)
        // 스트림은 역방향으로 시크 할 수 있다.
}

참조

↑TOP