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