共用方式為


IWDFDevice2::StopIdle 方法 (wudfddi.h)

[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上,UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用 UMDF 使用者入門。]

StopIdle 方法會通知架構裝置必須放置在其運作中 (D0) 電源狀態。

語法

HRESULT StopIdle(
  [in] BOOL WaitForD0
);

參數

[in] WaitForD0

布爾值,指出 StopIdle 何時會傳回。 如果 為 TRUE,它只會在指定的裝置進入 D0 裝置電源狀態之後傳回。 如果 為 FALSE,方法會立即傳回。

傳回值

如果作業成功,StopIdle 會傳回S_OK。 否則,方法可能會傳回下列其中一個值:

傳回碼 Description
HRESULT_FROM_NT (STATUS_INVALID_DEVICE_REQUEST)
呼叫驅動程式不是裝置的 電源原則擁有者
HRESULT_FROM_NT (STATUS_PENDING)
裝置已經回到其工作狀態。
HRESULT_FROM_NT (STATUS_POWER_STATE_INVALID)
發生裝置失敗,且裝置無法進入其 D0 電源狀態。
 

這個方法可能會傳回 Winerror.h 包含的其他其中一個值。

備註

如果您的裝置在閑置時可以進入低電源狀態,您的驅動程式可能需要偶爾呼叫 StopIdle ,讓裝置回到其運作 (D0) 狀態,或防止裝置進入低電源狀態。

當裝置閑置且架構將 I/O 要求放在裝置的電源管理 I/O 佇列中時,驅動程式不需要呼叫 StopIdle 。 此外,當裝置閑置且偵測到喚醒訊號時,驅動程式不需要呼叫 StopIdle 。 在這兩種情況下,架構會要求總線驅動程式將裝置的電源狀態還原至 D0。

雖然驅動程式通常不需要在處理從電源管理的 I/O 佇列取得的 I/O 要求時呼叫 StopIdle ,但允許呼叫。 不過,從電源管理的 I/O 佇列處理 I/O 要求時,驅動程式不得將 WaitForD0 參數設定為 TRUE

如果您的驅動程式必須存取裝置,因為驅動程式在受電源管理的 I/O 佇列之外收到要求,所以必須呼叫 StopIdle 。 例如,您的驅動程式可能支援驅動程式定義的介面或需要存取裝置的 WMI 要求。 在此情況下,您必須確定裝置在驅動程式存取裝置之前處於其工作狀態,而且裝置會維持在其工作狀態,直到驅動程式完成存取裝置為止。

如果系統處於運作中狀態 (S0) 狀態,則呼叫 StopIdle 會強制裝置進入其運作 (D0) 狀態。 裝置會保持運作狀態,直到驅動程式呼叫 IWDFDevice2::ResumeIdle 為止,當架構保持閑置狀態時,該架構可以將裝置置於低電源狀態。

第一次呼叫驅動程式的 IPnpCallback::OnD0Entry 回呼方法之前,請勿呼叫 StopIdle

只有在系統處於運作中狀態 (S0) 狀態時, 對 StopIdle 的呼叫才能將閒置裝置還原到其工作狀態。 如果當驅動程式呼叫 StopIdle 並將 WaitForD0 參數設定為 TRUE 時,系統進入低電源狀態時,函式不會傳回,直到系統回到其 S0 狀態為止。

每次對 StopIdle 的呼叫最後都必須接聽 ResumeIdle 的呼叫,否則如果裝置再次變成閑置狀態,則永遠不會回到低電源狀態。 StopIdle 的呼叫可以巢狀化,因此 ResumeIdle 的呼叫數目必須等於 StopIdle 的呼叫數目。

如需 StopIdleResumeIdle 的詳細資訊,請參閱 支援 UMDF 型驅動程式中的閒置 Power-Down

範例

下列程式代碼範例會取得 IWDFDevice2 介面,然後呼叫 StopIdleStopIdle 會在裝置進入 D0 裝置電源狀態之後傳回。

    IWDFDevice2 *pIWDFDevice2 = NULL;
    HRESULT hr;

    //
    // Get a pointer to the IWDFDevice2 interface.
    //
    hr = pIWDFDevice->QueryInterface(__uuidof(IWDFDevice2),
                                     (void**) &pIWDFDevice2);
    if (SUCCEEDED(hr)) 
    {
        hr = pIWDFDevice2->StopIdle(TRUE);
    }
...
   SAFE_RELEASE(pIWDFDevice2);

規格需求

需求
終止支援 在 UMDF 2.0 和更新版本中無法使用。
目標平台 桌面
最低UMDF版本 1.9
標頭 wudfddi.h (包含 Wudfddi.h)
Dll WUDFx.dll

另請參閱

IWDFDevice2

IWDFDevice2::ResumeIdle