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


Функция NdisAllocateBuffer (ndis.h)

Примечание NDIS 5. x устарел и заменен NDIS 6. x. Сведения о разработке новых драйверов NDIS см. в статье Сетевые драйверы, начиная с Windows Vista. Сведения о переносе NDIS 5. драйверов x в NDIS 6. xсм. перенос драйверов NDIS 5.x в NDIS 6.0.

NdisAllocateBuffer создает сопоставление дескриптора буфера с указанным виртуальным (вложенным)диапазоном в уже выделенном блоке памяти.

Синтаксис

void NdisAllocateBuffer(
  [out]          PNDIS_STATUS Status,
  [out]          PNDIS_BUFFER *Buffer,
  [in, optional] NDIS_HANDLE  PoolHandle,
  [in]           PVOID        VirtualAddress,
  [in]           UINT         Length
);

Параметры

[out] Status

Указатель на переменную, предоставляемую вызывающим объектом, в которой эта функция возвращает окончательное состояние выделения буфера, которое NDIS_STATUS_SUCCESS, если он вернул допустимый указатель дескриптора буфера в буфера и в противном случае NDIS_STATUS_FAILURE.

[out] Buffer

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

[in, optional] PoolHandle

Задает дескриптор, возвращаемый предыдущим вызовом NdisAllocateBufferPool.

[in] VirtualAddress

Указатель на базовый виртуальный адрес ранее выделенной памяти пространства системы, которая будет сопоставлена в дескриптор возвращаемого буфера.

[in] Length

Указывает число байтов, которые необходимо сопоставить.

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

Никакой

Замечания

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

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

Выделение дескриптора буфера выполняется в буферном пуле, который создает NdisAllocateBufferPool. Драйвер может вызывать NdisAllocateBuffer столько раз, сколько необходимо для выделения дескрипторов буфера, необходимых для вызова NdisAllocateBufferPool во время инициализации.

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

  • Целевая платформа: универсальная

Требования

Требование Ценность
заголовка ndis.h (include Ndis.h)
библиотеки Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

См. также