Share via


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

VirtualAddressDmaLogicalAddress 시작부터 유효한 패킷 페이로드의 시작까지의 오프셋을 포함합니다. 이 값은 용량 값보다 작거나 같습니다.

이 조각의 가상 주소를 가져오려면 NetExtensionGetFragmentVirtualAddress를 호출합니다.

이 조각에 대한 DMA 논리 주소를 가져오려면 NetExtensionGetFragmentLogicalAddress를 호출합니다.

전송 큐의 경우 이 값은 읽기 전용입니다.

Scratch

클라이언트가 어떤 용도로든 사용할 수 있는 비트 필드 값입니다. 이 조각이 속한 NET_PACKET 재사용되면 이 값은 0으로 다시 설정됩니다.

OsReserved_Bounced

예약되어 있습니다. 클라이언트 드라이버는 이 값을 읽거나 쓸 수 없습니다.

설명

단일 NET_PACKET 구조체에는 하나 이상의 NET_FRAGMENT 구조체에 대한 참조 포함되어 있습니다.

각 조각은 사실상 연속적인 메모리 버퍼이지만 둘 이상의 조각을 포함하는 패킷은 사실상 불연결합니다.

요구 사항

요구 사항
최소 KMDF 버전 1.29
머리글 fragment.h