Funzione KsDeviceRegisterAdapterObject (ks.h)
La funzione KsDeviceRegisterAdapterObject registra un oggetto adattatore DMA con AVStream per l'esecuzione di DMA a dispersione/raccolta nel dispositivo specificato. Tutti i driver compilati per Win64 devono usare invece IKsDeviceFunctions::RegisterAdapterObjectEx .
Sintassi
void KsDeviceRegisterAdapterObject(
[in] PKSDEVICE Device,
[in] PADAPTER_OBJECT AdapterObject,
[in] ULONG MaxMappingsByteCount,
[in] ULONG MappingTableStride
);
Parametri
[in] Device
Puntatore alla struttura KSDEVICE che rappresenta il dispositivo AVStream per cui registrare un oggetto adapter.
[in] AdapterObject
Puntatore alla struttura DMA_ADAPTER restituita da IoGetDmaAdapter che rappresenta il controller DMA.
[in] MaxMappingsByteCount
Questo parametro specifica il numero massimo di byte che il dispositivo può gestire per un singolo mapping. Consente a AVStream di suddividere automaticamente blocchi di memoria fisica contigua in più elementi di dispersione/raccolta per i dispositivi che impongono un limite di dimensioni ai singoli mapping nei trasferimenti DMA. Le interruzioni non sono garantite per i limiti di pagina.
[in] MappingTableStride
Questo parametro specifica il numero di byte necessari per ogni voce della tabella di mapping. Questo deve essere almeno sizeof (KSMAPPING) e può essere il più grande necessario.
Lo spazio aggiuntivo può essere usato dal minidriver come informazioni di contesto.
Valore restituito
nessuno
Osservazioni
Un minidriver che chiama KsDeviceRegisterAdapterObject è responsabile dell'acquisizione precedente dell'oggetto adapter tramite IoGetDmaAdapter.
Si noti anche che se il minidriver specifica il flag di KSPIN_FLAG_GENERATE_MAPPINGS per qualsiasi pin nel dispositivo, il minidriver deve chiamare KsDeviceRegisterAdapterObject prima di elaborare i dati. Altre informazioni su questo flag sono disponibili nella pagina di riferimento per KSPIN_DESCRIPTOR_EX. Vedere anche AVStream DMA Services.
Se si imposta MaxMappingByteCount su una pagina fisica in lunghezza, i mapping non sono garantiti in una singola pagina fisica. Inoltre, come indicato nella descrizione del membro precedente, l'impostazione di MaxMappingsByteCount non garantisce che si verifichino interruzioni sui limiti della pagina. Se sono necessarie interruzioni sui limiti di pagina, è consigliabile non specificare un limite per le dimensioni del mapping; suddividere invece manualmente i mapping a dispersione/raccolta restituiti in blocchi allineati a pagine.
Vedere anche Supporto di DMA nei driver AVStream a 64 bit.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | ks.h (include Ks.h) |
Libreria | Ks.lib |
IRQL | PASSIVE_LEVEL |