Gambaran umum ID kontainer

Dalam keluarga sistem operasi Windows, perangkat pada dasarnya adalah kumpulan instans perangkat fungsional, yang masing-masing mewakili titik akhir fungsional yang memungkinkan beberapa bentuk komunikasi ke perangkat.

Istilah simpul perangkat (devnode) mengacu pada tumpukan driver untuk titik akhir fungsional tersebut, selain properti yang menjelaskan titik akhir dan status terkaitnya. Misalnya, perangkat multifungsi yang mendukung fungsionalitas printer, pemindai, dan faks dapat memiliki beberapa devnode, satu untuk setiap titik akhir fungsional di perangkat.

Sebelum Windows 7, setiap titik akhir fungsional memiliki devnode yang terkait dengannya. Komponen platform Windows dan aplikasi pihak ketiga dapat meminta devnode untuk status dan informasi perangkat, dan dapat berkomunikasi dengan perangkat keras perangkat melalui antarmuka yang diekspos titik akhir fungsional.

Untuk perangkat fungsi tunggal, satu devnode berisi semua informasi yang berkaitan dengan titik akhir fungsional perangkat. Demikian pula, perangkat multifungsi memiliki beberapa devnode yang terkait dengan setiap titik akhir fungsional perangkat. Namun, Windows tidak dapat mengenali bahwa sekelompok devnodes berasal dari perangkat fisik yang sama. Setiap devnode yang termasuk dalam perangkat multifungsi yang sama tidak menyertakan informasi identifikasi apa pun yang memungkinkan manajer Plug and Play (PnP) untuk mengelompokkan beberapa devnode sebagai satu perangkat. Oleh karena itu, tidak mungkin untuk memiliki tampilan holistik perangkat dan fungsi yang disediakan satu perangkat fisik.

Dimulai dengan Windows 7, sistem operasi menggunakan ID baru (ID kontainer) untuk mengelompokkan satu atau beberapa devnode yang berasal dari dan milik setiap instans perangkat fisik tertentu. ID kontainer adalah properti dari setiap devnode, dan ditentukan melalui nilai pengidentifikasi unik global (GUID).

Setiap instans perangkat fisik yang diinstal di komputer memiliki ID kontainer yang unik. Semua devnode yang mewakili fungsi pada instans perangkat fisik tersebut memiliki ID kontainer yang sama. Gambar berikut menunjukkan contoh hubungan tersebut.

diagram yang mengilustrasikan id kontainer untuk devnode perangkat multifungsi.

Ada satu ID kontainer dengan arti khusus untuk pengemudi bus: NULL_GUID yang didefinisikan sebagai: {00000000-0000-0000-0000-000000000000}.

Secara umum, jangan mengembalikan NULL_GUID sebagai kasus default saat melaporkan ID kontainer. Sebagai gantinya, jangan menangani IRP_MN_QUERY_ID untuk kasus BusQueryContainerIDs dan biarkan PnP menerapkan logika defaultnya.

Saat mengembalikan NULL_GUID sebagai ID kontainer, driver bus menyatakan kepada PnP bahwa perangkat tidak boleh menjadi bagian dari kontainer apa pun, sehingga mengembalikan NULL_GUID hanya sesuai dalam kasus yang sangat khusus. Misalnya, devnode seperti perangkat volume dapat menjangkau beberapa disk dalam beberapa kontainer tetapi bukan milik kontainer apa pun. Perangkat semacam itu akan memiliki DEVPKEY_Device_BaseContainerId sama dengan NULL_GUID, dan tidak akan memiliki DEVPKEY_Device_ContainerId sama sekali.

Selain kasus yang sangat khusus, pengemudi bus tidak boleh mengembalikan NULL_GUID ketika melaporkan perangkat keras dan driver bus harus menjaga terhadap perangkat keras yang rusak yang melaporkan nilai NULL_GUID dari bus mereka. Dalam kasus ini, driver bus harus memperlakukan ini sebagai kesalahan perangkat, atau memperlakukannya seolah-olah perangkat tidak melaporkan nilai.