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


Функция NdisMNetPnPEvent (ndis.h)

Драйверы мини-портов NDIS (и промежуточные драйверы, зарегистрированные в качестве драйверов минипорта) вызывают функцию NdisMNetPnPEvent для создания события сетевого Plug and Play, события NDIS PnP или события управления питанием или распространения его на слишком распространенные драйверы.

Синтаксис

NDIS_STATUS NdisMNetPnPEvent(
  [in] NDIS_HANDLE                 MiniportAdapterHandle,
       PNET_PNP_EVENT_NOTIFICATION NetPnPEventNotification
);

Параметры

[in] MiniportAdapterHandle

NDIS обрабатывает NDIS, предоставленный в параметре MiniportAdapterHandle функции MiniportInitializeEx . Этот дескриптор идентифицирует адаптер мини-порта, на который влияет событие. Если вызывающий объект является промежуточным драйвером, это дескриптор виртуального мини-порта.

NetPnPEventNotification

Указатель на NET_PNP_EVENT_NOTIFICATION структуры, описывающей событие сетевого Plug and Play, событие NDIS PnP или событие управления питанием.

Важно!

Если для поля VPortIdnetPnpEventNotification задано значение, отличное от NDIS_DEFAULT_VPORT_ID, то член Flags должен иметь значение NET_EVENT_FLAGS_VPORT_ID_VALID, чтобы VPortId войл в силу.

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

NdisMNetPnPEvent может возвращать следующее:

Код возврата Описание
NDIS_STATUS_SUCCESS
Переопределяющие драйверы успешно обработали событие Plug and Play или Power Management.
NDIS_STATUS_RESOURCES
Не удалось получить системные ресурсы, необходимые для выполнения указанного события Plug and Play или управления питанием.
NDIS_STATUS_INVALID_PARAMETER
NDIS не удалось выполнить вызов, так как некоторые входные параметры недопустимы.
NDIS_STATUS_NOT_SUPPORTED
Драйверы протокола NDIS 6.0 и более поздних версий не должны возвращать это состояние. NDIS 5. Драйвер протокола x, который не поддерживает Plug and Play, может вернуть это состояние в ответ на NetEventSetPower, чтобы указать, что NDIS должен отменить привязку к базовому адаптеру.
NDIS_STATUS_INVALID_PORT
NDIS не удалось выполнить запрос, так как в событии PnP NetEventPortActivation или NetEventPortDeactivation был указан недопустимый порт NDIS.
NDIS_STATUS_INVALID_PORT_STATE
NDIS не удалось выполнить запрос, так как порт NDIS находился в недопустимом состоянии порта. Порты указываются в событии PnP NetEventPortActivation или NetEventPortDeactivation .
NDIS_STATUS_FAILURE
Не удалось обработать распространяемое событие Plug and Play или Power Management.
 

Возвращаемое значение имеет значение, только если распространяемое событие является событием NetEventQueryPower или NetEventQueryRemoveDevice . Для всех остальных распространяемых событий возвращаемое значение всегда NDIS_STATUS_SUCCESS.

Если событие имеет значение NetEventPortActivation и вызов завершается сбоем, вызывающий объект не должен использовать связанные порты в обозначениях получения или состояния.

Комментарии

Любой драйвер мини-порта может вызывать NdisMNetPnPEvent для создания событий NetEventPortActivation и NetEventPortDeactivation . Только промежуточные драйверы могут создавать другие уведомления о событиях.

Примечание Чтобы предотвратить взаимоблокировку, драйвер NDIS должен сделать следующее:
  • Функция MiniportOidRequest не должна вызывать NdisMNetPnPEvent.
  • Если функция MiniportOidRequest возвращает NDIS_STATUS_PENDING для запроса OID, драйвер NDIS не должен вызывать NdisMNetPnPEvent , пока не завершит запрос OID путем вызова NdisMOidRequestComplete.
 
Чтобы распространить уведомление о событии сетевого Plug and Play, событии NDIS PnP или событии управления питанием на более скользящие драйверы, промежуточный драйвер NDIS вызывает NdisMNetPnPEvent в контексте функции ProtocolNetPnPEvent драйвера.

Если распространяемое событие является NetEventQueryPower или NetEventQueryRemoveDevice, промежуточный драйвер должен проверка значение NDIS_STATUS, возвращаемое NdisMNetPnPEvent. Если возвращенное состояние NDIS_STATUS_SUCCESS, промежуточный драйвер должен обработать событие, а затем вернуть NDIS_STATUS_SUCCESS из функции ProtocolNetPnPEvent . Если возвращенное состояние не NDIS_STATUS_SUCCESS, промежуточный драйвер должен возвращать сообщаемое состояние из функции ProtocolNetPnPEvent без дальнейшей обработки.

То, как промежуточный драйвер обрабатывает NetEventSetPower , полученный функцией ProtocolNetPnPEvent, зависит от указанного состояния питания устройства. Если указанное состояние питания устройства — NdisDeviceStateD0, промежуточный драйвер должен обработать событие, а затем вызвать NdisMNetPnPEvent. Для любого другого указанного состояния питания устройства промежуточный драйвер должен сначала вызвать NdisMNetPnPEvent , а затем обработать событие .

Промежуточный драйвер должен вызывать NdisMNetPnPEvent для распространения NetEventReconfigure или NetEventBindList только в том случае, если NetEventReconfigure или NetEventBindList указан в protocolBindingContext, отличном от NULL. Если netEventReconfigure или NetEventBindList указан в nullProtocolBindingContext, промежуточный драйвер не должен вызывать NdisMNetPnPEvent для распространения события.

Если промежуточный драйвер обрабатывает NetEventReconfigure или NetEventBindList, он должен проверять все данные, связанные с событием.

Промежуточный драйвер не должен распространять события NetEventBindsComplete, NetEventPause, NetEventRestart, NetEventPortActivation или NetEventPortDeactivation путем вызова NdisMNetPnPEvent.

Промежуточный драйвер NDIS может создавать собственные события порта NDIS для виртуальных мини-портов в соответствии с событиями NetEventPortActivation или NetEventPortDeactivation , которые он получает в своей функции ProtocolNetPnPEvent .

Для всех остальных распространяемых событий функция ProtocolNetPnPEvent промежуточного драйвера должна распространять значение состояния, возвращаемое NdisMNetPnPEvent.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Универсальное
Верхняя часть ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL PASSIVE_LEVEL
Правила соответствия DDI Irql_Protocol_Driver_Function(ndis), NdisMNetPnPEventInOIDRequest(ndis)

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

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent