Freigeben über


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.
Wenn ein Treiber GetScatterGatherListEx- oder BuildScatterGatherListEx aufruft, um Ressourcen für eine vom Treiber bereitgestellte AdapterListControl Routine anzufordern, und dann CancelAdapterChannel aufruft, 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 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.
CancelAdapterChannel- kann zukünftige Kanalzuweisungsanforderungen, die den angegebenen DMA-Übertragungskontext verwenden, vorab abbrechen. Wenn der Aufrufer beispielsweise denselben DMA-Übertragungskontext an CancelAdapterChannel und AllocateAdapterChannelExbereitstellt und der CancelAdapterChannel Aufruf erfolgreich ist und vor dem aufruf AllocateAdapterChannelEx erfolgt, wird die vom AllocateAdapterChannelEx Aufruf angeforderte Zuordnung automatisch abgebrochen.

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

Siehe auch

AdapterControl-

AdapterListControl-

AllocateAdapterChannelEx-

BuildScatterGatherListEx-

CancelAdapterChannel-

DMA_ADAPTER

DMA_OPERATIONS

GetScatterGatherListEx

IoGetDmaAdapter-