Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma popisuje, jak napsat univerzální ovladač windows pomocí rozhraní KMDF (Kernel-Mode Driver Framework). Začnete se šablonou sady Microsoft Visual Studio a pak nasadíte a nainstalujete ovladač do samostatného počítače.
Požadavky
Postupujte podle kroků k instalaci Windows Driver Kit (WDK). Nástroje pro ladění pro systém Windows jsou zahrnuty při instalaci sady WDK.
Nainstalujte visual Studio 2022. Při instalaci sady Visual Studio 2022 vyberte úlohu Desktopový vývoj pomocí C++ a poté pod Jednotlivé komponenty přidejte:
- Nejnovější knihovny MSVC v143 – VS 2022 C++ ARM64/ARM64EC s mitigací Spectre
- MSVC v143 – VS 2022 C++ x64/x86 knihovny s ochranou proti Spectre (nejnovější)
- C++ ATL pro nejnovější nástroje sestavení v143 se zmírněním zranitelností Spectre (ARM64/ARM64EC)
- C++ ATL pro nejnovější nástroje sestavení v143 s mitigacemi Spectre (x86 a x64)
- C++ MFC pro nejnovější nástroje sestavení v143 s ochranou proti útoku Spectre (ARM64/ARM64EC)
- C++ MFC pro nejnovější nástroje sestavení v143 s ochranami proti Spectre (x86 & x64)
- Windows Driver Kit
Vytvoření a sestavení ovladače
Otevřete Microsoft Visual Studio. V nabídce Soubor zvolte Nový > Projekt.
V dialogovém okně
Vytvořit nový projekt vyberteC++ v levém rozevíracím seznamu, v prostředním rozevíracím seznamu zvolte Windows a v pravém rozevíracím seznamu zvolteOvladač .V seznamu typů projektů vyberte ovladač režimu jádra (KMDF). Vyberte Další.
Spropitné
Pokud v sadě Visual Studio nemůžete najít šablony projektů ovladačů, rozšíření WDK Visual Studio se nenainstalovalo správně. Pokud chcete tento problém vyřešit, spusťte instalační program sady Visual Studio, vyberte Změnit, přidejte Windows Driver Kits na kartě Jednotlivé komponenty a vyberte Změnit.
V dialogovém okně Konfigurovat nový projekt zadejte do pole Název projektu "KmdfDriver".
Poznámka
Při vytváření nového ovladače KMDF nebo UMDF musíte vybrat název ovladače, který má 32 znaků nebo méně. Tento limit délky je definován v wdfglobals.h.
Do pole Umístění zadejte adresář, do kterého chcete nový projekt vytvořit.
Zaškrtněte Umístit řešení a projekt do stejného adresáře a vyberte Vytvořit.
Visual Studio vytvoří jeden projekt a řešení. Můžete je zobrazit v Průzkumníku řešení okně. (Pokud se okno Průzkumníka řešení nezobrazuje, v nabídce Zobrazení zvolte Průzkumníka řešení.) Řešení má projekt ovladače s názvem KmdfDriver. Pokud chcete zobrazit zdrojový kód ovladače, otevřete některý ze souborů v části Zdrojové soubory. Driver.c a Device.c jsou dobrým místem, kde začít.
V okně Průzkumníka řešení vyberte a podržte (nebo klikněte pravým tlačítkem myši) KmdfDrivera zvolte Vlastnosti. Přejděte na Vlastnosti konfigurace > Nastavení ovladače > Obecnéa všimněte si, že cílová platforma je ve výchozím nastavení Univerzální.
Pokud chcete vytvořit ovladač, zvolte Řešení sestavení z nabídky Sestavení. Microsoft Visual Studio zobrazuje průběh sestavení v okně Výstup. (Pokud okno Výstup není viditelné, v nabídce Zobrazení zvolte Výstup.)
Ověřte, že výstup sestavení zahrnuje:
> Driver is 'Universal'.
Až ověříte, že se řešení úspěšně vytvořilo, můžete Visual Studio zavřít.
Pokud chcete zobrazit integrovaný ovladač, přejděte v Průzkumníku souborů do složky KmdfDriver a pak x64\Debug\KmdfDriver. Adresář obsahuje následující soubory:
- KmdfDriver.sys – soubor ovladače režimu jádra
- KmdfDriver.inf – informační soubor, který systém Windows používá při instalaci ovladače
Nasazení ovladače
Při testování a ladění ovladače obvykle ladicí program a ovladač běží na samostatných počítačích. Počítač, na kterém běží ladicí program, se nazývá hostitelský počítača počítač, na kterém běží ovladač, se nazývá cílový počítač. Cílový počítač se nazývá také testovací počítač . Další informace o ladění ovladačů naleznete v tématu Nástroje ladění pro systém Windows.
Zatím jste pomocí sady Visual Studio vytvořili ovladač na hostitelském počítači. Teď potřebujete nakonfigurovat cílový počítač.
Postupujte podle pokynů v Zřízení počítače pro nasazení a testování ovladačů (WDK 10).
Spropitné
Když použijete postup automatického zřízení cílového počítače pomocí síťového kabelu, poznamenejte si port a klíč. Použijete je později v kroku ladění. V tomto příkladu použijeme jako port
50000 a jako klíč použijeme1.2.3.4. Ve scénářích ladění skutečných ovladačů doporučujeme použít klíč vygenerovaný KDNET. Další informace o tom, jak použít KDNET k vygenerování náhodného klíče, najdete v tématu Debug Drivers – Step by Step Lab (Režim jádra Sysvad).
Na hostitelském počítači otevřete řešení v sadě Visual Studio. Ve složce KmdfDriver můžete dvakrát kliknout na soubor řešení KmdfDriver.sln.
V okně průzkumníka Řešení vyberte a podržte (nebo klikněte pravým tlačítkem) projekt KmdfDriver a zvolte Vlastnosti.
V okně Stránky vlastností balíčku KmdfDriver v levém podokně přejděte na Vlastnosti konfigurace > Instalace ovladače > Nasazení.
Zkontrolujte Odebrat předchozí verze ovladačů před nasazením.
Pro název vzdáleného počítačevyberte název počítače, který jste nakonfigurovali pro testování a ladění. V tomto cvičení používáme počítač s názvem MyTestComputer.
Vyberte možnost aktualizace ovladače ID hardwarua zadejte ID hardwaru pro váš ovladač. V tomto cvičení je ID hardwaru Root\KmdfDriver. Vyberte OK.
Poznámka
V tomto cvičení ID hardwaru neidentifikuje skutečnou část hardwaru. Identifikuje imaginární zařízení, které bude mít místo ve stromu zařízení jako potomka kořenového uzlu. Pro reálný hardware nezvolte Aktualizovat ovladač ID hardwaru, místo toho zvolte Nainstalovat a ověřit. ID hardwaru se zobrazí v souboru s informacemi o ovladači (INF). V okně Průzkumníka řešení
přejděte na Soubory ovladačů KmdfDriver a poklikejte na KmdfDriver.inf. ID hardwaru se nachází ve složce [Standard.NT$ARCH$].[Standard.NT$ARCH$] %KmdfDriver.DeviceDesc%=KmdfDriver_Device, Root\KmdfDriver
V nabídce Sestavení zvolte Nasadit řešení. Visual Studio automaticky zkopíruje soubory potřebné k instalaci a spuštění ovladače do cílového počítače. Může to trvat minutu nebo dvě.
Při nasazení ovladače se soubory ovladačů zkopírují do složky %Systemdrive%\drivertest\drivers na testovacím počítači. Pokud se během nasazování něco nepovede, můžete zkontrolovat, jestli se soubory zkopírují do testovacího počítače. Ověřte, zda jsou soubory .inf, .cat, test cert a .sys a všechny další potřebné soubory přítomny ve složce %systemdrive%\drivertest\drivers.
Další informace o nasazení ovladačů naleznete v tématu Nasazení ovladače do testovacího počítače.
Instalace ovladače
S ovladačem KmDF nasazeným do cílového počítače teď ovladač nainstalujete. Když jste dříve zřídili cílový počítač s Visual Studiem pomocí automatické možnosti , Visual Studio nastavilo cílový počítač tak, aby v rámci procesu zřizování spouštěl testem podepsané ovladače. Teď stačí nainstalovat ovladač pomocí nástroje DevCon.
Na hostitelském počítači přejděte do složky Nástroje v instalaci WDK a vyhledejte nástroj DevCon. Podívejte se například do následující složky:
C:\Program Files (x86)\Windows Kits\10\Tools\x64\devcon.exe
Zkopírujte nástroj DevCon do vzdáleného počítače.
Na cílovém počítači nainstalujte ovladač tak, že přejdete do složky obsahující soubory ovladačů a potom spustíte nástroj DevCon.
Tady je obecná syntaxe nástroje devcon, který použijete k instalaci ovladače:
devcon instalovat <soubor INF><ID hardwaru>
Soubor INF vyžadovaný pro instalaci tohoto ovladače je KmdfDriver.inf. Soubor INF obsahuje ID hardwaru pro instalaci binárního souboru ovladače KmdfDriver.sys. Vzpomeňte si, že ID hardwaru umístěné v souboru INF je Root\KmdfDriver.
Otevřete okno příkazového řádku jako správce. Přejděte do složky balíčku ovladače a zadejte tento příkaz:
devcon nainstalujte soubor kmdfdriver.inf root\kmdfdriver
Pokud se zobrazí chybová zpráva o tom, že devcon není rozpoznán, zkuste přidat cestu k nástroji devcon. Pokud jste ji například zkopírovali do složky v cílovém počítači s názvem C:\Tools, zkuste použít následující příkaz:
c:\tools\devcon install kmdfdriver.inf root\kmdfdriver
Zobrazí se dialogové okno označující, že testovací ovladač je nepodepsaný. Chcete-li pokračovat, vyberte Nainstalovat tento ovladač.
Ladění ovladače
Teď, když jste nainstalovali ovladač KMDF na cílový počítač, připojíte debugger vzdáleně z hostitelského počítače.
Na hostitelském počítači otevřete okno příkazového řádku jako správce. Přejděte do adresáře WinDbg.exe. Použijeme x64version WinDbg.exe ze sady Windows Driver Kit (WDK), která byla nainstalována jako součást instalace sady Windows Kit. Tady je výchozí cesta k WinDbg.exe:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
Spusťte WinDbg, abyste se pomocí následujícího příkazu připojili k ladicí relaci jádra v cílovém počítači. Hodnota portu a klíče by měla být stejná jako hodnota, kterou jste použili ke zřízení cílového počítače. Pro port použijeme 50000 a pro klíč použijeme 1.2.3.4, hodnoty, které jsme použili v kroku nasazení. Příznak k označuje, že se jedná o zasedání ladění jádra.
WinDbg -k net:port=50000,key=1.2.3.4
V nabídce Ladění zvolte Přerušit. Ladicí program na hostitelském počítači vstoupí do režimu ladění na cílovém počítači. V okně Příkaz ladicího programu můžete zobrazit příkazový řádek ladění jádra: kd>.
V tomto okamžiku můžete experimentovat s ladicím programem zadáním příkazů na kd> příkazovém řádku. Můžete například vyzkoušet tyto příkazy:
Pokud chcete, aby cílový počítač opět běžel, vyberte Přejít z nabídky Ladění nebo stiskněte klávesu "g" a poté stiskněte klávesu Enter.
Pokud chcete zastavit ladicí relaci, zvolte Odpojit laděný program v nabídce Ladění.
Důležitý
Před ukončením ladicího programu se ujistěte, že pomocí příkazu "go" necháte cílový počítač běžet znovu, nebo cílový počítač přestane reagovat na vstup myši a klávesnice, protože stále mluví s ladicím programem.
Podrobný návod k procesu ladění ovladačů najdete v tématu Ladění univerzálních ovladačů – podrobné cvičení (Echo Kernel-Mode).
Další informace o vzdáleném ladění naleznete v tématu vzdálené ladění pomocí WinDbg.
Použití rozhraní DMF (Driver Module Framework)
DMF jako architektura umožňuje vytvářet objekty WDF označované jako moduly DMF. Kód pro tyto moduly DMF lze sdílet mezi různými ovladači. Kromě toho DMF spojuje knihovnu modulů DMF, které jsme vyvinuli pro naše ovladače a které podle našeho názoru mohou poskytnout hodnotu ostatním vývojářům ovladačů.
DMF nenahrazuje WDF. DMF je druhá architektura, která se používá s WDF. Vývojář využívající DMF stále používá WDF a všechny jeho primitivy k zápisu ovladačů zařízení.
Další informace najdete v tématu Driver Module Framework (DMF).