object context, 95, 122–128
KMDF drivers, 126–128
UMDF drivers, 122–125
object files, 623
object lifetime, 94, 110–112
callback objects, 113
KMDF drivers, 115–122
request, memory, and buffer pointer objects, 252–253
UMDF drivers, 115–119
object manager, defined, 48
object model for WDF frameworks, 72, 75
object presentation lock, 386
object synchronization lock, 386
objects. See kernel objects
objects (COM), 587–589
how to use, 597–600
implementing classes for, 607
lifetime management, 597–600
properties and events, 594–595
objects (KMDF), 102–104
context areas, 126–128
creating, 107–110
deleting, 115–122
objects (UMDF), 95
context areas, 122–125
creating, 106–107
deleting, 115–119
tracking, 709–710
objects (WDF), 91–128. See also KMDF object model; UMDF object model
attributes, 94, 108
context areas, 122–128
deleting, hierarchy and, 111
implementation, 95–105
object creation, 106–110
device objects, 149–157
object hierarchy and lifetime, 110–122. See also hierarchy of WDF objects
UMDF framework, 97–101
OBJ_PATH directive (Makefile.inc), 633
obtaining (downloading)
builds of Windows, 17–18
Debugging Tools for Windows package, 18–19
OSR Learning Kits, 19–20
WDK, 13
Windows symbol files, 19
off (powered-down) state, 168
OnCancel method (IRequestCallbackCancel), 390
OnCleanup method (IObjectCleanup), 113–114, 125, 390
OnCleanupFile callback (IFileCallbackCleanup), 351
OnCloseFile method (IFileCallbackClose), 390
OnCompletion method (IRequestCallbackRequestCompletion), 343, 390
OnCreateFile method (IQueueCallbackCreate), 274–275, 390
OnD0Entry method (IPnpCallback), 172, 181, 194, 198, 200–201
OnD0Exit method (IPnpCallback), 172, 188, 196, 198, 200–201
OnDefaultIoHandler method (IQueueCallbackDefaultIoHandler), 290, 390
OnDeinitialize method (IDriverEntry), 132, 482
OnDeviceAdd method (IDriverEntry), 132, 136, 149, 181, 194, 483–484, 598
OnDeviceControl method, 391
OnDeviceIoControl method (IQueueCallbackDeviceIoControl), 287–288, 390
OnImpersonate method (IImpersonateCallback), 390
OnImpersonation callback (IImpersonateCallback), 277–278
OnInitialize method (IDriverEntry), 132, 136, 482
OnIoResume method (IQueueCallbackIoResume), 181, 390
OnIoStop method (IQueueCallbackIoStop), 184, 188, 295, 390
OnPrepareHardware method (IPnpCallbackHardware), 172, 181, 197, 199
OnQueryRemove method (IPnpCallback), 172, 198
OnQueryStop method (IPnpCallback), 172, 198
OnRead method (IQueueCalbackRead), 263, 390
OnReleaseHardware method (IPnpCallbackHardware), 172, 184, 188, 197, 200
OnSelfManagedIoCleanup method (IPnpCallbackSelfManagedIo), 184, 188, 299
OnSelfManagedIoFlush method (IPnpCallbackSelfManagedIo), 184, 188, 299
OnSelfManagedIoInit method (IPnpCallbackSelfManagedIo), 181, 188, 299, 300
OnSelfManagedIoRestart method (IPnpCallbackSelfManagedIo), 181, 299
OnSelfManagedIoStop method (IPnpCallbackSelfManagedIo), 299
OnSelfManagedIoSuspend method (IPnpCallbackSelfManagedIo), 184, 299
OnStateChange method (IQueueCallbackStateChange), 390
OnSurpriseRemoval method (IPnpCallback), 172, 187, 198, 200–201
OnWrite method (IQueueCallbackWrite), 283–284, 390
Open Systems Resources, 19–21
_opt modifier, 761, 764
OPTIONAL macro, 764
order of evaluation, implicit, 742–743
ordinary spin locks, 400. See also spin lock objects
Oshins, Jake, 171
OSR Learning Kits, obtaining, 19–20
OSR Online, 21
Osrusbfx2 sample driver, 17
debugging, 721–725
INF file for, 652
with PREfast annotations, 818–822
__out annotation, 761–764
OUT parameter, 590–591, 764
output buffer naming, 247
output files (Build utility), 623–624
output parameter annotations, 761–764
OutputBufferAPI rule, 851