미니포트 어댑터 중단 및 다시 설정 작업 확인
개요
경고
모든 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 함수를 드라이버 초기화와 동기화하여 드라이버가 초기화를 완료하지 않은 경우 MiniportCheckForHangEx 가 TRUE 를 반환하지 않도록 해야 합니다.
Miniport 드라이버가 MiniportCheckForHangEx에 대한 두 번의 연속 호출 내에서 OID 요청을 완료하지 않는 경우 NDIS는 드라이버의 MiniportResetEx 함수를 호출할 수 있습니다. 일부 OID 요청의 경우 드라이버가 MiniportCheckForHangEx에 대한 네 번의 연속 호출 내에서 요청을 완료하지 않으면 NDIS는 MiniportResetEx를 호출합니다.
초기화 작업은 미니포트 어댑터 작동 상태에 영향을 주지 않습니다. 또한 다시 설정 작업이 진행되는 동안 어댑터의 상태가 변경될 수 있습니다. 예를 들어 NDIS는 초기화 작업이 진행 중인 경우 드라이버의 MiniportPause 함수를 호출할 수 있습니다. 이 경우 드라이버는 각 작업에 대한 일반적인 요구 사항을 따르는 동안 모든 순서로 다시 설정 또는 일시 중지 작업을 완료할 수 있습니다.
재설정 작업의 경우 드라이버는 전송 요청 패킷에 실패하거나 큐에 대기 상태로 유지하고 나중에 완료할 수 있습니다. 그러나 전송 패킷이 보류 중인 동안에는 지나치게 많은 드라이버가 일시 중지 작업을 완료할 수 없다는 점에 유의해야 합니다.
미니포트 드라이버는 성공 또는 실패 상태 반환하여 다시 설정 요청을 동기적으로 완료할 수 있습니다. 드라이버는 NDIS_STATUS_PENDING 반환하여 다시 설정 요청을 비동기적으로 완료할 수 있습니다. 이 경우 드라이버는 NdisMResetComplete 를 호출하여 작업을 완료해야 합니다.
NDIS 6.83 이상에서 중단 및 다시 설정 작업 확인
6.83 이전의 NDIS 버전에서는 배터리 수명 문제로 인해 CFH(Check-for-Hang) 및 Reset 작업이 Always On, AOAC(Always Connected) 시스템에 권장되지 않았습니다. 그러나 드라이버는 선택적 MiniportCheckForHangEx 및 MiniportResetEx 콜백 함수를 구현하여 다른 비 AOAC Windows 시스템에서 CFH를 계속 사용할 수 있습니다.
NDIS 6.83부터 이러한 콜백 함수는 전원 기능에 관계없이 모든 Windows 시스템에서 권장되지 않습니다. NDIS 6.83 이상에서 CFH를 사용하는 것은 로고 테스트 위반이 아니지만 NDIS 드라이버는 사용량에 대한 지침에 다음 표를 사용해야 합니다.
Caller | 권장 | 메모 |
---|---|---|
AOAC 시스템을 대상으로 하는 드라이버 | 를 구현하지 않아야 합니다. | 주기적인 검사 중단 작업으로 인한 배터리 수명 문제 발생 |
Windows Server 시스템을 대상으로 하는 드라이버 | 를 구현하지 않아야 합니다. | CPU가 강조 표시되면 문제가 발생합니다. |
가상(소프트웨어 전용) 미니포트 드라이버 | 를 구현하지 않아야 합니다. | 하드웨어 없이는 다시 설정할 수 없음 |
기타 새로운 NDIS 6.83 이상 드라이버 | 를 구현하면 안 됩니다. | |
기타 기존 NDIS 6.82 및 이전 코드 | 변경할 필요는 없지만 향후 재작업에서 중단 확인 및 다시 설정을 제거하는 것이 좋습니다. |