Функция 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.
Комментарии
Вызовите эту функцию, чтобы получить указатель на заголовок сетевых данных, содержащийся в структуре 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) |