|
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 |