원격 NDIS 개념 및 정의

이 섹션에서는 호스트와 원격 NDIS 디바이스 간에 통신하는 데 사용되는 통신 채널 및 하위 계층 드라이버의 원격 NDIS 요구 사항에 대한 개요를 제공합니다. 디바이스 상태 전환 및 초기화, 중지 및 재설정과 같은 주요 작업도 이 섹션에 설명되어 있습니다.

  • 컨트롤 채널

    컨트롤 채널은 신뢰할 수 있어야 하며 시퀀스된 배달을 보장해야 합니다. 네트워크 데이터 패킷의 전송을 제외한 모든 통신에 사용됩니다. REMOTE_NDIS_HALT_MSGREMOTE_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 사양은 없습니다.