次の方法で共有


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 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI コンプライアンス規則 する DeleteDevice(wdm), HwStorPortProhibitedDDDIs(storport), IrqlIoApcLte(wdm), PnpSurpriseRemove(wdm), RemoveLockCheck(wdm)

関連項目

IoCreateDevice

IoDisconnectInterrupt