_ecount annotation, 761, 766–768
elevated privileges, working with, 15
ENABLE_EVENT_TRACING macro, 632
encapsulation (COM), 587
endpoints on USB devices, 355–356
Enhanced I/O Verification option (Driver Verifier), 678
entry actions, SDV rules for, 826
EnumDevices.wsf script, 676
enumerated types, incorrect, 747–748, 785–787
enumeration of devices
child devices, 143, 157–159
startup and, 180–183
enumeration of pipes for USB interfaces, 367
error messages, annotations for, 790
errors
coding, detecting. See PREfast for Drivers
detecting in drivers. See testing WDF drivers
driver installation, 664–666
HRESULT type vs., 594
IRQL-related, 521–523
in KMDF drivers, 59, 83
observing with SDV. See SDV (Static Driver Verifier)
reported in wrong places, 744–746
in UMDF drivers, 58, 80
UMDF Verifier, 691
Windows Error Reporting (WER), 692–693, 696
ES scenario (PwrTest), 675
ETW (Event Tracing for Windows), 411, 416–417
event callbacks. See callbacks
events (framework objects), 54
events (WDF), 93. See also callbacks
KMDF naming conventions, 105
UMDF naming conventions, 96–97
events for driver developers, 22
events of COM objects, 594–595
EvtChildListCreateDevice callback, 158, 183
EvtChildListScanForChildren callback, 182, 183
EvtCleanupCallback callback, 108, 117, 119–121, 139, 185
cleaning up tracing, 430–431
EvtCleanupContext callback, 186, 189
EvtDestroyCallback callback, 108, 118, 119, 121–122, 185
EvtDestroyContext callback, 186, 189
EvtDeviceArmWakeFromS0 callback, 173, 185, 217
EvtDeviceArmWakeFromSx callback, 173, 185, 214–215, 217, 221
EvtDeviceD0Entry callback, 172, 182, 183, 204–205
post-interrupt processing, 543
EvtDeviceD0EntryPostInterruptsEnabled callback, 173, 182, 183, 195, 538, 541
post-interrupt processing, 543
EvtDeviceD0Exit callback, 172, 185, 186, 189, 196, 204–205
post-interrupt processing, 543
EvtDeviceD0ExitPreInterruptsDisabled callback, 173, 185, 196, 538, 542
post-interrupt processing, 543
EvtDeviceDisableWakeAtBus callback, 159, 173, 183, 186
EvtDeviceDisarmWakeFromS0 callback, 173, 182, 183
EvtDeviceDisarmWakeFromSx callback, 173, 182, 183, 215
EvtDeviceEject callback, 159
EvtDeviceEnableWakeAtBus callback, 159, 173, 183, 186
EvtDeviceFileCreate callback, 274, 279–280, 391
execution level, 397
EvtDeviceFilterAddResourceRequirements callback, 173, 182, 183
EvtDeviceFilterRemoveResourceRequirements callback, 173, 182, 183
EvtDevicePrepareHardware callback, 172, 182, 183, 203, 530–531, 534
idle characteristics configuration, 208–209
EvtDeviceQueryRemove callback, 172
EvtDeviceQueryStop callback, 172
EvtDeviceReleaseHardware callback, 172, 185, 186, 189, 203, 530–531, 536
EvtDeviceRemoveAddedResources callback, 153, 173, 182, 183
EvtDeviceResourceRequirementsQuery callback, 159, 173, 183
EvtDeviceResourcesQuery callback, 159, 173, 183
EvtDeviceSelfManagedIoXxx callbacks, 172, 182–186, 189, 299, 300, 301
watchdog timer example (KMDF), 301–305
EvtDeviceSetLock callback, 159
EvtDeviceSurpriseRemoval callback, 172, 188
EvtDeviceWakeFromS0Triggered callback, 173, 215
EvtDeviceWakeFromSxTriggered callback, 173, 215, 221
EvtDeviceWdmIrpPreprocess callback, 504
EvtDmaEnablerDisable callback, 186, 189
EvtDmaEnablerEnable callback, 182, 183
EvtDmaEnablerFill callback, 182, 183
EvtDmaEnablerFlush callback, 185, 186, 189
EvtDmaEnablerSelfManagedIoStart callback, 182, 183
EvtDmaEnablerSelfManagedIoStop callback, 185, 186, 189
EvtDpcFunc callback, 391, 515
EvtDriverDeviceAdd callback, 133–135, 138, 146, 152–153, 182, 183, 194
DMA driver implementation, 564–566
idle characteristics configuration, 208–209
processing unsupported I/O requests, 504
software-only drivers, 192–194
tasks of, 155
thread context, 510
EvtDriverUnload callback, 134, 138
EvtFileCleanup callback, 281, 391
execution level, 397
EvtFileClose callback, 281, 391
execution level, 397
EvtInterruptDisable callback, 173, 185, 516, 538, 541
post-interrupt processing, 543
EvtInterruptDpc callback, 391, 404–407, 515, 516, 519, 521, 538, 546–547
DMA drivers, 575–577
EvtInterruptEnable callback, 173, 182, 183, 516, 538, 541–542
post-interrupt processing, 543
EvtInterruptIsr callback, 400, 519, 521, 538, 544–545
DMA drivers, 575–577
EvtInterruptSynchronize method, 516, 546–547
EvtIoCanceledOnQueue callback, 252, 293, 391
EvtIoDefault callback, 283, 286, 289–290, 391
EvtIoDeviceControl callback, 286, 288–289, 391
EvtIoInCallerContext callback, 250–252, 511
EvtIoInternalDeviceControl callback, 286, 391
EvtIoQueueState callback, 268, 391
EvtIoRead callback, 283, 285–286, 391
EvtIoResume callback, 182, 183, 258, 391
EvtIoStop callback, 185, 186, 189, 204, 258, 391
EvtIoTargetXxx callbacks, 320–321
EvtIoWrite callback, 283, 391
EvtObjectCleanup callback, 252
EvtProgramDma callback, 572–575
EvtRequestCancel callback, 391, 405–406
EvtTimerFunc callback, 391, 460, 461–462
EvtUsbTargetPipeReadComplete callback, 375
EvtUsbTargetPipeReadersFailed callback, 375
EvtWmiInstanceExecuteMethod callback, 470
EvtWmiInstanceQueryInstance callback, 470–471
EvtWmiInstanceSetInstance callback, 470, 472, 473
EvtWmiInstanceSetItem callback, 470, 472–473
EvtWorkItem callback, 391, 524–525
ExAcquireResourceExclusiveLite function, 780
ExAllocatePoolWithTag DDI, 442
execution levels in KMDF drivers, 396–398
execution threads. See threads
ExecutionLevel attribute, 108
ExInterlockedXxx routines, 500
exit actions, SDV rules for, 826
Exports.def file, 477, 488
extensions, debugger, 704–706. See also debugging WDF drivers