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

NDIS вызывает функцию MiniportDevicePnPEventNotify драйвера минипорта, чтобы уведомить драйвер о событиях Plug and Play (PnP).

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

Синтаксис

MINIPORT_DEVICE_PNP_EVENT_NOTIFY MiniportDevicePnpEventNotify;

void MiniportDevicePnpEventNotify(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNET_DEVICE_PNP_EVENT NetDevicePnPEvent
)
{...}

Параметры

[in] MiniportAdapterContext

Дескриптор контекстной области, выделенной драйвером мини-порта в функции MiniportInitializeEx . Драйвер мини-порта использует эту контекстную область для хранения сведений о состоянии адаптера мини-порта.

[in] NetDevicePnPEvent

Указатель на структуру NET_DEVICE_PNP_EVENT, описывающую событие Plug and Play устройства.

Возвращаемое значение

None

Remarks

Драйвер указывает точку входа MiniportDevicePnPEventNotify при вызовеФункция NdisMRegisterMiniportDriver.

NDIS вызывает функцию MiniportDevicePnPEventNotify драйвера с элементом DevicePnPEvent параметра NetDevicePnPEvent , установленным на NdisDevicePnPEventPowerProfileChanged после одного из следующих событий:

  • Инициализация драйвера завершена.
  • Драйвер получил уведомление OID_PNP_SET_POWER , указывающее состояние включения ( NdisDeviceStateD0).
Во втором случае значение в InformationBuffer указывает, работает ли система от аккумулятора (NdisPowerProfileBattery) или от питания переменного тока (NdisPowerProfileAcOnline). Драйвер может использовать эти сведения для настройки энергопотребления указанного адаптера минипорта. Например, драйвер для устройства беспроводной локальной сети может снизить энергопотребление, если система работает от батареи, или увеличить энергопотребление, если система работает от питания переменного тока.

Когда драйвер получает уведомление о неожиданном удалении (элемент DevicePnPEvent параметра NetDevicePnPEventNdisDevicePnPEventSurpriseRemoved), он должен:

  • Обратите внимание на то, что устройство было удалено.
  • Отмените все ожидающие IRP, отправленные базовому водителю шины.
После того как NDIS вызывает функцию MiniportDevicePnPEventNotify , чтобы указать на неожиданное удаление, NDIS вызывает функцию MiniportHaltEx драйвера. Если драйвер получает какие-либо запросы на отправку или запросы OID до вызова NDIS MiniportHaltEx, он должен немедленно завершить такие запросы со значением состояния NDIS_STATUS_NOT_ACCEPTED.

NDIS вызывает MiniportDevicePnPEventNotify в IRQL = PASSIVE_LEVEL.

Примеры

Чтобы определить функцию MiniportDevicePnPEventNotify , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию MiniportDevicePnPEventNotify с именем MyDevicePnPEventNotify, используйте тип MINIPORT_DEVICE_PNP_EVENT_NOTIFY , как показано в этом примере кода:

MINIPORT_DEVICE_PNP_EVENT_NOTIFY MyDevicePnPEventNotify;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyDevicePnPEventNotify(
    NDIS_HANDLE  MiniportAdapterContext,
    PNET_DEVICE_PNP_EVENT  NetDevicePnPEvent
    )
  {...}

Тип функции MINIPORT_DEVICE_PNP_EVENT_NOTIFY определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции MINIPORT_DEVICE_PNP_EVENT_NOTIFY в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье О поведении функции.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL PASSIVE_LEVEL
Правила соответствия DDI NdisOidComplete

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

MiniportHaltEx

MiniportInitializeEx

NET_DEVICE_PNP_EVENT

NdisMRegisterMiniportDriver

OID_PNP_SET_POWER