MB / NDIS 6.20 Interfacing Overview Study+more

This topic is designed to provide enough background about the NDIS 6.20 Specification to put the MB driver model into perspective. It is not intended to be a reference for NDIS 6.20. In the case of discrepancies between this content and the NDIS 6.20 Specification, refer to the NDIS 6.20 documentation for complete information.
이 주제는 MB 드라이버에 대한 설명을 하기 전에 NDIS 6.20 스펙에 대한 충분한 배경 지식을 제공하기 위해 작성되었다. 이것은 NDIS 6.20 의 레퍼런스 목적으로 작성된것이 아니다. 이 문서의 내용과 NDIS 6.20 스펙의 차이는 NDIS 6.20 문서를 참고하라.

In NDIS 6.20, the MB Service calls NdisOidRequest to issue OID requests to the miniport driver. Then, miniport drivers call NdisMIndicateStatusEx to return data back to the MB Service.
NDIS 6.20 에서 MB 서비스는 NdisOidRequest 를 호출하여 미니포트 드라이버에 OID 요청을 보낸다. 그러면, 미니포트 드라이버이는 NdisMIndicateStatusEx 를 호출하여 MB 서비스에 응답해야 한다.

NDIS 6.20 supports the following types of OID operations:
NDIS 6.20은 다음 타입에 해당하는 OID 동작을 지원해야 한다:
  • Set operations that send data from the service to a miniport driver. 
    서비스에서 미니포트 드라이버로 데이터를 보내는 Set 동작
  • Query operations that request miniport drivers to return data to the service. 
    미니포트 드라이버로부터 데이터를 요청하는 Query 동작
  • Method operations, equivalent to a function call, that have both input parameters and output parameters. 
    입출력 파라메터를 모두 가진 함수 호출과 같은 Method 동작
Finally, miniport drivers may send indications that contain data to notify the service about state changes in the MB device.
마지막으로 미니포트 드라이버는 MB 디바이스의 상태 변경 정보를 포함한 indication을 서비스에 알려줘야 할 것이다.

Receiving Set and Query Requests
MB miniport drivers implement the MiniportOidRequest NDIS handler to respond to both set and query requests.
MB 미니포트 드라이버는 Set과 Query 요청에 대해 응답하는 MiniportOidRequest 를 구현해야 한다.

Sending Status Indications
Miniport drivers provide status indications to the MB Service by calling NdisMIndicateStatusEx. See the NDIS_STATUS_INDICATION structure for more details about status indications.
미니포트 드라이버는 NdisMIndicateStatusEx 를 호출하여 MB Service 에 상태를 알려줘야 한다. 상태 알림에 대한 좀더 상세한 정보는  NDIS_STATUS_INDICATION 구조체를 살펴봐라.

Connection State Indications
NDIS 6.20 miniport drivers must use the NDIS_STATUS_LINK_STATE status indication to notify NDIS and overlying drivers that there has been a change in the physical characteristics of a transmission medium.
NDIS 6.20 미니포트 드라이버는 물리 디바이스의 특성이나 전송 매체의 변경을 NDIS_STATUS_LINK_STATE 을 사용하여 NDIS나 상위 드라이버에 알려줘야 한다.

The StatusBuffer member of the NDIS_STATUS_INDICATION structure is a NDIS_LINK_STATE structure, which specifies the physical state of the transmission medium.
NDIS_STATUS_INDICATION 구조체의 StatusBuffer 멤버는 전송 매체의 물리 상태를 정의한 NDIS_LINK_STATE 구조체이다. 

MB miniport drivers should avoid sending the NDIS_STATUS_LINK_STATUS status indication if there have been no changes in the physical state of the medium. However, miniport drivers are not necessarily required to avoid sending this status indication.
MB 미니포트 드라이버는 매체의 물리적 상태가 변하지 않았다면, NDIS_STATUS_LINK_STATUS 상태 알림을 하지 않는것이 좋다. 하지만, 미니포트 드라이버에서 이런 경우 상태 알림을 하지 않아야 한다는 제약은 없다. (그니까, 해도 되긴 하는데, 하지 않는게 좋을껄? 이런 뉘앙스 인덧)

MB miniport drivers must report the maximum data rate of the currently connected data-class. A change in data-class while connected must result in a Connection State Indication with the corresponding data rate reported. The following is a recommended implementation of this rule:
MB 미니포트 드라이버는 현재 연결된 데이터 클래스의 최대 속도를 report 해야 한다. 연결된 상태에서 데이터 클래스의 변경은 데이터 속도가 보고(report)된것에 해당하는 Connection State Indication을 따라야 한다. 다음은 권고되는 구현이다. 

  1. MB miniport drivers that conform to this specification must use NDIS_STATUS_LINK_STATE to indicate connection status changes instead of NDIS_STATUS_MEDIA_CONNECT, NDIS_STATUS_MEDIA_DISCONNECT, or NDIS_STATUS_LINK_SPEED_CHANGE (as in NDIS 5.1) for connection status indications. 
    MB 미니포트 드라이버들은 연결 상태의 변경을 알려주기 위하여 (NDIS_STATUS_MEDIA_CONNECTION 이나 NDIS_STATUS_MEDIA_DISCONNECTION 혹은 NDIS_STATUS_LINK_SPEED_CHANGE 대신) NDIS_STATUS_LINK_STATE를 사용해야 한다. 
  2. The XmitLinkSpeed and RcvLinkSpeed members of the NDIS_LINK_STATE structure must not report NDIS_LINK_SPEED_UNKNOWN. Miniport drivers must report the speed by using the information in the following tables. 
    NDIS_LINK_STATE 구조체의 XmitLinkSpeed와 RcvLinkSpeed 멤버는 NDIS_LINK_SPEED_UNKNOW을 설정하면 안된다. 미니포트 드라이버는 다음의 표를 참고하여 속도를 보고(report) 해야 한다.
For GSM-based MB device speed links
Data classXmitLinkSpeedRcvLinkSpeed
GPRS8 to 48 kbps8 to 48 kbps
EDGE8 to 220 kbps8 to 220 kbps
UMTS64 to 384 kbps64 to 384 kbps
HSDPA64 to 5.76 mbps1.8 to 14.4 mbps
HSUPA1.4 to 5.76 mbps64 kbps to 7.2 mbps


For CDMA-based MB device speed links

Data ClassXmitLinkSpeedRcvLinkSpeed
1xRTT115.2 kbps to 307.2 kbps153.6 kbps to 3 mbps
3xRTT614 kbps to 1.04 mbps307.2 kbps to 1.04 mbps
1xEV-DO153.6 kbps2.4 mbps
1xEvDO Rev. A.1.8 mbps3.1 mbps
1xEV-DV1.8 mbps3.1 mbps
1xEvDO Rev. B.27 mbps3.1 mbps to 73.5 mbps

Note. MB devices should report the speed in the range of speed shown in the previous tables.
노트. MB 디바이스들은 앞의 테이블에 나온 속도들중에 하나로 보고해야 한다.

Unlike NDIS 5.1, different link state change indications are consolidated into a single NDIS_STATUS_LINK_STATE indication by using the NDIS_LINK_STATE data structure. NDIS 5.1 indications can be mapped to this structure according to the information in the following table. In the case of link speed change, the consumer of the indication should compare the transmitting and receiving speed values with the ones it recorded for a previous indication to decide whether the link speed change has occurred or not.
NDIS 5.1과는 달리, 연결 상태 변경에 따란 알림은 NDIS_LINK_STATE 데이터 구조체를 사용하는 NDIS_STATUS_LINK_STATE indication으로 합쳐졌다. NDIS 5.1 에서 사용한 indication에 맞는 구조체 정보는 다음의 테이블을 참고한다. 연결 속도 변경은, 알림을 받는 (아마도, 서비스)가 이전 값과 새로 온 값을 비교하여 속도가 변경되었는지 체크해야 한다.

Connection status indication mapping from NDIS 5.1 to 6.x
NDIS 5.1 indicationNDIS 6.x NDIS_LINK_STATE data structure
ParameterValue
NDIS_STATUS_MEDIA_CONNECTMediaConnectStateMediaConnectStateConnected
NDIS_STATUS_MEDIA_DISCONNECTMediaConnectStateMediaConnectStateDisconnected
NDIS_STATUS_LINK_SPEED_CHANGEXmitLinkSpeedTransmitting speed (bps)
RcvLinkSpeedReceiving speed (bps)

덧글

댓글 입력 영역