Поделиться через


структура 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, к которому принадлежит этот фрагмент, повторно используется, это значение сбрасывается до нуля.

OsReserved_Bounced

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

Замечания

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

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

Требования

Требование Ценность
минимальная версия KMDF 1.29
заголовка fragment.h