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事件。
重要
如果 NetPnpEventNotification 的 VPortId 欄位設定為與NDIS_DEFAULT_VPORT_ID不同的值,則 Flags 成員必須設定為 NET_EVENT_FLAGS_VPORT_ID_VALID,VPortId 才會生效。
傳回值
NdisMNetPnPEvent 可以傳回下列專案:
傳回碼 | Description |
---|---|
|
過度處理驅動程式已成功處理 隨插即用 或電源管理事件。 |
|
過度處理驅動程式無法取得必要的系統資源,以滿足指定的 隨插即用 或電源管理事件。 |
|
NDIS 因為某些輸入參數無效,所以呼叫失敗。 |
|
NDIS 6.0 和更新版本的通訊協定驅動程式不得傳回此狀態。 NDIS 5。不支援 隨插即用 的 x 通訊協定驅動程式可以傳回此狀態,以回應 NetEventSetPower,指出 NDIS 應該從基礎配接器解除系結。 |
|
NDIS 失敗要求,因為 NetEventPortActivation 或 NetEventPortDeactivation PnP 事件中指定了無效的 NDIS 埠。 |
|
NDIS 失敗要求,因為 NDIS 埠處於無效的埠狀態。 埠是在 NetEventPortActivation 或 NetEventPortDeactivation PnP 事件中指定。 |
|
過度裝載驅動程式嘗試處理傳播的 隨插即用 或電源管理事件失敗。 |
只有在傳播的事件是 NetEventQueryPower 或 NetEventQueryRemoveDevice 事件時,傳回值才會顯著。 對於所有其他傳播的事件,傳回值一律NDIS_STATUS_SUCCESS。
如果事件為 NetEventPortActivation 且呼叫失敗,則呼叫端不應在接收指示或狀態指示中使用相關聯的埠。
備註
任何迷你埠驅動程式都可以呼叫 NdisMNetPnPEvent 來產生 NetEventPortActivation 和 NetEventPortDeactivation 事件。 只有中繼驅動程式可以發出其他事件通知。
- 其 MiniportOidRequest 函式不得呼叫 NdisMNetPnPEvent。
- 如果 MiniportOidRequest 函式傳回 OID 要求的NDIS_STATUS_PENDING,NDIS 驅動程式必須先呼叫 NdisMNetPnPEvent ,直到呼叫 NdisMOidRequestComplete 完成 OID 要求之後。
如果傳播的事件是 NetEventQueryPower 或 NetEventQueryRemoveDevice,中繼驅動程式必須檢查 NdisMNetPnPEvent 所傳回的NDIS_STATUS值。 如果傳回的狀態NDIS_STATUS_SUCCESS,中繼驅動程式應該處理事件,然後從其 ProtocolNetPnPEvent 函式傳回NDIS_STATUS_SUCCESS。 如果傳回的狀態不是NDIS_STATUS_SUCCESS,中繼驅動程序應該從其 ProtocolNetPnPEvent 函式傳回報告狀態,而不需進一步處理。
中繼驅動程式如何處理其 ProtocolNetPnPEvent 函式所接收的 NetEventSetPower,取決於指定的裝置電源狀態。 如果指定的裝置電源狀態為 NdisDeviceStateD0,中繼驅動程式應該處理事件,然後呼叫 NdisMNetPnPEvent。 針對任何其他指定的裝置電源狀態,中繼驅動程序應該先呼叫 NdisMNetPnPEvent ,然後處理事件。
中繼驅動程式應該呼叫 NdisMNetPnPEvent 來傳播 NetEventReconfigure 或 NetEventBindList,只有當 NetEventReconfigure 或 NetEventBindList 在非 NULL ProtocolBindingContext 上指出時才會傳播 NetEventReconfigure 或 NetEventBindList。 如果在 NULLProtocolBindingContext 上指出 NetEventReconfigure 或 NetEventBindList,中繼驅動程式不應該呼叫 NdisMNetPnPEvent 來傳播事件。
如果中繼驅動程序處理 NetEventReconfigure 或 NetEventBindList,它應該驗證與事件相關聯的任何數據。
中繼驅動程式不應該藉由呼叫 NdisMNetPnPEvent 來傳播 NetEventBindsComplete、NetEventPause、NetEventRestart、NetEventPortActivation 或 NetEventPortDeactivation 事件。
NDIS 中繼驅動程式可以針對虛擬迷你埠產生自己的 NDIS 埠事件,其適用於 NetEventPortActivation 或 NetEventPortDeactivation 事件,而該事件會在其 ProtocolNetPnPEvent 函式上接收。
對於所有其他傳播的事件,中繼驅動程式的 ProtocolNetPnPEvent 函式應該傳播 NdisMNetPnPEvent 所傳回的狀態值。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | Universal |
標頭 | ndis.h (包括 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | Irql_Protocol_Driver_Function (ndis) 、 NdisMNetPnPEventInOIDRequest (ndis) |