Cihaz arabirimi sınıflarına genel bakış

Kullanıcı modu kodunun G/Ç isteklerini yönlendirebileceği fiziksel, mantıksal veya sanal bir cihazın herhangi bir sürücüsü, kullanıcı modu istemcileri için bir ad sağlamalıdır. Kullanıcı modu uygulaması (veya başka bir sistem bileşeni), adı kullanarak G/Ç isteğinde bulunduğu cihazı tanımlar.

NT tabanlı işletim sisteminin Windows NT 4.0 ve önceki sürümlerinde, sürücüler cihaz nesnelerini adlandırdı ve ardından bu adlar ile kullanıcının gördüğü Win32 mantıksal ad arasında kayıt defterinde sembolik bağlantılar kurdu.

Windows 2000'den başlayarak, sürücüler cihaz nesnelerini adlandırmaz. Bunun yerine, cihaz arabirimlerinicihaz arabirimi sınıflarına göre gruplandırılmış şekilde kullanırlar. Cihaz arabirimi sınıfı, cihaz ve sürücü işlevlerini diğer sürücüler ve kullanıcı modu uygulamaları dahil olmak üzere diğer sistem bileşenlerine sunmanın bir yoludur. Sürücü, kullanıcı modu G/Ç isteklerinin gönderilebileceği her cihaz nesnesi için cihaz arabirimi örneğini cihaz arabirimi sınıfının kaydedebilir ve etkinleştirebilir. Her cihaz arabirimi sınıfı, örneğin belirli bir G/Ç sözleşmesi gibi, bu sınıftaki herhangi bir cihaz arabiriminin desteklemesi veya temsil etmesi gereken kavramsal bir işlevi temsil etmelidir.

Her cihaz arabirimi sınıfı bir GUID ile ilişkilendirilir. Sistem, cihaza özgü üst bilgi dosyalarındaki ortak cihaz arabirimi sınıfları için GUID'leri tanımlar. Satıcılar ek cihaz arabirimi sınıfları oluşturabilir.

Örneğin, üç farklı fare cihazı türü, biri USB bağlantı noktası, ikincisi seri bağlantı noktası ve üçüncüsü kızılötesi bağlantı noktası üzerinden bağlansa bile aynı cihaz arabirimi sınıfının üyesi olan cihaz arabirimlerini kaydedebilir. Her sürücü, cihazını arabirim sınıfı GUID_DEVINTERFACE_MOUSE üyesi olarak kaydeder. Bu GUID, Ntddmou.h başlık dosyasında tanımlanır.

Sürücüler, denetledikleri bir cihaz için, cihazın ve sürücünün işlevselliğini desteklediği sayıda cihaz arabirimi sınıfı için cihaz arabirimlerini kaydedebilir ve etkinleştirebilir. Örneğin, bağlanmış bir diskin sürücüsü hem disk arabirimi sınıfına (GUID_DEVINTERFACE_DISK) hem de bağlanmış cihaz sınıfına (MOUNTDEV_MOUNTED_DEVICE_GUID) kaydolmalıdır.

Bir sürücü bir cihaz arabirimicihaz arabirimi sınıfının örneğini kaydettirdiğinde, G/Ç yöneticisi cihazı ve cihaz arabirimi sınıfı GUID'sini sembolik bir bağlantı adıyla ilişkilendirir. Bu simgesel bağlantının bir sürücü veya uygulamanın G/Ç gönderebilmesi için sürücünün cihaz arabirimini etkinleştirmesi gerekir. Bağlantı adının kaydı sistem başlangıçları arasında devam eder, ancak cihaz arabirimi cihazın her numaralandırılmasında sürücü tarafından etkinleştirilmelidir. Belirli bir cihaz arabirimi sınıfını kullanan bir uygulama, bu sınıftaki cihaz arabirimlerinin örneklerini sorgulayabilir ve arabirimi destekleyen cihazları temsil eden sembolik bağlantı adlarının listesini alabilir. Uygulama daha sonra G/Ç istekleri için hedef olarak sembolik bağlantı adını kullanabilir.

Cihaz arabirimlerini sürücülerin bir IRP_MN_QUERY_INTERFACE isteğine yanıt olarak dışarı aktarabileceği arabirimlerle karıştırmayın. Bu IRP, çekirdek modu sürücüleri arasında yordam giriş noktalarını geçirmek için kullanılır.