windows-driver.rst
changeset 1153 ee88b4d14151
parent 899 7b4265c8d324
child 1154 26b6fca0cf39
equal deleted inserted replaced
1152:8436c285c139 1153:ee88b4d14151
       
     1 .. -*- coding: utf-8; -*-
       
     2 
       
     3 =====================
       
     4  Driver for Windows.
       
     5 =====================
       
     6 
       
     7 About.
       
     8 ======
       
     9 
       
    10   microsoft.public.development.device.drivers
       
    11                 NNTP driver development group at msnews.microsoft.com:119
       
    12   http://www.microsoft.com/communities/newsgroups/list/en-us/default.aspx
       
    13                 Web-interface to NNTP forum
       
    14 
       
    15 Which version exist?
       
    16 ====================
       
    17 
       
    18  - VxD
       
    19                 Windows 3.x and Windows 9x
       
    20  - Windows Driver Model (WDM)
       
    21                 Windows 98, Windows 98 Second Edition, Windows Me, Windows
       
    22                 2000, Windows XP, Windows Server 2003 and Windows Vista (for
       
    23                 backwards compatibility)
       
    24  - Windows Driver Foundation (WDF)
       
    25                 Windows 2000 and later
       
    26 
       
    27   http://en.wikipedia.org/wiki/VxD
       
    28                 VxD
       
    29   http://en.wikipedia.org/wiki/Windows_Driver_Model
       
    30                 WDM.
       
    31   http://en.wikipedia.org/wiki/Windows_Driver_Foundation
       
    32                 WDF.
       
    33 
       
    34 Msinfo32.exe.
       
    35 =============
       
    36 
       
    37 Windows XP/2003 System Information Tool.
       
    38 
       
    39  * http://support.microsoft.com/kb/308549
       
    40 
       
    41 Sysinternals.
       
    42 =============
       
    43 
       
    44 WinObj.
       
    45 -------
       
    46 
       
    47 Winobj is a program that lets you browse the Windows NT Object Manager
       
    48 namespace.
       
    49 
       
    50 devtree.
       
    51 --------
       
    52 
       
    53 The DeviceTree V2.12 utility is a Windows XP/Server 2003 utility written by
       
    54 OSR, that allows the user the ability to display the drivers and devices
       
    55 loaded in 2 different views. The first view Driver View the user sees a list
       
    56 of all the drivers loaded in kernel mode and all the devices that those
       
    57 drivers have created. In the second view PnP View the user sees a list of all
       
    58 the devices in the system from that of Plug and Play Manager (PnP).
       
    59 
       
    60 Microsoft DDK.
       
    61 ==============
       
    62 
       
    63 DevCon.
       
    64 -------
       
    65 
       
    66 Supported device classes::
       
    67 
       
    68   cmd> devcon.exe classes
       
    69 
       
    70 Which files used by specific driver (with "*" prints list of files for all
       
    71 drivers)::
       
    72 
       
    73   cmd> devcon.exe driverfiles *
       
    74 
       
    75 Device ID (names included)::
       
    76 
       
    77   cmd> devcon.exe hwids *
       
    78 
       
    79 Device status (running/stoped)::
       
    80 
       
    81   cmd> devcon.exe status *
       
    82 
       
    83 USB Command Verifier.
       
    84 =====================
       
    85 
       
    86 All USB peripherals are required to pass the Device Framework tests in order
       
    87 to gain certification.
       
    88 
       
    89  * http://www.usb.org/developers/tools/
       
    90 
       
    91 Files.
       
    92 ======
       
    93 
       
    94 Windows 98 SE/ME.
       
    95 -----------------
       
    96 
       
    97  * .386
       
    98    VxD driver under Windows 3.x
       
    99  * .vxd
       
   100    VxD driver under Windows 95
       
   101 
       
   102 Windows NT (2000/XP/2003).
       
   103 --------------------------
       
   104 
       
   105  * .inf
       
   106    Stored in %Windir%\Inf.
       
   107  * .pnf
       
   108    Precompiled INF File. Stored in %Windir%\Inf.
       
   109 
       
   110 Driver type.
       
   111 ============
       
   112 
       
   113 CDC.
       
   114 ----
       
   115 
       
   116   http://support.microsoft.com/kb/837637
       
   117                 How to use or to reference the Usbser.sys driver from
       
   118                 universal serial bus (USB) modem .inf files.
       
   119 
       
   120 Driver class.
       
   121 =============
       
   122 
       
   123   http://msdn.microsoft.com/en-us/library/ms791134.aspx
       
   124                 System-Supplied Device Setup Classes
       
   125   http://msdn.microsoft.com/en-us/library/ff538820.aspx
       
   126                 Drivers for the Supported USB Device Classes
       
   127 
       
   128 How list drivers?
       
   129 =================
       
   130 
       
   131 Set environment devmgr_show_nonpresent_devices to 1 and run Device Manager,
       
   132 select "View" --> "Show hidden devices".
       
   133 
       
   134 How install drivers?
       
   135 ====================
       
   136 
       
   137 dpinst.
       
   138 -------
       
   139 
       
   140 Driver Install Frameworks (DIFx) tools allow installing driver under following
       
   141 OSes:
       
   142 
       
   143   Windows Server 2008 R2
       
   144   Windows 7
       
   145   Windows Server 2008
       
   146   Windows Vista
       
   147   Windows Server 2003
       
   148   Windows XP
       
   149   Windows 2000
       
   150 
       
   151 It consist from API (from library, DIFxAPI, DIFxApp) and command line tool
       
   152 (DPInst) which can be found in WDK and their licence allow redistribution.
       
   153 
       
   154   http://www.microsoft.com/whdc/driver/install/DIFxFAQ.mspx
       
   155                 Information about Driver Install Frameworks Tools
       
   156   http://msdn.microsoft.com/ru-ru/magazine/cc302206%28en-us%29.aspx
       
   157                 If you update any drivers in Device Manager
       
   158                 %windir%\system32\ReinstallBackups folder is created with
       
   159                 backups of the old drivers.
       
   160 
       
   161 devcon.
       
   162 -------
       
   163 
       
   164 This command-line specifies the location of the driver package's INF file (c:\toaster\toastpkg.inf)
       
   165 and the toaster device's hardware identifier (ID), which is specified within the INF file::
       
   166 
       
   167   cmd# devcon.exe install c:\toaster\toastpkg.inf {b85b7c50-6a01-11d2-b841-00c04fad5171}\mstoaster
       
   168 
       
   169 See:
       
   170 
       
   171   http://msdn.microsoft.com/en-us/library/ff553642.aspx
       
   172                 Using the DevCon Tool to Install a Driver Package
       
   173 
       
   174 How debug Windows drivers.
       
   175 ==========================
       
   176 
       
   177 To detect whether a driver loaded, check the status of the device in Device Manager.
       
   178 
       
   179 SetupAPI logs information about device installation in a plain-text log file
       
   180 that you can use to verify the installation of a device and to troubleshoot
       
   181 device installation problems.
       
   182 
       
   183 For Windows XP/2003 check::
       
   184 
       
   185   %SystemRoot%/setupapi.log
       
   186 
       
   187 For Windows Vista and later versions of Windows check::
       
   188 
       
   189   %SystemRoot%\inf\SetupAPI.dev.log     installation events in the device
       
   190   %SystemRoot%\inf\SetupAPI.app.log     application installation
       
   191 
       
   192 See:
       
   193 
       
   194   http://msdn.microsoft.com/en-us/library/ff553497.aspx
       
   195                 Troubleshooting Install and Load Problems with Signed Driver Packages
       
   196   http://www.microsoft.com/whdc/devtools/debugging/debugtips.mspx
       
   197                 Improve Driver Debuggability
       
   198   http://msdn.microsoft.com/en-us/library/ff551063.aspx
       
   199                 Debugging Tools for Windows
       
   200   http://msdn.microsoft.com/en-us/library/ff543450%28VS.85%29.aspx
       
   201                 Checked and Free Build Differences
       
   202 
       
   203 Driver signing.
       
   204 ===============
       
   205 
       
   206 Type of signature:
       
   207 
       
   208  * Signed by a Windows signing authority.
       
   209  * Signed by a trusted publisher.
       
   210  * Signed by an untrusted publisher.
       
   211  * Signed by a publisher of unknown trust.
       
   212  * Altered.
       
   213  * Unsigned.
       
   214 
       
   215   http://msdn.microsoft.com/en-us/library/ff544703.aspx
       
   216                 Type of signature and performed action.
       
   217   http://www.microsoft.com/whdc/driver/install/drvsign/best-practices.mspx
       
   218                 Code-Signing Best Practices.
       
   219   http://msdn.microsoft.com/en-us/library/ff550764.aspx
       
   220                 Device Installation Signing Requirements.
       
   221   http://www.microsoft.com/whdc/winlogo/categories.mspx
       
   222                 Windows Logo Program Test Categories.
       
   223   http://www.microsoft.com/whdc/driver/install/drvsign/crosscert.mspx
       
   224                 Root Authority Cross-Certificate List
       
   225 
       
   226 Tools for Signing Drivers.
       
   227 ==========================
       
   228 
       
   229 'certmgr.msc' present in Windows 2000 and upper.
       
   230 
       
   231 From Windows SDK/WDK::
       
   232 
       
   233   CertMgr Inf2Cat MakeCat MakeCert Pvk2Pfx SignTool
       
   234 
       
   235 See:
       
   236 
       
   237   http://msdn.microsoft.com/en-us/library/ff552958.aspx
       
   238                 Tools for Signing Drivers
       
   239 
       
   240 Invoking a Device Properties Dialog Box from a Command-line Prompt.
       
   241 ===================================================================
       
   242 
       
   243 You need get device-instance-ID-parameter::
       
   244 
       
   245   cmd# rundll32.exe devmgr.dll,DeviceProperties_RunDLL /DeviceID "ACPI\PNP0F03\4&1A8C8C2E&0"
       
   246 
       
   247  * http://msdn.microsoft.com/en-us/library/ff548170.aspx
       
   248 
       
   249 Driver Selection Process.
       
   250 =========================
       
   251 
       
   252 Windows uses the following criteria to select a driver for a device:
       
   253 
       
   254  * Windows selects the driver that has the lowest rank value as the best match for the device.
       
   255  * For drivers that have equal rank, Windows selects the driver that has the most recent date.
       
   256  * For the drivers that have equal rank and date, Windows selects the driver that has the highest version.
       
   257  * Windows XP SP1 and later: For drivers that have equal rank, date, and version, Windows can select any driver.
       
   258  * Windows XP and Windows 2000: For drivers that have equal rank, date, and version, Windows can select any driver.
       
   259 
       
   260 See:
       
   261 
       
   262  * http://msdn.microsoft.com/en-us/library/ff549553.aspx
       
   263 
       
   264 Distributing a Driver Package.
       
   265 ==============================
       
   266 
       
   267 Windows Update.
       
   268 ---------------
       
   269 
       
   270 You can distribute a driver package through the Windows Update program if the driver package:
       
   271 
       
   272  * Passes the WHQL test program and receives a WHQL release signature.
       
   273  * Qualifies for the Windows Logo program.
       
   274  * Meets additional requirements that ensure that Windows Update can determine the correct driver
       
   275    package for the user's device, can legally distribute it, and can automatically download it.
       
   276 
       
   277 See:
       
   278 
       
   279  * http://msdn.microsoft.com/en-us/library/ff554874.aspx
       
   280 
       
   281 Hardware ID.
       
   282 ------------
       
   283 
       
   284 PCI and AGP buses: Contain subsystem ID and subsystem vendor ID (&SUBSYS in the ID string). Drivers
       
   285 must have VID/DID/SVID/SID PNP ID entries to be published via Windows Update.
       
   286 
       
   287 PCI Device Subsystem IDs and Windows specifications are available at:
       
   288 
       
   289  * http://www.microsoft.com/whdc/archive/pciidspec.mspx
       
   290 
       
   291 PCMCIA: Always specific; contains PCMCIA in the ID string.
       
   292 
       
   293 USB: Contains VID and &PID in the ID string.
       
   294 
       
   295 IEEE 1394: Always specific; contains 1394 in the ID string.
       
   296 
       
   297 HID: Contains &VID and &PID in the ID string.
       
   298 
       
   299 IDE: Contains IDE\ in the ID string.
       
   300 
       
   301 Parallel Port Printers: Contain LPTENUM\ in the ID string.
       
   302 
       
   303 IrDA Printers: IDs begin with HWP.
       
   304 
       
   305   http://www.microsoft.com/whdc/winlogo/winup/default.mspx
       
   306                 Windows Update Driver Publishing