Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
AVStream-klassdrivrutinen använder en Allokerare för att allokera databuffertar i enheter som kallas ramar. En ram är ett segment av kontinuerligt minne, vars storlek anges av leverantören via AllocatorFraming-medlemmen i KSPIN_DESCRIPTOR_EX.
Minidrivrutiner får åtkomst till dessa buffertar via API:et Stream Pointers; Anropa KsPinGetLeadingEdgeStreamPointer för att hämta en pekare till strömmen.
AVStream-klienter kan hämta information om inramningskraven för en pin-kod med hjälp av den skrivskyddade egenskapen KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX. Den här egenskapen returnerar en struktur av typen KSALLOCATOR_FRAMING_EX som beskriver inramningskraven för pin-koden.
När data inte längre används använder AVStream allokeraren för att frigöra bufferten.
AVStream tillhandahåller en standardallokerare. Standardallokeraren allokerar poolminne baserat på de allokeringskrav som minidrivrutinen tillhandahåller i AllocatorFraming-medlemmen av KSPIN_DESCRIPTOR_EX strukturen.
En leverantör med enhetsspecifika allokeringskrav kan skriva en minidrivrutin som inkluderar egna allokeringsrutiner. Du kan till exempel ange en allokerare om drivrutinen allokerar minne från en gemensam DMA-buffert.
Ange en allokerare genom att ange en KSALLOCATOR_DISPATCH struktur som innehåller pekare till följande återanropsrutiner som tillhandahålls av leverantören:
Ange en pekare till den här allokeringsstrukturen i Allocator-medlemmen i KSPIN_DISPATCH-strukturen, som beskriver pinnen för vilken den här allokeraren instansierar ramar.
Ange en pekare till den här pin-dispatchstrukturen i Dispatch-medlemmen i den motsvarande KSPIN_DESCRIPTOR_EX strukturen. Mer information om leveransstrukturer i AVStream finns i AVStream Dispatch-tabeller.
Vid körning hanterar grafhanteraren (till exempel Kernel Streaming Proxy-modulen) valet av allokerare. En allokerare som tillhandahålls av leverantören är inte garanterad att väljas av grafhanteraren.
En kärnläge-allokerare väljs endast om anslutningen är i kärnläge. Dessutom kan din tilldelare avvisas om det finns ett matchningsfel i tilldelningskraven och tilldelarens kapaciteter. Om allokeraren inte har valts anropas aldrig din avStrMiniInitializeAllocator-återanropsrutin .
Se även AVStream DMA Services och Stream Pointers.