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 結構中的 狀態 成員設定為 NDIS_STATUS_LOW_POWER_STATE。
呼叫 NdisMSendNetBufferListsComplete 函式,立即拒絕對其 MiniportSendNetBufferLists 函式發出的所有新傳送要求。 驅動程式必須將每個 NET_BUFFER_LIST 結構中的 狀態 成員設定為 NDIS_STATUS_LOW_POWER_STATE。
支援 NDIS 6.30 和更新版本的 NDIS 迷你埠驅動程式也必須執行下列動作:
不要等候透過呼叫其 MiniportReturnNetBufferLists 函式完成暫止接收指示。 此外,迷你埠驅動程式不得變更等候完成之任何封包的 NET_BUFFER_LIST 結構或數據。
處理從 [已暫停] 或 [執行中] 配接器狀態OID_PNP_SET_POWER低功率狀態的要求。 如需這些狀態的詳細資訊,請參閱 Miniport 配接器狀態和作業。
網路適配器轉換至 D3 狀態之前,迷你埠驅動程式必須執行下列工作來關閉迷你埠驅動程式控制下的所有專案:
停用網路適配器上的中斷和 DMA 引擎。
停止網路適配器上的接收引擎。
請勿解除分配或修改與擱置接收指示相關聯的接收描述元和封包緩衝區。
取消所有 NDIS 定時器。
注意 小型埠驅動程式在總線驅動程式將網路適配器轉換為 D3 狀態之後,無法存取網路適配器。
轉換至 Full-Power 州 (D0)
當迷你埠驅動程序處理一組OID_PNP_SET_POWER要求以轉換至全電源狀態時,它必須將網路適配器的接收引擎還原到適配卡轉換至低功率狀態之前,接收引擎所在的相同狀態。
附註 迷你埠驅動程式不得存取或變更與擱置接收指示相關聯的任何接收緩衝區。
只有在 NDIS 在轉換至全電源狀態之前,NDIS 才呼叫迷你埠驅動程式的 MiniportRestart 函式,直到 NDIS 呼叫驅動程式的 MiniportPause 函式時,才能轉換為低功率狀態。
注意 中繼驅動程序必須一律將 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