NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 구조체(ndis/nblchecksum.h)
NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 구조는 TCP/IP 전송에서 NIC로 체크섬 작업을 오프로드하는 데 사용되는 정보를 지정합니다. NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 구조는 NET_BUFFER_LIST 구조와 연결된 NET_BUFFER_LIST 정보(대역 외 데이터)의 일부입니다.
구문
typedef struct _NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO {
union {
struct {
ULONG IsIPv4 : 1;
ULONG IsIPv6 : 1;
ULONG TcpChecksum : 1;
ULONG UdpChecksum : 1;
ULONG IpHeaderChecksum : 1;
ULONG Reserved : 11;
ULONG TcpHeaderOffset : 10;
} Transmit;
struct {
ULONG TcpChecksumFailed : 1;
ULONG UdpChecksumFailed : 1;
ULONG IpChecksumFailed : 1;
ULONG TcpChecksumSucceeded : 1;
ULONG UdpChecksumSucceeded : 1;
ULONG IpChecksumSucceeded : 1;
ULONG Loopback : 1;
ULONG TcpChecksumValueInvalid : 1;
ULONG IpChecksumValueInvalid : 1;
} Receive;
PVOID Value;
};
} NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO, *PNDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO;
멤버
Transmit
다음 멤버를 포함하는 구조체입니다.
Transmit.IsIPv4
전송 패킷에 IPv4 주소가 포함되어 있음을 나타내기 위해 TCP/IP 전송에 의해 설정됩니다.
Transmit.IsIPv6
전송 패킷에 IPv6 주소가 포함되어 있음을 나타내기 위해 TCP/IP 전송에 의해 설정됩니다.
Transmit.TcpChecksum
TCP/IP 전송에 의해 설정되어 NIC가 패킷의 TCP 체크섬을 계산해야 함을 나타냅니다.
Transmit.UdpChecksum
TCP/IP 전송에 의해 설정되어 NIC가 패킷의 UDP 체크섬을 계산해야 함을 나타냅니다.
Transmit.IpHeaderChecksum
TCP/IP 전송에 의해 설정되어 NIC가 패킷의 첫 번째 IP 헤더에 대한 IP 체크섬을 계산해야 함을 나타냅니다. 패킷에 터널 IP 헤더와 전송 IP 헤더가 모두 포함된 경우 NIC는 두 IP 헤더에 대한 체크섬을 계산해야 합니다.
Transmit.Reserved
NDIS용으로 예약되었습니다.
Transmit.TcpHeaderOffset
TCP 패킷에 대한 패킷 시작부터 TCP 헤더의 오프셋(바이트)입니다. 미니포트 드라이버는 TcpHeaderOffset 을 사용하여 MAC 및 IP 헤더를 구문 분석할 필요가 없도록 TCP 헤더의 위치를 확인할 수 있습니다.
Receive
다음 멤버를 포함하는 구조체입니다.
Receive.TcpChecksumFailed
미니포트 드라이버가 NIC에서 계산한 TCP 체크섬이 수신 패킷의 TCP 헤더에 있는 체크섬과 일치하지 않음을 나타내도록 설정합니다.
Receive.UdpChecksumFailed
미니포트 드라이버가 NIC에서 계산한 UDP 체크섬이 수신 패킷의 UDP 헤더에 있는 체크섬과 일치하지 않음을 나타내도록 설정합니다.
Receive.IpChecksumFailed
미니포트 드라이버가 NIC에서 계산한 IP 체크섬이 수신 패킷의 첫 번째 IP 헤더의 체크섬과 일치하지 않음을 나타내도록 설정합니다. 수신 패킷에 터널 IP 헤더와 전송 IP 헤더가 모두 포함된 경우 NIC는 두 IP 헤더에 대한 체크섬의 유효성을 검사합니다.
Receive.TcpChecksumSucceeded
미니포트 드라이버가 NIC에서 계산한 TCP 체크섬이 수신 패킷의 TCP 헤더에 있는 체크섬과 일치함을 나타내도록 설정합니다.
Receive.UdpChecksumSucceeded
미니포트 드라이버가 NIC에서 계산한 UDP 체크섬이 수신 패킷의 UDP 헤더에 있는 체크섬과 일치함을 나타내도록 설정합니다.
Receive.IpChecksumSucceeded
미니포트 드라이버가 NIC에서 계산한 IP 체크섬이 수신 패킷의 첫 번째 IP 헤더에 있는 체크섬과 일치함을 나타내도록 설정합니다. 수신 패킷에 터널 IP 헤더와 전송 IP 헤더가 모두 포함된 경우 NIC는 두 IP 헤더에 대한 체크섬의 유효성을 검사합니다.
Receive.Loopback
NDIS는 이 비트를 사용합니다. 미니포트 드라이버는 이 비트를 검사하거나 설정해서는 안됩니다. 미니포트 드라이버는 이 비트를 무시하면 됩니다.
Receive.TcpChecksumValueInvalid
RSC(수신 세그먼트 병합)를 지원하는 미니포트 드라이버는 TCP 헤더 체크섬이 NIC에 의해 유효성을 검사했지만 패킷의 TCP 헤더 체크섬 값이 유효하지 않음을 나타내도록 이 플래그를 설정합니다. 자세한 내용은 병합된 세그먼트 표시를 참조하세요.
RSC를 지원하지 않는 미니포트 드라이버는 이 플래그를 0으로 설정해야 합니다.
Receive.IpChecksumValueInvalid
RSC를 지원하는 미니포트 드라이버는 IPv4 패킷의 경우 IP 헤더 체크섬이 NIC에 의해 유효성을 검사했지만 패킷의 IP 헤더 체크섬 값이 유효하지 않음을 나타내도록 이 플래그를 설정합니다. 터널 및 전송 IP 헤더로 구성된 패킷의 경우 이 비트는 터널 IP 헤더에만 적용됩니다. 자세한 내용은 병합된 세그먼트 표시를 참조하세요.
RSC를 지원하지 않는 미니포트 드라이버는 이 플래그를 0으로 설정해야 합니다.
Value
체크섬 정보의 PVOID 버전입니다. 미니포트 드라이버는 이 멤버를 사용하여 특정 필드 대신 원시 정보에 액세스할 수 있습니다.
설명
NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 구조는 TCP/IP 전송에서 NIC로 체크섬 작업을 오프로드하는 데 사용되는 정보를 지정합니다. NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 구조는 NET_BUFFER_LIST 구조와 연결된 NET_BUFFER_LIST 정보(대역 외 데이터)의 일부입니다.
TCP/IP 전송이 미니포트 드라이버에 체크섬 작업을 수행할 TCP/IP 패킷을 미니포트 드라이버에 전달하기 전에 TCP/IP 전송은 NET_BUFFER_LIST 구조와 연결된 NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 구조를 업데이트합니다. 특히 TCP/IP 전송은 전송 패킷이 IPv4 또는 IPv6 패킷임을 나타내도록 IsIPv4 또는 IsIPv6 플래그를 설정합니다.
yy TCP/IP 전송이 IsIPv4 또는 IsIPv6 플래그를 설정하지 않으면 미니포트 드라이버는 패킷에 체크섬 작업을 수행해서는 안 됩니다. TCP/IP 전송이 IsIPv4 또는 IsIPv6 플래그를 설정하는 경우 미니포트 드라이버가 패킷에 대해 계산해야 하는 체크섬을 나타내는 데 필요한 적절한 플래그도 설정합니다. IPv4의 경우 IpHeaderChecksum, TcpChecksum 또는 UdpChecksum 플래그가 포함됩니다 . IPv6의 경우 TcpChecksum 또는 UdpChecksum 플래그가 포함됩니다 . 또한 TCP 패킷의 경우 TCP/IP 전송은 IsIPv4 또는 IPv6 플래그가 설정된 경우 TcpHeaderOffset 필드를 설정합니다. 전송은 UDP 패킷에 대해 이 필드를 설정하지 않습니다.
체크섬 작업을 수행하는 수신 TCP/IP 패킷을 표시하기 전에 미니포트 드라이버는 NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO 구조에서 적절한 XxxChecksumFailed 또는 XxxChecksumSucceeded 플래그를 설정합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | NDIS 6.0 이상에서 지원됩니다. |
머리글 | ndis/nblchecksum.h(ndis.h 포함) |
추가 정보
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기