PCANCEL_MAPPED_TRANSFER fonction de rappel (wdm.h)

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

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 de carte pour le transfert DMA.

[in] DmaTransferContext

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

Valeur retournée

CancelMappedTransfer retourne STATUS_SUCCESS si l’appel réussit. Sinon, il 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 un pointeur à partir de l’adresse retournée dans une structure DMA_OPERATIONS. Les pilotes obtiennent l’adresse de cette routine en appelant IoGetDmaAdapter avec le membre Version du paramètre DeviceDescription 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 étant annulé, ce qui empêche d’autres transferts dans ce contexte. Après l’annulation d’un transfert, sa routine d’achèvement est appelée, mais la status pour le transfert peut être définie sur DmaCancelled.

Qu’un transfert DMA système soit annulé ou terminé, la routine FlushAdapterBuffers ou FlushAdapterBuffersEx doit toujours être appelée pour vider toutes 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é, l’appel FlushAdapterBuffersXxx doit se produire avant que le canal DMA soit libéré ou que la routine MapTransferEx soit appelée pour configurer les registres de carte pour un nouveau transfert DMA.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.
Plateforme cible Desktop (Expérience utilisateur)
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx