원격 NDIS 개념 및 정의
이 섹션에서는 호스트와 원격 NDIS 디바이스 간에 통신하는 데 사용되는 통신 채널 및 하위 계층 드라이버의 원격 NDIS 요구 사항에 대한 개요를 제공합니다. 디바이스 상태 전환 및 초기화, 중지 및 재설정과 같은 주요 작업도 이 섹션에 설명되어 있습니다.
컨트롤 채널
컨트롤 채널은 신뢰할 수 있어야 하며 시퀀스된 배달을 보장해야 합니다. 네트워크 데이터 패킷의 전송을 제외한 모든 통신에 사용됩니다. REMOTE_NDIS_HALT_MSG 및 REMOTE_NDIS_INDICATE_STATUS_MSG 제외한 모든 필수 제어 메시지는 호스트에서 시작한 요청 및 응답 교환입니다. 디바이스는 각 버스에 대해 지정된 제한 시간 내에 응답해야 합니다.
데이터 채널
데이터 채널은 네트워크 데이터 패킷 전송에만 사용됩니다. 적절한 버스에 대해 정의된 대로 여러 하위 채널(예: 다양한 서비스 품질)으로 구성됩니다.
초기화 및 중단
컨트롤 및 데이터 채널이 초기화되고 적절한 버스에 대해 지정된 대로 설정됩니다. 호스트는 원격 NDIS 디바이스에 REMOTE_NDIS_INITIALIZE_MSG 메시지를 보냅니다. 원격 NDIS 디바이스는 응답 메시지 REMOTE_NDIS_INITIALIZE_CMPLT 해당 유형(연결 없음 또는 연결 지향), 지원되는 매체 및 버전에 대한 정보를 제공합니다.
호스트 또는 원격 NDIS 디바이스는 REMOTE_NDIS_HALT_MSG 메시지를 통해 통신 채널을 해제할 수 있습니다. 이 메시지를 받으면 모든 미해결 요청 및 패킷이 삭제됩니다.
디바이스 상태 정의
버스 수준 초기화 후 디바이스는 RNDIS 초기화되지 않은 상태라고 합니다. REMOTE_NDIS_INITIALIZE_MSG 받고 RNDIS_STATUS_SUCCESS 상태 REMOTE_NDIS_INITIALIZE_CMPLT 응답하면 디바이스는 RNDIS 초기화 상태가 됩니다.
OID_GEN_CURRENT_PACKET_FILTER 대한 0이 아닌 필터 값을 지정하는 REMOTE_NDIS_SET_MSG 받으면 디바이스는 RNDIS 데이터 초기화 상태가 됩니다.
RNDIS-data-initialize 상태인 경우 OID_GEN_CURRENT_PACKET_FILTER 대한 필터 값 0을 지정하는 REMOTE_NDIS_SET_MSG 수신하면 디바이스가 RNDIS 초기화된 상태로 돌아갑니다.
언제든지 REMOTE_NDIS_HALT_MSG 또는 버스 수준의 연결 끊기 또는 하드 재설정을 수신하면 디바이스가 RNDIS 초기화되지 않은 상태로 강제 적용됩니다.
Halt
디바이스가 RNDIS 초기화 또는 RNDIS 데이터 초기화 상태일 때마다 호스트 컴퓨터는 디바이스에 REMOTE_NDIS_HALT_MSG 전송하여 디바이스의 원격 NDIS 기능을 종료할 수 있습니다.
통신 채널 다시 설정
메시지 시간 제한과 같은 오류가 발생하면 통신 채널이 다시 설정됩니다. 호스트는 디바이스 에 REMOTE_NDIS_RESET_MSG 메시지를 전송하여 디바이스가 RNDIS 초기화된 상태일 때 언제든지 재설정을 시작할 수 있으며, 디바이스가 재설정을 완료했을 때 응답 메시지를 보내야 합니다. 예를 들어 메시지 시간 제한과 같은 오류가 발생하면 호스트가 다시 설정을 시작할 수 있습니다.
이는 다시 설정 후 모든 핸들(예: 연결 지향 디바이스용 VC)이 계속 유효하다는 점에서 소프트 재설정입니다. 원격 NDIS 디바이스는 초기화 프로세스의 일부로 모든 미해결 요청 및 패킷을 삭제합니다. 원격 디바이스는 일부 하드웨어 구성 요소를 다시 설정할 수 있지만 통신 채널을 그대로 유지합니다.
원격 NDIS 디바이스가 다시 부팅을 수행하는 경우 이 이벤트는 "제거" 다음에 "추가" 플러그 앤 플레이 이벤트와 동일합니다. 호스트 NDIS 미니포트 드라이버가 중지되고 제거되고 새 instance 추가 및 시작됩니다. 모든 버스 수준 및 원격 NDIS 초기화가 다시 실행됩니다. 원격 NDIS 디바이스는 심각한 디바이스 오류가 발생할 경우 다시 부팅할 수 있습니다.
흐름 제어
원격 NDIS 디바이스는 호스트가 패킷으로 데이터 버퍼를 오버플로하지 않도록 흐름 제어를 실행해야 할 수 있습니다. 모든 흐름 제어 프로비저닝 또는 요구 사항은 버스별로 다릅니다.
숫자 바이트 순서 지정
원격 NDIS 메시지의 모든 숫자 값은 little-endian 형식(가장 중요하지 않은 바이트 먼저)으로 코딩되어야 합니다.
NDIS 메시지 캡슐화
NDIS 메시지가 네이티브 버스 메시지 또는 기본 형식으로 캡슐화되는 방식에 대한 원격 NDIS 사양은 없습니다.