PCANCEL_MAPPED_TRANSFER Rückruffunktion (wdm.h)
Die CancelMappedTransfer Routine bricht eine System-DMA-Übertragung ab, die derzeit einem Adapter zugeordnet ist.
PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;
NTSTATUS PcancelMappedTransfer(
[in] PDMA_ADAPTER DmaAdapter,
[in] PVOID DmaTransferContext
)
{...}
[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 von einem vorherigen Aufruf an die IoGetDmaAdapter Routine abgerufen, und der Aufrufer hat diesen Zeiger an den MapTransferEx Aufruf übergeben, der die Kartenregister für die DMA-Übertragung eingerichtet hat.
[in] DmaTransferContext
Ein Zeiger auf einen DMA-Übertragungskontext. Dieser Parameterwert muss derselbe DMA-Übertragungskontext sein, der an den AllocateAdapterChannelEx Aufruf übergeben wurde, der die Zuordnung des Adapterkanals angefordert hat.
CancelMappedTransfer gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehlercode zurückgegeben.
CancelMappedTransfer ist keine Systemroutine, die direkt anhand des Namens aufgerufen werden kann. Diese Routine kann nur durch Zeiger von der in einer DMA_OPERATIONS Struktur zurückgegebenen Adresse aufgerufen werden. Treiber rufen die Adresse dieser Routine ab, indem sie IoGetDmaAdapter- mit dem Version Member des DeviceDescription-Parameters aufrufen, der 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 Abschlussroutine aufgerufen, aber der Status für die Übertragung kann auf DmaCancelledfestgelegt werden.
Unabhängig davon, ob eine System-DMA-Übertragung abgebrochen oder abgeschlossen ist, muss die FlushAdapterBuffers oder FlushAdapterBuffers Ex-Routine immer aufgerufen werden, um alle Daten zu leeren, die am Ende eines DMA-Übertragungsvorgangs im internen Cache des Systems verbleiben. Nachdem die Übertragung abgebrochen oder abgeschlossen wurde, muss der FlushAdapterBuffers-Xxx- aufruf erfolgen, bevor entweder der DMA-Kanal losgelassen wird, oder die MapTransferEx Routine aufgerufen wird, um die Kartenregister für eine neue DMA-Übertragung einzurichten.
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar ab Windows 8. |
Zielplattform- | Desktop |
Header- | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL- | <= DISPATCH_LEVEL |