OID_PNP_SET_POWER
OID_PNP_SET_POWER OID 通知迷你埠驅動程式,其基礎網路介面卡將會轉換為 InformationBuffer中指定的裝置電源狀態。 裝置電源狀態會指定為下列其中一個 NDIS_DEVICE_POWER_STATE 值:
- NdisDeviceStateD0
- NdisDeviceStateD1
- NdisDeviceStateD2
- NdisDeviceStateD3
OID_PNP_SET_POWER要求前面可能會有 OID_PNP_QUERY_POWER 要求。
從 NDIS 6.30 開始,如果下列條件成立,NDIS 將不會在電源狀態轉換期間暫停並重新啟動驅動程式堆疊中的 NDIS 驅動程式:
基礎迷你埠驅動程式會在 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 結構中設定 NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND 旗標。 驅動程式會在其呼叫 NdisMSetMiniportAttributes 函式時,傳遞這個結構的指標。
附加至迷你埠驅動程式的所有過度篩選驅動程式都支援 NDIS 6.30 或更新版本的 NDIS。
系結至迷你埠驅動程式的所有過度通訊協定驅動程式都支援 NDIS 6.30 或更新版本的 NDIS。
轉換至Low-Power狀態 (D1-D3)
當迷你埠驅動程式處理一組OID_PNP_SET_POWER要求以轉換為低電源狀態時,它必須執行下列動作:
針對指定的網路裝置電源狀態,完整準備網路介面卡。 由迷你埠驅動程式執行以完成此作業的工作與裝置相關。
等候對 NdisMIndicateReceiveNetBufferLists 函式的呼叫傳回。
等候網路介面卡處理的傳送要求完成。 完成後,迷你埠驅動程式必須呼叫 NdisMSendNetBufferListsComplete 函 式。 驅動程式應該將每個NET_BUFFER_LIST結構中的Status成員設定為適當的NDIS_STATUS_Xxx值。
呼叫 NdisMSendNetBufferListsComplete 函式來完成所有擱置的傳送要求。 驅動程式必須將每個NET_BUFFER_LIST結構中的Status成員設定為NDIS_STATUS_LOW_POWER_STATE。
呼叫NdisMSendNetBufferLists 函數,立即拒絕對其MiniportSendNetBufferLists函式提出的所有新傳送要求。 驅動程式必須將每個NET_BUFFER_LIST結構中的Status成員設定為NDIS_STATUS_LOW_POWER_STATE。
支援 NDIS 6.30 和更新版本 NDIS 的迷你埠驅動程式也必須執行下列動作:
不要等候等候完成透過呼叫 其 MiniportReturnNetBufferLists 函式的暫止接收指示。 此外,迷你埠驅動程式不得變更等候完成之任何封包的 NET_BUFFER_LIST 結構或資料。
從 [已暫停] 或 [執行中] 配接器狀態處理對低電源狀態的要求OID_PNP_SET_POWER。 如需這些狀態的詳細資訊,請參閱 Miniport 配接器狀態和作業。
網路介面卡轉換至 D3 狀態之前,迷你埠驅動程式必須執行下列工作,以關閉迷你埠驅動程式控制下的所有專案:
停用網路介面卡上的中斷和 DMA 引擎。
停止網路介面卡上的接收引擎。
請勿解除配置或修改與擱置接收指示相關聯的接收描述元和封包緩衝區。
取消所有 NDIS 計時器。
注意 在匯流排驅動程式將網路介面卡轉換為 D3 狀態之後,迷你埠驅動程式無法存取網路介面卡。
轉換至 Full-Power State (D0)
當迷你埠驅動程式處理一組OID_PNP_SET_POWER要求以轉換至全電源狀態時,它必須將網路介面卡的接收引擎還原為轉接器轉換至低電源狀態之前,接收引擎所在的相同狀態。
注意 迷你埠驅動程式不得存取或變更與擱置接收指示相關聯的任何接收緩衝區。
只有在 NDIS 在轉換至低電源狀態之前呼叫驅動程式的 MiniportPause函式時,NDIS 才會呼叫迷你埠驅動程式的MiniportRestart函式。
注意 中繼驅動程式必須一律 將NDIS_STATUS_SUCCESS 傳回OID_PNP_SET_POWER查詢。 中繼驅動程式絕對不應該將OID_PNP_SET_POWER要求傳播至基礎迷你埠驅動程式。
傳回狀態碼
迷你埠驅動程式的 MiniportOidRequest 函式會針對此要求傳回下列其中一個值:
詞彙 | 描述 |
---|---|
NDIS_STATUS_SUCCESS |
迷你埠驅動程式已成功完成要求。 |
NDIS_STATUS_PENDING |
迷你埠驅動程式會以非同步方式完成要求。 在迷你埠驅動程式完成所有處理之後,它必須藉由呼叫 NdisMOidRequestComplete 函式來成功要求,並傳遞 Status 參數的NDIS_STATUS_SUCCESS。 |
NDIS_STATUS_NOT_ACCEPTED |
迷你埠驅動程式已重設。 |
規格需求
版本 |
支援 NDIS 5.1 和 NDIS 6.0 和更新版本。 |
標頭 |
Ntddndis.h (包含 Ndis.h) |
另請參閱
NdisMIndicateReceiveNetBufferLists