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) |