структура 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.

Для очередей передачи это значение доступно только для чтения.

Capacity

Содержит общую длину буфера пакетов.

Для очередей передачи это значение доступно только для чтения.

Offset

Содержит смещение от начала VirtualAddress и DmaLogicalAddress до начала допустимых полезных данных пакета. Это значение меньше или равно значению Capacity.

Чтобы получить виртуальный адрес для этого фрагмента, вызовите NetExtensionGetFragmentVirtualAddress.

Чтобы получить логический адрес DMA для этого фрагмента, вызовите NetExtensionGetFragmentLogicalAddress.

Для очередей передачи это значение доступно только для чтения.

Scratch

Значение битового поля, которое клиент может использовать для любой цели. При повторном использовании NET_PACKET , к которой принадлежит этот фрагмент, это значение сбрасывается до нуля.

OsReserved_Bounced

Зарезервировано. Клиентские драйверы не должны считывать или записывать это значение.

Комментарии

Отдельная структура NET_PACKET содержит ссылки на одну или несколько NET_FRAGMENT структур.

Хотя каждый фрагмент является практически непрерывным буфером памяти, пакет, содержащий более одного фрагмента, практически не соответствует друг другу.

Требования

Требование Значение
Минимальная версия KMDF 1.29
Верхняя часть fragment.h