次の方法で共有


PCANCEL_ADAPTER_CHANNEL コールバック関数 (wdm.h)

CancelAdapterChannel ルーチンは、保留中の要求を取り消して DMA チャネルを割り当てようとします。

構文

PCANCEL_ADAPTER_CHANNEL PcancelAdapterChannel;

BOOLEAN PcancelAdapterChannel(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] PDEVICE_OBJECT DeviceObject,
  [in] PVOID DmaTransferContext
)
{...}

パラメーター

[in] DmaAdapter

DMA_ADAPTER構造体へのポインター。 この構造体は、保留中のリソース割り当て要求が許可されるのを待機しているアダプター オブジェクトです。 呼び出し元は 、IoGetDmaAdapter ルーチンの以前の呼び出しからこのポインターを取得し、呼び出し元はこのポインターを、リソース割り当てを要求した AllocateAdapterChannelExGetScatterGatherListEx、または BuildScatterGatherListEx 呼び出しに渡しました。

[in] DeviceObject

DEVICE_OBJECT構造体へのポインター。 この構造体は、DMA チャネルが要求された DMA 操作のターゲット デバイスを表す物理デバイス オブジェクト (PDO) です。

[in] DmaTransferContext

DMA 転送コンテキストへのポインター。 このパラメーター値は、 アダプター チャネル割り当てを要求した AllocateAdapterChannelExGetScatterGatherListEx、または BuildScatterGatherListEx 呼び出しに渡されたものと同じ DMA 転送コンテキストである必要があります。

戻り値

保留中の割り当て要求が正常に取り消された場合、CancelAdapterChannelTRUE を返します。 要求を取り消せなかった場合 (たとえば、要求を取り消す前に DMA チャネルが割り当てられたなど) 場合、ルーチンは FALSE を 返します。

注釈

CancelAdapterChannel は、名前で直接呼び出すことができるシステム ルーチンではありません。このルーチンは、DMA_OPERATIONS構造体で返されるアドレスからのポインターによってのみ呼び出すことができます ドライバーは、DeviceDescription パラメーターの Version メンバーをDEVICE_DESCRIPTION_VERSION3に設定して IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapterNULL を返す場合、このルーチンはプラットフォームでは使用できません。

CancelAdapterChannel はAllocateAdapterChannelExGetScatterGatherListEx、BuildScatterGatherListEx などの割り当てルーチンへの非同期呼び出しによって行われた保留中の割り当て要求を取り消そうと します。 非同期的に呼び出されると、割り当て要求が保留中の間、およびドライバーが指定した実行ルーチン (AdapterControl または AdapterListControl) が呼び出される前に、割り当てルーチンが返される可能性があります。 CancelAdapterChannel が保留中の割り当て要求を正常に取り消した場合、リソースは割り当てられず、実行ルーチンは呼び出されません。

ドライバーが AllocateAdapterChannelEx を呼び出してドライバー指定 の AdapterControl ルーチンのリソースを要求した後、 CancelAdapterChannel を呼び出して要求を取り消すと、 CancelAdapterChannel は 次のいずれかの値を返すことができます。

  • CancelAdapterChannel 呼び出しが発生したときにアダプター オブジェクトが要求された割り当てを待機している場合は TRUE。 この場合、 CancelAdapterChannel は保留中の割り当て要求を取り消し、ドライバーの AdapterControl ルーチンは呼び出されません。
  • FALSEAdapterControl ルーチンが既に呼び出されているか、呼び出されようとしている場合。
同様に、ドライバーが GetScatterGatherListEx または BuildScatterGatherListEx を呼び出してドライバー指定 の AdapterListControl ルーチンのリソースを要求した後、 CancelAdapterChannel を呼び出して要求を取り消すと、 CancelAdapterChannel は 次のいずれかの値を返すことができます。
  • CancelAdapterChannel 呼び出しが発生したときにアダプター オブジェクトが要求された割り当てを待機している場合は TRUE。 この場合、 CancelAdapterChannel は保留中の割り当て要求を取り消し、ドライバーの AdapterListControl ルーチンは呼び出されません。
  • ADAPTERListControl ルーチンが既に呼び出されている場合、または呼び出されようとしている場合は FALSE
CancelAdapterChannel は、指定された DMA 転送コンテキストを使用する将来のチャネル割り当て要求をプリエンプティブに取り消すことができます。 たとえば、呼び出し元が CancelAdapterChannel と AllocateAdapterChannelEx に同じ DMA 転送コンテキストを提供し、CancelAdapterChannel 呼び出しが成功し、AllocateAdapterChannelEx 呼び出しの前に発生した場合、AllocateAdapterChannelEx 呼び出しによって要求された割り当ては自動的に取り消されます。

要件

要件
サポートされている最小のクライアント Windows 8 以降で使用できます。
対象プラットフォーム デスクトップ
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
IRQL <= DISPATCH_LEVEL

こちらもご覧ください

AdapterControl

AdapterListControl

AllocateAdapterChannelEx

BuildScatterGatherListEx

CancelAdapterChannel

DMA_ADAPTER

DMA_OPERATIONS

GetScatterGatherListEx

IoGetDmaAdapter