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 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 precedenti a NetDMA versione 2.0 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 riuscita.
STATUS_RESOURCES
L'operazione non è riuscita a causa di risorse insufficienti.
STATUS_UNSUCCESSFUL
L'operazione non è riuscita per motivi non specificati.

Commenti

L'interfaccia NetDMA chiama una funzione ProviderStartDma del 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 providerAbortDma, ProviderResetChannel o Funzione ProviderAllocateDmaChannel per un canale DMA.

L'origine del trasferimento DMA è un elenco collegato di descrittori DMA. Il membro NextDescriptor 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 membro NextDescriptor nell'ultimo descrittore nell'elenco collegato specifica l'indirizzo fisico della struttura NET_DMA_DESCRIPTOR che verrà utilizzata 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 presente, 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 da ProviderStartDma .

Dopo che 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.

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

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel