사용자가 UI(사용자 인터페이스)를 통해 시스템에 미리 알리지 않고 실행 중인 시스템에서 NIC(네트워크 인터페이스 카드)를 제거할 때 깜짝 제거가 발생합니다.
Windows Vista 이상 버전의 운영 체제용 미니포트 드라이버는 깜짝 제거를 처리할 수 있어야 합니다. 특히 WDM(Windows 드라이버 모델) 아래쪽 가장자리가 있는 NDIS 미니포트 드라이버는 이러한 이벤트를 처리할 수 있어야 합니다. NDIS-WDM 미니포트 드라이버가 기습 제거를 처리하지 않는 경우, 미니포트 드라이버가 기습 제거 전에 기본 버스 드라이버로 보낸 보류 중인 모든 IRP를 완료할 수 없습니다.
Windows Vista 이상 버전의 경우 하드웨어를 직접 제어하지 않는 미니포트 드라이버(예: WDM 아래쪽 가장자리가 있는 미니포트 드라이버)는NdisMSetMiniportAttributes를 호출할 때 NDIS_MINIPORT_ATTRIBUTES_SURPRISE_REMOVE_OK 특성 플래그를 설정해야 합니다. 이 플래그를 설정하면 사용자가 NIC의 깜짝 제거를 수행할 때 경고가 표시되지 않습니다. 기습 제거를 처리할 수 없는 미니포트 드라이버는 이 플래그를 설정해서는 안 됩니다.
기습 제거를 지원하는 미니포트 드라이버는 MiniportDevicePnPEventNotify컨텍스트 외부에서 정상 작업 중에 기습 제거를 감지하려고 시도해야 합니다. NIC가 제거된 후 NIC의 I/O 포트를 읽으려고 하면 일반적으로 모든 비트가 1로 설정된 반환 값이 생성됩니다. 미니포트 드라이버가 이러한 값을 읽는 경우 더 결정적인 테스트를 통해 하드웨어가 있는지 확인해야 합니다. 예를 들어 미니포트 드라이버는 I/O 포트에 값을 쓴 다음 해당 포트에서 값을 읽으려고 할 수 있습니다. 미니포트 드라이버는 NIC의 I/O 레지스터에서 유효한 값을 확인할 수도 있습니다. 이러한 방식으로 돌발 제거를 감지하면 미니포트 드라이버가 인터럽트 DPC에서 제거된 NIC의 레지스터를 읽으려고 시도할 때 무한 루프에 빠지는 것을 방지합니다. 이러한 방식으로 응답을 중지하는 미니포트 드라이버는 NDIS가 드라이버의 MiniportDevicePnPEventNotify 함수를 호출하지 못하도록 합니다.