다음을 통해 공유


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를 호출해야 합니다.

드라이버는 지정된 디바이스 개체에 대해 한 번만 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