Sumber Daya Perangkat Keras

Sumber daya perangkat keras adalah jalur bus yang dapat ditetapkan dan dapat diatasi yang memungkinkan perangkat periferal dan prosesor sistem berkomunikasi satu sama lain. Sumber daya perangkat keras biasanya mencakup alamat port I/O, vektor interupsi, dan blok alamat memori relatif bus.

Sebelum sistem dapat berkomunikasi dengan instans perangkat, manajer PnP harus menetapkan sumber daya perangkat keras ke instans perangkat berdasarkan pengetahuan sumber daya mana yang tersedia dan instans perangkat mana yang mampu digunakan. Sumber daya ditetapkan ke setiap simpul perangkat di pohon perangkat (dengan asumsi bahwa perangkat yang diwakili membutuhkan sumber daya dan sumber daya tersebut tersedia). Manajer PnP melacak sumber daya perangkat keras menggunakan daftar, yang terkait dengan simpul perangkat. Ini menggunakan dua jenis daftar:

Daftar Persyaratan Sumber Daya
Perangkat biasanya dirancang untuk beroperasi dalam berbagai penetapan sumber daya. Misalnya, perangkat mungkin hanya memerlukan satu vektor interupsi, tetapi mungkin dapat menggunakan salah satu dari berbagai vektor. Untuk setiap instans perangkat, manajer PnP mempertahankan daftar persyaratan sumber daya yang menentukan semua rentang sumber daya perangkat keras tempat perangkat dapat beroperasi. Nama daftar berasal dari fakta bahwa manajer PnP diperlukan untuk memilih sumber daya dari daftar ini saat menetapkannya ke perangkat.

Kode mode kernel menentukan daftar persyaratan sumber daya menggunakan struktur IO_RESOURCE_REQUIREMENTS_LIST (baik sebagai input ke rutinitas sistem atau sebagai respons terhadap RUNP). Kode mode pengguna menentukan daftar persyaratan sumber daya menggunakan struktur manajer konfigurasi PnP sebagai input ke fungsi manajer konfigurasi PnP.

Daftar Sumber Daya
Ketika manajer PnP menetapkan sumber daya ke perangkat, manajer PnP melacak penugasan ini dengan membuat daftar sumber daya yang ditetapkan untuk setiap instans perangkat. Daftar ini dapat disebut daftar penetapan sumber daya, tetapi nama tersebut biasanya disingkat ke daftar sumber daya. Manajer PnP dapat mengubah konten daftar sumber daya saat perangkat ditambahkan atau dihapus dari sistem dan sumber daya kemudian direalokasikan. (Sumber daya juga dapat ditetapkan oleh PnP BIOS. Selain itu, perangkat lunak penginstalan—menggunakan file INF atau input pengguna—dapat memaksa manajer PnP untuk menetapkan sumber daya tertentu ke perangkat.)

Kode mode kernel menentukan daftar sumber daya dengan menggunakan struktur CM_RESOURCE_LIST (baik sebagai input ke rutinitas sistem atau sebagai respons terhadap RUNP). Kode mode pengguna menentukan daftar sumber daya menggunakan struktur manajer konfigurasi PnP sebagai input ke fungsi manajer konfigurasi PnP.

Manajer PnP menyimpan daftar persyaratan sumber daya dan daftar sumber daya di registri, tempat mereka dapat dilihat dengan menggunakan Regedit.exe. Driver dapat mengakses daftar ini secara tidak langsung melalui rutinitas Plug and Play dan Plug and Play IRP Minor. Aplikasi mode pengguna dapat menggunakan fungsi manajer konfigurasi PnP. (Driver dan aplikasi tidak boleh langsung mengakses daftar ini menggunakan fungsi registri karena format penyimpanan dapat berubah dalam rilis mendatang.)

Konfigurasi Logis

Daftar persyaratan sumber daya dan daftar sumber daya berisi satu atau beberapa konfigurasi logis. Setiap konfigurasi logis mengidentifikasi berbagai sumber daya yang dapat diterima, atau sekumpulan sumber daya tertentu untuk instans perangkat tertentu. Selain itu, setiap konfigurasi logis untuk instans perangkat milik salah satu jenis konfigurasi logis. Jenis konfigurasi tercantum di bawah ini. Beberapa konfigurasi logis, dari jenis yang sama atau berbeda, mungkin ditetapkan ke setiap instans perangkat.

Jenis Konfigurasi Logis untuk Daftar Persyaratan Sumber Daya

Konfigurasi Dasar
Daftar persyaratan sumber daya yang mengidentifikasi rentang sumber daya yang disediakan oleh perangkat Plug and Play. Driver harus mengembalikan daftar ini ketika menerima IRP_MN_QUERY_RESOURCE_REQUIREMENTS IRP. (Konfigurasi dasar untuk perangkat non-PnP dapat dijelaskan dalam file INF. Dalam hal ini, perangkat lunak penginstalan perangkat membaca file INF dan memanggil fungsi manajer konfigurasi PnP untuk membuat daftar persyaratan.)

Konfigurasi Terfilter
Daftar persyaratan sumber daya yang telah disediakan ke tumpukan driver, mungkin dimodifikasi, lalu dikembalikan oleh tumpukan driver, sebagai respons terhadap IRP IRP_MN_FILTER_RESOURCE_REQUIREMENTS . Manajer PnP menggunakan konfigurasi yang difilter yang dihasilkan sebagai dasar untuk mengalokasikan sumber daya.

Mengesampingkan Konfigurasi
Daftar persyaratan sumber daya yang mengambil alih konfigurasi dasar. Biasanya, alat penginstal perangkat membuat konfigurasi penimpaan jika file INF perangkat menyertakan bagian INF DDInstall.LogConfigOverride. Konfigurasi penimpaan tidak dihapus jika perangkatnya dihapus secara fisik dari sistem.

Jenis Konfigurasi Logis untuk Daftar Sumber Daya

Konfigurasi Boot
Daftar sumber daya yang mengidentifikasi sumber daya yang ditetapkan ke instans perangkat saat sistem di-boot. (Untuk perangkat PnP, ini adalah konfigurasi yang disediakan oleh BIOS; untuk perangkat non-PnP, sumber daya ini mungkin dipilih oleh jumper pada kartu.) Driver harus mengembalikan daftar sumber daya ini saat menerima IRP_MN_QUERY_RESOURCES IRP. (Konfigurasi boot dapat kosong sebagian jika BIOS tidak dapat menentukan semua sumber daya yang digunakan oleh perangkat.) Manajer PnP dapat mengubah daftar ini jika perangkat dihapus atau dimulai ulang. Untuk perangkat non-PnP, jenis konfigurasi ini dapat digunakan alih-alih konfigurasi paksa, dalam hal ini memiliki prioritas konfigurasi yang lebih rendah daripada konfigurasi paksa yang setara. Hanya satu konfigurasi boot yang dapat ada untuk setiap instans perangkat.

Konfigurasi Paksa
Daftar sumber daya yang mengidentifikasi sumber daya yang harus digunakan instans perangkat. Konfigurasi paksa mencegah manajer PnP menetapkan sumber daya lain ke instans perangkat. Alat penginstal perangkat dapat membuat konfigurasi paksa berdasarkan informasi yang terkandung dalam INF atau diterima dari pengguna. Konfigurasi paksa tidak dihapus jika perangkatnya dihapus secara fisik dari sistem. Hanya satu konfigurasi paksa yang dapat ada untuk setiap instans perangkat.

Konfigurasi yang Dialokasikan
Daftar sumber daya yang mengidentifikasi sumber daya yang saat ini digunakan oleh instans perangkat. Hanya satu konfigurasi yang dialokasikan yang dapat ada untuk setiap instans perangkat.

Driver perangkat bertanggung jawab untuk menentukan konfigurasi dasar perangkat yang kompatibel dengan PnP, konfigurasi terfilter, dan konfigurasi boot, dan untuk mengembalikan informasi tersebut sebagai respons terhadap RUNP yang dikirim oleh manajer PnP. (Untuk informasi selengkapnya, lihat Menambahkan Perangkat PnP ke Sistem yang Sedang Berjalan.) Perangkat lunak penginstalan driver dapat membuat konfigurasi penggantian, konfigurasi paksa, dan, untuk perangkat non-PnP, konfigurasi boot. Manajer PnP mempertahankan konfigurasi yang dialokasikan setiap instans perangkat.

Prioritas ditetapkan untuk setiap konfigurasi saat dibuat. Jika manajer PnP menemukan bahwa instans perangkat telah diberi beberapa konfigurasi logis dengan jenis yang sama, ia mencoba menggunakan yang memiliki prioritas tertinggi terlebih dahulu. Jika konfigurasi tersebut menghasilkan konflik sumber daya, konfigurasi akan mencoba konfigurasi dengan prioritas lebih rendah berikutnya. (Untuk daftar prioritas konfigurasi, lihat CM_Add_Empty_Log_Conf.)