Allocatori KS
Un allocatore è un oggetto KS che crea un'istanza dei buffer di dati denominati frame per le richieste di I/O. Un frame è un blocco di memoria continua, la cui dimensione è specificata dal fornitore tramite il membro AllocatorFraming di KSPIN_DESCRIPTOR_EX.
I minidriver possono supportare allocatori per più tipi di buffer, ad esempio ram su scheda video. Tuttavia, la maggior parte dei minidriver usa l'allocatore predefinito per allocare la memoria di sistema. I minidriver possono specificare le dimensioni del frame, il numero massimo di fotogrammi e i requisiti di allineamento. L'allocatore predefinito si occupa di soddisfare i requisiti e può ottimizzare le prestazioni riutilizzando i fotogrammi eliminati.
Un minidriver crea un allocatore chiamando la routine KsCreateAllocator o le funzioni correlate. In questa chiamata, il minidriver passa un puntatore a una struttura KSALLOCATOR_FRAMING . Questa struttura contiene parametri che descrivono l'allocatore richiesto.
Nel modello di classe di flusso i minidriver che creano allocatori supportano la proprietà KSPROPERTY_CONNECTION_ALLOCATORFRAMING . Si tratta di una richiesta di sola lettura che restituisce un puntatore alla struttura KSALLOCATOR_FRAMING pertinente per l'handle sink specificato.
I minidriver che forniscono allocatori devono supportare anche la proprietà KSPROPERTY_STREAM_ALLOCATOR . Questa proprietà fornisce l'accesso in lettura/scrittura all'handle dell'allocatore attualmente assegnato al punto di connessione del flusso.
I minidriver in esecuzione in AVStream possono includere pin che implementano i propri allocatori. A tale scopo, impostare il membro KSALLOCATOR_DISPATCH della struttura KSPIN_DISPATCH . Specificare NULL per questo membro se non si vuole specificare un allocatore per questo pin.
Inoltre, i minidriver AVStream usano la struttura KSALLOCATOR_FRAMING_EX per specificare i requisiti dell'allocatore. I client usano quindi la proprietà KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX per recuperare i requisiti di frame per un pin. Per altre informazioni, vedere Allocatori AVStream .
Questa sezione contiene le informazioni aggiuntive seguenti: