PCANCEL_ADAPTER_CHANNEL Rückruffunktion (wdm.h)
Die CancelAdapterChannel Routine versucht, eine ausstehende Anforderung abzubrechen, um einen DMA-Kanal zuzuweisen.
Syntax
PCANCEL_ADAPTER_CHANNEL PcancelAdapterChannel;
BOOLEAN PcancelAdapterChannel(
[in] PDMA_ADAPTER DmaAdapter,
[in] PDEVICE_OBJECT DeviceObject,
[in] PVOID DmaTransferContext
)
{...}
Parameter
[in] DmaAdapter
Ein Zeiger auf eine DMA_ADAPTER Struktur. Diese Struktur ist das Adapterobjekt, das darauf wartet, dass die ausstehende Ressourcenzuordnungsanforderung erteilt wird. Der Aufrufer hat diesen Zeiger aus einem vorherigen Aufruf der IoGetDmaAdapter Routine abgerufen, und der Aufrufer hat diesen Zeiger an die AllocateAdapterChannelEx, GetScatterGatherListExoder BuildScatterGatherListEx Aufruf übergeben, der die Ressourcenzuordnung angefordert hat.
[in] DeviceObject
Ein Zeiger auf eine DEVICE_OBJECT Struktur. Diese Struktur ist das physische Geräteobjekt (PDO), das das Zielgerät für den DMA-Vorgang darstellt, für den der DMA-Kanal angefordert wurde.
[in] DmaTransferContext
Ein Zeiger auf einen DMA-Übertragungskontext. Dieser Parameterwert muss derselbe DMA-Übertragungskontext sein, der an den AllocateAdapterChannelEx, GetScatterGatherListExoder BuildScatterGatherListEx Aufruf übergeben wurde, der die Zuordnung des Adapterkanals angefordert hat.
Rückgabewert
CancelAdapterChannel gibtTRUE zurück, wenn die ausstehende Zuordnungsanforderung erfolgreich abgebrochen wird. Die Routine gibt FALSE zurück, wenn die Anforderung nicht abgebrochen werden konnte (z. B. weil der DMA-Kanal zugewiesen wurde, bevor die Anforderung abgebrochen werden konnte).
Bemerkungen
CancelAdapterChannel 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.
CancelAdapterChannel versucht, eine ausstehende Zuordnungsanforderung abzubrechen, die von einem asynchronen Aufruf einer Zuordnungsroutine wie AllocateAdapterChannelEx, GetScatterGatherListExoder BuildScatterGatherListEx. Wenn die Zuordnungsroutine asynchron aufgerufen wird, kann die Zuordnungsroutine zurückgeben, während die Zuordnungsanforderung noch aussteht und bevor die vom Treiber bereitgestellte Ausführungsroutine (AdapterControl oder AdapterListControl) aufgerufen wird. Wenn CancelAdapterChannel die ausstehende Zuordnungsanforderung erfolgreich abbricht, werden die Ressourcen nicht zugeordnet, und die Ausführungsroutine wird nicht aufgerufen.
Wenn ein Treiber AllocateAdapterChannelEx aufruft, um Ressourcen für eine vom Treiber bereitgestellte AdapterControl Routine anzufordern, und ruft dann CancelAdapterChannel- auf, um die Anforderung abzubrechen, kann CancelAdapterChannel einen der folgenden Werte zurückgeben:
- TRUE, wenn das Adapterobjekt auf die angeforderte Zuordnung wartet, wenn der CancelAdapterChannel Aufruf auftritt. In diesem Fall CancelAdapterChannel die ausstehende Zuordnungsanforderung abbricht, und die AdapterControl-Routine des Treibers wird nicht aufgerufen.
- FALSE, wenn die AdapterControl- Routine bereits aufgerufen wurde oder gerade aufgerufen werden soll.
- TRUE, wenn das Adapterobjekt auf die angeforderte Zuordnung wartet, wenn der CancelAdapterChannel Aufruf auftritt. In diesem Fall bricht CancelAdapterChannel die ausstehende Zuordnungsanforderung ab, und die AdapterListControl Routine des Treibers wird nicht aufgerufen.
- FALSE, wenn die AdapterListControl- Routine bereits aufgerufen wurde oder gerade aufgerufen werden soll.
Anforderungen
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 |