Net 링 요소 관리
이 항목의 지침에 따라 네트워크 데이터 전송 중에 NET_RING 구조와 해당 요소를 관리합니다. 이 항목의 규칙은 클라이언트 드라이버가 수정할 수 있는 net 링 요소의 멤버와 데이터 경로 시나리오에 따라 클라이언트 드라이버가 이러한 구조에 유의해야 하는 일반적인 정보를 설명합니다.
중요
클라이언트 드라이버는 개발의 모든 단계에서 이러한 지침을 준수해야 합니다. 드라이버 검증 도구로 테스트하는 동안 클라이언트 드라이버가 이러한 지침을 준수하지 않는 경우 드라이버 검증 도구는 위반을 보고하고 테스트 중인 디바이스에서 버그 검사 트리거합니다.
NET_RING
NET_RING 부모 패킷 큐가 시작되면 링의 모든 인덱스가 0으로 초기화됩니다.
다음 표에서는 클라이언트 드라이버가 수정할 수 있는 net 링의 멤버에 대해 설명합니다.
필드 | 클라이언트 드라이버를 수정할 수 있습니다. |
---|---|
OSReserved1 | No |
ElementStride | No |
NumberOfElements | No |
ElementIndexMask | No |
EndIndex | No |
OSReserved0 | No |
OSReserved2 | No |
BeginIndex | 예(필수) |
NextIndex | 예(선택 사항) 참고: 프레임워크는 NextIndex를 읽지 않습니다. |
스크래치 | 예(선택 사항) 참고: 프레임워크는 스크래치를 읽지 않습니다. |
Buffer | No |
클라이언트 드라이버는 이 구조체의 읽기 전용 멤버를 수정해서는 안 되며, EvtPacketQueueAdvance를 호출하는 동안 EndIndex를 지나 BeginIndex를 증가시키지 않아야 합니다.
net 링의 인덱스 소유권에 대한 자세한 내용은 net 링 소개를 참조하세요.
NET_PACKET
NET_PACKET 필드는 데이터 경로가 작동하는 다양한 컨텍스트에 민감합니다. 패킷의 무시 필드가 설정되었는지 여부 및 드라이버가 수신 중인지(Rx) 또는 전송(Tx) 패킷이 패킷에 적용되는 규칙 집합을 변경하는지 여부입니다.
다음 표에서는 각 시나리오의 드라이버에 대한 지침을 제공합니다.
Rx 또는 Tx | 무시 필드는 다음을 통해 설정됩니다. | 참고 |
---|---|---|
Rx | 클라이언트 드라이버 |
|
Tx | NetAdapterCx |
|
NET_PACKET_LAYOUT
Rx 작업 중에 NET_PACKET레이아웃 필드에는 다음 규칙이 적용됩니다.
- Reserved0을 제외한 모든 필드는 클라이언트 드라이버에서 초기화해야 합니다.
- Layer2Type이 NetPacketLayer2TypeEthernet으로 설정된 경우 Layer2HeaderLength는 14 이상이어야 합니다.
- Layer2Type이 NetPacketLayer2TypeNull로 설정된 경우 Layer2HeaderLength를 0으로 설정해야 합니다.
- Layer3Type이 IPv4 형식인 경우 Layer3HeaderLength는 20 이상이어야 합니다.
- Layer3Type이 IPv6 형식인 경우 Layer3HeaderLength는 40 이상이어야 합니다.
- Layer4Type이 Tcp로 설정된 경우 Layer4HeaderLength는 40 이상이어야 합니다.
- Layer4Type이 Udp로 설정된 경우 Layer4HeaderLength는 8 이상이어야 합니다.
- 레이어 형식 필드는 적절한 열거형 범위 내에 있어야 합니다.
레이아웃 은 Tx 중에 사용되지 않습니다.
NET_FRAGMENT
NET_FRAGMENT 필드 규칙은 드라이버가 수신 또는 전송하는지 여부와 드라이버 또는 프레임워크에서 조각 버퍼가 패킷에 연결되어 있는지 여부에 따라 달라집니다.
Rx 또는 Tx | 참고 |
---|---|
Rx |
|
Tx |
|