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 |