Metode IWDFDevice2::StopIdle (wudfddi.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.]

Metode StopIdle menginformasikan kerangka kerja bahwa perangkat harus ditempatkan dalam status daya (D0) yang berfungsi.

Sintaks

HRESULT StopIdle(
  [in] BOOL WaitForD0
);

Parameter

[in] WaitForD0

Nilai Boolean yang menunjukkan kapan StopIdle akan kembali. Jika TRUE, itu hanya kembali setelah perangkat yang ditentukan memasuki status daya perangkat D0. Jika FALSE, metode akan segera kembali.

Nilai kembali

StopIdle mengembalikan S_OK jika operasi berhasil. Jika tidak, metode mungkin mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
HRESULT_FROM_NT(STATUS_INVALID_DEVICE_REQUEST)
Driver panggilan bukan pemilik kebijakan daya perangkat.
HRESULT_FROM_NT(STATUS_PENDING)
Perangkat sudah kembali ke status kerjanya.
HRESULT_FROM_NT(STATUS_POWER_STATE_INVALID)
Terjadi kegagalan perangkat dan perangkat tidak dapat memasuki status daya D0-nya.
 

Metode ini mungkin mengembalikan salah satu nilai lain yang dikandung Winerror.h.

Keterangan

Jika perangkat Anda dapat memasuki status daya rendah saat diam, driver Anda mungkin harus sesekali memanggil StopIdle untuk membawa perangkat kembali ke status berfungsi (D0) atau untuk mencegahnya memasuki status daya rendah.

Driver Anda tidak perlu memanggil StopIdle saat perangkat diam dan kerangka kerja menempatkan permintaan I/O dalam antrean I/O yang dikelola daya perangkat. Selain itu, driver Anda tidak perlu memanggil StopIdle saat perangkat diam dan mendeteksi sinyal bangun. Dalam kedua kasus ini, kerangka kerja meminta driver bus untuk memulihkan status daya perangkat ke D0.

Meskipun driver biasanya tidak perlu memanggil StopIdle saat menangani permintaan I/O yang mereka peroleh dari antrean I/O yang dikelola daya, panggilan diizinkan. Namun, driver tidak boleh mengatur parameter WaitForD0 ke TRUE saat menangani permintaan I/O dari antrean I/O yang dikelola daya.

Driver Anda memang harus memanggil StopIdle jika harus mengakses perangkat karena permintaan yang diterima driver di luar antrean I/O yang dikelola daya. Misalnya, driver Anda mungkin mendukung antarmuka yang ditentukan driver atau permintaan WMI yang memerlukan akses perangkat. Dalam hal ini, Anda harus memastikan bahwa perangkat dalam keadaan berfungsi sebelum driver mengakses perangkat, dan bahwa perangkat tetap dalam status kerjanya sampai driver selesai mengakses perangkat.

Memanggil StopIdle memaksa perangkat ke status berfungsi (D0), jika sistem dalam status berfungsi (S0). Perangkat tetap dalam status kerjanya sampai driver memanggil IWDFDevice2::ResumeIdle, di mana kerangka kerja dapat menempatkan perangkat dalam status daya rendah jika tetap diam.

Jangan panggil StopIdle sebelum kerangka kerja memanggil metode panggilan balik IPnpCallback::OnD0Entry driver untuk pertama kalinya.

Panggilan ke StopIdle dapat memulihkan perangkat diam ke status kerjanya hanya jika sistem dalam status berfungsi (S0). Jika sistem memasuki status daya rendah saat driver memanggil StopIdle dengan parameter WaitForD0 diatur ke TRUE, fungsi tidak kembali sampai sistem kembali ke status S0-nya.

Setiap panggilan ke StopIdle akhirnya harus diikuti oleh panggilan ke ResumeIdle, atau perangkat tidak akan pernah kembali ke status daya rendah jika kembali menganggur. Panggilan ke StopIdle dapat ditumpuk, sehingga jumlah panggilan ke ResumeIdle harus sama dengan jumlah panggilan ke StopIdle.

Untuk informasi selengkapnya tentang StopIdle dan ResumeIdle, lihat Mendukung Power-Down Menganggur di Driver berbasis UMDF.

Contoh

Contoh kode berikut mendapatkan antarmuka IWDFDevice2 lalu memanggil StopIdle. StopIdle akan kembali setelah perangkat memasuki status daya perangkat 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);

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1.9
Header wudfddi.h (termasuk Wudfddi.h)
DLL WUDFx.dll

Lihat juga

IWDFDevice2

IWDFDevice2::ResumeIdle