Sdílet prostřednictvím


Alokátory AVStream

Ovladač třídy AVStream používá alokátor k přidělení datové vyrovnávací paměti v jednotkách nazývaných rámečky. Rámec je blok souvislé paměti, jehož velikost je určena dodavatelem prostřednictvím člena AllocatorFramingKSPIN_DESCRIPTOR_EX.

Minidrivery přistupují k těmto vyrovnávacím pamětím prostřednictvím rozhraní API pro ukazatele streamu; voláním funkce KsPinGetLeadingEdgeStreamPointer získáte ukazatel na stream.

Klienti AVStream mohou získat informace o požadavcích na zarámování pinu pomocí vlastnosti pouze pro čtení KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX. Tato vlastnost vrací strukturu typu KSALLOCATOR_FRAMING_EX, která popisuje požadavky na rámování piny.

Pokud se data už nepoužívají, avStream použije alokátor k uvolnění vyrovnávací paměti.

AVStream poskytuje výchozí alokátor. Výchozí alokátor přidělí paměť fondu na základě požadavků alokátoru, které minidriver poskytuje v členu AllocatorFraming struktury KSPIN_DESCRIPTOR_EX .

Dodavatel s požadavky na přidělení specifické pro zařízení může napsat minidriver, který obsahuje vlastní rutiny přidělování. Můžete například poskytnout alokátor, pokud ovladač přidělí paměť ze společné vyrovnávací paměti DMA.

Chcete-li poskytnout alokátor, zadejte KSALLOCATOR_DISPATCH strukturu, která obsahuje ukazatele na následující rutiny zpětného volání zadané dodavatelem:

Zadejte ukazatel na tuto dispečerskou strukturu alokátoru v členovi alokátoruKSPIN_DISPATCH struktury popisující pin, pro který tento alokátor vytvoří instanci rámců.

Zadejte ukazatel na tuto strukturu pin dispatch ve členu Dispatch odpovídající struktury KSPIN_DESCRIPTOR_EX. Další informace o strukturách dispečerů v AVStream naleznete v tématu AVStream Dispatch Tables.

Při spuštění zpracovává správce grafu (například modul Kernel Streaming Proxy) výběr alokátoru. Správce grafů nezaručuje výběr alokátoru dodaného dodavatelem.

Alokátor režimu jádra je zvolen pouze v případě, že je připojení v režimu jádra. Kromě toho může být váš alokátor odmítnut, pokud dojde k neshodě požadavků alokátoru a schopností vašeho alokátoru. Pokud není alokátor vybrán, rutina zpětného volání AVStrMiniInitializeAllocator nebude nikdy zavolána.

Viz také AVStream DMA Services a stream ukazatele.