Condividi tramite


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 di un canale DMA. Il provider DMA ha restituito questo handle a NetDMA nella posizione specificata nel parametro pProviderChannelContext del parametro 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 driver del provider NetDMA precedenti alla versione 2.0 di NetDMA possono ignorare il parametro DescriptorCount. Per NetDMA 2.0 e versioni successive, questo parametro è il numero di descrittori nell'operazione DMA.
 

Valore restituito

ProviderAppendDma restituisce uno dei valori di stato seguenti:

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

Osservazioni

L'interfaccia NetDMA chiama la funzione di ProviderAppendDma di un driver del provider DMA per aggiungere un elenco collegato di descrittori DMA dopo l'ultimo descrittore in un canale DMA. L'interfaccia NetDMA può chiamare ProviderAppendDma un numero qualsiasi 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 o dopo l'allocazione del canale DMA.

Nota In NetDMA 2.0 e versioni successive, l'elenco collegato di descrittori non è con terminazione NULL. Il NextDescriptor membro 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 del 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 NextDescriptor membro 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.

Fabbisogno

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 Finestre
intestazione netdma.h (include Netdma.h)
IRQL <= DISPATCH_LEVEL

Vedere anche

NET_DMA_DESCRIPTOR

ProviderAllocateDmaChannel

ProviderStartDma