Condividi tramite


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 al MapTransferEx chiamata che configura i registri della mappa per il trasferimento DMA.

[in] DmaTransferContext

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

Valore restituito

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

Osservazioni

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. Driver ottengono l'indirizzo di questa routine chiamando IoGetDmaAdapter con il membro version del parametro DEVICE_DESCRIPTION_VERSION3 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 di sistema alla fine di un'operazione di trasferimento DMA. Dopo l'annullamento o il completamento del trasferimento, è necessario chiamare FlushAdapterBuffersXxx prima del rilascio del canale DMA o della routine MapTransferEx per configurare i registri mappa per un nuovo trasferimento DMA.

Fabbisogno

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

Vedere anche

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx