IRP_MN_REMOVE_DEVICE 요청 처리

PnP 관리자는 이 IRP를 사용하여 드라이버에 디바이스의 소프트웨어 표현(디바이스 개체 등)을 제거하도록 지시합니다. PnP 관리자는 디바이스가 순서대로 제거된 경우(예: 플러그 뽑기 또는 하드웨어 프로그램에서 사용자가 시작함), 놀랍게도(사용자가 사전 경고 없이 슬롯에서 디바이스를 끌어오거나), 사용자가 드라이버 업데이트를 요청할 때 이 IRP를 보냅니다.

Windows 2000 이상 시스템에서 PnP 관리자는 장치 관리자 디바이스를 사용하지 않도록 설정하면 이 IRP를 보냅니다. Windows 98/Me에서 PnP 관리자는 중지 IRP를 대신 보냅니다. 자세한 내용은 디바이스 중지를 참조하세요.

PnP 관리자는 디바이스의 드라이버에 이 IRP를 보내기 전에 다음을 수행합니다.

  • 디바이스의 자식에 IRP_MN_REMOVE_DEVICE 요청을 보냅니다(있는 경우).

  • 디바이스가 제거되고 있다는 알림을 위해 등록된 모든 사용자 모드 구성 요소 및 커널 모드 드라이버에 알릴 수 있습니다. PnP 관리자는 핸들에서 대상 디바이스 알림에 등록된 모든 사용자 모드 구성 요소를 디바이스에 호출하고 EventCategoryTargetDeviceChange에 등록된 커널 모드 드라이버를 호출합니다.

  • (Windows 2000 이상 시스템에서) 파일 시스템이 디바이스에 탑재된 경우 PnP 관리자는 파일 시스템 및 파일 시스템 필터에 제거 요청을 보냅니다. 이에 대한 응답으로 파일 시스템은 일반적으로 볼륨을 분리합니다.

디바이스 스택의 최상위 드라이버는 IRP 제거를 처리하고 다음 하위 드라이버에 전달합니다. 디바이스의 부모 버스 드라이버는 디바이스 제거 작업을 수행하는 마지막 드라이버입니다. 드라이버는 DispatchPnP 루틴에서 IRP 제거를 처리합니다.

드라이버가 IRP_MN_REMOVE_DEVICE 요청에 대한 성공을 반환하기 전에 디바이스에 대한 모든 리소스가 해제되었는지 확인해야 합니다. 이 IRP는 드라이버가 언로드되기 전에 마지막 호출일 수 있습니다.

하나의 디바이스를 제거하면 일련의 다른 디바이스를 제거할 필요가 있습니다. PnP 관리자는 최상위 수준에서 루트 디바이스 수준까지 추가 디바이스 개체의 제거를 조정합니다.

이 단원의 내용은 다음과 같습니다.

함수 드라이버에서 디바이스 제거

필터 드라이버에서 디바이스 제거

버스 드라이버에서 디바이스 제거