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

FreeAdapterObject ルーチンは、ドライバーがすべての DMA 操作を完了した後、指定したアダプター オブジェクトを解放します。

構文

PFREE_ADAPTER_OBJECT PfreeAdapterObject;

void PfreeAdapterObject(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] IO_ALLOCATION_ACTION AllocationAction
)
{...}

パラメーター

[in] DmaAdapter

DMA_ADAPTER構造体へのポインター。 この構造体は、解放されるアダプター オブジェクトです。 このオブジェクトは、ドライバーのバス マスター DMA デバイスまたはシステム DMA チャネルを表します。 呼び出し元は、 IoGetDmaAdapter ルーチンの以前の呼び出しからこのポインターを取得しました。

[in] AllocationAction

呼び出し元のドライバーが要求する割り当て解除の種類。 このパラメーターを IO_ALLOCATION_ACTION 列挙値に設定します。 詳細については、「解説」を参照してください。

戻り値

なし

解説

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

AllocationAction = DeallocateObject の場合、FreeAdapterObject 呼び出しによってアダプター オブジェクトが解放され、このオブジェクトに割り当てられるマップ レジスタが解放されます。

AllocationAction = DeallocateObjectKeepRegisters の場合、FreeAdapterObject 呼び出しはアダプター オブジェクトを解放しますが、マップ レジスタは解放しません。 この場合、ドライバーは FreeMapRegisters ルーチンを呼び出して、割り当てられたマップ レジスタを明示的に解放する必要があります。

AllocationAction = KeepObject の場合、FreeAdapterObject 呼び出しは無効です。

FreeAdapterObject を使用すると、 AllocateAdapterChannelExGetScatterGatherListExおよび BuildScatterGatherListEx ルーチンの呼び出しによって割り当てられた DMA リソースの割り当てを解除できます。 ドライバーがこれらのルーチンのいずれかを同期的に呼び出す場合、 ExecutionRoutine パラメーターは省略可能であり、省略できます。 この場合、ドライバーは、呼び出しによって割り当てられたアダプター オブジェクトとマップ レジスタを使用できます。 ドライバーが DMA 転送を開始した後、ドライバーは FreeAdapterObject を呼び出してアダプター オブジェクトの割り当てを解除し、必要に応じてマップを登録できます。

FreeAdapterChannel ルーチンは、FreeAdapterObject に似ています。 FreeAdapterChannel は 、アダプター オブジェクトと割り当てられたマップ レジスタを常に解放します。 この動作は、AllocationAction = DeallocateObject の場合、FreeAdapterObject の動作と似ています。

要件

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

こちらもご覧ください

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter