структура NET_BUFFER (ndis/nbl.h)
Структура NET_BUFFER указывает данные, передаваемые или полученные по сети.
Синтаксис
typedef struct _NET_BUFFER {
union {
struct {
NET_BUFFER *Next;
MDL *CurrentMdl;
ULONG CurrentMdlOffset;
union {
ULONG DataLength;
SIZE_T stDataLength;
};
MDL *MdlChain;
ULONG DataOffset;
};
SLIST_HEADER Link;
NET_BUFFER_HEADER NetBufferHeader;
};
USHORT ChecksumBias;
USHORT Reserved;
NDIS_HANDLE NdisPoolHandle;
PVOID NdisReserved[2];
PVOID ProtocolReserved[6];
PVOID MiniportReserved[4];
PHYSICAL_ADDRESS DataPhysicalAddress;
union {
NET_BUFFER_SHARED_MEMORY *SharedMemoryInfo;
SCATTER_GATHER_LIST *ScatterGatherList;
};
} NET_BUFFER, *PNET_BUFFER;
Члены
Next
Указатель на следующую NET_BUFFER структуру в связанном списке NET_BUFFER структур. Если эта структура является последней NET_BUFFER структурой в списке, этот элемент имеет значение NULL.
CurrentMdl
Указатель на первый MDL,который использует текущий драйвер. Этот элемент обеспечивает оптимизацию, которая повышает производительность, пропуская все многомерные библиотеки, которые текущий драйвер не использует.
CurrentMdlOffset
Смещение в байтах к началу используемого пространства данных в MDL, указанном элементом currentMdl.
DataLength
Длина в байтах используемого пространства данных в цепочке MDL. Максимальная длина составляет 0xFFFFFFFF байтов.
stDataLength
Длина в байтах используемого пространства данных в цепочке MDL. Максимальная длина составляет 0xFFFFFFFF байтов. Этот элемент совпадает с DataLength, но его тип SIZE_T вместо ULONG.
MdlChain
Указатель на связанный список многомерных выражений, сопоставляющих буфер данных. Буфер данных сохраняет сетевые данные.
DataOffset
Смещение в байтах с начала цепочки MDL до начала сетевых данных в цепочке MDL. Это смещение также является размером в байтах неиспользуемого пространства данных.
Link
Зарезервировано для NDIS.
NetBufferHeader
Структура NET_BUFFER_HEADER. Это дубликат приведенного выше объединения по соображениям совместимости.
ChecksumBias
Количество байтов, которые следует пропустить с начала буфера данных при вычислении контрольной суммы. Этот элемент используется протоколом TCP/IP.
Reserved
Зарезервировано для дальнейшего использования.
NdisPoolHandle
Дескриптор пула, определяющий пул NET_BUFFER, из которого выделена структура NET_BUFFER.
NdisReserved[2]
Зарезервировано для NDIS.
ProtocolReserved[6]
Зарезервировано для использования драйверами протокола. Драйверы протокола и промежуточные драйверы NDIS могут использовать эту область в своих целях. Промежуточные драйверы могут использовать этот элемент только в том случае, если он еще не используется.
MiniportReserved[4]
Зарезервировано для использования мини-драйверами. Минипортные драйверы и промежуточные драйверы NDIS могут использовать эту область для своих целей.
DataPhysicalAddress
SharedMemoryInfo
Указатель на объект NET_BUFFER_SHARED_MEMORY структура.
ScatterGatherList
Структура SCATTER_GATHER_LIST описывает список точечной и сборной для DMA.
Замечания
Драйверы NDIS могут вызывать следующие функции для выделения и инициализации структуры NET_BUFFER:
Драйверы NDIS могут вызывать функцию NdisAllocateNetBufferListPool, а затем задайте элемент fAllocateNetBuffer структуры NET_BUFFER_LIST_POOL_PARAMETERSTRUE при выделении пула структур NET_BUFFER_LIST. В этом случае структура NET_BUFFER предварительно выделяется каждой NET_BUFFER_LIST структурой, выделенной драйвером из пула.Цепочка с каждой NET_BUFFER структурой — это один или несколько дескрипторов буферов, которые сопоставляют буферы, содержащие данные сетевого пакета. Эти дескрипторы буфера указываются как цепочка MDL в элементе NetBufferHeader. Такие данные сетевого пакета были получены или передаются.
Чтобы получить доступ к дополнительному пространству данных в цепочке MDL, драйверы NDIS могут вызывать следующие функции:
Драйверы NDIS обычно используют MiniportReserved или ProtocolReserved членов структуры NET_BUFFER для поддержания сведений о контексте структуры NET_BUFFER.Дополнительные сведения об использовании чистых буферов см. в разделе NET_BUFFER архитектура.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Поддерживается в NDIS 6.0 и более поздних версиях. |
заголовка | ndis/nbl.h (include ndis.h) |
См. также
NET_BUFFER_LIST_POOL_PARAMETERS
NdisAllocateNetBufferAndNetBufferList NdisAllocateNetBufferListPool NdisMSendNetBufferListsComplete NdisRetreatNetBufferDataStart NdisRetreatNetBufferListDataStart