CBaseAllocator.SetProperties 메서드

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngineMedia Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

메서드는 SetProperties 할당할 버퍼 수와 각 버퍼의 크기를 지정합니다. 이 메서드는 IMemAllocator::SetProperties 메서드를 구현합니다.

구문

HRESULT SetProperties(
   ALLOCATOR_PROPERTIES *pRequest,
   ALLOCATOR_PROPERTIES *pActual
);

매개 변수

pRequest

버퍼 요구 사항이 포함된 ALLOCATOR_PROPERTIES 구조체에 대한 포인터입니다.

pActual

실제 버퍼 속성을 수신하는 ALLOCATOR_PROPERTIES 구조체에 대한 포인터입니다.

반환 값

다음 HRESULT 값 중 하나를 반환합니다.

반환 코드 Description
S_OK
성공.
E_POINTER
NULL 포인터 인수입니다.
VFW_E_ALREADY_COMMITTED
필터가 활성화된 동안에는 할당된 메모리를 변경할 수 없습니다.
VFW_E_BADALIGN
잘못된 맞춤이 지정되었습니다.
VFW_E_BUFFERS_OUTSTANDING
하나 이상의 버퍼가 여전히 활성화되어 있습니다.

설명

이 메서드는 버퍼 요구 사항을 지정하지만 버퍼는 할당하지 않습니다. CBaseAllocator::Commit 메서드를 호출하여 버퍼를 할당합니다.

호출자는 두 개의 ALLOCATOR_PROPERTIES 구조를 할당합니다. pRequest 매개 변수에는 버퍼 수와 각 버퍼의 크기를 포함하여 호출자의 버퍼 요구 사항이 포함됩니다. 메서드가 반환되면 pActual 매개 변수에는 할당자가 설정한 실제 버퍼 속성이 포함됩니다. 기본 클래스에서 메서드가 성공한다고 가정하면 실제 속성은 항상 요청된 속성과 일치합니다. 파생 클래스는 이 동작을 재정의할 수 있습니다.

할당자는 커밋되지 않아야 하며 미해결 버퍼가 없어야 합니다. 기본 클래스에서 맞춤은 1이어야 합니다. CMemAllocator 클래스는 이 요구 사항을 재정의합니다.

요구 사항

요구 사항
헤더
Amfilter.h(Streams.h 포함)
라이브러리
Strmbase.lib(소매 빌드);
Strmbasd.lib(디버그 빌드)

추가 정보

CBaseAllocator 클래스