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, kerangka kerja manajemen daya (PoFx) memungkinkan driver untuk mengelola status daya komponen individu dalam perangkat. Manajemen daya tingkat komponen ada berdampingan dengan manajemen daya tingkat perangkat. Untuk pengenalan, lihat Ringkasan Kerangka Kerja Manajemen Daya.
Halaman ini menjelaskan POFx API untuk Component-Level Power Management.
Untuk mendaftarkan perangkat yang akan dikelola oleh PoFx, driver memanggil PoFxRegisterDevice rutin. Driver memberikan rutinitas ini sebuah struktur PO_FX_DEVICE yang, di antara data lainnya, berisi sebuah array dari struktur PO_FX_COMPONENT. Setiap elemen dalam array ini menjelaskan status daya Fx komponen dalam perangkat dan atribut setiap status Fx. (Minimal, komponen yang tidak mendukung manajemen daya tingkat komponen hanya mengimplementasikan status F0.) Atribut status daya Fx tertentu dalam komponen tertentu dijelaskan oleh struktur PO_FX_COMPONENT_IDLE_STATE, yang berisi nilai berikut:
- Latensi transisi, yang merupakan waktu yang diperlukan untuk melakukan transisi dari status Fx ini ke status F0 (sepenuhnya aktif).
- Persyaratan residensi, yang merupakan durasi waktu yang harus dihabiskan oleh komponen dalam keadaan Fx ini untuk membuat transisi ke keadaan tersebut berharga.
- Daya nominal, yang merupakan daya yang dikonsumsi oleh komponen dalam status Fx ini.
PoFx menggunakan informasi ini (selain input dan dependensi dari seluruh sistem lainnya) untuk membuat keputusan cerdas tentang status daya Fx mana yang harus dimiliki komponen pada waktu tertentu tersebut. PoFx harus menyeimbangkan dua tujuan yang bersaing. Pertama, komponen yang menganggur harus dikonfigurasi untuk mengonsumsi daya sesedikit mungkin. Kedua, komponen harus siap untuk beralih dari status Fx berdaya rendah ke F0 cukup cepat untuk mempertahankan penampilan perangkat yang selalu menyala dan selalu terhubung.
Manajemen daya tingkat komponen hanya dapat dilakukan ketika perangkat berada dalam status daya D0 (sepenuhnya aktif). Ketika perangkat berada dalam status daya D1 (hampir menyala), D2 (hampir mati), atau D3, perangkat tidak dapat diakses. Ketika perangkat dalam status D0, hanya komponen yang secara aktif digunakan driver yang perlu tetap dalam status F0. Komponen diam berpotensi beralih ke status Fx berdaya rendah untuk mengurangi konsumsi daya.
Saat perangkat dalam status daya D0, driver mengikuti protokol sederhana untuk mengaktifkan manajemen daya tingkat komponen. Ketika driver perlu mengakses komponen, driver memanggil PoFxActivateComponent rutin untuk meminta akses ke komponen. Jika komponen berada dalam status Fx berdaya rendah ketika panggilan ini terjadi, PoFx memulai transisi ke status F0 dan memberi tahu driver ketika transisi ini selesai. Driver kemudian dapat mengakses komponen. Ketika driver tidak perlu lagi mengakses komponen, driver memanggil rutin PoFxIdleComponent untuk memberi tahu PoFx. Menanggapi panggilan ini, PoFx berpotensi dapat mengalihkan komponen ke status Fx berdaya rendah.
Komponen yang dapat diakses berada dalam kondisi aktif . Komponen yang tidak dapat diakses berada dalam kondisi menganggur . Untuk melacak aksesibilitas komponen dalam perangkat, PoFx mempertahankan jumlah referensi aktivasi pada setiap komponen. Panggilan PoFxActivateComponent menambah hitungan pada komponen yang ditentukan sebanyak satu, dan panggilan PoFxIdleComponent mengurangi hitungan sebanyak satu.
Jika panggilan PoFxActivateComponent meningkatkan jumlah dari nol ke satu, PoFx memulai transisi dari kondisi diam ke kondisi aktif, dan memberi tahu driver ketika transisi ini selesai. Jika PoFxActivateComponent terjadi saat komponen sudah dalam kondisi aktif, komponen tetap dalam kondisi aktif dan driver tidak menerima pemberitahuan.
Jika pemanggilan PoFxIdleComponent mengurangi hitungan dari satu ke nol, PoFx memulai transisi dari kondisi aktif ke kondisi siaga, dan memberitahukan pengemudi ketika transisi ini selesai. Jika PoFxIdleComponent memanggil mengurangi jumlah tetapi jumlahnya tetap nonzero, komponen tetap dalam kondisi aktif dan driver tidak menerima pemberitahuan.
Hitungan referensi aktivasi dengan mudah menangani situasi di mana dua atau beberapa jalur kode pemrograman dalam driver yang sama mungkin perlu mengakses secara bersamaan komponen yang sama dalam perangkat. Dengan mempertahankan jumlah ini, PoFx memungkinkan berbagai bagian driver untuk secara independen mempertahankan akses ke komponen tanpa mengharuskan driver untuk mengelola akses ke komponen secara terpusat.
Kondisi aktif/menganggur komponen adalah satu-satunya cara yang dapat diandalkan bagi driver untuk menentukan apakah komponen dapat diakses. Komponen yang berada dalam status daya F0 tetapi berada dalam kondisi menganggur mungkin akan beralih ke status Fx berdaya rendah.
Komponen yang berada dalam kondisi aktif selalu dalam status F0. Komponen tidak dapat meninggalkan F0 hingga memasuki kondisi diam. Komponen yang berada dalam kondisi siaga mungkin berada di F0 atau dalam status daya rendah Fx. Jika komponen berada dalam status Fx berdaya rendah saat panggilan PoFxActivateComponent memulai transisi dari kondisi diam ke kondisi aktif, PoFx harus terlebih dahulu mengalihkan komponen ke F0 sebelum komponen dapat memasuki kondisi aktif.