Partager via


PCANCEL_MAPPED_TRANSFER fonction de rappel (wdm.h)

La routine CancelMappedTransfer annule un transfert DMA système actuellement mappé à un adaptateur.

Syntaxe

PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;

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

Paramètres

[in] DmaAdapter

Pointeur vers une structure DMA_ADAPTER. Cette structure est l’objet adaptateur qui attend la fin du transfert DMA en attente. L’appelant a obtenu ce pointeur à partir d’un appel précédent à la routine IoGetDmaAdapter, et l’appelant a passé ce pointeur à l’appel MapTransferEx qui a configuré les registres cartographiques pour le transfert DMA.

[in] DmaTransferContext

Pointeur vers un contexte de transfert DMA. Cette valeur de paramètre doit être le même contexte de transfert DMA qui a été transmis au AllocateAdapterChannelEx appel qui a demandé l’allocation du canal d’adaptateur.

Valeur de retour

CancelMappedTransfer retourne STATUS_SUCCESS si l’appel réussit. Sinon, elle retourne un code d’erreur approprié.

Remarques

CancelMappedTransfer n’est pas une routine système qui peut être appelée directement par nom. Cette routine peut être appelée uniquement par le pointeur de l’adresse retournée dans une structure DMA_OPERATIONS. Pilotes obtiennent l’adresse de cette routine en appelant IoGetDmaAdapter avec le membre version du paramètre DeviceDes cription défini sur DEVICE_DESCRIPTION_VERSION3. Si IoGetDmaAdapter retourne NULL, la routine n’est pas disponible sur votre plateforme.

Cette routine marque le contexte de transfert associé comme annulé, ce qui empêche tout transfert supplémentaire dans ce contexte. Une fois qu’un transfert est annulé, sa routine d’achèvement est appelée, mais l’état du transfert peut être défini sur DmaCancelled.

Indépendamment du fait qu’un transfert DMA système soit annulé ou terminé, les FlushAdapterBuffers ou FlushAdapterBuffersEx routine doivent toujours être appelées pour vider les données qui restent dans le cache interne du contrôleur DMA système à la fin d’une opération de transfert DMA. Une fois le transfert annulé ou terminé, la routine FlushAdapterBuffersXxx doit se produire avant que le canal DMA soit libéré ou que la routine MapTransferEx soit appelée pour configurer les registres cartographiques d’un nouveau transfert DMA.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 8.
plateforme cible Bureau
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

mapTransferEx