функция обратного вызова NDIS_PD_ALLOCATE_COUNTER (ndis.h)
Платформа PacketDirect (PD) вызывает функцию NdisPDAllocateCounter драйвера минипорта с поддержкой PD для выделения объекта счетчика. Существует три типа счетчиков:
- Счетчики очереди получения используются для отслеживания действий очереди получения.
- Счетчики очереди передачи используются для отслеживания действий очереди передачи.
- Счетчики фильтров используются для отслеживания действий сопоставления фильтров.
Синтаксис
NDIS_PD_ALLOCATE_COUNTER NdisPdAllocateCounter;
NTSTATUS() NdisPdAllocateCounter(
[in] NDIS_PD_PROVIDER_HANDLE ProviderHandle,
[in] const NDIS_PD_COUNTER_PARAMETERS *CounterParameters,
[out] NDIS_PD_COUNTER_HANDLE *CounterHandle
)
{...}
Параметры
[in] ProviderHandle
Дескриптор поставщика, который идентифицирует объект поставщика драйвера мини-порта с поддержкой PD.
[in] CounterParameters
Структура NDIS_PD_COUNTER_PARAMETERS , указывающая такие сведения, как тип счетчика.
[out] CounterHandle
Указатель на переменную дескриптора счетчика, выделенную драйвером. Если выделение счетчика выполнено успешно, драйвер мини-порта возвращает дескриптор только что выделенному счетчику в этой переменной.
Возвращаемое значение
NdisPDAllocateCounter может возвращать одно из следующих значений состояния:
Код возврата | Описание |
---|---|
|
Драйвер мини-порта успешно выделил счетчик и вернул дескриптор в параметре CounterHandle . |
|
Сбой выделения из-за нехватки ресурсов. |
Комментарии
Один и тот же объект счетчика может быть связан с несколькими объектами очереди или фильтра с тем же типом, что и счетчик. Например, если имеется 5 очередей получения (RQ1–RQ5) и 2 счетчика получения (RC1 и RC2), счетчик получения RC1 может быть связан с очередями получения RQ1, RQ2, RQ3, а счетчик получения RC2 — с очередями получения RQ4 и RQ5.
Примеры
Чтобы определить функцию NdisPDAllocateCounter , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию NdisPDAllocateCounter с именем MyPDAllocateCounter, используйте тип NDIS_PD_ALLOCATE_COUNTER , как показано в следующем примере кода:
NDIS_PD_ALLOCATE_COUNTER MyPDAllocateCounter;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
NTSTATUS
MyPDAllocateCounter(
NDIS_PD_PROVIDER_HANDLE ProviderHandle,
CONST NDIS_PD_COUNTER_PARAMETERS* CounterParameters,
NDIS_PD_COUNTER_HANDLE* CounterHandle
)
{...}
Тип функции NDIS_PD_ALLOCATE_COUNTER определен в файле заголовка Ntddndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции NDIS_PD_ALLOCATE_COUNTER в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 |
Минимальная версия сервера | Windows Server 2016 |
Целевая платформа | Windows |
Header | ndis.h |
IRQL | PASSIVE_LEVEL |