EVT_WDF_OBJECT_CONTEXT_DESTROY コールバック関数 (wdfobject.h)

[KMDF と UMDF に適用]

ドライバーの EvtDestroyCallback イベント コールバック関数は、フレームワーク オブジェクトの削除に関連付けられている操作を実行します。

構文

EVT_WDF_OBJECT_CONTEXT_DESTROY EvtWdfObjectContextDestroy;

void EvtWdfObjectContextDestroy(
  [in] WDFOBJECT Object
)
{...}

パラメーター

[in] Object

フレームワーク オブジェクトへのハンドル。

戻り値

なし

解説

ドライバーは、WDF_OBJECT_ATTRIBUTES構造体で EvtDestroyCallback コールバック関数を指定できます。 この構造体は、 WdfDeviceCreate などのフレームワーク オブジェクトを作成するすべてのフレームワーク メソッドへの入力として使用されます。

オブジェクトの参照カウントが 0 にデクリメントされた後、フレームワークは EvtDestroyCallback コールバック関数を呼び出します。 フレームワークは、 EvtDestroyCallback コールバック関数が返した直後に オブジェクトを削除します。

EvtDestroyCallback はオブジェクト コンテキストにアクセスできますが、オブジェクトのメソッドを呼び出すことはできません。

ドライバーがオブジェクトの EvtCleanupCallback コールバック関数と EvtDestroyCallback コールバック関数の両方を提供する場合、フレームワークは最初 に EvtCleanupCallback コールバック関数を呼び出します。

オブジェクトが削除されると、フレームワークはオブジェクトの子も削除します。 フレームワークは、親オブジェクトの EvtCleanupCallback コールバック関数を呼び出す前に、子オブジェクトの EvtCleanupCallback コールバック関数を呼び出します。 次に、子の参照カウントが 0 の場合、フレームワークは子オブジェクトの EvtDestroyCallback コールバック関数を呼び出します。 最後に、親の参照カウントが 0 の場合、フレームワークは親オブジェクトの EvtDestroyCallback コールバック関数を呼び出します。

ドライバーは、オブジェクトを作成するときに、オブジェクト固有のメモリ バッファーを割り当て、バッファー ポインターをオブジェクトの コンテキスト空間に格納することがあります。 ドライバーの EvtCleanupCallback または EvtDestroyCallback コールバック関数は、これらのメモリ バッファーの割り当てを解除できます。

フレームワーク オブジェクトの削除の詳細については、「 Framework オブジェクトのライフ サイクル」を参照してください。

通常、フレームワークは IRQL <= DISPATCH_LEVEL で EvtDestroyCallback コールバック関数を呼び出します。 ただし、フレームワークは、次の状況で IRQL = PASSIVE_LEVELでコールバック関数を呼び出します。

  • オブジェクトのハンドルの種類は、WDFDEVICE、WDFDRIVER、WDFDPC、WDFINTERRUPT、WDFIOTARGET、WDFQUEUE、WDFSTRING、WDFTIMER、または WDFWORKITEM です。
  • オブジェクトのハンドルの種類は WDFMEMORY または WDFLOOKASIDE で、ドライバーは PoolType パラメーターに PagedPoolWdfMemoryCreate または WdfLookasideListCreate に指定しています。
フレームワークのバージョン 1.9 以降、 wdfroletypes.h ヘッダー ファイルには、 EvtDestroyCallback コールバック関数の別のオブジェクト型固有の関数型が含まれています。 これらの代替型は、ドライバーがコールバック関数を正しく使用しているかどうかを確認するための検証ツールに役立ちます。 次の表を使用して、使用する関数の種類を決定します。
オブジェクトの型 [関数の種類]
デバイス オブジェクト EVT_WDF_DEVICE_CONTEXT_DESTROY
I/O キュー オブジェクト EVT_WDF_IO_QUEUE_CONTEXT_DESTROY_CALLBACK
File オブジェクト EVT_WDF_FILE_CONTEXT_DESTROY_CALLBACK
他のすべてのオブジェクト EVT_WDF_OBJECT_CONTEXT_DESTROY

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfobject.h (Wdf.h を含む)
IRQL 「解説」を参照してください。

こちらもご覧ください

EvtCleanupCallback

WDF_OBJECT_ATTRIBUTES