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


Функция 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, если буфер не предоставляется вызывающим объектом. Буфер должен быть больше или равен количеству байтов, указанному в BytesNeeded. Если это значение неNULL, а запрошенные данные не являются смежными, NDIS копирует запрошенные данные в область, указанную хранилищем.

[in] AlignMultiple

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

[in] AlignOffset

Смещение в байтах из выравнивания нескольких.

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

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

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

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

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

Замечания

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Поддерживается в NDIS 6.0 и более поздних версиях.
целевая платформа Всеобщий
заголовка ndis/nblapi.h (include ndis.h)
библиотеки Ndis.lib
IRQL <= DISPATCH_LEVEL
правил соответствия DDI Irql_NetBuffer_Function(ndis)

См. также

NET_BUFFER

NET_BUFFER_DATA