NET_FRAGMENT 구조체(fragment.h)
메모리의 연속 버퍼 하나를 나타냅니다.
구문
typedef struct _NET_FRAGMENT {
UINT64 ValidLength : 26;
UINT64 Capacity : 26;
UINT64 Offset : 10;
UINT64 Scratch : 1;
UINT64 OsReserved_Bounced : 1;
} NET_FRAGMENT;
멤버
ValidLength
패킷 페이로드의 길이를 포함합니다. 이 값은 용량 값보다 작거나 같습니다.
전송 큐의 경우 이 값은 읽기 전용입니다.
Capacity
패킷 버퍼의 총 길이를 포함합니다.
전송 큐의 경우 이 값은 읽기 전용입니다.
Offset
VirtualAddress 및 DmaLogicalAddress 시작부터 유효한 패킷 페이로드의 시작까지의 오프셋을 포함합니다. 이 값은 용량 값보다 작거나 같습니다.
이 조각의 가상 주소를 가져오려면 NetExtensionGetFragmentVirtualAddress를 호출합니다.
이 조각에 대한 DMA 논리 주소를 가져오려면 NetExtensionGetFragmentLogicalAddress를 호출합니다.
전송 큐의 경우 이 값은 읽기 전용입니다.
Scratch
클라이언트가 어떤 용도로든 사용할 수 있는 비트 필드 값입니다. 이 조각이 속한 NET_PACKET 재사용되면 이 값은 0으로 다시 설정됩니다.
OsReserved_Bounced
예약되어 있습니다. 클라이언트 드라이버는 이 값을 읽거나 쓸 수 없습니다.
설명
단일 NET_PACKET 구조체에는 하나 이상의 NET_FRAGMENT 구조체에 대한 참조 가 포함되어 있습니다.
각 조각은 사실상 연속적인 메모리 버퍼이지만 둘 이상의 조각을 포함하는 패킷은 사실상 불연결합니다.
요구 사항
요구 사항 | 값 |
---|---|
최소 KMDF 버전 | 1.29 |
머리글 | fragment.h |