다음을 통해 공유


열거형 키워드

NDIS 6.0 이상 버전의 NDIS는 네트워크 디바이스의 미니포트 드라이버를 위한 표준화된 열거형 키워드를 제공합니다. 열거형 키워드는 메뉴에 목록으로 표시되는 값과 연결됩니다.

다음 예제에서는 열거형 키워드(keyword) 대한 INF 파일 정의를 보여줍니다.

HKR, Ndi\params\<SubkeyName>, ParamDesc, 0, "%<SubkeyName>%"
HKR, Ndi\params\<SubkeyName>, Type, 0, "enum"
HKR, Ndi\params\<SubkeyName>, Default, 0, "3"
HKR, Ndi\params\<SubkeyName>, Optional, 0, "0"
HKR, Ndi\params\<SubkeyName>\enum, "0", 0, "%Disabled%"
HKR, Ndi\params\<SubkeyName>\enum, "1", 0, "%Tx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "2", 0, "%Rx Enabled%"
HKR, Ndi\params\<SubkeyName>\enum, "3", 0, "%Rx & Tx Enabled%"

일반적인 열거형 키워드는 다음과 같습니다.

*SpeedDuplex
디바이스에서 지원하는 속도 및 이중 설정입니다. 디바이스 INF 파일은 연결된 디바이스가 지원하는 설정만 나열해야 합니다. 즉, 전체 이중 모드만 지원할 수 있는 이더넷 10/100 디바이스의 경우 기가비트 또는 더 빠른 속도 또는 절반 이중에 대한 설정은 연결된 INF 파일에 나열되지 않아야 합니다.

열거형 값이 0에서 10까지로 이미 정의되지 않은 속도 값은 Mbps에서 직접 값인 숫자로 설정할 수 있습니다. 직접 값은 1,000Mbps(1Gbps) 이상이어야 합니다. 다음은 속도를 직접 지정하는 몇 가지 예입니다.

SpeedDuplex 값 결과 속도
1,000 1Gbps
10000 10Gbps
25,000 25Gbps
50,000 50Gbps
100,000 100Gbps

*FlowControl
디바이스가 송신 또는 수신 경로에서 흐름 제어를 사용하거나 사용하지 않도록 설정하는 기능입니다.

참고 현재 이더넷 디바이스는 흐름 제어를 지원하며 LAN용 Windows 8 기본 제공 드라이버는 기본적으로 흐름 제어를 사용하도록 설정되어 있습니다. 커널 디버거가 이러한 LAN 어댑터 중 하나에 연결되면 NIC는 흐름 제어 일시 중지 프레임을 네트워크에 푸시하기 시작합니다. 대부분의 네트워크 스위치는 동일한 허브에 연결된 다른 모든 컴퓨터의 네트워크를 일시적으로 중단하여 반응합니다. 이는 일반적인 개발 시나리오이며 최종 사용자 환경은 바람직하지 않고 진단하기 어렵습니다.

참고 클라이언트 및 서버 기본값은 동일하지 않습니다. 아래의 기본값 표를 참조하세요.

이러한 이유로 Windows 8 이상에서 NDIS는 컴퓨터에서 디버깅을 사용하도록 설정할 때(예: 명령줄에 bcdedit /set debug를 입력하여) 흐름 제어를 자동으로 사용하지 않도록 설정합니다. 커널 디버깅을 사용하도록 설정하고 미니포트가 NdisReadConfiguration을 호출하고 Keyword 매개 변수에 대해 "*FlowControl"을 전달하면 NDIS는 구성된 값을 재정의하고 0을 반환합니다.

디버깅하는 동안 흐름 제어를 사용하도록 설정해야 하는 경우 NDIS는 AllowFlowControlUnderDebugger 레지스트리 값을 제공하여 이 작업을 수행할 수 있도록 합니다. AllowFlowControlUnderDebugger 레지스트리 값은 NDIS가 흐름 제어를 사용하지 않도록 설정하는 것을 방지하고 NIC가 구성된 동작을 유지할 수 있도록 합니다. 다음 레지스트리 키에서 찾을 수 있습니다.

Hkey_local_machine\시스템\CurrentControlSet\서비스\Ndis\매개 변수

이 레지스트리 값을 0x00000001 설정합니다.

없는 경우 AllowFlowControlUnderDebugger 라는 이름의 값을 만들고 형식이 REG_DWORD 0x00000001 설정할 수 있습니다.

*PriorityVLANTag
디바이스에서 패킷 우선 순위 및 VN(가상 LAN)에 대해 802.1Q 태그를 삽입할 수 있는지 여부를 나타내는 값입니다. 이 키워드(keyword) 디바이스가 패킷 우선 순위 또는 VLAN 태그를 사용하도록 설정했는지 여부를 나타내지 않습니다. 대신 다음을 설명합니다.

  • 보내기 작업 중에 디바이스가 802.1Q 태그를 삽입하는지 여부
  • NET_BUFFER_LIST OOB (대역 외) 정보에서 802.1Q 태그 정보를 사용할 수 있는지 여부
  • 수신 작업 중에 디바이스가 OOB에 802.1Q 태그를 복사하는지 여부

미니포트 드라이버는 *PriorityVLANTag 설정에 관계없이 모든 수신 패킷에서 802.1Q 헤더를 제거해야 합니다. 802.1Q 헤더가 패킷에 남아 있으면 다른 드라이버가 패킷을 올바르게 구문 분석하지 못할 수 있습니다.

수신 경로에서 Rx 플래그를 사용하는 경우 미니포트 드라이버는 제거된 802.1Q 헤더를 OOB에 복사해야 합니다.

그렇지 않으면 Rx 플래그를 사용하지 않도록 설정하면 미니포트 드라이버가 제거된 802.1Q 헤더를 OOB에 복사하면 안 됩니다.

전송 경로에서 Tx 플래그를 사용하는 경우 미니포트 드라이버는 다음을 수행해야 합니다.

  • 나가는 각 패킷에 802.1Q 헤더를 삽입하고 OOB의 데이터로 채웁니다(OOB에 0이 아닌 데이터가 있는 경우).
  • NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 적절한 MacOptions를 보급합니다(NDIS_MAC_OPTION_8021P_PRIORITYNDIS_MAC_OPTION_8021Q_VLAN).

그렇지 않으면 Tx 플래그를 사용하지 않도록 설정한 경우 다음을 수행합니다.

  • 미니포트 필터는 OOB에서 802.1Q 정보를 적용해서는 안 됩니다(따라서 태그를 삽입하지 않음).
  • 미니포트 필터는 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 적절한 MacOptions를 보급해서는 안 됩니다.

참고 미니포트 드라이버가 NDIS(서비스 품질)를 지원하는 경우 *QOS 키워드(keyword) 값도 읽어야 합니다. *QOS 키워드(keyword) 값에 따라 *PriorityVLANTag 키워드(keyword) 값이 다르게 해석됩니다. 자세한 내용은 NDIS QoS에 대한 표준화된 INF 키워드를 참조하세요.

*InterruptModeration
디바이스가 인터럽트 조정을 사용하거나 사용하지 않도록 설정했는지 여부를 설명하는 값입니다. 인터럽트 조정 알고리즘은 디바이스에 따라 다릅니다. 디바이스 제조업체는 표준화되지 않은 키워드를 사용하여 알고리즘 설정을 지원할 수 있습니다. 인터럽트 조정에 대한 자세한 내용은 인터럽트 조정을 참조하세요.

*Rss
디바이스가 RSS(수신 쪽 크기 조정)를 사용하도록 설정되었는지 또는 사용하지 않도록 설정했는지를 설명하는 값입니다. RSS에 대한 자세한 내용은 수신 쪽 크기 조정을 참조하세요.

*HeaderDataSplit
디바이스를 사용하도록 설정했는지 또는 사용하지 않도록 설정했는지 헤더 데이터 분할 여부를 설명하는 값입니다. 헤더-데이터 분할에 대한 자세한 내용은 헤더-데이터 분할을 참조하세요.

다음 키워드는 연결 오프로드 서비스와 연결됩니다.

*TCPConnectionOffloadIPv4

*TCPConnectionOffloadIPv6

연결 오프로드 키워드에 대한 자세한 내용은 레지스트리 값을 사용하여 연결 오프로드 사용 및 사용 안 함을 참조하세요.

다음 키워드는 작업 오프로드 서비스와 연결됩니다.

*IPChecksumOffloadIPv4

*TCPChecksumOffloadIPv4

*TCPChecksumOffloadIPv6

*UDPChecksumOffloadIPv4

*UDPChecksumOffloadIPv6

*LsoV1IPv4

*LsoV2IPv4

참고 IPv4를 통해 큰 송신 오프로드 버전 1(LSOv1) 및 LSOv2를 모두 지원하는 디바이스의 경우 INF 파일 및 레지스트리 값에 *LsoV2IPv4 키워드(keyword)만 사용해야 합니다. 예를 들어 *LsoV2IPv4 키워드(keyword) INF 파일에 표시되고 레지스트리에 *LsoV1IPv4 키워드(keyword) 표시되는 경우(또는 그 반대의 경우) *LsoV2IPv4 키워드(keyword) 항상 우선합니다.

*LsoV2IPv6

*IPsecOffloadV1IPv4

*IPsecOffloadV2

*IPsecOffloadV2IPv4

*TCPUDPChecksumOffloadIPv4

*TCPUDPChecksumOffloadIPv6

TCP/IP 오프로드 키워드에 대한 자세한 내용은 레지스트리 값을 사용하여 작업 오프로드 사용 및 사용 안 함을 참조하세요.

이 항목의 끝에 있는 테이블의 열에서는 열거형 키워드에 대한 다음 특성을 설명합니다.

SubkeyName
INF 파일에서 지정해야 하고 레지스트리에 표시되는 키워드(keyword) 이름입니다.

ParamDesc
SubkeyName과 연결된 표시 텍스트입니다.


목록의 각 옵션과 연결된 열거형 정수 값입니다. 이 값은 NDI\params\SubkeyName 값에\ 저장됩니다.

EnumDesc
메뉴에 표시되는 각 값과 연결된 표시 텍스트입니다.

Default
메뉴의 기본값입니다.

다음 표에서는 모든 키워드를 나열하고 드라이버가 이전 특성에 사용해야 하는 값을 설명합니다. 키워드(keyword) 대한 자세한 내용은 WDK 설명서에서 키워드(keyword) 검색합니다.

SubkeyName ParamDesc EnumDesc
*SpeedDuplex 속도 & 이중 0(기본값) 자동 협상
1 10Mbps 하프 듀플렉스
2 10Mbps 전체 이중
3 100Mbps 하프 듀플렉스
4 100Mbps 전체 이중
5 1.0Gbps 반이중
6 1.0Gbps 전체 이중
7 10Gbps 전체 이중
8 20Gbps 전체 이중
9 40Gbps 전체 이중
10 100Gbps 전체 이중
*FlowControl 흐름 제어 0(서버 기본값) Tx & Rx 사용 안 함
1 Tx 사용
2 Rx 사용
3(클라이언트 기본값) Rx & Tx 사용
4 자동 협상
*PriorityVLANTag 패킷 우선 순위 & VLAN 0 패킷 우선 순위 & VLAN 사용 안 함
1 패킷 우선 순위 사용
2 VLAN 사용
3(기본값) 패킷 우선 순위 & VLAN 사용
*InterruptModeration 인터럽트 조정 0 사용 안 함
1(기본값) 사용
*Rss 수신측 배율 0 사용 안 함
1(기본값) 사용
*HeaderDataSplit 헤더 데이터 분할 0(기본값) 사용 안 함
1 사용
*TCPConnectionOffloadIPv4 TCP 연결 오프로드(IPv4) 0 사용 안 함
1(기본값) 사용
*TCPConnectionOffloadIPv6 TCP 연결 오프로드(IPv6) 0 사용 안 함
1(기본값) 사용
*IPChecksumOffloadIPv4 IPv4 체크섬 오프로드 0 사용 안 함
1 Tx 사용
2 Rx 사용
3(기본값) Rx & Tx 사용
*TCPChecksumOffloadIPv4 TCP 체크섬 오프로드(IPv4) 0 사용 안 함
1 Tx 사용
2 Rx 사용
3(기본값) Rx & Tx 사용
*TCPChecksumOffloadIPv6 TCP 체크섬 오프로드(IPv6) 0 사용 안 함
1 Tx 사용
2 Rx 사용
3(기본값) Rx & Tx 사용
*UDPChecksumOffloadIPv4 UDP 체크섬 오프로드(IPv4) 0 사용 안 함
1 Tx 사용
2 Rx 사용
3(기본값) Rx & Tx 사용
*UDPChecksumOffloadIPv6 UDP 체크섬 오프로드(IPv6) 0 사용 안 함
1 Tx 사용
2 Rx 사용
3(기본값) Rx & Tx 사용
*LsoV1IPv4 큰 송신 오프로드 버전 1(IPv4) 0 사용 안 함
1(기본값) 사용
*LsoV2IPv4 큰 송신 오프로드 버전 2(IPv4) 0 사용 안 함
1(기본값) 사용
*LsoV2IPv6 큰 송신 오프로드 버전 2(IPv6) 0 사용 안 함
1(기본값) 사용
*IPsecOffloadV1IPv4 IPsec 오프로드 버전 1(IPv4) 0 사용 안 함
1 인증 헤더 사용
2 ESP 사용
3(기본값) 인증 헤더 & ESP 사용
*IPsecOffloadV2 IPsec 오프로드 0 사용 안 함
1 인증 헤더 사용
2 ESP 사용
3(기본값) 인증 헤더 & ESP 사용
*IPsecOffloadV2IPv4 IPsec 오프로드(IPv4에만 해당) 0 사용 안 함
1 인증 헤더 사용
2 ESP 사용
3(기본값) 인증 헤더 & ESP 사용
*TCPUDPChecksumOffloadIPv4 TCP/UDP 체크섬 오프로드(IPv4) 0 사용 안 함
1 Tx 사용
2 Rx 사용
3(기본값) Tx 및 Rx 사용
*TCPUDPChecksumOffloadIPv6 TCP/UDP 체크섬 오프로드(IPv6) 0 사용 안 함
1 Tx 사용
2 Rx 사용
3(기본값) Tx 및 Rx 사용