W


wait lock objects, 103, 114, 398–399

collection objects, 457

deleting, 116

wake support for KMDF drivers, 174, 207, 212–217, 220–222

example, 217–220

watch construct (SDV), 826

watchdog timer example (KMDF), 301–305

WDF architecture, 73–76

WDF bloggers, 21

WDF driver model, 51–64. See also KMDF drivers; UMDF drivers

defined, 52–53

I/O model, 55–59

interaction with Windows, 68

object model, 53–55

Plug and Play and power management, 59–61, 170–176, 189–190

defaults, 170

security, 61–62

serviceability and versioning, 63–64

synchronization requirements, 383

testing and tracing, 63

WDM drivers vs., 25, 51–52

!wdf extensions. See KMDF debugger extensions

WDF frameworks, 67–89. See also KMDF drivers; UMDF drivers

device and driver support, 84–89

distributions of, 638–639

object model, 72, 75

overview of KMDF, 71–73, 81–84

overview of UMDF, 68–70, 76–81

WDF memory objects. See memory objects

WDF object model, 91–128. See also KMDF object model; UMDF object model

attributes, 94, 108

context areas, 122–128

implementation, 95–105

object creation, 106–110, 149–157

object hierarchy and lifetime, 110–122. See also hierarchy of WDF objects

WDF support objects, 441–473

collection objects, 102, 114, 455–459

deleting, 115

general objects (base objects), 97, 454–455

deleting, 116

in object hierarchy, 112

memory allocation. See allocating memory

registry access, 447–453

KMDF registry objects and methods, 450–453

UMDF device property store, 99, 447–450

timer objects, 104, 114, 459–464

deleting, 116, 120

synchronization scope, 395–396

WMI support in KMDF drivers, 464–473

WDF update logs, 664

WDF verifiers, 63

WDF_ABS_TIMEOUT_IN_Xxx conversion functions, 461

WDF_CALLBACK_CONSTRAINT enumeration, 390

WDF_COMMON_BUFFER_CONFIG structure, 566

WDF_DECLARE_CONTEXT_TYPE_WITH_NAME macro, 127, 154

WDF_DEVICE_IO_TYPE enumeration, 229–230

WDF_DEVICE_PNP_CAPABILITIES structure, 204

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS structure, 208–210, 216

WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT macrostructure, 208

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS structure, 214, 215–216

WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_INIT macro, 216

WDF_DEVICE_POWER_STATE enumeration, 175

WDF_DMA_ENABLER_CONFIG structure, 566, 568

WDF_DRIVER_CONFIG_INIT function, 139

WDF_FILEOBJECT_CONFIG structure, 273

WDF_INTERRUPT_CONFIG structure, 539

WDF_IO_QUEUE_CONFIG structure, 194, 197, 204

WDF_IO_TARGET_OPEN_PARAMS structure, 314–316

WDF_IO_TARGET_OPEN_PARAMS_INIT_XXX functions, 314–315

WDF_NO_ATTRIBUTES structure, 539

WDF_OBJECT_ATTRIBUTES structure, 108, 139

WDF_OBJECT_ATTRIBUTES_INIT function, 108

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE macro, 127–128, 469

WDF_OBJECT_ATTRIBUTES_SET_CONTEXT_TYPE macro, 127–128, 154

WDF_Object_CONFIG structures, 107

WDF_Object_CONFIG_INIT functions, 107

WDF_POWER_DEVICE_STATE enumeration, 206

WDF_POWER_POLICY_EVENT_CALLBACKS structure, 214, 216

WDF_POWER_POLICY_EVENT_CALLBACKS_INIT macro, 214, 217

WDF_PROPERTY_SDTORE_DISPOSITION enumeration, 448

WDF_REQUEST_PARAMETERS structure, 270, 291

WDF_REQUEST_SEND_OPTION_Xxx flags, 338

WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE, 338, 340

WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET, 338, 341, 343–345

WDF_SYNCHRONIZATION_SCOPE enumeration, 391

WDF_TIMER_CONFIG_INIT function, 460

WDF_TRI_STATE enumeration, 273

WDF_USB_DEVICE_SELECT_CONFIG_PARAMS structure, 365–367

WDF_USB_REQUEST_COMPLETION_PARAMS structure, 375

WDF_WMI_INSTANCE_CONFIG structure, 467, 469

WDF_WMI_PROVIDER_CONFIG structure, 466, 469

WDFCHILDLIST objects. See child list objects

WdfChildListXxx methods, 158

WDFCMRESLIST objects. See resource list objects

WdfCmResourceListGetCount method, 532

WdfCmResourceListGetDescriptor list, 532, 536

WDFCOLLECTION objects. See collection objects

WdfCollectionXxx methods, 456

WdfCollectionAdd method, 408

WDFCOMMONBUFFER objects. See DMA common buffer objects

WdfCommonBufferCreate method, 566, 568–569

WdfCommonBufferCreateWithConfig method, 566, 568–569

WdfCommonBufferGetAlignedLogicalAddress method, 567, 569

WdfCommonBufferGetAlignedVirtualAddress method, 567, 569

WdfControlFinishInitializing method, 144

!wdfcrashdump debugger extension, 728

WDFDEVICE objects. See device objects

WdfDeviceAllocAndQueryProperty method, 450

WdfDeviceAssignMofResourceName method, 469

WdfDeviceAssignS0IdleSettings method, 209–212, 217, 218, 220, 853

WdfDeviceAssignSxWakeSettings method, 214, 215, 216, 853

WdfDeviceConfigureRequestDispatching method, 265, 267, 279

WdfDeviceCreate method, 155

WdfDeviceEnqueueRequest method, 252

WdfDeviceGetDevicePowerState method, 175

WdfDeviceGetIoTarget method, 313, 344

WDFDEVICE_INIT structure, 153, 155, 193

WdfDeviceInitialize method, 155

WdfDeviceInitXxx methods, 146, 153

WdfDeviceInitAssignName, 160

WdfDeviceInitAssignSDDLString, 160, 162

WdfDeviceInitAssignWdfmIrpPreprocessCallback, 504–506

WdfDeviceInitSetIoInCallerContextCallback, 250

WdfDeviceInitSetIoType method, 229–230

WdfDeviceInitSetPnpPowerEventCallbacks, 204, 215, 298–299

WdfDeviceInitSetPowerNotPageable, 175

WdfDeviceInitSetPowerPageable, 175

WdfDeviceInitSetPowerPolicyEventCallback, 153, 217, 853

WdfDeviceInitSetPowerPolicyOwnership, 143

WdfDeviceOpenRegistryKey method, 450–451

WdfDeviceQueryProperty method, 450

WdfDeviceResumeIdle method, 210

WdfDeviceSetAlignmentRequirement method, 568

WdfDeviceSetDeviceState method, 187

WdfDeviceSetSpecialFileSupport method, 174

WdfDeviceStopIdle method, 210–211, 220, 258

WdfDeviceWdmXxx methods, 501

WdfDevStateIsNP method, 175–176

WdfDmaDirectionReadFromDevice method, 571

WdfDmaDirectionWriteToDevice method, 571

WDFDMAENABLER objects. See DMA enabler objects

WdfDmaProfileXxx methods, 566, 568

WDFDMATRANSACTION objects. See DMA transaction objects

WdfDmaTransactionCreate method, 567, 569

WdfDmaTransactionDmaCompleted method, 572, 576–577

WdfDmaTransactionDmaCompletedFinal method, 575

WdfDmaTransactionDmaCompletedWithLength method, 576

WdfDmaTransactionExecute method, 570

WdfDmaTransactionGetBytesTransferred method, 573, 575, 577

WdfDmaTransactionInitialize method, 569, 571

WdfDmaTransactionInitializeUsingRequest method, 569, 571

WdfDmaTransactionRelease method, 572, 577

WDFDPC objects. See DPCs (deferred procedure calls)

WdfDpcWdmGetDpc method, 501

WDFDRIVER objects, 103, 114, 137

deleting, 116

WdfDriverCreate method, 139

WdfExecutionLevelXxx execution levels, 396–398

WdfFdoInitWdmGetPhysicalDevice method, 501

WdfFdoInitXxx functions, 154

registry objects and methods, 450–453

WdfFdoInitSetDefaultChildListConfig, 157–158

WdfFdoInitSetEventCallbacks, 153

WdfFdoInitSetFilter, 154, 193

WDFFILEOBJECT objects. See file objects

WdfFileObjectWdmGetFileObject method, 501

WdfGetDriver method, 139

WdfGetRequestParameters method, 291

WDFINTERRUPT objects. See interrupt objects

WdfInterruptAcquireLock method, 515, 547

WdfInterruptCreate method, 540

WdfInterruptDisable method, 541

WdfInterruptEnable method, 541

WdfInterruptGetDevice method, 544–545

WdfInterruptQueueDpcForIsr method, 545

WdfInterruptReleaseLock method, 547

WdfInterruptSynchronize method, 515, 546–547

WdfInterruptWdmGetInterrupt method, 501

WdfIoQueueXxx methods, 260, 265–266, 268, 270–271

WdfIoQueueRetrieveXxx methods, 252, 268, 270–271

WDFIORESLIST objects. See resource range list objects

WDFIORESREQLIST objects. See resource requirements list objects

WDFIOTARGET objects. See target objects

WdfIoTargetClose method, 319

WdfIoTargetCloseForQueryRemove method, 320, 321

WdfIoTargetCreate method, 314

WdfIoTargetFormatRequestXxx methods, 332–334, 338

WdfIoTargetGetState method, 319

WdfIoTargetOpen method, 314, 319

WdfIoTargetSendXxxSynchronously methods, 337–338

WdfIoTargetStart method, 319, 360

WdfIoTargetStop method, 320, 360

WdfIoTargetWdmXxx methods, 501

!wdfkd debugger extensions, 705

!wdfkd.wdfdriverinfo, 689–690

WdfKd.dll library, 14

WDFKEY objects. See registry key objects

!wdflogdump debugger extension, 727

WDFLOOKASIDE objects. See lookaside list objects

WdfLookasideListCreate method, 445

WDFMEMORY objects. See memory objects

WdfMemoryXxx methods, 248, 444

WdfMemoryAssignBuffer, 350

WdfMemoryCreate, 327, 330, 444

WdfMemoryCreateFromLookaside, 444, 446

WdfMemoryCreatePreallocated, 327, 444

WdfMemoryGetBuffer, 444, 446

WDFOBJECT objects. See generic objects

WdfObjectAcquireLock method, 386

WdfObjectAllocateContext method, 126, 128

WdfObjectCreate method, 109, 455

WdfObjectDelete method, 115, 120

deleting memory objects, 447

WdfObjectDereference method, 115

WdfObjectReference method, 115

WdfObjectReleaseLock method, 386

WdfPdoInitAllocate method, 158

WdfPdoInitSetEventCallbacks method, 159

WdfPowerDeviceXxx constants, 206–207

WdfPropertyStoreCreateIfMissing method, 449

WDFQUEUE objects. See queue objects

WdfRegistryXxx methods, 450–453

WdfRegistryOpenKey, 450

WdfRegistryWdmGetHandle, 501

WDFREQUEST objects, 103, 114, 323

deleting, 116

WdfRequestCancelSentRequest method, 352

WdfRequestComplete method, 292, 509

WdfRequestCompleteWithInformation method, 292

WdfRequestCompleteWithPriorityBoost method, 292, 509

WdfRequestCreate method, 323

WdfRequestCreateFromIrp method, 348–350, 501

WdfRequestFormatRequestUsingCurrentType method, 331

WdfRequestGetCompletionParams request, 336

WdfRequestGetStatus method, 339

WdfRequestIsCanceled method, 295

WdfRequestMarkCancelable method, 294

WdfRequestProbeAndLockUserBufferXxx, 252

WdfRequestRetrieveXxx methods, 247–251, 501, 570

WdfRequestRetrieveInputMemory, 347

WdfRequestRetrieveOutputMemory, 286, 347

WdfRequestReuse method, 347–350

WdfRequestSend method, 337, 344, 345

WdfRequestSetCompletionRoutine method, 334

WdfRequestStopActionPurge method, 352

WdfRequestStopActionSuspend method, 352

WdfRequestUnmarkCancelable method, 294, 403

WdfRequestWdmGetIrp method, 502

!wdfsettraceprefix debugger extension, 729

WDFSPINLOCK objects. See spin lock objects

WdfSpinLockCreate method, 539

WDFSTRING objects. See string objects

WDFTIMER objects. See timer objects

WdfTimerCreate method, 459–460, 463

WdfTimerGetParentObject method, 460

WdfTimerStart method, 460, 461, 463

WdfTimerStop method, 460, 463

!wdftmffile debugger extension, 727

WDFUSBDEVICE objects. See USB device objects

WDFUSBINTERFACE objects. See USB interface objects

WdfUsbInterfaceXxx methods, 359, 361, 368

WDFUSBPIPE objects. See USB pipe objects

WdfUsbTargetDeviceXxx methods, 359, 360, 365–367, 371–372

WdfUsbTargetPipeXxx methods, 359, 368, 372, 374, 502

WdfUsbTargetPipeConfigContinuousReader, 375

WdfVerifierDbgBreakPoint method, 688

WDFVERIFY macro, 688

WDFWAITLOCK objects. See wait lock objects

WdfWaitLockAcquire method, collection objects, 457

WdfWaitLockCreate method, collection objects, 457

WdfWaitLockRelease method, collection objects, 457

WdfWdmDeviceGetWdfDeviceHandle method, 502

WdfWdmDriverGetWdfDriverHandle method, 502

WDFWMIINSTANCE objects. See WMI instance objects

WdfWmiInstanceCreate method, 469

WdfWmiInstanceRegister method, 467

WDFWMIPROVIDER objects. See WMI provider objects

WdfWmiProviderCreate method, 467

WDFWORKITEM objects. See work item objects

WdfWorkItemCreate method, 526

WdfWorkItemEnqueue method, 524, 526

thread context, 510

WDK (Windows Driver Kit), obtaining, 13

WDK documentation, 14–15

WDK installation, 11–14

WDK root folder, 14

%wdk% root folder, 14

WDM drivers, 88, 500–503. See also kernel-mode programming

WDF driver model vs., 25, 51–52

WDT_TIMER_CONFIG_INIT_PERIODIC function, 460

WDTF (Windows Device Testing Framework), 675–676

!wdtlogsave debugger extension, 728

WER (Windows Error Reporting), 692–693, 696

WHDC (Windows Hardware Developer Central), 20

WIN32_WINNT_VERSION macro, 628

WinDbg debugger, 18, 63, 698, 699–706

commands, 702

extensions, 704–706

installation error debugging, 663

KMDF debugging session, starting, 714–715

suggestions for experimenting, 729–730

viewing KMDF log, 726–729

viewing trace messages, 725–726

WINDBG list server, 21

Windows API, 26, 86–87, 497–500

Windows Debugger Users List, 21

Windows Device Manager, 637

Windows Device Testing Framework, 675–676

Windows DMA abstraction, 555–563

Windows driver architecture, 27–28

Windows Error Reporting (WER), 692–693, 696

Windows File System Developers List, 21

Windows I/O model, 31–36, 239

Windows kernel, about, 24. See also entries at kernel

Windows logo, obtaining, 653

Windows symbols, obtaining, 19

Windows system architecture, 25–27

Windows System Software Developers List, 21

Windows trace preprocessor, 669

Windows version, selecting, 619–620

Windows Vista, elevated privileges for, 15

Windows Vista, ETW in, 416–417

Windows Vista, kernel debugging for, 711–712

WinHEC event, 22

with guard construct (SDV), 826

WMI handler (I/O requests), 240

WMI instance objects, 104, 114, 147, 467

deleting, 116

event callbacks, 470–473

WMI provider objects, 104, 114, 147, 466–467

deleting, 116

WMI request handlers, 464

WMI support in KMDF drivers, 464–473

work item, defined, 49

work item objects, 104, 114, 523

deleting, 116, 120

driver threads and, 523–527

synchronization scope, 395–396

WPP_CLEANUP macro, 429–431

WPP_CONTROL_GUIDS macro, 425–426

WPP_DEFINE_CONTROL_GUID macro, 425

WPP_INIT_TRACING macro, 427–429

WPP_LEVEL_ENABLED macro, 422

WPP_LEVEL_LOGGER macro, 422

WPP preprocessor, running, 420–424

WPP software tracing. See tracing

write requests (I/O), 32, 225, 242

event callbacks for, 282–291

formatting for I/O targets, 332–333

synchronous, 337

WRITE_PORT_Xxx macros, 530

WRITE_REGISTER_Xxx macros, 530

WriteFile function, 33, 225

Wudfddi.idl file, 595

!wudfext debugger extensions, 705

WudfExt.dll library, 14

Wudfhost process, 78




Developing Drivers with the Microsoft Windows Driver Foundation
Developing Drivers with the Windows Driver Foundation (Pro Developer)
ISBN: 0735623740
EAN: 2147483647
Year: 2007
Pages: 224

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net