운영 체제는 드라이버를 교체할 때 또는 드라이버 서비스가 제거된 모든 디바이스를 언로드합니다. PnP 관리자는 IRP_MN_REMOVE_DEVICE 요청을 처리한 후 드라이버에 더 이상 디바이스 개체가 없는 경우 PnP 드라이버의 언로드 루틴을 호출합니다.
언로드 시퀀스가 시작될 때 I/O 관리자 또는 PnP 관리자는 드라이버 개체와 해당 디바이스 개체를 "언로드 보류 중"으로 표시합니다. 드라이버가 "언로드 보류 중"으로 표시된 후에는 추가 드라이버가 해당 드라이버에 연결할 수 없으며 드라이버의 디바이스 개체에 대한 추가 참조도 수행할 수 없습니다. 드라이버는 미해결 IRP를 완료할 수 있지만 시스템은 드라이버에 새 IRP를 보내지 않습니다.
I/O 관리자는 다음이 모두 true인 경우 드라이버의 언로드 루틴을 호출합니다.
드라이버가 만든 디바이스 개체에 대한 참조는 남아 있지 않습니다. 즉, 기본 디바이스와 연결된 어떠한 파일도 열 수 없으며, 드라이버의 디바이스 객체에 대해 어떤 IRP도 미해결 상태일 수 없습니다.
다른 드라이버는 이 드라이버에 연결되어 있지 않습니다.
드라이버는 이전에 등록한 모든 PnP 알림을 등록 취소하기 위해 IoUnregisterPlugPlayNotification 을 호출했습니다.
드라이버의 DriverEntry 루틴이 오류 상태를 반환하는 경우 언로드 루틴은 호출되지 않습니다. 이 경우 I/O 관리자는 드라이버에서 사용하는 메모리 공간을 해제합니다.
PnP 관리자나 I/O 관리자는 시스템 종료 시 언로드 루틴을 호출하지 않습니다. 종료 처리를 수행해야 하는 드라이버는 DispatchShutdown 루틴을 등록해야 합니다.