Freigeben über


AVStream-Allocators

Der AVStream-Klassentreiber verwendet einen Allocator , um Datenpuffer in Einheiten zuzuordnen, die als Frames bezeichnet werden. Ein Frame ist ein Teil des kontinuierlichen Speichers, dessen Größe durch das AllocatorFraming-Element von KSPIN_DESCRIPTOR_EX angegeben wird.

Minidriver greifen über die StreamPointers-API auf diese Puffer zu; Rufen Sie KsPinGetLeadingEdgeStreamPointer auf, um einen Zeiger in den Datenstrom abzurufen.

AVStream-Clients können mithilfe der schreibgeschützten Eigenschaft KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX Informationen über die Rahmenanforderungen eines Pins abrufen. Diese Eigenschaft gibt eine Struktur vom Typ KSALLOCATOR_FRAMING_EX zurück, die die Rahmenanforderungen für den Pin beschreibt.

Wenn Daten nicht mehr verwendet werden, verwendet AVStream den Allocator zum Freigeben des Puffers.

AVStream stellt einen Standardallokator bereit. Der Standard-Allocator weist Poolspeicher basierend auf den Anforderungen zu, die der Minidriver im AllocatorFraming-Element der KSPIN_DESCRIPTOR_EX-Struktur bereitstellt.

Ein Anbieter mit gerätespezifischen Zuordnungsanforderungen kann einen Minidriver schreiben, der seine eigenen Zuordnungsroutinen enthält. Sie könnten beispielsweise einen Speicherzuweiser bereitstellen, wenn Ihr Treiber Arbeitsspeicher aus einem allgemeinen DMA-Puffer zuweist.

Um einen Allocator bereitzustellen, geben Sie eine KSALLOCATOR_DISPATCH-Struktur an, die Zeiger auf die folgenden vom Hersteller bereitgestellten Rückrufroutinen enthält.

Stellen Sie einen Zeiger auf diese Allocator-Verteilerstruktur im Allocator-Element der KSPIN_DISPATCH Struktur bereit, die den Pin beschreibt, für den dieser Allocator Frames instanziieren wird.

Geben Sie einen Zeiger auf diese Pin-Verteilerstruktur im Verteilerelement der entsprechenden KSPIN_DESCRIPTOR_EX Struktur an. Weitere Informationen zu Verteilerstrukturen in AVStream finden Sie unter AVStream Dispatch Tables.

Zur Laufzeit behandelt der Graph-Manager (z. B. das Kernel Streaming Proxy-Modul ) die Auswahl des Allocators. Ein vom Anbieter bereitgestellter Allokator wird vom Graphmanager nicht garantiert ausgewählt.

Ein Kernelmodus-Allocator wird nur ausgewählt, wenn sich die Verbindung im Kernelmodus befindet. Darüber hinaus könnte Ihr Allocator abgelehnt werden, wenn die Anforderungen an den Allocator und die Fähigkeiten Ihres Allocators nicht übereinstimmen. Wenn Ihr Allocator nicht ausgewählt ist, wird Ihre AVStrMiniInitializeAllocator-Rückrufroutine nie aufgerufen.

Siehe auch AVStream DMA Services und Stream Pointers.