Функция NdisGetDataBuffer (ndis/nblapi.h)

Вызовите функцию NdisGetDataBuffer , чтобы получить доступ к непрерывному блоку данных из структуры NET_BUFFER .

Синтаксис

NDIS_EXPORTED_ROUTINE PVOID NdisGetDataBuffer(
  [in]           NET_BUFFER *NetBuffer,
  [in]           ULONG      BytesNeeded,
  [in, optional] PVOID      Storage,
  [in]           ULONG      AlignMultiple,
  [in]           ULONG      AlignOffset
);

Параметры

[in] NetBuffer

Указатель на структуру NET_BUFFER.

[in] BytesNeeded

Количество непрерывных байтов запрашиваемых данных.

[in, optional] Storage

Указатель на буфер или ЗНАЧЕНИЕ NULL , если вызывающий объект не предоставляет буфер. Размер буфера должен быть больше или равен количеству байтов, указанному в параметре BytesNeededed . Если это значение не равно NULL и запрошенные данные не являются смежными, NDIS копирует запрошенные данные в область, указанную хранилищем .

[in] AlignMultiple

Выравнивание кратно, выраженное в силе двух. Например, 2, 4, 8, 16 и т. д. Если alignMultiple имеет значение 1, то выравнивание не требуется.

[in] AlignOffset

Смещение в байтах от кратного выравнивания.

Возвращаемое значение

NdisGetDataBuffer возвращает указатель на начало смежных данных или возвращает значение NULL.

Если элемент DataLengthNET_BUFFER_DATA структуры в структуре NET_BUFFER , на которую указывает параметр NetBuffer , меньше значения в параметре BytesNeeded , возвращаемое значение равно NULL.

Если запрошенные данные в буфере являются непрерывными, возвращаемое значение является указателем на расположение, которое предоставляет NDIS. Если данные не являются непрерывными, NDIS использует параметр Storage следующим образом:

  • Если параметр Storage имеет значение, отличное от NULL, NDIS копирует данные в буфер в хранилище. Возвращаемое значение — это указатель, передаваемый в параметр Storage .
  • Если параметр Storage имеет значение NULL, возвращаемое значение равно NULL.
Возвращаемое значение также может иметь значение NULL из-за нехватки ресурсов, при котором невозможно сопоставить буфер данных. Это может произойти, даже если данные являются непрерывными или параметр Storage имеет значение, отличное от NULL.

Комментарии

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

Требуемое требование выравнивания выражается в виде числа кратных значений и смещения. Например, если AlignMultiple имеет значение 4, а AlignOffset — 3, то адрес данных должен быть кратным 4 плюс 3. При необходимости NDIS выделяет память для удовлетворения требований к выравниванию.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis/nblapi.h (включая ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_NetBuffer_Function(ndis)

См. также раздел

NET_BUFFER

NET_BUFFER_DATA