다음을 통해 공유


디바이스를 중지하여 사용하지 않도록 설정(Windows 98/Me)

Windows 98/Me에서 PnP 관리자 문제는 장치 관리자 디바이스를 사용하지 않도록 설정할 때 IRP를 중지합니다. (Windows 2000 이상 버전의 Windows 이슈는 이 상황에서 IRP를 제거 합니다.)

PnP 관리자는 다음 순서로 중지 IRP를 보냅니다.

  1. PnP 관리자는 디바이스 드라이버가 디바이스를 중지할 수 있는지 여부를 묻는 IRP_MN_QUERY_STOP_DEVICE 발급합니다.

    디바이스 스택의 모든 드라이버가 STATUS_SUCCESS 반환하는 경우 드라이버는 디바이스를 신속하게 중지할 수 있는 상태(중지 보류 중)로 전환했습니다.

    PnP 관리자는 디바이스를 사용하지 않도록 설정하는 데 필요한 만큼의 디바이스 스택을 쿼리합니다.

  2. IRP_MN_QUERY_STOP_DEVICE 성공하면 PnP 관리자가 디바이스를 중지하는 IRP_MN_STOP_DEVICE 발급합니다.

    PnP 관리자는 디바이스에 대한 이전 쿼리 중지 IRP가 성공적으로 완료된 경우에만 중지 IRP를 보냅니다. 중지 IRP에 대한 응답으로 드라이버는 디바이스의 하드웨어 리소스(예: I/O 포트)를 해제하고 디바이스에 액세스해야 하는 모든 IRP를 실패합니다.

  3. IRP_MN_QUERY_STOP_DEVICE 실패하면 PnP 관리자는 쿼리를 취소하는 IRP_MN_CANCEL_STOP_DEVICE 보냅니다.

    IRP_MN_CANCEL_STOP_DEVICE 대한 응답으로 디바이스의 드라이버는 디바이스를 시작 상태로 되돌리고 디바이스에 대한 I/O 요청 처리를 다시 시작합니다.

    스택의 한 드라이버가 요청에 실패한 경우 PnP 관리자는 디바이스 스택에 대한 쿼리 중지를 취소합니다. PnP 관리자는 하나의 디바이스 스택에서만 쿼리 중지를 취소하면 쿼리에 실패한 드라이버 위에 연결된 모든 드라이버에 디바이스가 중지 보류 중 상태이므로 IRP_MN_CANCEL_STOP_DEVICE 요청을 보냅니 다. IRP_MN_CANCEL_STOP_DEVICE 성공하면 드라이버는 디바이스를 시작 상태로 반환합니다.

디바이스를 사용하지 않도록 설정하면 디바이스를 다시 활성화할 수 있다는 보장이 없으므로 드라이버가 들어오는 IRP를 큐에 대기할 수 없습니다. 따라서 데이터가 손실될 수 있습니다.