Функция 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 может возвращать следующее:
Код возврата | Описание |
---|---|
|
Переопределяющие драйверы успешно обработали событие Plug and Play или Power Management. |
|
Не удалось получить системные ресурсы, необходимые для выполнения указанного события Plug and Play или управления питанием. |
|
NDIS не удалось выполнить вызов, так как некоторые входные параметры недопустимы. |
|
Драйверы протокола NDIS 6.0 и более поздних версий не должны возвращать это состояние. NDIS 5. Драйвер протокола x, который не поддерживает Plug and Play, может вернуть это состояние в ответ на NetEventSetPower, чтобы указать, что NDIS должен отменить привязку к базовому адаптеру. |
|
NDIS не удалось выполнить запрос, так как в событии PnP NetEventPortActivation или NetEventPortDeactivation был указан недопустимый порт NDIS. |
|
NDIS не удалось выполнить запрос, так как порт NDIS находился в недопустимом состоянии порта. Порты указываются в событии PnP NetEventPortActivation или NetEventPortDeactivation . |
|
Не удалось обработать распространяемое событие Plug and Play или Power Management. |
Возвращаемое значение имеет значение, только если распространяемое событие является событием NetEventQueryPower или NetEventQueryRemoveDevice . Для всех остальных распространяемых событий возвращаемое значение всегда NDIS_STATUS_SUCCESS.
Если событие имеет значение NetEventPortActivation и вызов завершается сбоем, вызывающий объект не должен использовать связанные порты в обозначениях получения или состояния.
Комментарии
Любой драйвер мини-порта может вызывать NdisMNetPnPEvent для создания событий NetEventPortActivation и NetEventPortDeactivation . Только промежуточные драйверы могут создавать другие уведомления о событиях.
- Функция MiniportOidRequest не должна вызывать NdisMNetPnPEvent.
- Если функция MiniportOidRequest возвращает NDIS_STATUS_PENDING для запроса OID, драйвер NDIS не должен вызывать NdisMNetPnPEvent , пока не завершит запрос OID путем вызова NdisMOidRequestComplete.
Если распространяемое событие является 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) |