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 |