abstraction phase, SLAM engine, 830
access, synchronized. See synchronization
access rights, I/O target objects, 315
AcquireLock method (IWDFObject), 386
Active Template Library (ATL), 595
adaptive time-outs (UMDF), 297
/adddriver parameter (Driver Verifier), 681
AddRef method (IUnknown), 113, 589, 590–591, 600, 609–610
addressing capability (DMA devices), 554, 555
aliasing memory, annotations for, 791–792
alignment requirement (device property), 145, 554
/all parameter (Driver Verifier), 680
allocating memory, 44, 442–447. See also memory
annotations for, 790–791, 798–799
tagged memory allocation, 44
analysis mode (PREfast), 734
!analyze debugger extension, 715
annotation modifiers, 764–765
annotations in source code
best practices, 816–818
driver annotations, 774–778
eliminating coding noise with, 751–752
general-purpose, 760–774
how to use, 752–760
Osrusbfx2 sample driver (example), 818–822
for SDV (Static Driver Verifier), 832–834
APC_LEVEL IRQLs, 511, 513, 514
APCs (asynchronous procedure calls), 514
Application Verifier, 693–694
applications
I/O. See Windows I/O model
in WDF architecture, 74
in Windows system architecture, 26
AppVerif.exe, 693–694
arbitrary thread context, 39–40, 47, 510–511
ASSERT macro, 749
Assign functions, 96, 104
AssignContext method (IObjectCleanup), 124, 454
AssignDeviceInterfaceState method, 152
assumptions, making explicit, 749
asynchronous I/O, 27, 31–32, 339–340. See also synchronization
asynchronous procedure calls (APCs), 514
ATL (Active Template Library), 595
attributes, object, 94, 108
AutoForwardCreateCleanupClose method (IWDFDeviceInitialize), 150, 272, 274, 281
automatic forwarding of I/O requests, 272–273
automatic serialization, 395–396, 539
timer objects, 460