Delen via


AVStream Allocators

Het AVStream-klassestuurprogramma gebruikt een Allocator om gegevensbuffers toe te wijzen in eenheden die frames worden genoemd. Een frame is een segment van doorlopend geheugen, waarvan de grootte is opgegeven door de leverancier via het AllocatorFraming-lid van KSPIN_DESCRIPTOR_EX.

Minidrivers hebben toegang tot deze buffers via de Stream Pointers-API ; roep KsPinGetLeadingEdgeStreamPointer aan om een aanwijzer in de stream te verkrijgen.

AVStream-clients kunnen informatie verkrijgen over de framevereisten van een pin met behulp van de eigenschap alleen-lezen KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX. Deze eigenschap retourneert een structuur van het type KSALLOCATOR_FRAMING_EX waarin de framevereisten voor de pin worden beschreven.

Wanneer gegevens niet meer worden gebruikt, gebruikt AVStream de allocator om de buffer vrij te maken.

AVStream biedt een standaard-allocator. Met de standaardtoewijzing wordt poolgeheugen toegewezen op basis van de allocatorvereisten die de minidriver biedt in het AllocatorFraming-element van de structuur KSPIN_DESCRIPTOR_EX.

Een leverancier met apparaatspecifieke toewijzingsvereisten kan een minidriver schrijven die zijn eigen toewijzingsroutines bevat. Bijvoorbeeld, u kunt een allocator opgeven als uw stuurprogramma geheugen toewijst vanuit een algemene DMA-buffer.

Als u een allocator wilt bieden, geeft u een KSALLOCATOR_DISPATCH structuur op die aanwijzers bevat naar de volgende door de leverancier geleverde callback-routines:

Geef een verwijzing naar deze allocatorverzendingsstructuur in het lid van de allocator van de KSPIN_DISPATCH structuur die de pin beschrijft waarvoor deze allocator frames zal instantiƫren.

Geef een aanwijzer op voor deze pin-verzendstructuur in het lid Dispatch van de bijbehorende KSPIN_DESCRIPTOR_EX structuur. Lees AVStream-dispatchtabellen voor meer informatie over dispatchstructuren in AVStream.

Tijdens runtime verwerkt grafiekbeheer (bijvoorbeeld de module Kernel Streaming Proxy ) de selectie van de allocator. Een door de leverancier geleverde allocator is niet gegarandeerd dat deze wordt geselecteerd door de grafenbeheerder.

Een kernelmodus-allocator wordt alleen gekozen als de verbinding zich in de kernelmodus bevindt. Bovendien kan uw toewijzer worden afgewezen als er een discrepantie is tussen de vereisten voor de toewijzer en de capaciteiten van uw toewijzer. Als uw allocator niet is geselecteerd, wordt uw AVStrMiniInitializeAllocator-callbackroutine nooit aangeroepen.

Zie ook AVStream DMA Services en Stream Pointers.