IoDeleteDevice 関数 (wdm.h)
IoDeleteDevice ルーチンは、基になるデバイスがシステムから削除された場合など、システムからデバイス オブジェクトを削除します。
構文
void IoDeleteDevice(
[in] PDEVICE_OBJECT DeviceObject
);
パラメーター
[in] DeviceObject
削除するデバイス オブジェクトへのポインター。
戻り値
なし
解説
PnP IRP_MN_REMOVE_DEVICE 要求を処理する場合、PnP ドライバーは IoDeleteDevice を呼び出して、関連付けられているデバイス オブジェクトを削除します。 詳細については、「 IRP_MN_REMOVE_DEVICE要求の処理 」を参照してください。
レガシ ドライバーは、アンロードされている場合、または DriverEntry ルーチンで物理デバイスを適切に初期化できないなどの致命的な初期化エラーが発生した場合に、このルーチンを呼び出す必要があります。 このルーチンは、ドライバーがデバイスを動的に再構成するときにも呼び出されます。 たとえば、ディスクを再パーティション分割するために 呼び出されたディスク ドライバーは 、IoDeleteDevice を呼び出して、置き換えられるパーティションを表すデバイス オブジェクトを破棄します。
ドライバーは、 IoDeleteDevice を呼び出す前に、ドライバーがデバイス拡張機能で記憶域を提供した特定のリソースを解放する必要があります。 たとえば、ドライバーが割り込みオブジェクトへのポインターをデバイス拡張機能に格納する場合、IoDeleteDevice を呼び出す前に IoDisconnectInterrupt を呼び出す必要があります。
ドライバーは、特定のデバイス オブジェクトに対して 1 回だけ IoDeleteDevice を呼び出すことができます。
ドライバーが IoDeleteDevice を呼び出すと、未解決の参照がない場合、I/O マネージャーはターゲット デバイス オブジェクトを削除します。 ただし、未処理の参照が残っている場合、I/O マネージャーはデバイス オブジェクトを "削除保留中" としてマークし、参照が解放されたときにデバイス オブジェクトを削除します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI コンプライアンス規則 | DeleteDevice(wdm)、 HwStorPortProhibitedDDIs(storport)、 IrqlIoApcLte(wdm)、 PnpSurpriseRemove(wdm)、 RemoveLockCheck(wdm) |