PCANCEL_MAPPED_TRANSFER Rückruffunktion (wdm.h)
Die CancelMappedTransfer-Routine bricht eine System-DMA-Übertragung ab, die derzeit einem Adapter zugeordnet ist.
Syntax
PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;
NTSTATUS PcancelMappedTransfer(
[in] PDMA_ADAPTER DmaAdapter,
[in] PVOID DmaTransferContext
)
{...}
Parameter
[in] DmaAdapter
Ein Zeiger auf eine DMA_ADAPTER Struktur. Diese Struktur ist das Adapterobjekt, das auf den Abschluss der ausstehenden DMA-Übertragung wartet. Der Aufrufer hat diesen Zeiger aus einem vorherigen Aufruf der IoGetDmaAdapter-Routine abgerufen, und der Aufrufer übergab diesen Zeiger an den MapTransferEx-Aufruf , der die Kartenregister für die DMA-Übertragung eingerichtet hat.
[in] DmaTransferContext
Ein Zeiger auf einen DMA-Übertragungskontext. Dieser Parameterwert muss der gleiche DMA-Übertragungskontext sein, der an den Aufruf AllocateAdapterChannelEx übergeben wurde, der die Adapterkanalzuordnung angefordert hat.
Rückgabewert
CancelMappedTransfer gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehlercode zurückgegeben.
Hinweise
CancelMappedTransfer ist keine Systemroutine, die direkt mit dem Namen aufgerufen werden kann. Diese Routine kann nur durch zeiger von der Adresse aufgerufen werden, die in einer DMA_OPERATIONS-Struktur zurückgegeben wird.Treiber erhalten die Adresse dieser Routine, indem Sie IoGetDmaAdapter aufrufen, wobei das Versionselement des DeviceDescription-Parameters auf DEVICE_DESCRIPTION_VERSION3 festgelegt ist. Wenn IoGetDmaAdapterNULL zurückgibt, ist die Routine auf Ihrer Plattform nicht verfügbar.
Diese Routine kennzeichnet den zugeordneten Übertragungskontext als abgebrochen, wodurch weitere Übertragungen in diesem Kontext verhindert werden. Nachdem eine Übertragung abgebrochen wurde, wird die Vervollständigungsroutine aufgerufen, aber die status für die Übertragung kann auf DmaCancelled festgelegt werden.
Unabhängig davon, ob eine System-DMA-Übertragung abgebrochen oder abgeschlossen wird, muss die FlushAdapterBuffers - oder FlushAdapterBuffersEx-Routine immer aufgerufen werden, um alle Daten zu leeren, die am Ende eines DMA-Übertragungsvorgangs im internen Cache des System-DMA-Controllers verbleiben. Nachdem die Übertragung abgebrochen oder abgeschlossen wurde, muss der FlushAdapterBuffersXxx-Aufruf erfolgen, bevor entweder der DMA-Kanal freigegeben oder die MapTransferEx-Routine aufgerufen wird, um die Kartenregister für eine neue DMA-Übertragung einzurichten.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Verfügbar ab Windows 8. |
Zielplattform | Desktop |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |