미니포트 어댑터 정지 확인 및 리셋 작업
개요
경고
모든 NDIS 6.83 이상 드라이버에는 CFH(Check-for-Hang) 및 재설정 작업이 권장되지 않습니다. 자세한 내용은 NDIS 6.83 이상에서의 중단 검사 및 다시 설정 작업 을 참조하세요.
NDIS는 NDIS 미니포트 드라이버의 MiniportCheckForHangEx 함수를 호출하여 NIC(네트워크 인터페이스 카드)를 나타내는 NDIS 어댑터의 작동 상태를 확인합니다. MiniportCheckForHangEx 어댑터의 내부 상태를 확인하고 어댑터가 제대로 작동하지 않는 것을 감지하면 TRUE 반환합니다.
기본적으로 NDIS는 약 2초마다 MiniportCheckForHangEx를 호출합니다. MiniportCheckForHangEx이 TRUE 를 반환하는 경우, NDIS는 NDIS 미니포트 드라이버의 MiniportResetEx 함수를 호출합니다. 기본 제한 시간 값 2초가 너무 작으면 미니포트 드라이버는 다음과 같이 초기화 시 다른 값을 설정할 수 있습니다.
- NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 구조체의 CheckForHangTimeInSeconds 멤버를 0이 아닌 값으로 설정합니다.
- NdisMSetMiniportAttributes 함수의 MiniportAttributes 매개 변수에 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 구조를 전달합니다.
드라이버 특성을 설정하는 방법에 대한 자세한 내용은 어댑터초기화를 참조하세요. CheckForHangTimeInSeconds 값은 미니포트 드라이버의 초기화 시간보다 커야 합니다. 그러나 드라이버가 초기화하는 데 CheckForHangTimeInSeconds 초보다 오래 걸리면 이 제한 시간이 만료되어 NDIS가 드라이버의 MiniportCheckForHangEx 함수를 호출하게 됩니다. MiniportCheckForHangEx이 TRUE를 반환하는 경우, NDIS는 드라이버의 MiniportResetEx 함수를 호출합니다. 이러한 이유로 드라이버의 MiniportCheckForHangEx 함수를 드라이버 초기화와 동기화하여 드라이버가 초기화를 완료하지 않은 경우 MiniportCheckForHangExTRUE 반환하지 않도록 해야 합니다.
미니포트 드라이버가 MiniportCheckForHangEx대한 두 번의 연속 호출 내에서 OID 요청을 완료하지 않으면 NDIS는 드라이버의 MiniportResetEx 함수를 호출할 수 있습니다. 일부 OID 요청의 경우, 드라이버가 MiniportCheckForHangEx를 네 번 연속 호출하는 동안 요청을 완료하지 않으면 NDIS는 MiniportResetEx을 호출합니다.
다시 설정 작업은 미니포트 어댑터 작동 상태에 영향을 주지 않습니다. 또한 다시 설정 작업이 진행되는 동안 어댑터의 상태가 변경될 수 있습니다. 예를 들어 NDIS는 다시 설정 작업이 진행 중인 경우 드라이버의 MiniportPause 함수를 호출할 수 있습니다. 이 경우 드라이버는 각 작업에 대한 일반적인 요구 사항을 따르는 동안 어떤 순서로든 재설정 또는 일시 중지 작업을 완료할 수 있습니다.
재설정 작업의 경우 드라이버는 전송 요청 패킷을 실패하거나 큐에 대기 상태로 유지하고 나중에 완료할 수 있습니다. 그러나 상위 드라이버는 전송 패킷이 보류 중일 때 일시 중지 작업을 완료할 수 없다는 점에 유의해야 합니다.
미니포트 드라이버는 성공 또는 실패 상태를 반환하여 동기적으로 재설정 요청을 완료할 수 있습니다. 드라이버는 NDIS_STATUS_PENDING반환하여 비동기적으로 다시 설정 요청을 완료할 수 있습니다. 이 경우 드라이버는 NdisMResetComplete 호출하여 작업을 완료해야 합니다.
NDIS 6.83 이상에서의 중단 확인 및 재설정 작업
6.83 이전의 NDIS 버전에서는 배터리 수명 문제로 인해 ALWAYS On, Always Connected(AOAC) 시스템에서 CFH(Check-for-Hang) 및 재설정 작업을 권장하지 않았습니다. 그러나 드라이버는 선택적 MiniportCheckForHangEx 및 MiniportResetEx 콜백 함수를 구현하여 다른 비 AOAC Windows 시스템에서 CFH를 계속 사용할 수 있습니다.
NDIS 6.83부터 이러한 콜백 함수는 전원 기능에 관계없이 모든 Windows 시스템을 권장되지 않습니다. NDIS 6.83 이상에서 CFH를 사용하는 것은 로고 테스트 위반이 아니지만 NDIS 드라이버는 사용 지침에 다음 표를 사용해야 합니다.
발신자 | 추천 | 노트 |
---|---|---|
AOAC 시스템을 타겟으로 하는 드라이버 | 구현하지 않아야 합니다. | 주기적인 중단 점검 활동으로 인해 배터리 수명 문제가 발생합니다. |
Windows Server 시스템을 대상으로 하는 드라이버 | 구현하지 않아야 합니다. | CPU가 스트레스를 받으면 문제가 발생합니다. |
가상(소프트웨어 전용) 미니포트 드라이버 | 구현하지 않아야 합니다. | 하드웨어 없이는 다시 설정할 수 없음 |
기타 새로운 NDIS 6.83 이상 드라이버 | 구현하면 안 됩니다. | |
기타 기존 NDIS 6.82 및 이전 코드 | 변경할 필요는 없지만, 향후 개선 작업에서는 작동 중지 검사와 초기화를 제거하는 것을 고려하는 것이 좋습니다. |