Hallo, ich habe eine Frage, da ich aus den ganzen Recherchen nicht ganz schlau geworden bin. Wenn ich einen Treiber habe und dieser z.B. unter Windows 7 funktionieren soll, so muss dieser signiert werden. Kann ich dann nicht einfach mit einem Zertifikat (z.B. von Verisign) diesen Treiber selbst signieren? Wann muss der Treiber das WHQL Programm durchlaufen (also "Windows Logo Kit" und "Winqual Submission Tool" usw.) ? Viele Grüße & Danke Peter
Ein "Authenticode"-Zertifikat sollte reichen, hier hat MS ne Liste wo man die Dinger herkriegen kann: http://www.microsoft.com/whdc/driver/install/drvsign/crosscert.mspx ...und in dem hier verlinkten Word-Dokument wird ein Treiber beispielhaft signiert: http://www.microsoft.com/whdc/driver/install/drvsign/kmcs-walkthrough.mspx Bei WHQL brauchst Du von verisign eine "Microsoft Authenticode Code Signing Digital ID" um dich da überhaupt registrieren zu können. Laut diesem Link: https://winqual.microsoft.com/Help/obtaining_a_verisign_class_3_digital_id.htm kostet das 99 Dollar für ein Jahr. Dazu kommen dann pro eingereichtem Treiber mindestens 250 Dollar pro Betriebssystem-Gruppe (d.h. für Vista x86 und x64 einmal 250 Dollar, für die Win7-Editionen bezahlt man dann wieder 250 Dollar) Vorteile von wqhl: - Die Treiber werden dann von Microsoft signiert - Du hast Zugriff auf WER ("Windows Error Reporting"), d.h. wenn dein Treiber irgendwo Crashs verursacht hast du darüber glaube ich Zugriff auf Crashdumps - Du darfst das z.B. das Windows7-Logo auf deine Produktverpackung pappen - Treiber/Treiber-Updates kannst du über Windows-Update verteilen (Achtung: Mehr Halbwissen als Wissen - Null Praxiserfahrung ;D)
Hallo, ich habe in unserer Firma bereits für einen Treiber die WHQL-Zertifizierung erfolgreich durchgeführt und bin gerade erneut dabei, einen weiteren Treiber vorzubereiten. Die Ausführungen von "bluppdidupp" sind korrekt, auch die genannten Kosten sind so aktuell. Wir hatten jedoch die Möglichkeit, im Rahmen der verwendeten "unclassified certification" unseren Treiber in einem Rutsch von XP bis Win7 zertifizieren zu lassen und mußten lediglich für die 32-bit und 64-bit Ausprägungen je einmal zahlen. Ein Cross-Zertifikat bestätigt lediglich die Herkunft eines Treibers, statt "Dieser Treiber stammt aus einer nicht-vertrauenswürdigen Quelle" kommt dann die Meldung "Dieser Treiber stammt vom vertrauenswürdigen Hersteller XYZ". Das gibt zwar dem Anwender eine gewisse Sicherheit, ist aber für Kernel-Treiber unter 64-Bit-Windows nicht ausreichend. Diese verlangen für solche Treiber zwingend die WHQL-Signatur, es sei denn, man schaltet die Signaturprüfung temporär, z.B. durch F8 beim Booten, aus. Die WHQL-Signatur setzt voraus, daß man einen Account auf der Winqual-Site einrichtet und auch ein Codesigning-Zertifikat besitzt. Weiterhin muß der Treiber die Windows Logo Kit Testsuite in der zugehörigen Kategorie und für die geplanten Plattformen erfolgreich absolviert haben. Dadurch wird die Kompatibilität zu Windows überprüft. Solange hier einzelne Tests fehlschlagen, ist der Treiber nicht zertifizierungsfähig. Je nach Treiberkategorie ist dieser Testvorgang mehr oder weniger aufwändig und produziert manchmal heftige Nacharbeiten am Treiber oder Endgerät. Für das aktuell zu entwickelnde Gerät, das über USB und einen entsprechenden zertifizierten Treiber angesprochen werden soll, führen wir bereits mit der Entwicklung der Betriebssystemschicht auf dem Endgerät parallel die WHQL-Tests durch, um frühstmöglich die Kompatibilität sicherzustellen. Gruß...Maschinist
Hallo, ich muss leider nochmals eine naive Frage stellen. Wie kann man feststellen ob ein Treiber ein "Kernel Mode" Treiber ist oder im "User Mode" läuft? Gibt es hier eine einfache Möglichkeit? Dann könnten wir uns die WHQL-Zertifizierung sparen und unsere Treiber "einfach" selbst signieren und somit die installation des Treiber auch ohne Probleme unter x64 zulassen. Vielen Dank & Grüße Peter
User Mode Treiber? Alles, was auf eine Hardware zugreift, braucht einen Kernel Mode Treiber. Es sei denn, du nutzt irgendwas, wofür das System bereits Treiber mitbringt. HID oder CDC oder sowas. Wobei bei CDC wiederum das Inf-File signiert sein muss. Wenn du HW-Treiber für Windows x64 anbieten willst, kommst du um die Signierung nicht herum.
Christian R. schrieb: > User Mode Treiber? Alles, was auf eine Hardware zugreift, braucht einen > Kernel Mode Treiber. Mit "Vista" wurde das UMDF (user mode driver framework) eingeführt: http://www.microsoft.com/whdc/driver/wdf/umdf.mspx
1 | UMDF supports the creation of user-mode drivers that support |
2 | protocol-based or serial-bus-based devices. Such drivers handle |
3 | the same types of I/O requests as kernel-mode drivers and are |
4 | installed by INF files, just as kernel-mode drivers are. |
[Nachtrag] Q. Which device classes and driver models does UMDF support? A. UMDF supports devices such as the following: • Digital cameras • Portable media players • Cell phones • Personal digital assistants (PDAs) • Other devices, such as USB, that connect to a protocol bus You can implement a UMDF driver for any device that can comply with the constraints listed in "What are the constraints on user-mode drivers?" You can also implement software-only drivers with UMDF. Q. What are the constraints on user-mode drivers? A. A user-mode driver cannot directly access hardware or use kernel-mode resources. For example, it cannot perform direct memory access (DMA), handle interrupts, or allocate memory from nonpaged pool. However, you might be able to split your driver so that part of it runs in kernel mode and part of it runs in user mode. A user-mode driver cannot have kernel-mode clients because Windows does not allow calls from kernel mode to user mode. The majority of drivers for input, display, and most network and storage devices cannot be migrated to user mode because they have kernel-mode clients. For the same reason, user-mode drivers must be at the top of the device stack; they cannot attach to the middle of the stack. However, a stack can contain more than one user-mode driver; that is, a user-mode driver can have user-mode children.
Ja, ich weiß schon, was ein User Mode Driver ist. Das Fragezeichen bezog sich eher da drauf, ob das für das Gerät überhaupt passend ist. Das geht ja nicht für alle Geräte. Soweit ich verstanden hab, geht das für generische Geräteklassen, für die Windows dann einen eigenen Kernel-Treiber mitbringt, zum Beispiel die USB Geschichten: "...such as USB, that connect to a protocol bus". Für Geräte, die nicht da rein fallen, brauchts dann einen (signierten) Kernel Mode Driver: "A user-mode driver cannot directly access hardware..."
Mein Beitrag bezog sich nicht primär auf Dich, sondern sollte Peter die Chance geben, herauszufinden, was für einen Treiber er dort verwendet; schließlich fragte er nach Unterscheidungsmöglichkeiten zwischen Kernelmode- und Usermode-Treiber. Peter sollte wissen, für was für eine Art von Gerät sein Treiber ist ...
Moin! Da ich selber auf der Suche nach Antworten zur WHQL Signierungspflicht von Kerneltreibern auf diesen Beitrag gestoßen bin, will ich für die Nachfolger nochmal festhalten: Entgegen der häufig anzutreffenden Annahme, ein Kerneltreiber für Vista/7 x64 muss zwingend WHQL signiert sein, reicht es völlig, den Treiber mit einem "Microsoft Autenticode" Zertifikat zu signieren. Dieses bekommt man schon ab 200€ pro Jahr bei globalsign.com und kann für unbegrenzt viele Treiber benutzt werden. Wie man seinen Treiber signiert, ist im Dokument "KMCS Walkthrough" von Microsoft nachzulesen. Gruß
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.