Функция NdisAllocateBufferPool (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 NdisAllocateBufferPool(
[out] PNDIS_STATUS Status,
[out] PNDIS_HANDLE PoolHandle,
[in] UINT NumberOfDescriptors
);
Параметры
[out] Status
Указатель на переменную, предоставляемую вызывающим объектом, в которой эта функция возвращает окончательное состояние выделения буферного пула.
[out] PoolHandle
Указатель на переменную, предоставляемую вызывающим объектом, в которой эта функция возвращает дескриптор в буферный пул. Этот дескриптор является обязательным параметром для функций буфера NDIS, которые драйвер вызывает впоследствии.
[in] NumberOfDescriptors
Указывает количество дескрипторов буфера, которые вызывающий объект ожидает выделить из буферного пула без освобождения выделенных дескрипторов буфера обратно в пул.
Возвращаемое значение
Никакой
Замечания
Всегда возвращает NDIS_STATUS_SUCCESS.
После возвращения этой функции драйвер вызывает функцию NdisAllocateBuffer один или несколько раз, чтобы выделить дескрипторы буфера, необходимые ему. Драйвер должен вызывать эту функцию во время инициализации.
Параметр NumberOfDescriptors, указанный драйвером сетевого адаптера, обычно зависит от функций сетевого адаптера. Например, драйвер главного сетевого адаптера DMA шины с буферами кругов будет указывать по крайней мере достаточно большой NumberOfDescriptors для сопоставления полного кольца.
NumberOfDescriptors, указанные в вызове этой функции, является эффективным ограничением на то, сколько раз драйвер может вызывать NdisAllocateBuffer перед вызовом функции NdisFreeBuffer, чтобы вернуть дескриптор буфера в свободный список для буферного пула.
Если драйвер больше не нуждается в выделенном пуле буферов, он вызывает функцию NdisFreeBufferPool, чтобы освободить дескриптор буферного пула.
Драйвер должен освободить любую блокировку спина, которая она держит перед вызовом этой функции.
Все драйверы NDIS нижнего уровня должны выделять все дескрипторы буфера, которые они объединяют в пакеты из буферного пула. Только драйверы протоколов высокого уровня могут быть предоставлены дескрипторов, зависящих от ОС, сопоставляют диапазоны виртуальной памяти. Если эти дескрипторы памяти эквивалентны дескрипторам буфера NDIS, протокол высокого уровня может передавать такие дескрипторы в качестве параметров функциям NDIS.
версии ОС: Windows CE .NET 4.0 и более поздних версий.
Требования
Требование | Ценность |
---|---|
заголовка | ndis.h |
IRQL | IRQL <= DISPATCH_LEVEL |