Condividi tramite


DMA_START_HANDLER funzione di callback (netdma.h)

Nota L'interfaccia NetDMA non è supportata

in Windows 8 e versioni successive.

La funzione ProviderStartDma avvia un trasferimento DMA sul canale DMA specificato.

Sintassi

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [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

ProviderStartDma restituisce uno dei valori di stato seguenti:

Codice restituito Descrizione
STATUS_SUCCESS
Operazione completata correttamente.
STATUS_RESOURCES
L'operazione non è riuscita a causa di risorse insufficienti.
STATUS_UNSUCCESSFUL
L'operazione non è riuscita per motivi non specificati.

Osservazioni

L'interfaccia NetDMA chiama la funzione di ProviderStartDma di un driver del provider DMA per avviare un trasferimento DMA. L'interfaccia NetDMA può chiamare ProviderStartDma in qualsiasi momento dopo l'allocazione di un canale DMA. L'interfaccia NetDMA deve chiamare ProviderStartDma dopo aver chiamato il ProviderAbortDma, ProviderResetChannelo ProviderAllocateDmaChannel funzione per un canale DMA.

L'origine del trasferimento DMA è un elenco collegato di descrittori DMA. Il NextDescriptor membro della struttura NET_DMA_DESCRIPTOR nel parametro DescriptorVirtualAddress contiene l'indirizzo fisico della struttura NET_DMA_DESCRIPTOR successiva nell'elenco collegato.

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.
 
Per eseguire l'operazione di avvio, il provider DMA deve ignorare l'elenco dei descrittori DMA esistenti, se presenti, dopo aver completato qualsiasi elaborazione nel descrittore corrente. Il provider DMA deve ignorare il membro NextDescriptor nella struttura NET_DMA_DESCRIPTOR corrente e caricare il descrittore specificato ProviderStartDma.

Dopo ProviderStartDma avvia il trasferimento DMA iniziale, l'interfaccia NetDMA può chiamare la funzione ProviderAppendDma per aggiungere dati aggiuntivi al trasferimento.

NetDMA chiama ProviderStartDma 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

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel