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 ルーチンの以前の呼び出しからこのポインターを取得し、呼び出し元はこのポインターを、リソース割り当てを要求した AllocateAdapterChannelEx、 GetScatterGatherListEx、または BuildScatterGatherListEx 呼び出しに渡しました。
[in] DeviceObject
DEVICE_OBJECT構造体へのポインター。 この構造体は、DMA チャネルが要求された DMA 操作のターゲット デバイスを表す物理デバイス オブジェクト (PDO) です。
[in] DmaTransferContext
DMA 転送コンテキストへのポインター。 このパラメーター値は、 アダプター チャネル割り当てを要求した AllocateAdapterChannelEx、 GetScatterGatherListEx、または BuildScatterGatherListEx 呼び出しに渡されたものと同じ DMA 転送コンテキストである必要があります。
戻り値
保留中の割り当て要求が正常に取り消された場合、CancelAdapterChannel は TRUE を返します。 要求を取り消せなかった場合 (たとえば、要求を取り消す前に DMA チャネルが割り当てられたなど) 場合、ルーチンは FALSE を 返します。
注釈
CancelAdapterChannel は、名前で直接呼び出すことができるシステム ルーチンではありません。このルーチンは、DMA_OPERATIONS構造体で返されるアドレスからのポインターによってのみ呼び出すことができます 。 ドライバーは、DeviceDescription パラメーターの Version メンバーをDEVICE_DESCRIPTION_VERSION3に設定して IoGetDmaAdapter を呼び出すことによって、このルーチンのアドレスを取得します。 IoGetDmaAdapter が NULL を返す場合、このルーチンはプラットフォームでは使用できません。
CancelAdapterChannel は 、 AllocateAdapterChannelEx、 GetScatterGatherListEx、BuildScatterGatherListEx などの割り当てルーチンへの非同期呼び出しによって行われた保留中の割り当て要求を取り消そうと します。 非同期的に呼び出されると、割り当て要求が保留中の間、およびドライバーが指定した実行ルーチン (AdapterControl または AdapterListControl) が呼び出される前に、割り当てルーチンが返される可能性があります。 CancelAdapterChannel が保留中の割り当て要求を正常に取り消した場合、リソースは割り当てられず、実行ルーチンは呼び出されません。
ドライバーが AllocateAdapterChannelEx を呼び出してドライバー指定 の AdapterControl ルーチンのリソースを要求した後、 CancelAdapterChannel を呼び出して要求を取り消すと、 CancelAdapterChannel は 次のいずれかの値を返すことができます。
- CancelAdapterChannel 呼び出しが発生したときにアダプター オブジェクトが要求された割り当てを待機している場合は TRUE。 この場合、 CancelAdapterChannel は保留中の割り当て要求を取り消し、ドライバーの AdapterControl ルーチンは呼び出されません。
- FALSE。 AdapterControl ルーチンが既に呼び出されているか、呼び出されようとしている場合。
- CancelAdapterChannel 呼び出しが発生したときにアダプター オブジェクトが要求された割り当てを待機している場合は TRUE。 この場合、 CancelAdapterChannel は保留中の割り当て要求を取り消し、ドライバーの AdapterListControl ルーチンは呼び出されません。
- ADAPTERListControl ルーチンが既に呼び出されている場合、または呼び出されようとしている場合は FALSE。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 以降で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
IRQL | <= DISPATCH_LEVEL |