Функция 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

Remarks

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

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

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

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

Требования

Требование Значение
Заголовок ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL IRQL <= DISPATCH_LEVEL

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