KD debugger, 699
KeAcquireFastMutex function, 514
KeAreApcsDisabled function, 514, 522
KeEnterCriticalRegion function, 513
KeGetCurrentIrql function, 522
KeLeaveCriticalRegion function, 513
KeLowerIrql function, 513
KePulseEvent function, 509
KeReleaseFastMutex function, 514
KeReleaseSemaphore function, 509
kernel, about, 24
kernel dispatcher objects, 41, 48
__kernel_driver analysis mode (PREfast), 734
kernel-mode debugging, 698, 711–713
kernel-mode framework. See KMDF drivers
kernel-mode programming, 26–27, 36–44, 500–503. See also WDM drivers
coding practice errors, detecting, 733
threads, 508. See also threads
tips for, 44–46
kernel mode (Windows system), 26
kernel objects, 24–30, 48
kernel stack, 43–44. See also memory
kernel subsystems (WDF architecture), 74
kernel subsystems (Windows architecture), 27
KernRate utility, 672–673
KernRate Viewer (KRView), 672–673
KeSetEvent function, 509
KeSynchronizeExecution function, 523
KetGetCurrentIrql function, 514
KMDF debugger extensions, 580–581, 705
KMDF driver development, system requirements for, 12
KMDF drivers, 67–68, 71–73, 83, 171. See also WDF driver model
callbacks, 54, 94. See also callbacks
child device enumeration, 157–159
choosing between UMDF and, 89
collection objects, 102, 114, 455–459
deleting, 115
debugging, system requirements for, 12
device and driver support, 88–89
device naming techniques, 159–162
device object creation and initialization, 152–157
DMA support. See DMA
driver object creation, 137–140
errors in, 59, 83
how to build, 622–624
I/O. See I/O processing
installing, 635–666
basics of, 636–637
co-installer package, 641, 642
considerations, 637–642
INFs, creating, 643–648
INFs, examples of, 648–653
methods for, 655–663
package components, 642–643
signing and distributing packages, 653–655
troubleshooting, 663–666
kernel-mode driver support routines, 500–503
object attributes, 94
power management
device enumeration and startup sequence, 182, 183
idle support, 207–212, 217–220
power-down and removal sequence, 185, 186
power-pageable devices, 174–176
power states, 169
simple hardware function driver (example), 202–205
software-only filter driver (example), 192–194
surprise-removal sequence, 189
wake support for KMDF drivers, 174, 207, 212–217, 217–222
registry objects and methods, 450–453
sample driver. See Osrusbfx2 sample driver
structure and requirements, 151–155
threads. See threads timer objects, 104, 114, 459–464
deleting, 116, 120
synchronization scope, 395–396
typical I/O requests to, 84
WDF debugger extension, 63
WMI support in, 464–473
KMDF infrastructure, 81–84
KMDF log, viewing, 726–729
KMDF object model, 72, 75, 102–105
context areas, 126–128
object creation, 107–110
object hierarchy, 114–115
object lifetime, 115–122
KMDF Verifier, 45, 687–690
KMDF_VERSION macro, 631
KmdfService directive, 647
KRView (KernRate Viewer), 672–673