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