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