다음을 통해 공유


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