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

Vedi anche

IoGetDmaAdapter

KSFILTER_DESCRIPTOR

KSMAPPING

KSPIN_DESCRIPTOR_EX