WinUSB mimarisi ve modülleri

WinUSB iki birincil bileşenden oluşur:

  • Winusb.sys, BIR USB cihazının çekirdek modu cihaz yığınındaki protokol sürücülerinin üzerine filtre veya işlev sürücüsü olarak yüklenebilen bir çekirdek modu sürücüsüdür.
  • Winusb.dll , WinUSB işlevlerini kullanıma sunan bir kullanıcı modu DLL'dir. Uygulamalar, cihazın işlev sürücüsü olarak yüklendiğinde Winusb.sys ile iletişim kurmak için bu işlevleri kullanabilir.

Özel işlev sürücüsü gerektirmeyen cihazlar için, Winusb.sys işlev sürücüsü olarak cihazın çekirdek modu yığınına yüklenebilir. Kullanıcı modu işlemleri daha sonra bir dizi cihaz G/Ç denetimi isteği kullanarak veya WinUSB işlevlerini çağırarak Winusb.sys ile iletişim kurabilir.

Aşağıdaki şekilde, birkaç Winusb.sysörneği içeren bir USB sürücü yığını gösterilmektedir.

Kullanıcı ve çekirdek modlarını bölen WinUSB sürücüsü ve cihaz nesne yığınının diyagramı.

Yukarıdaki şekilde, her biri tek bir kayıtlı cihaz arabirimine sahip olan üç cihaz arabirimi sınıfı uygulayan örnek bir WinUSB yapılandırması gösterilmektedir:

  • Winusb.sys örneği 1, kullanıcı modu sürücüsünü (Usboem.dll) destekleyen cihaz arabirimi A'yı kaydeder.
  • Winusb.sys örneği 2, sistem hizmeti (SVCHOST) kullanarak Winusb.dll ile iletişim kuran bir tarayıcı (Usbscan.exe) için kullanıcı modu sürücüsünü destekleyen B cihaz arabirimini kaydeder.
  • Winusb.sys aygıtı örnek 3, bir yazılım güncelleme aracı (Usbfw.exe) destekleyen C cihaz arayüzünü kaydeder.

Tam olarak bir yüklenmiş Winusb.sysörneği vardır. Fiziksel cihaz nesnesi (PDO), uyumsuz bir cihazı (diyagramdaki örnek 1) veya bileşik bir cihazdaki bir arabirimi veya arabirim koleksiyonunu (2. ve 3. örnekler) temsil edebilir. USB kablosuz mobil iletişim cihazı sınıfı (WMCDC) cihazları için PDO, çeşitli arabirim koleksiyonlarını bile temsil edebilir. (WMCDC cihazları için PPO'lar hakkında daha fazla bilgi için bkz . Kablosuz Mobil İletişim Cihazı Sınıfı Desteği.)

Herhangi bir kullanıcı modu uygulaması, WinUSB dinamik bağlantı kitaplığını (Winusb.dll) yükleyip bu modül tarafından kullanıma sunulan WinUSB işlevlerini çağırarak USB yığınıyla iletişim kurabilir.