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 |