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 |