PCANCEL_MAPPED_TRANSFER funzione di callback (wdm.h)

La routine CancelMappedTransfer annulla un trasferimento DMA di sistema attualmente mappato a un adattatore.

Sintassi

PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;

NTSTATUS PcancelMappedTransfer(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] PVOID DmaTransferContext
)
{...}

Parametri

[in] DmaAdapter

Puntatore a una struttura DMA_ADAPTER . Questa struttura è l'oggetto adapter in attesa del completamento del trasferimento DMA in sospeso. Il chiamante ha ottenuto questo puntatore da una chiamata precedente alla routine IoGetDmaAdapter e il chiamante ha passato questo puntatore alla chiamata MapTransferEx che configura i registri della mappa per il trasferimento DMA.

[in] DmaTransferContext

Puntatore a un contesto di trasferimento DMA. Questo valore di parametro deve essere lo stesso contesto di trasferimento DMA passato alla chiamata AllocateAdapterChannelEx che ha richiesto l'allocazione del canale dell'adapter.

Valore restituito

CancelMappedTransfer restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce un codice di errore appropriato.

Commenti

CancelMappedTransfer non è una routine di sistema che può essere chiamata direttamente per nome. Questa routine può essere chiamata solo dal puntatore dall'indirizzo restituito in una struttura DMA_OPERATIONS. I driver ottengono l'indirizzo di questa routine chiamando IoGetDmaAdapter con il membro Version del parametro DeviceDescription impostato su DEVICE_DESCRIPTION_VERSION3. Se IoGetDmaAdapter restituisce NULL, la routine non è disponibile nella piattaforma.

Questa routine contrassegna il contesto di trasferimento associato come annullato, che impedisce ulteriori trasferimenti in questo contesto. Dopo l'annullamento di un trasferimento, viene chiamata la routine di completamento, ma lo stato del trasferimento potrebbe essere impostato su DmaCancelled.

Indipendentemente dal fatto che un trasferimento DMA di sistema venga annullato o completato, la routine FlushAdapterBuffers o FlushAdapterBuffersEx deve essere sempre chiamata per scaricare tutti i dati che rimangono nella cache interna del controller DMA del sistema alla fine di un'operazione di trasferimento DMA. Dopo aver annullato o completato il trasferimento, la chiamata FlushAdapterBuffersXxx deve essere eseguita prima che il canale DMA venga rilasciato o la routine MapTransferEx venga chiamata per configurare i registri della mappa per un nuovo trasferimento DMA.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx