Поделиться через


функция обратного вызова NDIS_PD_ALLOCATE_COUNTER (ndis.h)

Платформа PacketDirect (PD) вызывает функцию NdisPDAllocateCounter драйвера минипорта с поддержкой PD для выделения объекта счетчика. Существует три типа счетчиков:

  • Счетчики очереди получения используются для отслеживания действий очереди получения.
  • Счетчики очереди передачи используются для отслеживания действий очереди передачи.
  • Счетчики фильтров используются для отслеживания действий сопоставления фильтров.
Примечание Функцию необходимо объявить с помощью типа NDIS_PD_ALLOCATE_COUNTER . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

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 может возвращать одно из следующих значений состояния:

Код возврата Описание
STATUS_SUCCESS
Драйвер мини-порта успешно выделил счетчик и вернул дескриптор в параметре CounterHandle .
STATUS_INSUFFICIENT_RESOURCES
Сбой выделения из-за нехватки ресурсов.

Комментарии

Один и тот же объект счетчика может быть связан с несколькими объектами очереди или фильтра с тем же типом, что и счетчик. Например, если имеется 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

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

NDIS_PD_COUNTER_PARAMETERS

NdisPDFreeCounter