DMA_APPEND_HANDLER funzione di callback (netdma.h)

Nota L'interfaccia NetDMA non è supportata in Windows 8 e versioni successive.

La funzione ProviderAppendDma aggiunge un elenco collegato di descrittori DMA all'ultimo descrittore in un canale DMA.

Sintassi

DMA_APPEND_HANDLER DmaAppendHandler;

NTSTATUS DmaAppendHandler(
  [in] PVOID ProviderChannelContext,
  [in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
  [in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
  [in] ULONG DescriptorCount
)
{...}

Parametri

[in] ProviderChannelContext

Puntatore che identifica l'area di contesto del canale DMA. Il provider DMA ha restituito questo handle a NetDMA nel percorso specificato nel parametro pProviderChannelContext dell'oggetto Funzione ProviderAllocateDmaChannel .

[in] DescriptorVirtualAddress

Puntatore all'indirizzo virtuale della prima struttura NET_DMA_DESCRIPTOR in un elenco collegato di descrittori DMA. L'indirizzo fisico corrispondente viene specificato nel parametro DescriptorPhysicalAddress .

[in] DescriptorPhysicalAddress

Puntatore all'indirizzo fisico del primo descrittore DMA in un elenco collegato di descrittori DMA. L'indirizzo virtuale corrispondente viene specificato nel parametro DescriptorVirtualAddress .

[in] DescriptorCount

Numero di descrittori DMA in DescriptorVirtualAddress .

Nota I driver del provider NetDMA prima di NetDMA versione 2.0 possono ignorare il parametro DescriptorCount . Per NetDMA 2.0 e versioni successive, questo parametro è il conteggio dei descrittori nell'operazione DMA.
 

Valore restituito

ProviderAppendDma restituisce uno dei valori di stato seguenti:

Codice restituito Descrizione
STATUS_SUCCESS
Operazione riuscita.
STATUS_UNSUCCESSFUL
L'operazione non è riuscita per motivi non specificati.

Commenti

L'interfaccia NetDMA chiama una funzione provider DMA ProviderAppendDma per aggiungere un elenco collegato di descrittori DMA dopo l'ultimo descrittore in un canale DMA. L'interfaccia NetDMA può chiamare ProviderAppendDma qualsiasi numero di volte dopo l'avvio di un trasferimento DMA. Tuttavia, l'interfaccia NetDMA deve chiamare la funzione ProviderStartDma dopo la reimpostazione o l'interruzione del canale oppure dopo l'allocazione del canale DMA.

Nota In NetDMA 2.0 e versioni successive l'elenco collegato di descrittori non viene terminato null. Il membro NextDescriptor nell'ultimo descrittore nell'elenco collegato specifica l'indirizzo fisico della struttura NET_DMA_DESCRIPTOR che verrà usata nella chiamata successiva alla funzione ProviderAppendDma . Un driver provider NetDMA 2.0 può memorizzare nella cache l'indirizzo in NextDescriptor e usare questo indirizzo come inizio dell'elenco collegato per l'operazione di accodamento successiva.
 
L'interfaccia NetDMA imposta il membro NextDescriptor dell'ultimo descrittore all'inizio della nuova catena di descrittori prima di chiamare ProviderAppendDma.

Se il descrittore corrente in un trasferimento attivo è l'ultimo descrittore, il motore DMA deve rileggere l'ultimo descrittore. Il membro NextDescriptor nell'ultima struttura NET_DMA_DESCRIPTOR deve avere un nuovo indirizzo e il motore DMA deve continuare con il descrittore successivo. Se il descrittore corrente non è l'ultimo descrittore, il motore DMA può continuare l'elaborazione dei descrittori DMA senza attività aggiuntive.

NetDMA chiama ProviderAppendDma in IRQL <= DISPATCH_LEVEL.

Requisiti

Requisito Valore
Client minimo supportato Supportato per i driver NetDMA 2.0 in Windows Server 2008. Supportato per i driver NetDMA 1.1 in Windows Server 2008. Supportato per i driver NetDMA 1.0 in Windows Server 2008 e Windows Vista.
Piattaforma di destinazione Windows
Intestazione netdma.h (include Netdma.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

NET_DMA_DESCRIPTOR

ProviderAllocateDmaChannel

ProviderStartDma