CBaseAllocator.Alloc 메서드

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

메서드는 Alloc 버퍼에 대한 메모리를 할당합니다.

구문

virtual HRESULT Alloc();

매개 변수

이 메서드에는 매개 변수가 없습니다.

반환 값

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

반환 코드 설명
S_FALSE
버퍼 요구 사항은 변경되지 않았습니다.
S_OK
버퍼 요구 사항이 변경되었습니다.
VFW_E_SIZENOTSET
버퍼 요구 사항이 설정되지 않았습니다.

설명

이 메서드는 CBaseAllocator::Commit 메서드에 의해 호출됩니다.

기본 클래스에서 이 메서드는 메모리를 할당하지 않습니다. 버퍼 요구 사항이 설정되지 않은 경우 S_FALSE 요구 사항이 변경되지 않은 경우 오류를 반환하고 요구 사항이 변경되었는지 S_OK.

파생 클래스는 실제 메모리 할당을 수행하려면 이 메서드를 재정의해야 합니다. 일반적으로 파생 클래스는 다음 단계를 수행합니다.

  1. 기본 클래스 구현을 호출하여 메모리에 실제로 할당이 필요한지 여부를 확인합니다.
  2. 메모리를 할당합니다.
  3. 2단계에서 메모리 청크를 포함하는 CMediaSample 개체를 만듭니다.
  4. 무료 샘플 목록에 각 CMediaSample 개체를 추가합니다(CBaseAllocator::m_lFree).

예제는 CMemAllocator::Alloc를 참조하세요.

요구 사항

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

추가 정보

CBaseAllocator 클래스