NdisMNetPnPEvent 函式 (ndis.h)

註冊為迷你埠驅動程式的 NDIS 迷你埠驅動程式 (和中繼驅動程式,) 呼叫 NdisMNetPnPEvent 函式來產生網路 隨插即用 事件、NDIS PnP 事件或 Power Management 事件,或將其傳播至過度運作的驅動程式。

語法

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

參數

[in] MiniportAdapterHandle

MiniportInitializeEx 函式的 MiniportAdapterHandle 參數中提供的 NDIS 句柄。 此句柄會識別受事件影響的迷你埠配接器。 如果呼叫端是中繼驅動程式,這是虛擬迷你埠的句柄。

NetPnPEventNotification

的指標 NET_PNP_EVENT_NOTIFICATION 結構,描述網路 隨插即用 事件、NDIS PnP 事件或Power Management事件。

重要

如果 NetPnpEventNotificationVPortId 欄位設定為與NDIS_DEFAULT_VPORT_ID不同的值,則 Flags 成員必須設定為 NET_EVENT_FLAGS_VPORT_ID_VALID,VPortId 才會生效。

傳回值

NdisMNetPnPEvent 可以傳回下列專案:

傳回碼 Description
NDIS_STATUS_SUCCESS
過度處理驅動程式已成功處理 隨插即用 或電源管理事件。
NDIS_STATUS_RESOURCES
過度處理驅動程式無法取得必要的系統資源,以滿足指定的 隨插即用 或電源管理事件。
NDIS_STATUS_INVALID_PARAMETER
NDIS 因為某些輸入參數無效,所以呼叫失敗。
NDIS_STATUS_NOT_SUPPORTED
NDIS 6.0 和更新版本的通訊協定驅動程式不得傳回此狀態。 NDIS 5。不支援 隨插即用 的 x 通訊協定驅動程式可以傳回此狀態,以回應 NetEventSetPower,指出 NDIS 應該從基礎配接器解除系結。
NDIS_STATUS_INVALID_PORT
NDIS 失敗要求,因為 NetEventPortActivation 或 NetEventPortDeactivation PnP 事件中指定了無效的 NDIS 埠。
NDIS_STATUS_INVALID_PORT_STATE
NDIS 失敗要求,因為 NDIS 埠處於無效的埠狀態。 埠是在 NetEventPortActivationNetEventPortDeactivation PnP 事件中指定。
NDIS_STATUS_FAILURE
過度裝載驅動程式嘗試處理傳播的 隨插即用 或電源管理事件失敗。
 

只有在傳播的事件是 NetEventQueryPowerNetEventQueryRemoveDevice 事件時,傳回值才會顯著。 對於所有其他傳播的事件,傳回值一律NDIS_STATUS_SUCCESS。

如果事件為 NetEventPortActivation 且呼叫失敗,則呼叫端不應在接收指示或狀態指示中使用相關聯的埠。

備註

任何迷你埠驅動程式都可以呼叫 NdisMNetPnPEvent 來產生 NetEventPortActivationNetEventPortDeactivation 事件。 只有中繼驅動程式可以發出其他事件通知。

注意 若要防止死結,NDIS 驅動程式必須執行下列動作:
 
若要將網路 隨插即用 事件的通知、NDIS PnP 事件或電源管理事件傳播至過度運作的驅動程式,NDIS 中繼驅動程式會在驅動程式的 ProtocolNetPnPEvent 函式內容中呼叫 NdisMNetPnPEvent

如果傳播的事件是 NetEventQueryPowerNetEventQueryRemoveDevice,中繼驅動程式必須檢查 NdisMNetPnPEvent 所傳回的NDIS_STATUS值。 如果傳回的狀態NDIS_STATUS_SUCCESS,中繼驅動程式應該處理事件,然後從其 ProtocolNetPnPEvent 函式傳回NDIS_STATUS_SUCCESS。 如果傳回的狀態不是NDIS_STATUS_SUCCESS,中繼驅動程序應該從其 ProtocolNetPnPEvent 函式傳回報告狀態,而不需進一步處理。

中繼驅動程式如何處理其 ProtocolNetPnPEvent 函式所接收的 NetEventSetPower,取決於指定的裝置電源狀態。 如果指定的裝置電源狀態為 NdisDeviceStateD0,中繼驅動程式應該處理事件,然後呼叫 NdisMNetPnPEvent。 針對任何其他指定的裝置電源狀態,中繼驅動程序應該先呼叫 NdisMNetPnPEvent ,然後處理事件。

中繼驅動程式應該呼叫 NdisMNetPnPEvent 來傳播 NetEventReconfigureNetEventBindList,只有當 NetEventReconfigure 或 NetEventBindList 在非 NULL ProtocolBindingContext 上指出時才會傳播 NetEventReconfigure 或 NetEventBindList 如果在 NULLProtocolBindingContext 上指出 NetEventReconfigureNetEventBindList,中繼驅動程式不應該呼叫 NdisMNetPnPEvent 來傳播事件。

如果中繼驅動程序處理 NetEventReconfigureNetEventBindList,它應該驗證與事件相關聯的任何數據。

中繼驅動程式不應該藉由呼叫 NdisMNetPnPEvent 來傳播 NetEventBindsCompleteNetEventPauseNetEventRestartNetEventPortActivation 或 NetEventPortDeactivation 事件。

NDIS 中繼驅動程式可以針對虛擬迷你埠產生自己的 NDIS 埠事件,其適用於 NetEventPortActivationNetEventPortDeactivation 事件,而該事件會在其 ProtocolNetPnPEvent 函式上接收。

對於所有其他傳播的事件,中繼驅動程式的 ProtocolNetPnPEvent 函式應該傳播 NdisMNetPnPEvent 所傳回的狀態值。

規格需求

需求
最低支援的用戶端 NDIS 6.0 和更新版本支援。
目標平台 Universal
標頭 ndis.h (包括 Ndis.h)
程式庫 Ndis.lib
IRQL PASSIVE_LEVEL
DDI 合規性規則 Irql_Protocol_Driver_Function (ndis) NdisMNetPnPEventInOIDRequest (ndis)

另請參閱

MiniportInitializeEx

MiniportOidRequest

NET_PNP_EVENT_NOTIFICATION

ProtocolNetPnPEvent