次の方法で共有


WdfObjectDelete 関数 (wdfobject.h)

[KMDF と UMDF に適用]

WdfObjectDelete メソッドは、フレームワーク オブジェクトとその子オブジェクトを削除します。

構文

void WdfObjectDelete(
  [in] WDFOBJECT Object
);

パラメーター

[in] Object

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

戻り値

なし

解説

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注意

PASSIVE_LEVELで呼び出されるコールバック関数は、タイマー オブジェクトを削除できません。 詳細については、「コールバック関数のEVT_WDF_TIMER」を参照してください。

ドライバーが WdfObjectDelete を呼び出した後、指定したオブジェクトは、参照カウントが 0 になった後に削除されます。

フレームワークは常にこれらのオブジェクトの削除を処理するため、ドライバーは WdfObjectDelete を呼び出して次のフレームワーク オブジェクトを削除できません。

  • フレームワークの子リスト オブジェクト (WDFCHILDLIST)
  • フレームワーク デバイス オブジェクト (WDFDEVICE)、ドライバーが WdfControlDeviceInitAllocate を呼び出し、 コントロール デバイス オブジェクトを作成していない限り、ドライバーは削除する必要があります
  • フレームワーク ドライバー オブジェクト (WDFDRIVER)
  • フレームワーク ファイル オブジェクト (WDFFILEOBJECT)
  • フレームワーク割り込みオブジェクト (WDFINTERRUPT)
  • フレームワーク キュー オブジェクト (WDFQUEUE)、オブジェクトが 既定の I/O キュー を表す場合、またはドライバーが WdfDeviceConfigureRequestDispatching を 呼び出して、特定の種類のすべての I/O 要求を受信するようにキューを設定した場合
  • フレームワーク USB パイプ オブジェクト (WDFUSBPIPE)
  • フレームワーク USB インターフェイス オブジェクト (WDFUSBINTERFACE)
  • フレームワーク WMI プロバイダー オブジェクト (WDFWMIPROVIDER)
  • リソース範囲リスト オブジェクト (WDFIORESLIST)
  • リソース リスト オブジェクト (WDFCMRESLIST)
  • リソース要件リスト オブジェクト (WDFIORESREQLIST)
フレームワーク オブジェクトの完全な一覧については、「フレームワーク オブジェクトの概要」を参照してください。

WdfObjectDelete メソッドは、フレームワークがオブジェクトとその子オブジェクトを削除する前に を返すことができます。 フレームワークが子オブジェクトを削除する順序は予測できません。

WdfObjectDelete とフレームワーク オブジェクト階層のクリーンアップ規則の詳細については、「Framework オブジェクトのライフ サイクル」を参照してください。

WdfObjectDelete メソッドは IRQL <= DISPATCH_LEVELで呼び出す必要があります。 ドライバーがコントロール デバイス オブジェクトを削除している場合は、IRQL = PASSIVE_LEVEL で WdfObjectDelete を呼び出す必要があります。 同様に、ドライバーが共通バッファーを削除している場合は、IRQL = PASSIVE_LEVEL で WdfObjectDelete を呼び出す必要があります。

次のコード例では、フレームワーク オブジェクトとその子オブジェクトを削除します。

WdfObjectDelete(Object);

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfobject.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL 「解説」を参照してください。
DDI コンプライアンス規則 AddPdoToStaticChildList(kmdf), ControlDeviceDeleted(kmdf), CtlDeviceFinishInitDeviceAdd(kmdf), CtlDeviceFinishInitDrEntry(kmdf), DriverCreate(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf), ReqDelete(kmdf), ReqSendFail(kmdf)

こちらもご覧ください

WdfControlDeviceInitAllocate

WdfObjectCreate