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 |
---|---|
|
Driver panggilan bukan pemilik kebijakan daya perangkat. |
|
Perangkat sudah kembali ke status kerjanya. |
|
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk