Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dimulai dengan Windows 8, driver dapat memanggil rutinitas di antarmuka GUID_D3COLD_SUPPORT_INTERFACE untuk menentukan kemampuan D3cold perangkat dan untuk memungkinkan perangkat ini menggunakan D3cold. Dua rutinitas utama dalam antarmuka ini adalah SetD3ColdSupport dan GetIdleWakeInfo.
Antarmuka driver GUID_D3COLD_SUPPORT_INTERFACE menyediakan dukungan untuk substat D3cold dari status daya perangkat D3. D3 dibagi menjadi dua substatus, D3hot dan D3cold. D3 adalah status daya perangkat bertenaga terendah, dan D3cold menggunakan daya yang lebih sedikit daripada D3hot. Perangkat dapat memasukkan D3cold hanya jika perangkat, driver bus induk, dan firmware platform mendukung status ini. Perangkat yang mendukung D3cold dapat masuk dan keluar dari status ini ketika komputer berada dalam status daya sistem S0 (bekerja).
Driver yang merupakan pemilik kebijakan daya (PPO) untuk perangkat memanggil rutinitas dalam antarmuka ini untuk melakukan hal berikut:
- Temukan apakah perangkat, driver bus induk, dan firmware platform mendukung transisi ke substat D3cold.
- Temukan apakah perangkat dapat memberi sinyal peristiwa bangun ke prosesor saat perangkat berada di substat D3cold.
- Aktifkan dan nonaktifkan transisi ke substat D3cold oleh perangkat.
Untuk mengkueri antarmuka ini, driver perangkat mengirim IRP IRP_MN_QUERY_INTERFACE ke bawah tumpukan driver. Untuk IRP ini, driver mengatur parameter input InterfaceType ke GUID_D3COLD_SUPPORT_INTERFACE. Setelah berhasil menyelesaikan IRP, parameter keluaran antarmuka adalah penunjuk ke struktur D3COLD_SUPPORT_INTERFACE. Struktur ini berisi penunjuk ke rutinitas dalam antarmuka.
Untuk informasi selengkapnya tentang status daya perangkat D3cold, lihat Dukungan D3cold dalam Driver.
Sebuah driver memanggil rutin SetD3ColdSupport untuk mengaktifkan dan menonaktifkan transisi perangkat secara dinamis ke D3cold yang dapat terjadi ketika komputer berada di S0. Jika perangkat harus dapat memberi sinyal aktivitas bangun dari status Dx berdaya rendah yang dimasuki perangkat, driver harus mengaktifkan perangkat untuk masuk ke D3cold hanya jika perangkat dapat memberi sinyal aktivitas bangun dari D3cold. Jika tidak, setelah perangkat memasuki D3cold, perangkat mungkin tidak tersedia sampai komputer meninggalkan status S0.
Secara default, sebelum panggilan pertama ke rutinitas SetD3ColdSupport, transisi D3hot-to-D3cold dinonaktifkan. Untuk mengubah default ini sehingga transisi D3hot-ke-D3cold diaktifkan sebelum panggilan pertama SetD3ColdSupport, perangkat dapat menyertakan kedua baris berikut dalam paket driver di bagian DDInstall.HW dari file INF yang menginstal driver.
Include = machine.inf
Needs = PciD3ColdSupported
Subrutin GetIdleWakeInfo memungkinkan driver untuk perangkat menemukan status daya perangkat dari mana perangkat dapat mengirimkan sinyal peristiwa bangun ketika komputer berada dalam status daya sistem tertentu. Pemanggil ke rutinitas ini menentukan status daya sistem sebagai parameter input, dan, sebagai parameter output, rutin melaporkan status daya perangkat bertenaga terendah tempat perangkat dapat menandakan peristiwa tunggu ketika komputer berada dalam status daya sistem yang ditentukan. Misalnya, rutinitas GetIdleWakeInfo dapat memberi tahu driver apakah perangkat dapat memberi sinyal peristiwa bangun dari D3cold saat komputer berada di S0.
GetIdleWakeInfo rutin menyediakan informasi pengaktifan perangkat yang lebih lengkap daripada yang tersedia dari permintaan IRP_MN_QUERY_CAPABILITIES. Permintaan ini, yang didukung semua versi Windows, menyediakan struktur DEVICE_CAPABILITIES yang menjelaskan kemampuan perangkat. DeviceWake anggota struktur ini berisi subset informasi yang tersedia dari GetIdleWakeInfo rutinitas. Anggota ini menunjukkan status daya terendah perangkat dari mana perangkat dapat memberi sinyal kejadian tunggu. Informasi pada anggota struktur ini dijamin akurat hanya jika komputer dalam keadaan daya rendah sistem yang ditunjukkan oleh anggota SystemWake dari struktur tersebut. Jika SystemWake = PowerSystemSleeping3, informasi di DeviceWake diketahui valid untuk S3, mungkin sering valid untuk S1 dan S2, dan bahkan mungkin valid untuk S0.
Namun, sebagai praktik terbaik, driver tidak boleh berasumsi bahwa informasi dalam metode DeviceWake berlaku untuk status daya sistem apa pun selain status yang ditunjukkan oleh SystemWake. Untuk beberapa perangkat, status Dx terendah tempat perangkat dapat memberi sinyal peristiwa bangun bervariasi sesuai dengan apakah komputer dalam status kerja S0 atau dalam status daya rendah (S1, S2, S3, atau S4). Untuk perangkat lain, bus tempat perangkat terhubung dapat menangani sinyal bangun saat komputer berada di S0, tetapi perangkat tidak dapat. Hanya rutinitas GetIdleWakeInfo yang dapat secara akurat menggambarkan kemampuan bangun perangkat dari perangkat-perangkat ini.
Misalnya, Spesifikasi PCI Express Base 3.0 menentukan dua mekanisme terpisah untuk memberi sinyal peristiwa bangun—satu mekanisme digunakan saat tautan PCI Express (bus) diaktifkan, dan yang lain digunakan saat tautan dimatikan. Ketika tautan diaktifkan, perangkat mengirim aliran PM_PME Transaction Layer Packets (TLP) untuk memberi sinyal bahwa perangkat harus berpindah dari status Dx berdaya rendah ke D0. Saat tautan dimatikan, perangkat meminta agar tautan diaktifkan sehingga perangkat dapat mengirim PM_PME TLP. Untuk meminta agar tautan diaktifkan, perangkat mendeklarasikan sinyal WAKE# (untuk faktor bentuk perangkat yang lebih umum) atau menggunakan mekanisme "pemancaran" (kurang umum).
Spesifikasi PCI Express mengharuskan semua perangkat yang mengiklankan kemampuan untuk memberi sinyal peristiwa manajemen daya (PMEs) dari D3cold menerapkan kedua mekanisme bangun perangkat ini, tetapi pengembang driver mungkin perlu mengaktifkan perangkat yang tidak menerapkan mekanisme ini dengan benar.
Jika perangkat dapat mengirimkan TLP PM_PME dengan benar saat tautan diaktifkan, driver dapat mengaktifkan perangkat untuk memasukkannya ke dalam D3hot saat komputer berada di S0. Jika perangkat dapat menegaskan sinyal WAKE# dengan benar untuk mengaktifkan tautan dan kemudian menggunakan PM_PME TLP untuk memulai transisi ke D0, driver dapat mengizinkan perangkat untuk memasuki D3cold ketika komputer berada dalam keadaan S0.
Namun, driver tidak boleh mengaktifkan perangkat untuk memasuki mode D3hot atau D3cold jika firmware sistem (BIOS) tidak dapat menjamin bahwa mekanisme bangun perangkat PCI Express diolah dengan benar oleh platform perangkat keras. Driver dapat memanggil GetIdleWakeInfo rutinitas untuk menemukan apakah firmware mengklaim dukungan untuk mekanisme ini. Jika driver menggunakan Kernel-Mode Driver Framework (KMDF) 1.11 atau yang lebih baru, alternatif yang nyaman untuk memanggil GetIdleWakeInfo adalah mengizinkan metode WdfDeviceAssignS0IdleSettings untuk memungkinkan perangkat tidak aktif dalam status Dx bertenaga terendah tempat perangkat dapat memicu sinyal untuk peristiwa bangun.