UMDF debugger extensions, 705
UMDF drivers, 67–70. See also WDF driver model
advantages and limitations, 86–88
applications and, 74
callback objects and interfaces, 54, 94, 96–97, 99–101. See also callbacks
callback implementation, 70, 585–586, 611–613
choosing between KMDF and, 89
COM as basis of. See COM (Component Object Model)
debugging, 87, 705. See also debugging
system requirements for, 12
development, system requirements for, 12
device object creation and initialization, 149–152
device property store, 99, 447–450
devices supported, 85
driver callback object creation, 135–137
errors in, 58, 80
how to build, 622–624
I/O. See I/O processing
installing, 635–666
basics of, 636–637
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
object attributes, 94
power management
device enumeration and startup sequence, 181
power-down and removal sequence, 184
power-pageable devices, 174–176
power states, 169
protocol function driver (example), 197–201
software-only filter driver (example), 191–192
surprise-removal sequence, 188
sample driver. See Fx2_Driver sample driver
structure and requirements, 130–133, 584–586
template for, 16, 475–493
typical I/O requests to, 80–81
WDF debugger extension, 63
Windows API with, 497–500
UMDF host process, 78
UMDF infrastructure, 76–81
UMDF object model, 75, 95–102
context areas, 122–125
object creation, 106–107
object hierarchy, 112–114
object lifetime, 115–119
UMDF programming model, 68–70
UMDF stack, 78
UMDF Verifier, 690–693
UmdfDispatcher directive, 647
UmdfImpersonationLevel directive, 276, 647
UmdfLibraryVersion directive, 648
UmdfMethodNeitherAction directive, 230–232
UMDF_MINOR_VERSION macro, 626
UmdfService directive, 647
UmdfServiceOrder directive, 647
UMDFSkeleton_OSR.inx file, 477, 489–493
UMDFSkeleton_Root.inx file, 477, 489
UMDF_VERSION macro, 626
unbalanced I/O requests, 273
uncancelable I/O requests, 294
uninitialized variables, detecting, 741–742
uninstalling drivers, 659
unmapping hardware resources, 537
UnmarkCancelable (IWDFIoRequest), 294
UNREFERENCE_PARAMETER macro, 46
unsupported I/O requests, handling, 503–506
Up device object (UMDF device stack), 79, 81
updating drives with Device Manager, 659–663
upper edge, WDF frameworks, 74–75
USB device objects (WDFUSBDEVICE), 89, 104, 114, 147, 355–356, 359, 360. See also USB target objects
continuous reader for (KMDF), 375–376
data transfer models, 357–358
deleting, 116
in object hierarchy, 112
USB dispatchers, 312
USB I/O request completion parameters objects, 99
USB interface objects (WDFUSBINTERFACE), 99, 104, 114, 147, 359
deleting, 116
in object hierarchy, 112
USB pipe objects, 104, 114, 147, 359, 361
configuring, 363–364
deleting, 116
in object hierarchy, 112
USB target objects, 99, 355–376
configuring, 361–369
request completion, 99
sending I/O requests to, 369–375
USBD_PIPE_TYPE enumeration, 364
USE_MSVCRT macro, 628
user interfaces, drivers and, 87
user-mode debugging, 698
user-mode framework. See UMDF drivers
user-mode programming, 26
debugging, 87. See also debugging
issuing I/O requests, 32
memory access, 45. See also memory objects
threads, 508. See also threads
user mode (Windows system), 26, 49
UuidGen tool, 425–427
__uuidof utility, 610