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 呼び出しが発生したときに、アダプター オブジェクトが要求された割り当てを待機している場合です。 この場合、CancelAdapterChannel は保留中の割り当て要求を取り消し、ドライバーの AdapterControl ルーチンは呼び出されません。
- FALSE(AdapterControl ルーチンが既に呼び出されているか、呼び出されようとしている場合)。
- CancelAdapterChannel 呼び出しが発生したときに、アダプター オブジェクトが要求された割り当てを待機している場合です。 この場合、CancelAdapterChannel は保留中の割り当て要求を取り消し、ドライバーの AdapterListControl ルーチンは呼び出されません。
- FALSE(AdapterListControl ルーチンが既に呼び出されているか、呼び出されようとしている場合)。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 以降で使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
IRQL | <= DISPATCH_LEVEL |
関連項目
AllocateAdapterChannelEx の
CancelAdapterChannel の
GetScatterGatherListEx を する
IoGetDmaAdapter の