Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Il driver di classe AVStream usa un allocatore per allocare buffer di dati in unità denominate frame. Un frame è un blocco di memoria continua, la cui dimensione è specificata dal fornitore tramite il membro AllocatorFraming di KSPIN_DESCRIPTOR_EX.
I minidriver accedono a questi buffer tramite l'API Puntatori di flusso ; chiamare KsPinGetLeadingEdgeStreamPointer per acquisire un puntatore nel flusso.
I client AVStream possono ottenere informazioni sui requisiti di frame di un pin usando la proprietà di sola lettura KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX. Questa proprietà restituisce una struttura di tipo KSALLOCATOR_FRAMING_EX che descrivono i requisiti di frame per il pin.
Quando i dati non sono più in uso, AVStream usa l'allocatore per liberare il buffer.
AVStream fornisce un allocatore predefinito. L'allocatore predefinito alloca la memoria del pool in base ai requisiti dell'allocatore forniti dal minidriver nel membro AllocatorFraming della struttura KSPIN_DESCRIPTOR_EX .
Un fornitore con requisiti di allocazione specifici del dispositivo può scrivere un minidriver che include le proprie routine di allocazione. Ad esempio, è possibile fornire un allocatore se il driver alloca memoria da un buffer DMA comune.
Per fornire un allocatore, fornire una struttura KSALLOCATOR_DISPATCH che contiene puntatori alle routine di callback fornite dal fornitore seguenti:
Fornire un puntatore a questa struttura di assegnazione dell'allocatore nel membro Allocator della struttura KSPIN_DISPATCH che descrive il pin per cui questo allocatore istanzierà i fotogrammi.
Fornire un puntatore a questa struttura di invio pin nel membro Dispatch della struttura KSPIN_DESCRIPTOR_EX corrispondente. Per altre informazioni sulle strutture dispatch in AVStream, vedere Tabelle dispatch AVStream.
In fase di esecuzione, il gestore del grafo (ad esempio, il modulo Proxy di Streaming del Kernel) gestisce la selezione dell'allocatore. Non è garantito che un allocatore fornito dal fornitore sia selezionato dal gestore dei gragrafi.
Un allocatore in modalità kernel viene scelto solo se la connessione è in modalità kernel. Inoltre, l'allocatore potrebbe essere rifiutato se esiste una discrepanza tra i requisiti dell'allocatore e le sue capacità. Se l'allocatore non è selezionato, la routine di callback AVStrMiniInitializeAllocator non viene mai chiamata.
Vedere anche AVStream DMA Services and Stream Pointers (Servizi AVStream DMA e puntatori di flusso).