다음을 통해 공유


AVStream 할당자

AVStream 클래스 드라이버는 Allocator 를 사용하여 프레임이라는 단위로 데이터 버퍼를 할당 합니다. 프레임은 연속 메모리의 청크이며, 크기는 KSPIN_DESCRIPTOR_EXAllocatorFraming 멤버를 통해 공급업체에서 지정합니다.

미니드라이버가 Stream Pointers API를 통해 이러한 버퍼에 액세스합니다. KsPinGetLeadingEdgeStreamPointer 를 호출하여 스트림에 대한 포인터를 가져옵니다.

AVStream 클라이언트는 읽기 전용 속성 KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX 사용하여 핀의 프레이밍 요구 사항에 대한 정보를 얻을 수 있습니다. 이 속성은 핀의 프레이밍 요구 사항을 설명하는 형식 KSALLOCATOR_FRAMING_EX 구조를 반환합니다.

데이터가 더 이상 사용되지 않는 경우 AVStream은 할당자를 사용하여 버퍼를 해제합니다.

AVStream은 기본 할당자를 제공합니다. 기본 할당자는 미니드라이버가 KSPIN_DESCRIPTOR_EX 구조체의 AllocatorFraming 멤버에 제공하는 할당자 요구 사항에 따라 풀 메모리를 할당합니다.

디바이스별 할당 요구 사항이 있는 공급업체는 자체 할당 루틴을 포함하는 미니 드라이버를 작성할 수 있습니다. 예를 들어 드라이버가 공통 DMA 버퍼에서 메모리를 할당하는 경우 할당자를 제공할 수 있습니다.

할당자를 제공하려면 공급업체에서 제공하는 다음 콜백 루틴에 대한 포인터를 포함하는 KSALLOCATOR_DISPATCH 구조를 제공합니다.

이 할당자가 프레임을 인스턴스화할 핀을 설명하는 KSPIN_DISPATCH 구조체의 할당 멤버에 이 할당자 디스패치 구조체에 대한 포인터를 제공합니다.

해당 KSPIN_DESCRIPTOR_EX 구조체의 Dispatch 멤버에서 이 핀 디스패치 구조체에 대한 포인터를 입력합니다. AVStream의 디스패치 구조에 대한 자세한 내용은 AVStream 디스패치 테이블을 참조하세요.

런타임에 그래프 관리자(예: 커널 스트리밍 프록시 모듈)는 할당자 선택을 처리합니다. 공급업체에서 제공하는 할당자는 그래프 관리자가 선택하도록 보장 되지 않습니다 .

커널 모드 할당자는 연결이 커널 모드인 경우에만 선택됩니다. 또한 할당자 요구 사항과 할당자의 기능이 일치하지 않는 경우 할당자가 거부될 수 있습니다. 할당자를 선택하지 않으면 AVStrMiniInitializeAllocator 콜백 루틴이 호출되지 않습니다.

AVStream DMA 서비스 및스트림 포인터도 참조하세요.