Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
USB arabirim ilişkilendirme tanımlayıcısı (IAD), cihazın bir işleve ait arabirimleri gruplandırmasını sağlar. Bu makalede, bir istemci sürücüsünün cihazın bir işlev için IAD içerip içermediğini nasıl belirleyebileceği açıklanmaktadır.
Evrensel Seri Veri Yolu Belirtimi olan düzeltme 2.0, bileşik cihazın tek bir işlev içinde birden fazla arabirimini gruplandırma özelliğini desteklemez. Ancak, USB cihazı çalışma grubu (DWG), birden çok arabirime sahip işlevlere izin veren USB cihaz sınıfları oluşturdu. USB Uygulayıcısı Forumu, arabirimleri gruplandırma mekanizmasını tanımlayan bir mühendislik değişiklik bildirimi (ECN) yayınladı.
ECN, donanım üreticilerinin arabirim gruplamalarını tanımlamasına olanak tanıyan arabirim ilişkilendirme tanımlayıcısı (IAD) olarak adlandırılan bir USB tanımlayıcısı belirtir. IAD kullanma olasılığı en yüksek olan cihaz sınıfları şunlardır:
- USB video sınıfı belirtimi (sınıf kodu - 0x0E)
- USB ses sınıfı belirtimi (sınıf kodu - 0x01)
- USB Bluetooth sınıf belirtimi (sınıf kodu - 0xE0)
IAD'lerin nasıl kullanılacağı
Aşağıdaki alt bölümlerde, IAD'lerin nasıl kullanılacağı hakkında bilgiler açıklanmaktadır.
Üretici yazılımındaki IAD'leri Windows'a bildiren bileşik cihazlar
Bileşik cihaz üreticileri genellikle Evrensel Seri Veri Yolu Belirtimi tarafından belirtildiği gibi cihaz tanımlayıcısında cihaz sınıfı (bDeviceClass), alt sınıf (bDeviceSubClass) ve protokol (bDeviceProtocol) alanlarına sıfır değeri atar. Üretici, her bir arabirimi farklı bir cihaz sınıfı ve protokolüyle ilişkilendirebilir.
USB-IF çekirdek ekibi, işletim sistemine cihaz üretici yazılımında bir veya daha fazla IAD bulunduğunu bildiren özel bir sınıf ve protokol kodu kümesi hazırlar. Cihaz tanımlayıcısı aşağıdaki tabloda görünen değerlere sahip olmalıdır veya işletim sistemi cihazın KIMLIKlerini algılamaz veya cihazın arabirimlerini düzgün bir şekilde gruplandıramaz.
| Cihaz tanımlayıcı alanı | Gerekli değer |
|---|---|
| bDeviceClass | 0xEF |
| bDeviceSubClass | 0x02 |
| bAygıtProtokolü | 0x01 |
Kod değerleri, windows'un IAD'leri desteklemeyen sürümlerini uyarır ve cihazı doğru numaralandıran özel amaçlı bir veri yolu sürücüsü yükler. Cihaz tanımlayıcısında bu kodlar olmadan sistem cihazı numaralandıramayabilir veya cihaz düzgün çalışmayabilir.
Bir cihazda birden fazla IAD olabilir. Her IAD, IAD'nin tanımladığı arabirim grubundaki arabirimlerden hemen önce bulunmalıdır.
IAD'nin işlev sınıfı (bFunctionClass), alt sınıf (bFunctionSubclassClass) ve protokol (bFunctionProtocol) alanları, işlevdeki arabirimleri açıklayan USB cihaz sınıfı tarafından belirtilen değerleri içermelidir.
IAD'nin sınıf ve alt sınıf alanlarının, IAD'nin tanımladığı arabirim koleksiyonundaki arabirimlerin sınıf ve alt sınıf alanlarıyla eşleşmesi gerekmez. Microsoft, koleksiyonun ilk arayüzünün IAD'nin sınıf ve alt sınıf alanlarıyla eşleşen sınıf ve alt sınıf alanlarına sahip olmasını önerir. Aşağıdaki tabloda hangi alanların eşleşmesi gerektiği gösterilir.
| IAD alanı | Karşılık gelen arabirim alanı |
|---|---|
| bFunctionClass | bArayüzSınıfı |
| bFunctionSubclassClass | bArayüzAltSınıfı |
IAD'nin bFirstInterface alanı işlevdeki ilk arabirimin sayısını gösterir. IAD'nin bInterfaceCount alanı, arabirim koleksiyonunda kaç arabirim olduğunu gösterir. IAD arabirim koleksiyonundaki arabirimler bitişik olmalıdır (arabirim numaraları listesinde boşluk olamaz) ve bu nedenle ilk arabirim numarasına sahip bir sayı koleksiyondaki tüm arabirimleri belirtmek için yeterlidir.
IAD içeriğine erişme
İstemci sürücüleri IAD tanımlayıcılara doğrudan erişemez. IAD mühendislik değişiklik bildirimi (ECN), cihazların yapılandırma tanımlayıcısı (GetDescriptor yapılandırması) için konak yazılımından istek aldıklarında döndüreceği yapılandırma bilgilerine IAD'lerin eklenmesi gerektiğini belirtir. Ana bilgisayar yazılımı, bir GetDescriptor isteğiyle doğrudan IAD'leri alamaz.
Ancak, istemci sürücüleri bir USB cihazının üst sürücüsünü cihazın donanım tanımlayıcıları (kimlikler) için sorgulayabilir ve cihazın donanım kimlikleri IAD alanları hakkında ekli bilgiler içerir.
USB arabirimi ilişkilendirme tanımlayıcısı örneği
Bu bölümde, bileşik USB cihazı için açıklayıcı düzen gösterilmektedir. Örnek cihazın iki işlevi vardır:
Video sınıfı fonksiyonu
Arabirim ilişkilendirme tanımlayıcısı (IAD) bu işlevi tanımlar. İşlev iki arabirim içerir: arabirim sıfır (0) ve arabirim bir (1).
Sistem, Kablosuz Mobil İletişim Cihazı Sınıfı Desteği bölümünde açıklandığı gibi işlev için donanım ve uyumlu tanımlayıcılar (kimlikler) oluşturur. İşletim sistemi uygun INF dosyasıyla eşleşdikten sonra sistem video sınıfı sürücü yığınını yükler.
İnsan giriş cihazı (HID) işlevi
Bu işlev yalnızca iki (2) arabirimini içerir.
Sistem, USB Bileşik Cihazlarda Arabirim Koleksiyonlarının Numaralandırması bölümünde açıklandığı gibi işlev için donanım ve uyumlu kimlikler oluşturur. İşletim sistemi uygun INF dosyasıyla eşleşdikten sonra sistem, insan giriş cihazı (HID) sınıf sürücüsünü yükler.
Tanımlayıcı aşağıdaki gibidir:
Cihaz tanımlayıcısı
BYTE bLength 0x12
BYTE bDescriptorType 0x01
WORD bcdUSB 0x0200
BYTE bDeviceClass 0xEF
BYTE bDeviceSubClass 0x02
BYTE bDeviceProtocol 0x01
BYTE bMaxPacketSize0 0x40
WORD idVendor 0x045E
WORD idProduct 0xFFFF
WORD bcdDevice 0x0100
BYTE iManufacturer 0x01
WORD iProduct 0x02
WORD iSerialNumber 0x02
BYTE bNumConfigurations 0x01
Yapılandırma tanımlayıcısı
BYTE bLength 0x09
BYTE bDescriptorType 0x02
WORD wTotalLength 0x...
BYTE bNumInterfaces 0x03
BYTE bConfigurationValue 0x01
BYTE iConfiguration 0x01
BYTE bmAttributes 0x80 // (BUS Powered)
BYTE bMaxPower 0x19 // (50 mA)
Arabirim ilişkilendirme tanımlayıcısı
BYTE bLength 0x08
BYTE bDescriptorType 0x0B
BYTE bFirstInterface 0x00
BYTE bInterfaceCount 0x02
BYTE bFunctionClass 0x0E
BYTE bFunctionSubClass 0x03
BYTE bFunctionProtocol 0x00
BYTE iFunction 0x04
Video denetim arabirimi tanımlayıcısı
BYTE bLength 0x09
BYTE bDescriptorType 0x04
BYTE bInterfaceNumber 0x00
BYTE bAlternateSetting 0x00
BYTE bNumEndpoints 0x01
BYTE bInterfaceClass 0x0E
BYTE bInterfaceSubClass 0x01
BYTE bInterfaceProtocol 0x00
BYTE iInterface 0x05
Video denetimi sınıfına özgü tanımlayıcı
. . . .
. . . .
. . . .
Video denetimi uç nokta tanımlayıcısı
. . . .
. . . .
. . . .
Video akışı arabirimi tanımlayıcısı
BYTE bLength 0x09
BYTE bDescriptorType 0x04
BYTE bInterfaceNumber 0x01
BYTE bAlternateSetting 0x00
BYTE bNumEndpoints 0x01
BYTE bInterfaceClass 0x0E
BYTE bInterfaceSubClass 0x02
BYTE bInterfaceProtocol 0x00
BYTE iInterface 0x06
Video akışı sınıfına özgü tanımlayıcı
. . . .
. . . .
. . . .
Video akışı uç nokta tanımlayıcısı
. . . .
. . . .
. . . .
İnsan giriş cihazları (HID) arabirim tanımlayıcısı
BYTE bLength 0x09
BYTE bDescriptorType 0x04
BYTE bInterfaceNumber 0x02
BYTE bAlternateSetting 0x00
BYTE bNumEndpoints 0x01
BYTE bInterfaceClass 0x03
BYTE bInterfaceSubClass 0x01
BYTE bInterfaceProtocol 0x01
BYTE iInterface 0x07
HID sınıfına özgü tanımlayıcı
. . . .
. . . .
. . . .
HID uç nokta tanımlayıcısı
. . . .
. . . .
. . . .