1 /*++
2 
3 Module Name: VfFxDynamics.h
4 
5 Abstract:
6     Generated header for WDF API Verifier hooks
7 
8 Environment:
9     kernel mode only
10 
11     Warning: manual changes to this file will be lost.
12 --*/
13 
14 #ifndef _VFFXDYNAMICS_H_
15 #define _VFFXDYNAMICS_H_
16 
17 
18 _Must_inspect_result_
19 _IRQL_requires_max_(PASSIVE_LEVEL)
20 WDFAPI
21 NTSTATUS
22 VFWDFEXPORT(WdfChildListCreate)(
23     _In_
24     PWDF_DRIVER_GLOBALS DriverGlobals,
25     _In_
26     WDFDEVICE Device,
27     _In_
28     PWDF_CHILD_LIST_CONFIG Config,
29     _In_opt_
30     PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
31     _Out_
32     WDFCHILDLIST* ChildList
33     );
34 
35 _IRQL_requires_max_(DISPATCH_LEVEL)
36 WDFAPI
37 WDFDEVICE
38 VFWDFEXPORT(WdfChildListGetDevice)(
39     _In_
40     PWDF_DRIVER_GLOBALS DriverGlobals,
41     _In_
42     WDFCHILDLIST ChildList
43     );
44 
45 _Must_inspect_result_
46 _IRQL_requires_max_(DISPATCH_LEVEL)
47 WDFAPI
48 WDFDEVICE
49 VFWDFEXPORT(WdfChildListRetrievePdo)(
50     _In_
51     PWDF_DRIVER_GLOBALS DriverGlobals,
52     _In_
53     WDFCHILDLIST ChildList,
54     _Inout_
55     PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
56     );
57 
58 _Must_inspect_result_
59 _IRQL_requires_max_(DISPATCH_LEVEL)
60 WDFAPI
61 NTSTATUS
62 VFWDFEXPORT(WdfChildListRetrieveAddressDescription)(
63     _In_
64     PWDF_DRIVER_GLOBALS DriverGlobals,
65     _In_
66     WDFCHILDLIST ChildList,
67     _In_
68     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
69     _Inout_
70     PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
71     );
72 
73 _IRQL_requires_max_(DISPATCH_LEVEL)
74 WDFAPI
75 VOID
76 VFWDFEXPORT(WdfChildListBeginScan)(
77     _In_
78     PWDF_DRIVER_GLOBALS DriverGlobals,
79     _In_
80     WDFCHILDLIST ChildList
81     );
82 
83 _IRQL_requires_max_(DISPATCH_LEVEL)
84 WDFAPI
85 VOID
86 VFWDFEXPORT(WdfChildListEndScan)(
87     _In_
88     PWDF_DRIVER_GLOBALS DriverGlobals,
89     _In_
90     WDFCHILDLIST ChildList
91     );
92 
93 _IRQL_requires_max_(DISPATCH_LEVEL)
94 WDFAPI
95 VOID
96 VFWDFEXPORT(WdfChildListBeginIteration)(
97     _In_
98     PWDF_DRIVER_GLOBALS DriverGlobals,
99     _In_
100     WDFCHILDLIST ChildList,
101     _In_
102     PWDF_CHILD_LIST_ITERATOR Iterator
103     );
104 
105 _Must_inspect_result_
106 _IRQL_requires_max_(DISPATCH_LEVEL)
107 WDFAPI
108 NTSTATUS
109 VFWDFEXPORT(WdfChildListRetrieveNextDevice)(
110     _In_
111     PWDF_DRIVER_GLOBALS DriverGlobals,
112     _In_
113     WDFCHILDLIST ChildList,
114     _In_
115     PWDF_CHILD_LIST_ITERATOR Iterator,
116     _Out_
117     WDFDEVICE* Device,
118     _Inout_opt_
119     PWDF_CHILD_RETRIEVE_INFO Info
120     );
121 
122 _IRQL_requires_max_(DISPATCH_LEVEL)
123 WDFAPI
124 VOID
125 VFWDFEXPORT(WdfChildListEndIteration)(
126     _In_
127     PWDF_DRIVER_GLOBALS DriverGlobals,
128     _In_
129     WDFCHILDLIST ChildList,
130     _In_
131     PWDF_CHILD_LIST_ITERATOR Iterator
132     );
133 
134 _Must_inspect_result_
135 _IRQL_requires_max_(DISPATCH_LEVEL)
136 WDFAPI
137 NTSTATUS
138 VFWDFEXPORT(WdfChildListAddOrUpdateChildDescriptionAsPresent)(
139     _In_
140     PWDF_DRIVER_GLOBALS DriverGlobals,
141     _In_
142     WDFCHILDLIST ChildList,
143     _In_
144     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
145     _In_opt_
146     PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
147     );
148 
149 _Must_inspect_result_
150 _IRQL_requires_max_(DISPATCH_LEVEL)
151 WDFAPI
152 NTSTATUS
153 VFWDFEXPORT(WdfChildListUpdateChildDescriptionAsMissing)(
154     _In_
155     PWDF_DRIVER_GLOBALS DriverGlobals,
156     _In_
157     WDFCHILDLIST ChildList,
158     _In_
159     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
160     );
161 
162 _IRQL_requires_max_(DISPATCH_LEVEL)
163 WDFAPI
164 VOID
165 VFWDFEXPORT(WdfChildListUpdateAllChildDescriptionsAsPresent)(
166     _In_
167     PWDF_DRIVER_GLOBALS DriverGlobals,
168     _In_
169     WDFCHILDLIST ChildList
170     );
171 
172 _IRQL_requires_max_(DISPATCH_LEVEL)
173 WDFAPI
174 BOOLEAN
175 VFWDFEXPORT(WdfChildListRequestChildEject)(
176     _In_
177     PWDF_DRIVER_GLOBALS DriverGlobals,
178     _In_
179     WDFCHILDLIST ChildList,
180     _In_
181     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
182     );
183 
184 _Must_inspect_result_
185 _IRQL_requires_max_(DISPATCH_LEVEL)
186 WDFAPI
187 NTSTATUS
188 VFWDFEXPORT(WdfCollectionCreate)(
189     _In_
190     PWDF_DRIVER_GLOBALS DriverGlobals,
191     _In_opt_
192     PWDF_OBJECT_ATTRIBUTES CollectionAttributes,
193     _Out_
194     WDFCOLLECTION* Collection
195     );
196 
197 _IRQL_requires_max_(DISPATCH_LEVEL)
198 WDFAPI
199 ULONG
200 VFWDFEXPORT(WdfCollectionGetCount)(
201     _In_
202     PWDF_DRIVER_GLOBALS DriverGlobals,
203     _In_
204     WDFCOLLECTION Collection
205     );
206 
207 _Must_inspect_result_
208 _IRQL_requires_max_(DISPATCH_LEVEL)
209 WDFAPI
210 NTSTATUS
211 VFWDFEXPORT(WdfCollectionAdd)(
212     _In_
213     PWDF_DRIVER_GLOBALS DriverGlobals,
214     _In_
215     WDFCOLLECTION Collection,
216     _In_
217     WDFOBJECT Object
218     );
219 
220 _IRQL_requires_max_(DISPATCH_LEVEL)
221 WDFAPI
222 VOID
223 VFWDFEXPORT(WdfCollectionRemove)(
224     _In_
225     PWDF_DRIVER_GLOBALS DriverGlobals,
226     _In_
227     WDFCOLLECTION Collection,
228     _In_
229     WDFOBJECT Item
230     );
231 
232 _IRQL_requires_max_(DISPATCH_LEVEL)
233 WDFAPI
234 VOID
235 VFWDFEXPORT(WdfCollectionRemoveItem)(
236     _In_
237     PWDF_DRIVER_GLOBALS DriverGlobals,
238     _In_
239     WDFCOLLECTION Collection,
240     _In_
241     ULONG Index
242     );
243 
244 _IRQL_requires_max_(DISPATCH_LEVEL)
245 WDFAPI
246 WDFOBJECT
247 VFWDFEXPORT(WdfCollectionGetItem)(
248     _In_
249     PWDF_DRIVER_GLOBALS DriverGlobals,
250     _In_
251     WDFCOLLECTION Collection,
252     _In_
253     ULONG Index
254     );
255 
256 _IRQL_requires_max_(DISPATCH_LEVEL)
257 WDFAPI
258 WDFOBJECT
259 VFWDFEXPORT(WdfCollectionGetFirstItem)(
260     _In_
261     PWDF_DRIVER_GLOBALS DriverGlobals,
262     _In_
263     WDFCOLLECTION Collection
264     );
265 
266 _IRQL_requires_max_(DISPATCH_LEVEL)
267 WDFAPI
268 WDFOBJECT
269 VFWDFEXPORT(WdfCollectionGetLastItem)(
270     _In_
271     PWDF_DRIVER_GLOBALS DriverGlobals,
272     _In_
273     WDFCOLLECTION Collection
274     );
275 
276 _Must_inspect_result_
277 _IRQL_requires_max_(PASSIVE_LEVEL)
278 WDFAPI
279 NTSTATUS
280 VFWDFEXPORT(WdfCommonBufferCreate)(
281     _In_
282     PWDF_DRIVER_GLOBALS DriverGlobals,
283     _In_
284     WDFDMAENABLER DmaEnabler,
285     _In_
286     _When_(Length == 0, __drv_reportError(Length cannot be zero))
287     size_t Length,
288     _In_opt_
289     PWDF_OBJECT_ATTRIBUTES Attributes,
290     _Out_
291     WDFCOMMONBUFFER* CommonBuffer
292     );
293 
294 _Must_inspect_result_
295 _IRQL_requires_max_(PASSIVE_LEVEL)
296 WDFAPI
297 NTSTATUS
298 VFWDFEXPORT(WdfCommonBufferCreateWithConfig)(
299     _In_
300     PWDF_DRIVER_GLOBALS DriverGlobals,
301     _In_
302     WDFDMAENABLER DmaEnabler,
303     _In_
304     _When_(Length == 0, __drv_reportError(Length cannot be zero))
305     size_t Length,
306     _In_
307     PWDF_COMMON_BUFFER_CONFIG Config,
308     _In_opt_
309     PWDF_OBJECT_ATTRIBUTES Attributes,
310     _Out_
311     WDFCOMMONBUFFER* CommonBuffer
312     );
313 
314 _IRQL_requires_max_(DISPATCH_LEVEL)
315 WDFAPI
316 PVOID
317 VFWDFEXPORT(WdfCommonBufferGetAlignedVirtualAddress)(
318     _In_
319     PWDF_DRIVER_GLOBALS DriverGlobals,
320     _In_
321     WDFCOMMONBUFFER CommonBuffer
322     );
323 
324 _IRQL_requires_max_(DISPATCH_LEVEL)
325 WDFAPI
326 PHYSICAL_ADDRESS
327 VFWDFEXPORT(WdfCommonBufferGetAlignedLogicalAddress)(
328     _In_
329     PWDF_DRIVER_GLOBALS DriverGlobals,
330     _In_
331     WDFCOMMONBUFFER CommonBuffer
332     );
333 
334 _IRQL_requires_max_(DISPATCH_LEVEL)
335 WDFAPI
336 size_t
337 VFWDFEXPORT(WdfCommonBufferGetLength)(
338     _In_
339     PWDF_DRIVER_GLOBALS DriverGlobals,
340     _In_
341     WDFCOMMONBUFFER CommonBuffer
342     );
343 
344 _Must_inspect_result_
345 _IRQL_requires_max_(PASSIVE_LEVEL)
346 WDFAPI
347 PWDFDEVICE_INIT
348 VFWDFEXPORT(WdfControlDeviceInitAllocate)(
349     _In_
350     PWDF_DRIVER_GLOBALS DriverGlobals,
351     _In_
352     WDFDRIVER Driver,
353     _In_
354     CONST UNICODE_STRING* SDDLString
355     );
356 
357 _IRQL_requires_max_(PASSIVE_LEVEL)
358 WDFAPI
359 VOID
360 VFWDFEXPORT(WdfControlDeviceInitSetShutdownNotification)(
361     _In_
362     PWDF_DRIVER_GLOBALS DriverGlobals,
363     _In_
364     PWDFDEVICE_INIT DeviceInit,
365     _In_
366     PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification,
367     _In_
368     UCHAR Flags
369     );
370 
371 _IRQL_requires_max_(DISPATCH_LEVEL)
372 WDFAPI
373 VOID
374 VFWDFEXPORT(WdfControlFinishInitializing)(
375     _In_
376     PWDF_DRIVER_GLOBALS DriverGlobals,
377     _In_
378     WDFDEVICE Device
379     );
380 
381 _Must_inspect_result_
382 _IRQL_requires_max_(PASSIVE_LEVEL)
383 WDFAPI
384 PWDFCXDEVICE_INIT
385 VFWDFEXPORT(WdfCxDeviceInitAllocate)(
386     _In_
387     PWDF_DRIVER_GLOBALS DriverGlobals,
388     _In_
389     PWDFDEVICE_INIT DeviceInit
390     );
391 
392 _Must_inspect_result_
393 _IRQL_requires_max_(DISPATCH_LEVEL)
394 WDFAPI
395 NTSTATUS
396 VFWDFEXPORT(WdfCxDeviceInitAssignWdmIrpPreprocessCallback)(
397     _In_
398     PWDF_DRIVER_GLOBALS DriverGlobals,
399     _In_
400     PWDFCXDEVICE_INIT CxDeviceInit,
401     _In_
402     PFN_WDFCXDEVICE_WDM_IRP_PREPROCESS EvtCxDeviceWdmIrpPreprocess,
403     _In_
404     UCHAR MajorFunction,
405     _When_(NumMinorFunctions > 0, _In_reads_bytes_(NumMinorFunctions))
406     _When_(NumMinorFunctions == 0, _In_opt_)
407     PUCHAR MinorFunctions,
408     _In_
409     ULONG NumMinorFunctions
410     );
411 
412 _IRQL_requires_max_(DISPATCH_LEVEL)
413 WDFAPI
414 VOID
415 VFWDFEXPORT(WdfCxDeviceInitSetIoInCallerContextCallback)(
416     _In_
417     PWDF_DRIVER_GLOBALS DriverGlobals,
418     _In_
419     PWDFCXDEVICE_INIT CxDeviceInit,
420     _In_
421     PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
422     );
423 
424 _IRQL_requires_max_(DISPATCH_LEVEL)
425 WDFAPI
426 VOID
427 VFWDFEXPORT(WdfCxDeviceInitSetRequestAttributes)(
428     _In_
429     PWDF_DRIVER_GLOBALS DriverGlobals,
430     _In_
431     PWDFCXDEVICE_INIT CxDeviceInit,
432     _In_
433     PWDF_OBJECT_ATTRIBUTES RequestAttributes
434     );
435 
436 _IRQL_requires_max_(DISPATCH_LEVEL)
437 WDFAPI
438 VOID
439 VFWDFEXPORT(WdfCxDeviceInitSetFileObjectConfig)(
440     _In_
441     PWDF_DRIVER_GLOBALS DriverGlobals,
442     _In_
443     PWDFCXDEVICE_INIT CxDeviceInit,
444     _In_
445     PWDFCX_FILEOBJECT_CONFIG CxFileObjectConfig,
446     _In_opt_
447     PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
448     );
449 
450 WDFAPI
451 VOID
452 VFWDFEXPORT(WdfCxVerifierKeBugCheck)(
453     _In_
454     PWDF_DRIVER_GLOBALS DriverGlobals,
455     _In_opt_
456     WDFOBJECT Object,
457     _In_
458     ULONG BugCheckCode,
459     _In_
460     ULONG_PTR BugCheckParameter1,
461     _In_
462     ULONG_PTR BugCheckParameter2,
463     _In_
464     ULONG_PTR BugCheckParameter3,
465     _In_
466     ULONG_PTR BugCheckParameter4
467     );
468 
469 _IRQL_requires_max_(DISPATCH_LEVEL)
470 WDFAPI
471 VOID
472 VFWDFEXPORT(WdfDeviceGetDeviceState)(
473     _In_
474     PWDF_DRIVER_GLOBALS DriverGlobals,
475     _In_
476     WDFDEVICE Device,
477     _Out_
478     PWDF_DEVICE_STATE DeviceState
479     );
480 
481 _IRQL_requires_max_(DISPATCH_LEVEL)
482 WDFAPI
483 VOID
484 VFWDFEXPORT(WdfDeviceSetDeviceState)(
485     _In_
486     PWDF_DRIVER_GLOBALS DriverGlobals,
487     _In_
488     WDFDEVICE Device,
489     _In_
490     PWDF_DEVICE_STATE DeviceState
491     );
492 
493 _IRQL_requires_max_(DISPATCH_LEVEL)
494 WDFAPI
495 WDFDEVICE
496 VFWDFEXPORT(WdfWdmDeviceGetWdfDeviceHandle)(
497     _In_
498     PWDF_DRIVER_GLOBALS DriverGlobals,
499     _In_
500     PDEVICE_OBJECT DeviceObject
501     );
502 
503 _IRQL_requires_max_(DISPATCH_LEVEL)
504 WDFAPI
505 PDEVICE_OBJECT
506 VFWDFEXPORT(WdfDeviceWdmGetDeviceObject)(
507     _In_
508     PWDF_DRIVER_GLOBALS DriverGlobals,
509     _In_
510     WDFDEVICE Device
511     );
512 
513 _IRQL_requires_max_(DISPATCH_LEVEL)
514 WDFAPI
515 PDEVICE_OBJECT
516 VFWDFEXPORT(WdfDeviceWdmGetAttachedDevice)(
517     _In_
518     PWDF_DRIVER_GLOBALS DriverGlobals,
519     _In_
520     WDFDEVICE Device
521     );
522 
523 _IRQL_requires_max_(DISPATCH_LEVEL)
524 WDFAPI
525 PDEVICE_OBJECT
526 VFWDFEXPORT(WdfDeviceWdmGetPhysicalDevice)(
527     _In_
528     PWDF_DRIVER_GLOBALS DriverGlobals,
529     _In_
530     WDFDEVICE Device
531     );
532 
533 _Must_inspect_result_
534 _IRQL_requires_max_(DISPATCH_LEVEL)
535 WDFAPI
536 NTSTATUS
537 VFWDFEXPORT(WdfDeviceWdmDispatchPreprocessedIrp)(
538     _In_
539     PWDF_DRIVER_GLOBALS DriverGlobals,
540     _In_
541     WDFDEVICE Device,
542     _In_
543     PIRP Irp
544     );
545 
546 _Must_inspect_result_
547 _IRQL_requires_max_(DISPATCH_LEVEL)
548 WDFAPI
549 NTSTATUS
550 VFWDFEXPORT(WdfDeviceWdmDispatchIrp)(
551     _In_
552     PWDF_DRIVER_GLOBALS DriverGlobals,
553     _In_
554     WDFDEVICE Device,
555     _In_
556     PIRP Irp,
557     _In_
558     WDFCONTEXT DispatchContext
559     );
560 
561 _Must_inspect_result_
562 _IRQL_requires_max_(DISPATCH_LEVEL)
563 WDFAPI
564 NTSTATUS
565 VFWDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue)(
566     _In_
567     PWDF_DRIVER_GLOBALS DriverGlobals,
568     _In_
569     WDFDEVICE Device,
570     _In_
571     PIRP Irp,
572     _In_
573     WDFQUEUE Queue,
574     _In_
575     ULONG Flags
576     );
577 
578 _Must_inspect_result_
579 _IRQL_requires_max_(DISPATCH_LEVEL)
580 WDFAPI
581 NTSTATUS
582 VFWDFEXPORT(WdfDeviceAddDependentUsageDeviceObject)(
583     _In_
584     PWDF_DRIVER_GLOBALS DriverGlobals,
585     _In_
586     WDFDEVICE Device,
587     _In_
588     PDEVICE_OBJECT DependentDevice
589     );
590 
591 _IRQL_requires_max_(DISPATCH_LEVEL)
592 WDFAPI
593 VOID
594 VFWDFEXPORT(WdfDeviceRemoveDependentUsageDeviceObject)(
595     _In_
596     PWDF_DRIVER_GLOBALS DriverGlobals,
597     _In_
598     WDFDEVICE Device,
599     _In_
600     PDEVICE_OBJECT DependentDevice
601     );
602 
603 _Must_inspect_result_
604 _IRQL_requires_max_(DISPATCH_LEVEL)
605 WDFAPI
606 NTSTATUS
607 VFWDFEXPORT(WdfDeviceAddRemovalRelationsPhysicalDevice)(
608     _In_
609     PWDF_DRIVER_GLOBALS DriverGlobals,
610     _In_
611     WDFDEVICE Device,
612     _In_
613     PDEVICE_OBJECT PhysicalDevice
614     );
615 
616 _IRQL_requires_max_(DISPATCH_LEVEL)
617 WDFAPI
618 VOID
619 VFWDFEXPORT(WdfDeviceRemoveRemovalRelationsPhysicalDevice)(
620     _In_
621     PWDF_DRIVER_GLOBALS DriverGlobals,
622     _In_
623     WDFDEVICE Device,
624     _In_
625     PDEVICE_OBJECT PhysicalDevice
626     );
627 
628 _IRQL_requires_max_(DISPATCH_LEVEL)
629 WDFAPI
630 VOID
631 VFWDFEXPORT(WdfDeviceClearRemovalRelationsDevices)(
632     _In_
633     PWDF_DRIVER_GLOBALS DriverGlobals,
634     _In_
635     WDFDEVICE Device
636     );
637 
638 _IRQL_requires_max_(DISPATCH_LEVEL)
639 WDFAPI
640 WDFDRIVER
641 VFWDFEXPORT(WdfDeviceGetDriver)(
642     _In_
643     PWDF_DRIVER_GLOBALS DriverGlobals,
644     _In_
645     WDFDEVICE Device
646     );
647 
648 _Must_inspect_result_
649 _IRQL_requires_max_(PASSIVE_LEVEL)
650 WDFAPI
651 NTSTATUS
652 VFWDFEXPORT(WdfDeviceRetrieveDeviceName)(
653     _In_
654     PWDF_DRIVER_GLOBALS DriverGlobals,
655     _In_
656     WDFDEVICE Device,
657     _In_
658     WDFSTRING String
659     );
660 
661 _Must_inspect_result_
662 _IRQL_requires_max_(PASSIVE_LEVEL)
663 WDFAPI
664 NTSTATUS
665 VFWDFEXPORT(WdfDeviceAssignMofResourceName)(
666     _In_
667     PWDF_DRIVER_GLOBALS DriverGlobals,
668     _In_
669     WDFDEVICE Device,
670     _In_
671     PCUNICODE_STRING MofResourceName
672     );
673 
674 _IRQL_requires_max_(DISPATCH_LEVEL)
675 WDFAPI
676 WDFIOTARGET
677 VFWDFEXPORT(WdfDeviceGetIoTarget)(
678     _In_
679     PWDF_DRIVER_GLOBALS DriverGlobals,
680     _In_
681     WDFDEVICE Device
682     );
683 
684 _IRQL_requires_max_(DISPATCH_LEVEL)
685 WDFAPI
686 WDF_DEVICE_PNP_STATE
687 VFWDFEXPORT(WdfDeviceGetDevicePnpState)(
688     _In_
689     PWDF_DRIVER_GLOBALS DriverGlobals,
690     _In_
691     WDFDEVICE Device
692     );
693 
694 _IRQL_requires_max_(DISPATCH_LEVEL)
695 WDFAPI
696 WDF_DEVICE_POWER_STATE
697 VFWDFEXPORT(WdfDeviceGetDevicePowerState)(
698     _In_
699     PWDF_DRIVER_GLOBALS DriverGlobals,
700     _In_
701     WDFDEVICE Device
702     );
703 
704 _IRQL_requires_max_(DISPATCH_LEVEL)
705 WDFAPI
706 WDF_DEVICE_POWER_POLICY_STATE
707 VFWDFEXPORT(WdfDeviceGetDevicePowerPolicyState)(
708     _In_
709     PWDF_DRIVER_GLOBALS DriverGlobals,
710     _In_
711     WDFDEVICE Device
712     );
713 
714 _Must_inspect_result_
715 _IRQL_requires_max_(DISPATCH_LEVEL)
716 WDFAPI
717 NTSTATUS
718 VFWDFEXPORT(WdfDeviceAssignS0IdleSettings)(
719     _In_
720     PWDF_DRIVER_GLOBALS DriverGlobals,
721     _In_
722     WDFDEVICE Device,
723     _In_
724     PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
725     );
726 
727 _Must_inspect_result_
728 _IRQL_requires_max_(DISPATCH_LEVEL)
729 WDFAPI
730 NTSTATUS
731 VFWDFEXPORT(WdfDeviceAssignSxWakeSettings)(
732     _In_
733     PWDF_DRIVER_GLOBALS DriverGlobals,
734     _In_
735     WDFDEVICE Device,
736     _In_
737     PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS Settings
738     );
739 
740 _Must_inspect_result_
741 _IRQL_requires_max_(PASSIVE_LEVEL)
742 WDFAPI
743 NTSTATUS
744 VFWDFEXPORT(WdfDeviceOpenRegistryKey)(
745     _In_
746     PWDF_DRIVER_GLOBALS DriverGlobals,
747     _In_
748     WDFDEVICE Device,
749     _In_
750     ULONG DeviceInstanceKeyType,
751     _In_
752     ACCESS_MASK DesiredAccess,
753     _In_opt_
754     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
755     _Out_
756     WDFKEY* Key
757     );
758 
759 _Must_inspect_result_
760 _IRQL_requires_max_(PASSIVE_LEVEL)
761 WDFAPI
762 NTSTATUS
763 VFWDFEXPORT(WdfDeviceOpenDevicemapKey)(
764     _In_
765     PWDF_DRIVER_GLOBALS DriverGlobals,
766     _In_
767     WDFDEVICE Device,
768     _In_
769     PCUNICODE_STRING KeyName,
770     _In_
771     ACCESS_MASK DesiredAccess,
772     _In_opt_
773     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
774     _Out_
775     WDFKEY* Key
776     );
777 
778 _IRQL_requires_max_(DISPATCH_LEVEL)
779 WDFAPI
780 VOID
781 VFWDFEXPORT(WdfDeviceSetSpecialFileSupport)(
782     _In_
783     PWDF_DRIVER_GLOBALS DriverGlobals,
784     _In_
785     WDFDEVICE Device,
786     _In_
787     WDF_SPECIAL_FILE_TYPE FileType,
788     _In_
789     BOOLEAN FileTypeIsSupported
790     );
791 
792 _IRQL_requires_max_(DISPATCH_LEVEL)
793 WDFAPI
794 VOID
795 VFWDFEXPORT(WdfDeviceSetCharacteristics)(
796     _In_
797     PWDF_DRIVER_GLOBALS DriverGlobals,
798     _In_
799     WDFDEVICE Device,
800     _In_
801     ULONG DeviceCharacteristics
802     );
803 
804 _IRQL_requires_max_(DISPATCH_LEVEL)
805 WDFAPI
806 ULONG
807 VFWDFEXPORT(WdfDeviceGetCharacteristics)(
808     _In_
809     PWDF_DRIVER_GLOBALS DriverGlobals,
810     _In_
811     WDFDEVICE Device
812     );
813 
814 _IRQL_requires_max_(DISPATCH_LEVEL)
815 WDFAPI
816 ULONG
817 VFWDFEXPORT(WdfDeviceGetAlignmentRequirement)(
818     _In_
819     PWDF_DRIVER_GLOBALS DriverGlobals,
820     _In_
821     WDFDEVICE Device
822     );
823 
824 _IRQL_requires_max_(DISPATCH_LEVEL)
825 WDFAPI
826 VOID
827 VFWDFEXPORT(WdfDeviceSetAlignmentRequirement)(
828     _In_
829     PWDF_DRIVER_GLOBALS DriverGlobals,
830     _In_
831     WDFDEVICE Device,
832     _In_
833     ULONG AlignmentRequirement
834     );
835 
836 _IRQL_requires_max_(DISPATCH_LEVEL)
837 WDFAPI
838 VOID
839 VFWDFEXPORT(WdfDeviceInitFree)(
840     _In_
841     PWDF_DRIVER_GLOBALS DriverGlobals,
842     _In_
843     PWDFDEVICE_INIT DeviceInit
844     );
845 
846 _IRQL_requires_max_(DISPATCH_LEVEL)
847 WDFAPI
848 VOID
849 VFWDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks)(
850     _In_
851     PWDF_DRIVER_GLOBALS DriverGlobals,
852     _In_
853     PWDFDEVICE_INIT DeviceInit,
854     _In_
855     PWDF_PNPPOWER_EVENT_CALLBACKS PnpPowerEventCallbacks
856     );
857 
858 _IRQL_requires_max_(DISPATCH_LEVEL)
859 WDFAPI
860 VOID
861 VFWDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks)(
862     _In_
863     PWDF_DRIVER_GLOBALS DriverGlobals,
864     _In_
865     PWDFDEVICE_INIT DeviceInit,
866     _In_
867     PWDF_POWER_POLICY_EVENT_CALLBACKS PowerPolicyEventCallbacks
868     );
869 
870 _IRQL_requires_max_(DISPATCH_LEVEL)
871 WDFAPI
872 VOID
873 VFWDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership)(
874     _In_
875     PWDF_DRIVER_GLOBALS DriverGlobals,
876     _In_
877     PWDFDEVICE_INIT DeviceInit,
878     _In_
879     BOOLEAN IsPowerPolicyOwner
880     );
881 
882 _Must_inspect_result_
883 _IRQL_requires_max_(PASSIVE_LEVEL)
884 WDFAPI
885 NTSTATUS
886 VFWDFEXPORT(WdfDeviceInitRegisterPnpStateChangeCallback)(
887     _In_
888     PWDF_DRIVER_GLOBALS DriverGlobals,
889     _In_
890     PWDFDEVICE_INIT DeviceInit,
891     _In_
892     WDF_DEVICE_PNP_STATE PnpState,
893     _In_
894     PFN_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION EvtDevicePnpStateChange,
895     _In_
896     ULONG CallbackTypes
897     );
898 
899 _Must_inspect_result_
900 _IRQL_requires_max_(PASSIVE_LEVEL)
901 WDFAPI
902 NTSTATUS
903 VFWDFEXPORT(WdfDeviceInitRegisterPowerStateChangeCallback)(
904     _In_
905     PWDF_DRIVER_GLOBALS DriverGlobals,
906     _In_
907     PWDFDEVICE_INIT DeviceInit,
908     _In_
909     WDF_DEVICE_POWER_STATE PowerState,
910     _In_
911     PFN_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION EvtDevicePowerStateChange,
912     _In_
913     ULONG CallbackTypes
914     );
915 
916 _Must_inspect_result_
917 _IRQL_requires_max_(PASSIVE_LEVEL)
918 WDFAPI
919 NTSTATUS
920 VFWDFEXPORT(WdfDeviceInitRegisterPowerPolicyStateChangeCallback)(
921     _In_
922     PWDF_DRIVER_GLOBALS DriverGlobals,
923     _In_
924     PWDFDEVICE_INIT DeviceInit,
925     _In_
926     WDF_DEVICE_POWER_POLICY_STATE PowerPolicyState,
927     _In_
928     PFN_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION EvtDevicePowerPolicyStateChange,
929     _In_
930     ULONG CallbackTypes
931     );
932 
933 _IRQL_requires_max_(DISPATCH_LEVEL)
934 WDFAPI
935 VOID
936 VFWDFEXPORT(WdfDeviceInitSetExclusive)(
937     _In_
938     PWDF_DRIVER_GLOBALS DriverGlobals,
939     _In_
940     PWDFDEVICE_INIT DeviceInit,
941     _In_
942     BOOLEAN IsExclusive
943     );
944 
945 _IRQL_requires_max_(DISPATCH_LEVEL)
946 WDFAPI
947 VOID
948 VFWDFEXPORT(WdfDeviceInitSetIoType)(
949     _In_
950     PWDF_DRIVER_GLOBALS DriverGlobals,
951     _In_
952     PWDFDEVICE_INIT DeviceInit,
953     _In_
954     WDF_DEVICE_IO_TYPE IoType
955     );
956 
957 _IRQL_requires_max_(DISPATCH_LEVEL)
958 WDFAPI
959 VOID
960 VFWDFEXPORT(WdfDeviceInitSetPowerNotPageable)(
961     _In_
962     PWDF_DRIVER_GLOBALS DriverGlobals,
963     _In_
964     PWDFDEVICE_INIT DeviceInit
965     );
966 
967 _IRQL_requires_max_(DISPATCH_LEVEL)
968 WDFAPI
969 VOID
970 VFWDFEXPORT(WdfDeviceInitSetPowerPageable)(
971     _In_
972     PWDF_DRIVER_GLOBALS DriverGlobals,
973     _In_
974     PWDFDEVICE_INIT DeviceInit
975     );
976 
977 _IRQL_requires_max_(DISPATCH_LEVEL)
978 WDFAPI
979 VOID
980 VFWDFEXPORT(WdfDeviceInitSetPowerInrush)(
981     _In_
982     PWDF_DRIVER_GLOBALS DriverGlobals,
983     _In_
984     PWDFDEVICE_INIT DeviceInit
985     );
986 
987 _IRQL_requires_max_(DISPATCH_LEVEL)
988 WDFAPI
989 VOID
990 VFWDFEXPORT(WdfDeviceInitSetDeviceType)(
991     _In_
992     PWDF_DRIVER_GLOBALS DriverGlobals,
993     _In_
994     PWDFDEVICE_INIT DeviceInit,
995     _In_
996     DEVICE_TYPE DeviceType
997     );
998 
999 _Must_inspect_result_
1000 _IRQL_requires_max_(PASSIVE_LEVEL)
1001 WDFAPI
1002 NTSTATUS
1003 VFWDFEXPORT(WdfDeviceInitAssignName)(
1004     _In_
1005     PWDF_DRIVER_GLOBALS DriverGlobals,
1006     _In_
1007     PWDFDEVICE_INIT DeviceInit,
1008     _In_opt_
1009     PCUNICODE_STRING DeviceName
1010     );
1011 
1012 _Must_inspect_result_
1013 _IRQL_requires_max_(PASSIVE_LEVEL)
1014 WDFAPI
1015 NTSTATUS
1016 VFWDFEXPORT(WdfDeviceInitAssignSDDLString)(
1017     _In_
1018     PWDF_DRIVER_GLOBALS DriverGlobals,
1019     _In_
1020     PWDFDEVICE_INIT DeviceInit,
1021     _In_opt_
1022     PCUNICODE_STRING SDDLString
1023     );
1024 
1025 _IRQL_requires_max_(DISPATCH_LEVEL)
1026 WDFAPI
1027 VOID
1028 VFWDFEXPORT(WdfDeviceInitSetDeviceClass)(
1029     _In_
1030     PWDF_DRIVER_GLOBALS DriverGlobals,
1031     _In_
1032     PWDFDEVICE_INIT DeviceInit,
1033     _In_
1034     CONST GUID* DeviceClassGuid
1035     );
1036 
1037 _IRQL_requires_max_(DISPATCH_LEVEL)
1038 WDFAPI
1039 VOID
1040 VFWDFEXPORT(WdfDeviceInitSetCharacteristics)(
1041     _In_
1042     PWDF_DRIVER_GLOBALS DriverGlobals,
1043     _In_
1044     PWDFDEVICE_INIT DeviceInit,
1045     _In_
1046     ULONG DeviceCharacteristics,
1047     _In_
1048     BOOLEAN OrInValues
1049     );
1050 
1051 _IRQL_requires_max_(DISPATCH_LEVEL)
1052 WDFAPI
1053 VOID
1054 VFWDFEXPORT(WdfDeviceInitSetFileObjectConfig)(
1055     _In_
1056     PWDF_DRIVER_GLOBALS DriverGlobals,
1057     _In_
1058     PWDFDEVICE_INIT DeviceInit,
1059     _In_
1060     PWDF_FILEOBJECT_CONFIG FileObjectConfig,
1061     _In_opt_
1062     PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
1063     );
1064 
1065 _IRQL_requires_max_(DISPATCH_LEVEL)
1066 WDFAPI
1067 VOID
1068 VFWDFEXPORT(WdfDeviceInitSetRequestAttributes)(
1069     _In_
1070     PWDF_DRIVER_GLOBALS DriverGlobals,
1071     _In_
1072     PWDFDEVICE_INIT DeviceInit,
1073     _In_
1074     PWDF_OBJECT_ATTRIBUTES RequestAttributes
1075     );
1076 
1077 _Must_inspect_result_
1078 _IRQL_requires_max_(DISPATCH_LEVEL)
1079 WDFAPI
1080 NTSTATUS
1081 VFWDFEXPORT(WdfDeviceInitAssignWdmIrpPreprocessCallback)(
1082     _In_
1083     PWDF_DRIVER_GLOBALS DriverGlobals,
1084     _In_
1085     PWDFDEVICE_INIT DeviceInit,
1086     _In_
1087     PFN_WDFDEVICE_WDM_IRP_PREPROCESS EvtDeviceWdmIrpPreprocess,
1088     _In_
1089     UCHAR MajorFunction,
1090     _When_(NumMinorFunctions > 0, _In_reads_bytes_(NumMinorFunctions))
1091     _When_(NumMinorFunctions == 0, _In_opt_)
1092     PUCHAR MinorFunctions,
1093     _In_
1094     ULONG NumMinorFunctions
1095     );
1096 
1097 _IRQL_requires_max_(DISPATCH_LEVEL)
1098 WDFAPI
1099 VOID
1100 VFWDFEXPORT(WdfDeviceInitSetIoInCallerContextCallback)(
1101     _In_
1102     PWDF_DRIVER_GLOBALS DriverGlobals,
1103     _In_
1104     PWDFDEVICE_INIT DeviceInit,
1105     _In_
1106     PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
1107     );
1108 
1109 _IRQL_requires_max_(DISPATCH_LEVEL)
1110 WDFAPI
1111 VOID
1112 VFWDFEXPORT(WdfDeviceInitSetRemoveLockOptions)(
1113     _In_
1114     PWDF_DRIVER_GLOBALS DriverGlobals,
1115     _In_
1116     PWDFDEVICE_INIT DeviceInit,
1117     _In_
1118     PWDF_REMOVE_LOCK_OPTIONS Options
1119     );
1120 
1121 _Must_inspect_result_
1122 _IRQL_requires_max_(PASSIVE_LEVEL)
1123 WDFAPI
1124 NTSTATUS
1125 VFWDFEXPORT(WdfDeviceCreate)(
1126     _In_
1127     PWDF_DRIVER_GLOBALS DriverGlobals,
1128     _Inout_
1129     PWDFDEVICE_INIT* DeviceInit,
1130     _In_opt_
1131     PWDF_OBJECT_ATTRIBUTES DeviceAttributes,
1132     _Out_
1133     WDFDEVICE* Device
1134     );
1135 
1136 _IRQL_requires_max_(DISPATCH_LEVEL)
1137 WDFAPI
1138 VOID
1139 VFWDFEXPORT(WdfDeviceSetStaticStopRemove)(
1140     _In_
1141     PWDF_DRIVER_GLOBALS DriverGlobals,
1142     _In_
1143     WDFDEVICE Device,
1144     _In_
1145     BOOLEAN Stoppable
1146     );
1147 
1148 _Must_inspect_result_
1149 _IRQL_requires_max_(PASSIVE_LEVEL)
1150 WDFAPI
1151 NTSTATUS
1152 VFWDFEXPORT(WdfDeviceCreateDeviceInterface)(
1153     _In_
1154     PWDF_DRIVER_GLOBALS DriverGlobals,
1155     _In_
1156     WDFDEVICE Device,
1157     _In_
1158     CONST GUID* InterfaceClassGUID,
1159     _In_opt_
1160     PCUNICODE_STRING ReferenceString
1161     );
1162 
1163 _IRQL_requires_max_(PASSIVE_LEVEL)
1164 WDFAPI
1165 VOID
1166 VFWDFEXPORT(WdfDeviceSetDeviceInterfaceState)(
1167     _In_
1168     PWDF_DRIVER_GLOBALS DriverGlobals,
1169     _In_
1170     WDFDEVICE Device,
1171     _In_
1172     CONST GUID* InterfaceClassGUID,
1173     _In_opt_
1174     PCUNICODE_STRING ReferenceString,
1175     _In_
1176     BOOLEAN IsInterfaceEnabled
1177     );
1178 
1179 _Must_inspect_result_
1180 _IRQL_requires_max_(PASSIVE_LEVEL)
1181 WDFAPI
1182 NTSTATUS
1183 VFWDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString)(
1184     _In_
1185     PWDF_DRIVER_GLOBALS DriverGlobals,
1186     _In_
1187     WDFDEVICE Device,
1188     _In_
1189     CONST GUID* InterfaceClassGUID,
1190     _In_opt_
1191     PCUNICODE_STRING ReferenceString,
1192     _In_
1193     WDFSTRING String
1194     );
1195 
1196 _Must_inspect_result_
1197 _IRQL_requires_max_(PASSIVE_LEVEL)
1198 WDFAPI
1199 NTSTATUS
1200 VFWDFEXPORT(WdfDeviceCreateSymbolicLink)(
1201     _In_
1202     PWDF_DRIVER_GLOBALS DriverGlobals,
1203     _In_
1204     WDFDEVICE Device,
1205     _In_
1206     PCUNICODE_STRING SymbolicLinkName
1207     );
1208 
1209 _Must_inspect_result_
1210 _IRQL_requires_max_(PASSIVE_LEVEL)
1211 WDFAPI
1212 NTSTATUS
1213 VFWDFEXPORT(WdfDeviceQueryProperty)(
1214     _In_
1215     PWDF_DRIVER_GLOBALS DriverGlobals,
1216     _In_
1217     WDFDEVICE Device,
1218     _In_
1219     DEVICE_REGISTRY_PROPERTY DeviceProperty,
1220     _In_
1221     ULONG BufferLength,
1222     _Out_writes_bytes_all_(BufferLength)
1223     PVOID PropertyBuffer,
1224     _Out_
1225     PULONG ResultLength
1226     );
1227 
1228 _Must_inspect_result_
1229 _IRQL_requires_max_(PASSIVE_LEVEL)
1230 WDFAPI
1231 NTSTATUS
1232 VFWDFEXPORT(WdfDeviceAllocAndQueryProperty)(
1233     _In_
1234     PWDF_DRIVER_GLOBALS DriverGlobals,
1235     _In_
1236     WDFDEVICE Device,
1237     _In_
1238     DEVICE_REGISTRY_PROPERTY DeviceProperty,
1239     _In_
1240     _Strict_type_match_
1241     POOL_TYPE PoolType,
1242     _In_opt_
1243     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
1244     _Out_
1245     WDFMEMORY* PropertyMemory
1246     );
1247 
1248 _IRQL_requires_max_(DISPATCH_LEVEL)
1249 WDFAPI
1250 VOID
1251 VFWDFEXPORT(WdfDeviceSetPnpCapabilities)(
1252     _In_
1253     PWDF_DRIVER_GLOBALS DriverGlobals,
1254     _In_
1255     WDFDEVICE Device,
1256     _In_
1257     PWDF_DEVICE_PNP_CAPABILITIES PnpCapabilities
1258     );
1259 
1260 _IRQL_requires_max_(DISPATCH_LEVEL)
1261 WDFAPI
1262 VOID
1263 VFWDFEXPORT(WdfDeviceSetPowerCapabilities)(
1264     _In_
1265     PWDF_DRIVER_GLOBALS DriverGlobals,
1266     _In_
1267     WDFDEVICE Device,
1268     _In_
1269     PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
1270     );
1271 
1272 _IRQL_requires_max_(DISPATCH_LEVEL)
1273 WDFAPI
1274 VOID
1275 VFWDFEXPORT(WdfDeviceSetBusInformationForChildren)(
1276     _In_
1277     PWDF_DRIVER_GLOBALS DriverGlobals,
1278     _In_
1279     WDFDEVICE Device,
1280     _In_
1281     PPNP_BUS_INFORMATION BusInformation
1282     );
1283 
1284 _Must_inspect_result_
1285 _IRQL_requires_max_(DISPATCH_LEVEL)
1286 WDFAPI
1287 NTSTATUS
1288 VFWDFEXPORT(WdfDeviceIndicateWakeStatus)(
1289     _In_
1290     PWDF_DRIVER_GLOBALS DriverGlobals,
1291     _In_
1292     WDFDEVICE Device,
1293     _In_
1294     NTSTATUS WaitWakeStatus
1295     );
1296 
1297 _IRQL_requires_max_(DISPATCH_LEVEL)
1298 WDFAPI
1299 VOID
1300 VFWDFEXPORT(WdfDeviceSetFailed)(
1301     _In_
1302     PWDF_DRIVER_GLOBALS DriverGlobals,
1303     _In_
1304     WDFDEVICE Device,
1305     _In_
1306     WDF_DEVICE_FAILED_ACTION FailedAction
1307     );
1308 
1309 _Must_inspect_result_
1310 _When_(WaitForD0 == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
1311 _When_(WaitForD0 != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
1312 WDFAPI
1313 NTSTATUS
1314 VFWDFEXPORT(WdfDeviceStopIdleNoTrack)(
1315     _In_
1316     PWDF_DRIVER_GLOBALS DriverGlobals,
1317     _In_
1318     WDFDEVICE Device,
1319     _In_
1320     BOOLEAN WaitForD0
1321     );
1322 
1323 _IRQL_requires_max_(DISPATCH_LEVEL)
1324 WDFAPI
1325 VOID
1326 VFWDFEXPORT(WdfDeviceResumeIdleNoTrack)(
1327     _In_
1328     PWDF_DRIVER_GLOBALS DriverGlobals,
1329     _In_
1330     WDFDEVICE Device
1331     );
1332 
1333 _Must_inspect_result_
1334 _When_(WaitForD0 == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
1335 _When_(WaitForD0 != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
1336 WDFAPI
1337 NTSTATUS
1338 VFWDFEXPORT(WdfDeviceStopIdleActual)(
1339     _In_
1340     PWDF_DRIVER_GLOBALS DriverGlobals,
1341     _In_
1342     WDFDEVICE Device,
1343     _In_
1344     BOOLEAN WaitForD0,
1345     _In_opt_
1346     PVOID Tag,
1347     _In_
1348     LONG Line,
1349     _In_z_
1350     PCHAR File
1351     );
1352 
1353 _IRQL_requires_max_(DISPATCH_LEVEL)
1354 WDFAPI
1355 VOID
1356 VFWDFEXPORT(WdfDeviceResumeIdleActual)(
1357     _In_
1358     PWDF_DRIVER_GLOBALS DriverGlobals,
1359     _In_
1360     WDFDEVICE Device,
1361     _In_opt_
1362     PVOID Tag,
1363     _In_
1364     LONG Line,
1365     _In_z_
1366     PCHAR File
1367     );
1368 
1369 _IRQL_requires_max_(DISPATCH_LEVEL)
1370 WDFAPI
1371 WDFFILEOBJECT
1372 VFWDFEXPORT(WdfDeviceGetFileObject)(
1373     _In_
1374     PWDF_DRIVER_GLOBALS DriverGlobals,
1375     _In_
1376     WDFDEVICE Device,
1377     _In_
1378     PFILE_OBJECT FileObject
1379     );
1380 
1381 _Must_inspect_result_
1382 _IRQL_requires_max_(DISPATCH_LEVEL)
1383 WDFAPI
1384 NTSTATUS
1385 VFWDFEXPORT(WdfDeviceEnqueueRequest)(
1386     _In_
1387     PWDF_DRIVER_GLOBALS DriverGlobals,
1388     _In_
1389     WDFDEVICE Device,
1390     _In_
1391     WDFREQUEST Request
1392     );
1393 
1394 _IRQL_requires_max_(DISPATCH_LEVEL)
1395 WDFAPI
1396 WDFQUEUE
1397 VFWDFEXPORT(WdfDeviceGetDefaultQueue)(
1398     _In_
1399     PWDF_DRIVER_GLOBALS DriverGlobals,
1400     _In_
1401     WDFDEVICE Device
1402     );
1403 
1404 _Must_inspect_result_
1405 _IRQL_requires_max_(DISPATCH_LEVEL)
1406 WDFAPI
1407 NTSTATUS
1408 VFWDFEXPORT(WdfDeviceConfigureRequestDispatching)(
1409     _In_
1410     PWDF_DRIVER_GLOBALS DriverGlobals,
1411     _In_
1412     WDFDEVICE Device,
1413     _In_
1414     WDFQUEUE Queue,
1415     _In_
1416     _Strict_type_match_
1417     WDF_REQUEST_TYPE RequestType
1418     );
1419 
1420 _Must_inspect_result_
1421 _IRQL_requires_max_(DISPATCH_LEVEL)
1422 WDFAPI
1423 NTSTATUS
1424 VFWDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback)(
1425     _In_
1426     PWDF_DRIVER_GLOBALS DriverGlobals,
1427     _In_
1428     WDFDEVICE Device,
1429     _In_opt_
1430     WDFDRIVER Driver,
1431     _In_
1432     UCHAR MajorFunction,
1433     _In_
1434     PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDisptach,
1435     _In_opt_
1436     WDFCONTEXT DriverContext
1437     );
1438 
1439 _IRQL_requires_max_(DISPATCH_LEVEL)
1440 WDFAPI
1441 POWER_ACTION
1442 VFWDFEXPORT(WdfDeviceGetSystemPowerAction)(
1443     _In_
1444     PWDF_DRIVER_GLOBALS DriverGlobals,
1445     _In_
1446     WDFDEVICE Device
1447     );
1448 
1449 _Must_inspect_result_
1450 _IRQL_requires_max_(PASSIVE_LEVEL)
1451 WDFAPI
1452 NTSTATUS
1453 VFWDFEXPORT(WdfDeviceWdmAssignPowerFrameworkSettings)(
1454     _In_
1455     PWDF_DRIVER_GLOBALS DriverGlobals,
1456     _In_
1457     WDFDEVICE Device,
1458     _In_
1459     PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
1460     );
1461 
1462 _IRQL_requires_max_(DISPATCH_LEVEL)
1463 WDFAPI
1464 VOID
1465 VFWDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure)(
1466     _In_
1467     PWDF_DRIVER_GLOBALS DriverGlobals,
1468     _In_
1469     PWDFDEVICE_INIT DeviceInit,
1470     _In_
1471     WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
1472     );
1473 
1474 _IRQL_requires_max_(PASSIVE_LEVEL)
1475 WDFAPI
1476 VOID
1477 VFWDFEXPORT(WdfDeviceInitSetIoTypeEx)(
1478     _In_
1479     PWDF_DRIVER_GLOBALS DriverGlobals,
1480     _In_
1481     PWDFDEVICE_INIT DeviceInit,
1482     _In_
1483     PWDF_IO_TYPE_CONFIG IoTypeConfig
1484     );
1485 
1486 _Must_inspect_result_
1487 _IRQL_requires_max_(APC_LEVEL)
1488 WDFAPI
1489 NTSTATUS
1490 VFWDFEXPORT(WdfDeviceQueryPropertyEx)(
1491     _In_
1492     PWDF_DRIVER_GLOBALS DriverGlobals,
1493     _In_
1494     WDFDEVICE Device,
1495     _In_
1496     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
1497     _In_
1498     ULONG BufferLength,
1499     _Out_
1500     PVOID PropertyBuffer,
1501     _Out_
1502     PULONG RequiredSize,
1503     _Out_
1504     PDEVPROPTYPE Type
1505     );
1506 
1507 _Must_inspect_result_
1508 _IRQL_requires_max_(APC_LEVEL)
1509 WDFAPI
1510 NTSTATUS
1511 VFWDFEXPORT(WdfDeviceAllocAndQueryPropertyEx)(
1512     _In_
1513     PWDF_DRIVER_GLOBALS DriverGlobals,
1514     _In_
1515     WDFDEVICE Device,
1516     _In_
1517     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
1518     _In_
1519     _Strict_type_match_
1520     POOL_TYPE PoolType,
1521     _In_opt_
1522     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
1523     _Out_
1524     WDFMEMORY* PropertyMemory,
1525     _Out_
1526     PDEVPROPTYPE Type
1527     );
1528 
1529 _Must_inspect_result_
1530 _IRQL_requires_max_(APC_LEVEL)
1531 WDFAPI
1532 NTSTATUS
1533 VFWDFEXPORT(WdfDeviceAssignProperty)(
1534     _In_
1535     PWDF_DRIVER_GLOBALS DriverGlobals,
1536     _In_
1537     WDFDEVICE Device,
1538     _In_
1539     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
1540     _In_
1541     DEVPROPTYPE Type,
1542     _In_
1543     ULONG Size,
1544     _In_opt_
1545     PVOID Data
1546     );
1547 
1548 _IRQL_requires_max_(DISPATCH_LEVEL)
1549 WDFAPI
1550 WDFIOTARGET
1551 VFWDFEXPORT(WdfDeviceGetSelfIoTarget)(
1552     _In_
1553     PWDF_DRIVER_GLOBALS DriverGlobals,
1554     _In_
1555     WDFDEVICE Device
1556     );
1557 
1558 _IRQL_requires_max_(DISPATCH_LEVEL)
1559 WDFAPI
1560 VOID
1561 VFWDFEXPORT(WdfDeviceInitAllowSelfIoTarget)(
1562     _In_
1563     PWDF_DRIVER_GLOBALS DriverGlobals,
1564     _In_
1565     PWDFDEVICE_INIT DeviceInit
1566     );
1567 
1568 _Must_inspect_result_
1569 _IRQL_requires_max_(PASSIVE_LEVEL)
1570 WDFAPI
1571 NTSTATUS
1572 VFWDFEXPORT(WdfDmaEnablerCreate)(
1573     _In_
1574     PWDF_DRIVER_GLOBALS DriverGlobals,
1575     _In_
1576     WDFDEVICE Device,
1577     _In_
1578     PWDF_DMA_ENABLER_CONFIG Config,
1579     _In_opt_
1580     PWDF_OBJECT_ATTRIBUTES Attributes,
1581     _Out_
1582     WDFDMAENABLER* DmaEnablerHandle
1583     );
1584 
1585 _Must_inspect_result_
1586 _IRQL_requires_max_(PASSIVE_LEVEL)
1587 WDFAPI
1588 NTSTATUS
1589 VFWDFEXPORT(WdfDmaEnablerConfigureSystemProfile)(
1590     _In_
1591     PWDF_DRIVER_GLOBALS DriverGlobals,
1592     _In_
1593     WDFDMAENABLER DmaEnabler,
1594     _In_
1595     PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig,
1596     _In_
1597     WDF_DMA_DIRECTION ConfigDirection
1598     );
1599 
1600 _IRQL_requires_max_(DISPATCH_LEVEL)
1601 WDFAPI
1602 size_t
1603 VFWDFEXPORT(WdfDmaEnablerGetMaximumLength)(
1604     _In_
1605     PWDF_DRIVER_GLOBALS DriverGlobals,
1606     _In_
1607     WDFDMAENABLER DmaEnabler
1608     );
1609 
1610 _IRQL_requires_max_(DISPATCH_LEVEL)
1611 WDFAPI
1612 size_t
1613 VFWDFEXPORT(WdfDmaEnablerGetMaximumScatterGatherElements)(
1614     _In_
1615     PWDF_DRIVER_GLOBALS DriverGlobals,
1616     _In_
1617     WDFDMAENABLER DmaEnabler
1618     );
1619 
1620 _IRQL_requires_max_(PASSIVE_LEVEL)
1621 WDFAPI
1622 VOID
1623 VFWDFEXPORT(WdfDmaEnablerSetMaximumScatterGatherElements)(
1624     _In_
1625     PWDF_DRIVER_GLOBALS DriverGlobals,
1626     _In_
1627     WDFDMAENABLER DmaEnabler,
1628     _In_
1629     _When_(MaximumFragments == 0, __drv_reportError(MaximumFragments cannot be zero))
1630     size_t MaximumFragments
1631     );
1632 
1633 _IRQL_requires_max_(DISPATCH_LEVEL)
1634 WDFAPI
1635 size_t
1636 VFWDFEXPORT(WdfDmaEnablerGetFragmentLength)(
1637     _In_
1638     PWDF_DRIVER_GLOBALS DriverGlobals,
1639     _In_
1640     WDFDMAENABLER DmaEnabler,
1641     _In_
1642     WDF_DMA_DIRECTION DmaDirection
1643     );
1644 
1645 _IRQL_requires_max_(DISPATCH_LEVEL)
1646 WDFAPI
1647 PDMA_ADAPTER
1648 VFWDFEXPORT(WdfDmaEnablerWdmGetDmaAdapter)(
1649     _In_
1650     PWDF_DRIVER_GLOBALS DriverGlobals,
1651     _In_
1652     WDFDMAENABLER DmaEnabler,
1653     _In_
1654     WDF_DMA_DIRECTION DmaDirection
1655     );
1656 
1657 _Must_inspect_result_
1658 _IRQL_requires_max_(DISPATCH_LEVEL)
1659 WDFAPI
1660 NTSTATUS
1661 VFWDFEXPORT(WdfDmaTransactionCreate)(
1662     _In_
1663     PWDF_DRIVER_GLOBALS DriverGlobals,
1664     _In_
1665     WDFDMAENABLER DmaEnabler,
1666     _In_opt_
1667     PWDF_OBJECT_ATTRIBUTES Attributes,
1668     _Out_
1669     WDFDMATRANSACTION* DmaTransaction
1670     );
1671 
1672 _Must_inspect_result_
1673 _IRQL_requires_max_(DISPATCH_LEVEL)
1674 WDFAPI
1675 NTSTATUS
1676 VFWDFEXPORT(WdfDmaTransactionInitialize)(
1677     _In_
1678     PWDF_DRIVER_GLOBALS DriverGlobals,
1679     _In_
1680     WDFDMATRANSACTION DmaTransaction,
1681     _In_
1682     PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
1683     _In_
1684     WDF_DMA_DIRECTION DmaDirection,
1685     _In_
1686     PMDL Mdl,
1687     _In_
1688     PVOID VirtualAddress,
1689     _In_
1690     _When_(Length == 0, __drv_reportError(Length cannot be zero))
1691     size_t Length
1692     );
1693 
1694 _Must_inspect_result_
1695 _IRQL_requires_max_(DISPATCH_LEVEL)
1696 WDFAPI
1697 NTSTATUS
1698 VFWDFEXPORT(WdfDmaTransactionInitializeUsingOffset)(
1699     _In_
1700     PWDF_DRIVER_GLOBALS DriverGlobals,
1701     _In_
1702     WDFDMATRANSACTION DmaTransaction,
1703     _In_
1704     PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
1705     _In_
1706     WDF_DMA_DIRECTION DmaDirection,
1707     _In_
1708     PMDL Mdl,
1709     _In_
1710     size_t Offset,
1711     _In_
1712     _When_(Length == 0, __drv_reportError(Length cannot be zero))
1713     size_t Length
1714     );
1715 
1716 _Must_inspect_result_
1717 _IRQL_requires_max_(DISPATCH_LEVEL)
1718 WDFAPI
1719 NTSTATUS
1720 VFWDFEXPORT(WdfDmaTransactionInitializeUsingRequest)(
1721     _In_
1722     PWDF_DRIVER_GLOBALS DriverGlobals,
1723     _In_
1724     WDFDMATRANSACTION DmaTransaction,
1725     _In_
1726     WDFREQUEST Request,
1727     _In_
1728     PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
1729     _In_
1730     WDF_DMA_DIRECTION DmaDirection
1731     );
1732 
1733 _Must_inspect_result_
1734 _IRQL_requires_max_(DISPATCH_LEVEL)
1735 WDFAPI
1736 NTSTATUS
1737 VFWDFEXPORT(WdfDmaTransactionExecute)(
1738     _In_
1739     PWDF_DRIVER_GLOBALS DriverGlobals,
1740     _In_
1741     WDFDMATRANSACTION DmaTransaction,
1742     _In_opt_
1743     WDFCONTEXT Context
1744     );
1745 
1746 _Success_(TRUE)
1747 _IRQL_requires_max_(DISPATCH_LEVEL)
1748 WDFAPI
1749 NTSTATUS
1750 VFWDFEXPORT(WdfDmaTransactionRelease)(
1751     _In_
1752     PWDF_DRIVER_GLOBALS DriverGlobals,
1753     _In_
1754     WDFDMATRANSACTION DmaTransaction
1755     );
1756 
1757 _IRQL_requires_max_(DISPATCH_LEVEL)
1758 WDFAPI
1759 BOOLEAN
1760 VFWDFEXPORT(WdfDmaTransactionDmaCompleted)(
1761     _In_
1762     PWDF_DRIVER_GLOBALS DriverGlobals,
1763     _In_
1764     WDFDMATRANSACTION DmaTransaction,
1765     _Out_
1766     NTSTATUS* Status
1767     );
1768 
1769 _IRQL_requires_max_(DISPATCH_LEVEL)
1770 WDFAPI
1771 BOOLEAN
1772 VFWDFEXPORT(WdfDmaTransactionDmaCompletedWithLength)(
1773     _In_
1774     PWDF_DRIVER_GLOBALS DriverGlobals,
1775     _In_
1776     WDFDMATRANSACTION DmaTransaction,
1777     _In_
1778     size_t TransferredLength,
1779     _Out_
1780     NTSTATUS* Status
1781     );
1782 
1783 _IRQL_requires_max_(DISPATCH_LEVEL)
1784 WDFAPI
1785 BOOLEAN
1786 VFWDFEXPORT(WdfDmaTransactionDmaCompletedFinal)(
1787     _In_
1788     PWDF_DRIVER_GLOBALS DriverGlobals,
1789     _In_
1790     WDFDMATRANSACTION DmaTransaction,
1791     _In_
1792     size_t FinalTransferredLength,
1793     _Out_
1794     NTSTATUS* Status
1795     );
1796 
1797 _IRQL_requires_max_(DISPATCH_LEVEL)
1798 WDFAPI
1799 size_t
1800 VFWDFEXPORT(WdfDmaTransactionGetBytesTransferred)(
1801     _In_
1802     PWDF_DRIVER_GLOBALS DriverGlobals,
1803     _In_
1804     WDFDMATRANSACTION DmaTransaction
1805     );
1806 
1807 _IRQL_requires_max_(DISPATCH_LEVEL)
1808 WDFAPI
1809 VOID
1810 VFWDFEXPORT(WdfDmaTransactionSetMaximumLength)(
1811     _In_
1812     PWDF_DRIVER_GLOBALS DriverGlobals,
1813     _In_
1814     WDFDMATRANSACTION DmaTransaction,
1815     _In_
1816     size_t MaximumLength
1817     );
1818 
1819 _IRQL_requires_max_(DISPATCH_LEVEL)
1820 WDFAPI
1821 WDFREQUEST
1822 VFWDFEXPORT(WdfDmaTransactionGetRequest)(
1823     _In_
1824     PWDF_DRIVER_GLOBALS DriverGlobals,
1825     _In_
1826     WDFDMATRANSACTION DmaTransaction
1827     );
1828 
1829 _IRQL_requires_max_(DISPATCH_LEVEL)
1830 WDFAPI
1831 size_t
1832 VFWDFEXPORT(WdfDmaTransactionGetCurrentDmaTransferLength)(
1833     _In_
1834     PWDF_DRIVER_GLOBALS DriverGlobals,
1835     _In_
1836     WDFDMATRANSACTION DmaTransaction
1837     );
1838 
1839 _IRQL_requires_max_(DISPATCH_LEVEL)
1840 WDFAPI
1841 WDFDEVICE
1842 VFWDFEXPORT(WdfDmaTransactionGetDevice)(
1843     _In_
1844     PWDF_DRIVER_GLOBALS DriverGlobals,
1845     _In_
1846     WDFDMATRANSACTION DmaTransaction
1847     );
1848 
1849 _IRQL_requires_max_(DISPATCH_LEVEL)
1850 WDFAPI
1851 VOID
1852 VFWDFEXPORT(WdfDmaTransactionGetTransferInfo)(
1853     _In_
1854     PWDF_DRIVER_GLOBALS DriverGlobals,
1855     _In_
1856     WDFDMATRANSACTION DmaTransaction,
1857     _Out_opt_
1858     ULONG* MapRegisterCount,
1859     _Out_opt_
1860     ULONG* ScatterGatherElementCount
1861     );
1862 
1863 _IRQL_requires_max_(DISPATCH_LEVEL)
1864 WDFAPI
1865 VOID
1866 VFWDFEXPORT(WdfDmaTransactionSetChannelConfigurationCallback)(
1867     _In_
1868     PWDF_DRIVER_GLOBALS DriverGlobals,
1869     _In_
1870     WDFDMATRANSACTION DmaTransaction,
1871     _In_opt_
1872     PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL ConfigureRoutine,
1873     _In_opt_
1874     PVOID ConfigureContext
1875     );
1876 
1877 _IRQL_requires_max_(DISPATCH_LEVEL)
1878 WDFAPI
1879 VOID
1880 VFWDFEXPORT(WdfDmaTransactionSetTransferCompleteCallback)(
1881     _In_
1882     PWDF_DRIVER_GLOBALS DriverGlobals,
1883     _In_
1884     WDFDMATRANSACTION DmaTransaction,
1885     _In_opt_
1886     PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
1887     _In_opt_
1888     PVOID DmaCompletionContext
1889     );
1890 
1891 _IRQL_requires_max_(DISPATCH_LEVEL)
1892 WDFAPI
1893 VOID
1894 VFWDFEXPORT(WdfDmaTransactionSetImmediateExecution)(
1895     _In_
1896     PWDF_DRIVER_GLOBALS DriverGlobals,
1897     _In_
1898     WDFDMATRANSACTION DmaTransaction,
1899     _In_
1900     BOOLEAN UseImmediateExecution
1901     );
1902 
1903 _IRQL_requires_max_(DISPATCH_LEVEL)
1904 WDFAPI
1905 NTSTATUS
1906 VFWDFEXPORT(WdfDmaTransactionAllocateResources)(
1907     _In_
1908     PWDF_DRIVER_GLOBALS DriverGlobals,
1909     _In_
1910     WDFDMATRANSACTION DmaTransaction,
1911     _In_
1912     WDF_DMA_DIRECTION DmaDirection,
1913     _In_
1914     ULONG RequiredMapRegisters,
1915     _In_
1916     PFN_WDF_RESERVE_DMA EvtReserveDmaFunction,
1917     _In_
1918     PVOID EvtReserveDmaContext
1919     );
1920 
1921 _IRQL_requires_max_(DISPATCH_LEVEL)
1922 WDFAPI
1923 VOID
1924 VFWDFEXPORT(WdfDmaTransactionSetDeviceAddressOffset)(
1925     _In_
1926     PWDF_DRIVER_GLOBALS DriverGlobals,
1927     _In_
1928     WDFDMATRANSACTION DmaTransaction,
1929     _In_
1930     ULONG Offset
1931     );
1932 
1933 _IRQL_requires_max_(DISPATCH_LEVEL)
1934 WDFAPI
1935 VOID
1936 VFWDFEXPORT(WdfDmaTransactionFreeResources)(
1937     _In_
1938     PWDF_DRIVER_GLOBALS DriverGlobals,
1939     _In_
1940     WDFDMATRANSACTION DmaTransaction
1941     );
1942 
1943 _IRQL_requires_max_(DISPATCH_LEVEL)
1944 WDFAPI
1945 BOOLEAN
1946 VFWDFEXPORT(WdfDmaTransactionCancel)(
1947     _In_
1948     PWDF_DRIVER_GLOBALS DriverGlobals,
1949     _In_
1950     WDFDMATRANSACTION DmaTransaction
1951     );
1952 
1953 _IRQL_requires_max_(DISPATCH_LEVEL)
1954 WDFAPI
1955 PVOID
1956 VFWDFEXPORT(WdfDmaTransactionWdmGetTransferContext)(
1957     _In_
1958     PWDF_DRIVER_GLOBALS DriverGlobals,
1959     _In_
1960     WDFDMATRANSACTION DmaTransaction
1961     );
1962 
1963 _IRQL_requires_max_(DISPATCH_LEVEL)
1964 WDFAPI
1965 VOID
1966 VFWDFEXPORT(WdfDmaTransactionStopSystemTransfer)(
1967     _In_
1968     PWDF_DRIVER_GLOBALS DriverGlobals,
1969     _In_
1970     WDFDMATRANSACTION DmaTransaction
1971     );
1972 
1973 _Must_inspect_result_
1974 _IRQL_requires_max_(DISPATCH_LEVEL)
1975 WDFAPI
1976 NTSTATUS
1977 VFWDFEXPORT(WdfDpcCreate)(
1978     _In_
1979     PWDF_DRIVER_GLOBALS DriverGlobals,
1980     _In_
1981     PWDF_DPC_CONFIG Config,
1982     _In_
1983     PWDF_OBJECT_ATTRIBUTES Attributes,
1984     _Out_
1985     WDFDPC* Dpc
1986     );
1987 
1988 _IRQL_requires_max_(HIGH_LEVEL)
1989 WDFAPI
1990 BOOLEAN
1991 VFWDFEXPORT(WdfDpcEnqueue)(
1992     _In_
1993     PWDF_DRIVER_GLOBALS DriverGlobals,
1994     _In_
1995     WDFDPC Dpc
1996     );
1997 
1998 _When_(Wait == __true, _IRQL_requires_max_(PASSIVE_LEVEL))
1999 _When_(Wait == __false, _IRQL_requires_max_(HIGH_LEVEL))
2000 WDFAPI
2001 BOOLEAN
2002 VFWDFEXPORT(WdfDpcCancel)(
2003     _In_
2004     PWDF_DRIVER_GLOBALS DriverGlobals,
2005     _In_
2006     WDFDPC Dpc,
2007     _In_
2008     BOOLEAN Wait
2009     );
2010 
2011 _IRQL_requires_max_(HIGH_LEVEL)
2012 WDFAPI
2013 WDFOBJECT
2014 VFWDFEXPORT(WdfDpcGetParentObject)(
2015     _In_
2016     PWDF_DRIVER_GLOBALS DriverGlobals,
2017     _In_
2018     WDFDPC Dpc
2019     );
2020 
2021 _IRQL_requires_max_(HIGH_LEVEL)
2022 WDFAPI
2023 PKDPC
2024 VFWDFEXPORT(WdfDpcWdmGetDpc)(
2025     _In_
2026     PWDF_DRIVER_GLOBALS DriverGlobals,
2027     _In_
2028     WDFDPC Dpc
2029     );
2030 
2031 _Must_inspect_result_
2032 _IRQL_requires_max_(PASSIVE_LEVEL)
2033 WDFAPI
2034 NTSTATUS
2035 VFWDFEXPORT(WdfDriverCreate)(
2036     _In_
2037     PWDF_DRIVER_GLOBALS DriverGlobals,
2038     _In_
2039     PDRIVER_OBJECT DriverObject,
2040     _In_
2041     PCUNICODE_STRING RegistryPath,
2042     _In_opt_
2043     PWDF_OBJECT_ATTRIBUTES DriverAttributes,
2044     _In_
2045     PWDF_DRIVER_CONFIG DriverConfig,
2046     _Out_opt_
2047     WDFDRIVER* Driver
2048     );
2049 
2050 _IRQL_requires_max_(PASSIVE_LEVEL)
2051 WDFAPI
2052 PWSTR
2053 VFWDFEXPORT(WdfDriverGetRegistryPath)(
2054     _In_
2055     PWDF_DRIVER_GLOBALS DriverGlobals,
2056     _In_
2057     WDFDRIVER Driver
2058     );
2059 
2060 _IRQL_requires_max_(DISPATCH_LEVEL)
2061 WDFAPI
2062 PDRIVER_OBJECT
2063 VFWDFEXPORT(WdfDriverWdmGetDriverObject)(
2064     _In_
2065     PWDF_DRIVER_GLOBALS DriverGlobals,
2066     _In_
2067     WDFDRIVER Driver
2068     );
2069 
2070 _Must_inspect_result_
2071 _IRQL_requires_max_(PASSIVE_LEVEL)
2072 WDFAPI
2073 NTSTATUS
2074 VFWDFEXPORT(WdfDriverOpenParametersRegistryKey)(
2075     _In_
2076     PWDF_DRIVER_GLOBALS DriverGlobals,
2077     _In_
2078     WDFDRIVER Driver,
2079     _In_
2080     ACCESS_MASK DesiredAccess,
2081     _In_opt_
2082     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
2083     _Out_
2084     WDFKEY* Key
2085     );
2086 
2087 _IRQL_requires_max_(DISPATCH_LEVEL)
2088 WDFAPI
2089 WDFDRIVER
2090 VFWDFEXPORT(WdfWdmDriverGetWdfDriverHandle)(
2091     _In_
2092     PWDF_DRIVER_GLOBALS DriverGlobals,
2093     _In_
2094     PDRIVER_OBJECT DriverObject
2095     );
2096 
2097 _Must_inspect_result_
2098 _IRQL_requires_max_(PASSIVE_LEVEL)
2099 WDFAPI
2100 NTSTATUS
2101 VFWDFEXPORT(WdfDriverRegisterTraceInfo)(
2102     _In_
2103     PWDF_DRIVER_GLOBALS DriverGlobals,
2104     _In_
2105     PDRIVER_OBJECT DriverObject,
2106     _In_
2107     PFN_WDF_TRACE_CALLBACK EvtTraceCallback,
2108     _In_
2109     PVOID ControlBlock
2110     );
2111 
2112 _Must_inspect_result_
2113 _IRQL_requires_max_(PASSIVE_LEVEL)
2114 WDFAPI
2115 NTSTATUS
2116 VFWDFEXPORT(WdfDriverRetrieveVersionString)(
2117     _In_
2118     PWDF_DRIVER_GLOBALS DriverGlobals,
2119     _In_
2120     WDFDRIVER Driver,
2121     _In_
2122     WDFSTRING String
2123     );
2124 
2125 _Must_inspect_result_
2126 _IRQL_requires_max_(PASSIVE_LEVEL)
2127 WDFAPI
2128 BOOLEAN
2129 VFWDFEXPORT(WdfDriverIsVersionAvailable)(
2130     _In_
2131     PWDF_DRIVER_GLOBALS DriverGlobals,
2132     _In_
2133     WDFDRIVER Driver,
2134     _In_
2135     PWDF_DRIVER_VERSION_AVAILABLE_PARAMS VersionAvailableParams
2136     );
2137 
2138 _IRQL_requires_max_(DISPATCH_LEVEL)
2139 WDFAPI
2140 PDEVICE_OBJECT
2141 VFWDFEXPORT(WdfFdoInitWdmGetPhysicalDevice)(
2142     _In_
2143     PWDF_DRIVER_GLOBALS DriverGlobals,
2144     _In_
2145     PWDFDEVICE_INIT DeviceInit
2146     );
2147 
2148 _Must_inspect_result_
2149 _IRQL_requires_max_(PASSIVE_LEVEL)
2150 WDFAPI
2151 NTSTATUS
2152 VFWDFEXPORT(WdfFdoInitOpenRegistryKey)(
2153     _In_
2154     PWDF_DRIVER_GLOBALS DriverGlobals,
2155     _In_
2156     PWDFDEVICE_INIT DeviceInit,
2157     _In_
2158     ULONG DeviceInstanceKeyType,
2159     _In_
2160     ACCESS_MASK DesiredAccess,
2161     _In_opt_
2162     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
2163     _Out_
2164     WDFKEY* Key
2165     );
2166 
2167 _Must_inspect_result_
2168 _IRQL_requires_max_(PASSIVE_LEVEL)
2169 WDFAPI
2170 NTSTATUS
2171 VFWDFEXPORT(WdfFdoInitQueryProperty)(
2172     _In_
2173     PWDF_DRIVER_GLOBALS DriverGlobals,
2174     _In_
2175     PWDFDEVICE_INIT DeviceInit,
2176     _In_
2177     DEVICE_REGISTRY_PROPERTY DeviceProperty,
2178     _In_
2179     ULONG BufferLength,
2180     _Out_writes_bytes_all_opt_(BufferLength)
2181     PVOID PropertyBuffer,
2182     _Out_
2183     PULONG ResultLength
2184     );
2185 
2186 _Must_inspect_result_
2187 _IRQL_requires_max_(PASSIVE_LEVEL)
2188 WDFAPI
2189 NTSTATUS
2190 VFWDFEXPORT(WdfFdoInitAllocAndQueryProperty)(
2191     _In_
2192     PWDF_DRIVER_GLOBALS DriverGlobals,
2193     _In_
2194     PWDFDEVICE_INIT DeviceInit,
2195     _In_
2196     DEVICE_REGISTRY_PROPERTY DeviceProperty,
2197     _In_
2198     _Strict_type_match_
2199     POOL_TYPE PoolType,
2200     _In_opt_
2201     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
2202     _Out_
2203     WDFMEMORY* PropertyMemory
2204     );
2205 
2206 _Must_inspect_result_
2207 _IRQL_requires_max_(PASSIVE_LEVEL)
2208 WDFAPI
2209 NTSTATUS
2210 VFWDFEXPORT(WdfFdoInitQueryPropertyEx)(
2211     _In_
2212     PWDF_DRIVER_GLOBALS DriverGlobals,
2213     _In_
2214     PWDFDEVICE_INIT DeviceInit,
2215     _In_
2216     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
2217     _In_
2218     ULONG BufferLength,
2219     _Out_
2220     PVOID PropertyBuffer,
2221     _Out_
2222     PULONG ResultLength,
2223     _Out_
2224     PDEVPROPTYPE Type
2225     );
2226 
2227 _Must_inspect_result_
2228 _IRQL_requires_max_(PASSIVE_LEVEL)
2229 WDFAPI
2230 NTSTATUS
2231 VFWDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx)(
2232     _In_
2233     PWDF_DRIVER_GLOBALS DriverGlobals,
2234     _In_
2235     PWDFDEVICE_INIT DeviceInit,
2236     _In_
2237     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
2238     _In_
2239     _Strict_type_match_
2240     POOL_TYPE PoolType,
2241     _In_opt_
2242     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
2243     _Out_
2244     WDFMEMORY* PropertyMemory,
2245     _Out_
2246     PDEVPROPTYPE Type
2247     );
2248 
2249 _IRQL_requires_max_(PASSIVE_LEVEL)
2250 WDFAPI
2251 VOID
2252 VFWDFEXPORT(WdfFdoInitSetEventCallbacks)(
2253     _In_
2254     PWDF_DRIVER_GLOBALS DriverGlobals,
2255     _In_
2256     PWDFDEVICE_INIT DeviceInit,
2257     _In_
2258     PWDF_FDO_EVENT_CALLBACKS FdoEventCallbacks
2259     );
2260 
2261 _IRQL_requires_max_(PASSIVE_LEVEL)
2262 WDFAPI
2263 VOID
2264 VFWDFEXPORT(WdfFdoInitSetFilter)(
2265     _In_
2266     PWDF_DRIVER_GLOBALS DriverGlobals,
2267     _In_
2268     PWDFDEVICE_INIT DeviceInit
2269     );
2270 
2271 _IRQL_requires_max_(PASSIVE_LEVEL)
2272 WDFAPI
2273 VOID
2274 VFWDFEXPORT(WdfFdoInitSetDefaultChildListConfig)(
2275     _In_
2276     PWDF_DRIVER_GLOBALS DriverGlobals,
2277     _Inout_
2278     PWDFDEVICE_INIT DeviceInit,
2279     _In_
2280     PWDF_CHILD_LIST_CONFIG Config,
2281     _In_opt_
2282     PWDF_OBJECT_ATTRIBUTES DefaultChildListAttributes
2283     );
2284 
2285 _Must_inspect_result_
2286 _IRQL_requires_max_(PASSIVE_LEVEL)
2287 WDFAPI
2288 NTSTATUS
2289 VFWDFEXPORT(WdfFdoQueryForInterface)(
2290     _In_
2291     PWDF_DRIVER_GLOBALS DriverGlobals,
2292     _In_
2293     WDFDEVICE Fdo,
2294     _In_
2295     LPCGUID InterfaceType,
2296     _Out_
2297     PINTERFACE Interface,
2298     _In_
2299     USHORT Size,
2300     _In_
2301     USHORT Version,
2302     _In_opt_
2303     PVOID InterfaceSpecificData
2304     );
2305 
2306 _IRQL_requires_max_(DISPATCH_LEVEL)
2307 WDFAPI
2308 WDFCHILDLIST
2309 VFWDFEXPORT(WdfFdoGetDefaultChildList)(
2310     _In_
2311     PWDF_DRIVER_GLOBALS DriverGlobals,
2312     _In_
2313     WDFDEVICE Fdo
2314     );
2315 
2316 _Must_inspect_result_
2317 _IRQL_requires_max_(DISPATCH_LEVEL)
2318 WDFAPI
2319 NTSTATUS
2320 VFWDFEXPORT(WdfFdoAddStaticChild)(
2321     _In_
2322     PWDF_DRIVER_GLOBALS DriverGlobals,
2323     _In_
2324     WDFDEVICE Fdo,
2325     _In_
2326     WDFDEVICE Child
2327     );
2328 
2329 _IRQL_requires_max_(DISPATCH_LEVEL)
2330 WDFAPI
2331 VOID
2332 VFWDFEXPORT(WdfFdoLockStaticChildListForIteration)(
2333     _In_
2334     PWDF_DRIVER_GLOBALS DriverGlobals,
2335     _In_
2336     WDFDEVICE Fdo
2337     );
2338 
2339 _Must_inspect_result_
2340 _IRQL_requires_max_(DISPATCH_LEVEL)
2341 WDFAPI
2342 WDFDEVICE
2343 VFWDFEXPORT(WdfFdoRetrieveNextStaticChild)(
2344     _In_
2345     PWDF_DRIVER_GLOBALS DriverGlobals,
2346     _In_
2347     WDFDEVICE Fdo,
2348     _In_opt_
2349     WDFDEVICE PreviousChild,
2350     _In_
2351     ULONG Flags
2352     );
2353 
2354 _IRQL_requires_max_(DISPATCH_LEVEL)
2355 WDFAPI
2356 VOID
2357 VFWDFEXPORT(WdfFdoUnlockStaticChildListFromIteration)(
2358     _In_
2359     PWDF_DRIVER_GLOBALS DriverGlobals,
2360     _In_
2361     WDFDEVICE Fdo
2362     );
2363 
2364 _IRQL_requires_max_(PASSIVE_LEVEL)
2365 WDFAPI
2366 PUNICODE_STRING
2367 VFWDFEXPORT(WdfFileObjectGetFileName)(
2368     _In_
2369     PWDF_DRIVER_GLOBALS DriverGlobals,
2370     _In_
2371     WDFFILEOBJECT FileObject
2372     );
2373 
2374 _IRQL_requires_max_(DISPATCH_LEVEL)
2375 WDFAPI
2376 ULONG
2377 VFWDFEXPORT(WdfFileObjectGetFlags)(
2378     _In_
2379     PWDF_DRIVER_GLOBALS DriverGlobals,
2380     _In_
2381     WDFFILEOBJECT FileObject
2382     );
2383 
2384 _IRQL_requires_max_(DISPATCH_LEVEL)
2385 WDFAPI
2386 WDFDEVICE
2387 VFWDFEXPORT(WdfFileObjectGetDevice)(
2388     _In_
2389     PWDF_DRIVER_GLOBALS DriverGlobals,
2390     _In_
2391     WDFFILEOBJECT FileObject
2392     );
2393 
2394 _IRQL_requires_max_(DISPATCH_LEVEL)
2395 WDFAPI
2396 PFILE_OBJECT
2397 VFWDFEXPORT(WdfFileObjectWdmGetFileObject)(
2398     _In_
2399     PWDF_DRIVER_GLOBALS DriverGlobals,
2400     _In_
2401     WDFFILEOBJECT FileObject
2402     );
2403 
2404 _Must_inspect_result_
2405 _IRQL_requires_max_(DISPATCH_LEVEL)
2406 WDFAPI
2407 NTSTATUS
2408 VFWDFEXPORT(WdfInterruptCreate)(
2409     _In_
2410     PWDF_DRIVER_GLOBALS DriverGlobals,
2411     _In_
2412     WDFDEVICE Device,
2413     _In_
2414     PWDF_INTERRUPT_CONFIG Configuration,
2415     _In_opt_
2416     PWDF_OBJECT_ATTRIBUTES Attributes,
2417     _Out_
2418     WDFINTERRUPT* Interrupt
2419     );
2420 
2421 WDFAPI
2422 BOOLEAN
2423 VFWDFEXPORT(WdfInterruptQueueDpcForIsr)(
2424     _In_
2425     PWDF_DRIVER_GLOBALS DriverGlobals,
2426     _In_
2427     WDFINTERRUPT Interrupt
2428     );
2429 
2430 WDFAPI
2431 BOOLEAN
2432 VFWDFEXPORT(WdfInterruptQueueWorkItemForIsr)(
2433     _In_
2434     PWDF_DRIVER_GLOBALS DriverGlobals,
2435     _In_
2436     WDFINTERRUPT Interrupt
2437     );
2438 
2439 _IRQL_requires_max_(DISPATCH_LEVEL)
2440 WDFAPI
2441 BOOLEAN
2442 VFWDFEXPORT(WdfInterruptSynchronize)(
2443     _In_
2444     PWDF_DRIVER_GLOBALS DriverGlobals,
2445     _In_
2446     WDFINTERRUPT Interrupt,
2447     _In_
2448     PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
2449     _In_
2450     WDFCONTEXT Context
2451     );
2452 
2453 _IRQL_requires_max_(DISPATCH_LEVEL + 1)
2454 WDFAPI
2455 VOID
2456 VFWDFEXPORT(WdfInterruptAcquireLock)(
2457     _In_
2458     PWDF_DRIVER_GLOBALS DriverGlobals,
2459     _In_
2460     _Requires_lock_not_held_(_Curr_)
2461     _Acquires_lock_(_Curr_)
2462     WDFINTERRUPT Interrupt
2463     );
2464 
2465 _IRQL_requires_max_(DISPATCH_LEVEL + 1)
2466 WDFAPI
2467 VOID
2468 VFWDFEXPORT(WdfInterruptReleaseLock)(
2469     _In_
2470     PWDF_DRIVER_GLOBALS DriverGlobals,
2471     _In_
2472     _Requires_lock_held_(_Curr_)
2473     _Releases_lock_(_Curr_)
2474     WDFINTERRUPT Interrupt
2475     );
2476 
2477 _IRQL_requires_max_(PASSIVE_LEVEL)
2478 WDFAPI
2479 VOID
2480 VFWDFEXPORT(WdfInterruptEnable)(
2481     _In_
2482     PWDF_DRIVER_GLOBALS DriverGlobals,
2483     _In_
2484     WDFINTERRUPT Interrupt
2485     );
2486 
2487 _IRQL_requires_max_(PASSIVE_LEVEL)
2488 WDFAPI
2489 VOID
2490 VFWDFEXPORT(WdfInterruptDisable)(
2491     _In_
2492     PWDF_DRIVER_GLOBALS DriverGlobals,
2493     _In_
2494     WDFINTERRUPT Interrupt
2495     );
2496 
2497 _Must_inspect_result_
2498 WDFAPI
2499 PKINTERRUPT
2500 VFWDFEXPORT(WdfInterruptWdmGetInterrupt)(
2501     _In_
2502     PWDF_DRIVER_GLOBALS DriverGlobals,
2503     _In_
2504     WDFINTERRUPT Interrupt
2505     );
2506 
2507 _IRQL_requires_max_(DISPATCH_LEVEL)
2508 WDFAPI
2509 VOID
2510 VFWDFEXPORT(WdfInterruptGetInfo)(
2511     _In_
2512     PWDF_DRIVER_GLOBALS DriverGlobals,
2513     _In_
2514     WDFINTERRUPT Interrupt,
2515     _Out_
2516     PWDF_INTERRUPT_INFO Info
2517     );
2518 
2519 _IRQL_requires_max_(DISPATCH_LEVEL)
2520 WDFAPI
2521 VOID
2522 VFWDFEXPORT(WdfInterruptSetPolicy)(
2523     _In_
2524     PWDF_DRIVER_GLOBALS DriverGlobals,
2525     _In_
2526     WDFINTERRUPT Interrupt,
2527     _In_
2528     WDF_INTERRUPT_POLICY Policy,
2529     _In_
2530     WDF_INTERRUPT_PRIORITY Priority,
2531     _In_
2532     KAFFINITY TargetProcessorSet
2533     );
2534 
2535 _IRQL_requires_max_(DISPATCH_LEVEL)
2536 WDFAPI
2537 VOID
2538 VFWDFEXPORT(WdfInterruptSetExtendedPolicy)(
2539     _In_
2540     PWDF_DRIVER_GLOBALS DriverGlobals,
2541     _In_
2542     WDFINTERRUPT Interrupt,
2543     _In_
2544     PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
2545     );
2546 
2547 WDFAPI
2548 WDFDEVICE
2549 VFWDFEXPORT(WdfInterruptGetDevice)(
2550     _In_
2551     PWDF_DRIVER_GLOBALS DriverGlobals,
2552     _In_
2553     WDFINTERRUPT Interrupt
2554     );
2555 
2556 _Must_inspect_result_
2557 _Post_satisfies_(return == 1 || return == 0)
2558 _IRQL_requires_max_(PASSIVE_LEVEL)
2559 WDFAPI
2560 BOOLEAN
2561 VFWDFEXPORT(WdfInterruptTryToAcquireLock)(
2562     _In_
2563     PWDF_DRIVER_GLOBALS DriverGlobals,
2564     _In_
2565     _Requires_lock_not_held_(_Curr_)
2566     _When_(return!=0, _Acquires_lock_(_Curr_))
2567     WDFINTERRUPT Interrupt
2568     );
2569 
2570 _IRQL_requires_max_(DISPATCH_LEVEL)
2571 WDFAPI
2572 VOID
2573 VFWDFEXPORT(WdfInterruptReportActive)(
2574     _In_
2575     PWDF_DRIVER_GLOBALS DriverGlobals,
2576     _In_
2577     WDFINTERRUPT Interrupt
2578     );
2579 
2580 _IRQL_requires_max_(DISPATCH_LEVEL)
2581 WDFAPI
2582 VOID
2583 VFWDFEXPORT(WdfInterruptReportInactive)(
2584     _In_
2585     PWDF_DRIVER_GLOBALS DriverGlobals,
2586     _In_
2587     WDFINTERRUPT Interrupt
2588     );
2589 
2590 _Must_inspect_result_
2591 _IRQL_requires_max_(DISPATCH_LEVEL)
2592 WDFAPI
2593 NTSTATUS
2594 VFWDFEXPORT(WdfIoQueueCreate)(
2595     _In_
2596     PWDF_DRIVER_GLOBALS DriverGlobals,
2597     _In_
2598     WDFDEVICE Device,
2599     _In_
2600     PWDF_IO_QUEUE_CONFIG Config,
2601     _In_opt_
2602     PWDF_OBJECT_ATTRIBUTES QueueAttributes,
2603     _Out_opt_
2604     WDFQUEUE* Queue
2605     );
2606 
2607 _IRQL_requires_max_(DISPATCH_LEVEL)
2608 WDFAPI
2609 WDF_IO_QUEUE_STATE
2610 VFWDFEXPORT(WdfIoQueueGetState)(
2611     _In_
2612     PWDF_DRIVER_GLOBALS DriverGlobals,
2613     _In_
2614     WDFQUEUE Queue,
2615     _Out_opt_
2616     PULONG QueueRequests,
2617     _Out_opt_
2618     PULONG DriverRequests
2619     );
2620 
2621 _IRQL_requires_max_(DISPATCH_LEVEL)
2622 WDFAPI
2623 VOID
2624 VFWDFEXPORT(WdfIoQueueStart)(
2625     _In_
2626     PWDF_DRIVER_GLOBALS DriverGlobals,
2627     _In_
2628     WDFQUEUE Queue
2629     );
2630 
2631 _IRQL_requires_max_(DISPATCH_LEVEL)
2632 WDFAPI
2633 VOID
2634 VFWDFEXPORT(WdfIoQueueStop)(
2635     _In_
2636     PWDF_DRIVER_GLOBALS DriverGlobals,
2637     _In_
2638     WDFQUEUE Queue,
2639     _When_(Context != 0, _In_)
2640     _When_(Context == 0, _In_opt_)
2641     PFN_WDF_IO_QUEUE_STATE StopComplete,
2642     _When_(StopComplete != 0, _In_)
2643     _When_(StopComplete == 0, _In_opt_)
2644     WDFCONTEXT Context
2645     );
2646 
2647 _IRQL_requires_max_(PASSIVE_LEVEL)
2648 WDFAPI
2649 VOID
2650 VFWDFEXPORT(WdfIoQueueStopSynchronously)(
2651     _In_
2652     PWDF_DRIVER_GLOBALS DriverGlobals,
2653     _In_
2654     WDFQUEUE Queue
2655     );
2656 
2657 _IRQL_requires_max_(DISPATCH_LEVEL)
2658 WDFAPI
2659 WDFDEVICE
2660 VFWDFEXPORT(WdfIoQueueGetDevice)(
2661     _In_
2662     PWDF_DRIVER_GLOBALS DriverGlobals,
2663     _In_
2664     WDFQUEUE Queue
2665     );
2666 
2667 _Must_inspect_result_
2668 _IRQL_requires_max_(DISPATCH_LEVEL)
2669 WDFAPI
2670 NTSTATUS
2671 VFWDFEXPORT(WdfIoQueueRetrieveNextRequest)(
2672     _In_
2673     PWDF_DRIVER_GLOBALS DriverGlobals,
2674     _In_
2675     WDFQUEUE Queue,
2676     _Out_
2677     WDFREQUEST* OutRequest
2678     );
2679 
2680 _Must_inspect_result_
2681 _IRQL_requires_max_(DISPATCH_LEVEL)
2682 WDFAPI
2683 NTSTATUS
2684 VFWDFEXPORT(WdfIoQueueRetrieveRequestByFileObject)(
2685     _In_
2686     PWDF_DRIVER_GLOBALS DriverGlobals,
2687     _In_
2688     WDFQUEUE Queue,
2689     _In_
2690     WDFFILEOBJECT FileObject,
2691     _Out_
2692     WDFREQUEST* OutRequest
2693     );
2694 
2695 _Must_inspect_result_
2696 _IRQL_requires_max_(DISPATCH_LEVEL)
2697 WDFAPI
2698 NTSTATUS
2699 VFWDFEXPORT(WdfIoQueueFindRequest)(
2700     _In_
2701     PWDF_DRIVER_GLOBALS DriverGlobals,
2702     _In_
2703     WDFQUEUE Queue,
2704     _In_opt_
2705     WDFREQUEST FoundRequest,
2706     _In_opt_
2707     WDFFILEOBJECT FileObject,
2708     _Inout_opt_
2709     PWDF_REQUEST_PARAMETERS Parameters,
2710     _Out_
2711     WDFREQUEST* OutRequest
2712     );
2713 
2714 _Must_inspect_result_
2715 _IRQL_requires_max_(DISPATCH_LEVEL)
2716 WDFAPI
2717 NTSTATUS
2718 VFWDFEXPORT(WdfIoQueueRetrieveFoundRequest)(
2719     _In_
2720     PWDF_DRIVER_GLOBALS DriverGlobals,
2721     _In_
2722     WDFQUEUE Queue,
2723     _In_
2724     WDFREQUEST FoundRequest,
2725     _Out_
2726     WDFREQUEST* OutRequest
2727     );
2728 
2729 _IRQL_requires_max_(PASSIVE_LEVEL)
2730 WDFAPI
2731 VOID
2732 VFWDFEXPORT(WdfIoQueueDrainSynchronously)(
2733     _In_
2734     PWDF_DRIVER_GLOBALS DriverGlobals,
2735     _In_
2736     WDFQUEUE Queue
2737     );
2738 
2739 _IRQL_requires_max_(DISPATCH_LEVEL)
2740 WDFAPI
2741 VOID
2742 VFWDFEXPORT(WdfIoQueueDrain)(
2743     _In_
2744     PWDF_DRIVER_GLOBALS DriverGlobals,
2745     _In_
2746     WDFQUEUE Queue,
2747     _When_(Context != 0, _In_)
2748     _When_(Context == 0, _In_opt_)
2749     PFN_WDF_IO_QUEUE_STATE DrainComplete,
2750     _When_(DrainComplete != 0, _In_)
2751     _When_(DrainComplete == 0, _In_opt_)
2752     WDFCONTEXT Context
2753     );
2754 
2755 _IRQL_requires_max_(PASSIVE_LEVEL)
2756 WDFAPI
2757 VOID
2758 VFWDFEXPORT(WdfIoQueuePurgeSynchronously)(
2759     _In_
2760     PWDF_DRIVER_GLOBALS DriverGlobals,
2761     _In_
2762     WDFQUEUE Queue
2763     );
2764 
2765 _IRQL_requires_max_(DISPATCH_LEVEL)
2766 WDFAPI
2767 VOID
2768 VFWDFEXPORT(WdfIoQueuePurge)(
2769     _In_
2770     PWDF_DRIVER_GLOBALS DriverGlobals,
2771     _In_
2772     WDFQUEUE Queue,
2773     _When_(Context != 0, _In_)
2774     _When_(Context == 0, _In_opt_)
2775     PFN_WDF_IO_QUEUE_STATE PurgeComplete,
2776     _When_(PurgeComplete != 0, _In_)
2777     _When_(PurgeComplete == 0, _In_opt_)
2778     WDFCONTEXT Context
2779     );
2780 
2781 _Must_inspect_result_
2782 _IRQL_requires_max_(DISPATCH_LEVEL)
2783 WDFAPI
2784 NTSTATUS
2785 VFWDFEXPORT(WdfIoQueueReadyNotify)(
2786     _In_
2787     PWDF_DRIVER_GLOBALS DriverGlobals,
2788     _In_
2789     WDFQUEUE Queue,
2790     _In_opt_
2791     PFN_WDF_IO_QUEUE_STATE QueueReady,
2792     _In_opt_
2793     WDFCONTEXT Context
2794     );
2795 
2796 _Must_inspect_result_
2797 _IRQL_requires_max_(PASSIVE_LEVEL)
2798 WDFAPI
2799 NTSTATUS
2800 VFWDFEXPORT(WdfIoQueueAssignForwardProgressPolicy)(
2801     _In_
2802     PWDF_DRIVER_GLOBALS DriverGlobals,
2803     _In_
2804     WDFQUEUE Queue,
2805     _In_
2806     PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY ForwardProgressPolicy
2807     );
2808 
2809 _IRQL_requires_max_(DISPATCH_LEVEL)
2810 WDFAPI
2811 VOID
2812 VFWDFEXPORT(WdfIoQueueStopAndPurge)(
2813     _In_
2814     PWDF_DRIVER_GLOBALS DriverGlobals,
2815     _In_
2816     WDFQUEUE Queue,
2817     _When_(Context != 0, _In_)
2818     _When_(Context == 0, _In_opt_)
2819     PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
2820     _When_(StopAndPurgeComplete != 0, _In_)
2821     _When_(StopAndPurgeComplete == 0, _In_opt_)
2822     WDFCONTEXT Context
2823     );
2824 
2825 _IRQL_requires_max_(PASSIVE_LEVEL)
2826 WDFAPI
2827 VOID
2828 VFWDFEXPORT(WdfIoQueueStopAndPurgeSynchronously)(
2829     _In_
2830     PWDF_DRIVER_GLOBALS DriverGlobals,
2831     _In_
2832     WDFQUEUE Queue
2833     );
2834 
2835 _Must_inspect_result_
2836 _IRQL_requires_max_(PASSIVE_LEVEL)
2837 WDFAPI
2838 NTSTATUS
2839 VFWDFEXPORT(WdfIoTargetCreate)(
2840     _In_
2841     PWDF_DRIVER_GLOBALS DriverGlobals,
2842     _In_
2843     WDFDEVICE Device,
2844     _In_opt_
2845     PWDF_OBJECT_ATTRIBUTES IoTargetAttributes,
2846     _Out_
2847     WDFIOTARGET* IoTarget
2848     );
2849 
2850 _Must_inspect_result_
2851 _IRQL_requires_max_(PASSIVE_LEVEL)
2852 WDFAPI
2853 NTSTATUS
2854 VFWDFEXPORT(WdfIoTargetOpen)(
2855     _In_
2856     PWDF_DRIVER_GLOBALS DriverGlobals,
2857     _In_
2858     WDFIOTARGET IoTarget,
2859     _In_
2860     PWDF_IO_TARGET_OPEN_PARAMS OpenParams
2861     );
2862 
2863 _IRQL_requires_max_(PASSIVE_LEVEL)
2864 WDFAPI
2865 VOID
2866 VFWDFEXPORT(WdfIoTargetCloseForQueryRemove)(
2867     _In_
2868     PWDF_DRIVER_GLOBALS DriverGlobals,
2869     _In_
2870     WDFIOTARGET IoTarget
2871     );
2872 
2873 _IRQL_requires_max_(PASSIVE_LEVEL)
2874 WDFAPI
2875 VOID
2876 VFWDFEXPORT(WdfIoTargetClose)(
2877     _In_
2878     PWDF_DRIVER_GLOBALS DriverGlobals,
2879     _In_
2880     WDFIOTARGET IoTarget
2881     );
2882 
2883 _Must_inspect_result_
2884 _IRQL_requires_max_(DISPATCH_LEVEL)
2885 WDFAPI
2886 NTSTATUS
2887 VFWDFEXPORT(WdfIoTargetStart)(
2888     _In_
2889     PWDF_DRIVER_GLOBALS DriverGlobals,
2890     _In_
2891     WDFIOTARGET IoTarget
2892     );
2893 
2894 _When_(Action == 3, _IRQL_requires_max_(DISPATCH_LEVEL))
2895 _When_(Action == 0 || Action == 1 || Action == 2, _IRQL_requires_max_(PASSIVE_LEVEL))
2896 WDFAPI
2897 VOID
2898 VFWDFEXPORT(WdfIoTargetStop)(
2899     _In_
2900     PWDF_DRIVER_GLOBALS DriverGlobals,
2901     _In_
2902     WDFIOTARGET IoTarget,
2903     _In_
2904     _Strict_type_match_
2905     WDF_IO_TARGET_SENT_IO_ACTION Action
2906     );
2907 
2908 _When_(Action == 2, _IRQL_requires_max_(DISPATCH_LEVEL))
2909 _When_(Action == 0 || Action == 1, _IRQL_requires_max_(PASSIVE_LEVEL))
2910 WDFAPI
2911 VOID
2912 VFWDFEXPORT(WdfIoTargetPurge)(
2913     _In_
2914     PWDF_DRIVER_GLOBALS DriverGlobals,
2915     _In_
2916     WDFIOTARGET IoTarget,
2917     _In_
2918     _Strict_type_match_
2919     WDF_IO_TARGET_PURGE_IO_ACTION Action
2920     );
2921 
2922 _IRQL_requires_max_(DISPATCH_LEVEL)
2923 WDFAPI
2924 WDF_IO_TARGET_STATE
2925 VFWDFEXPORT(WdfIoTargetGetState)(
2926     _In_
2927     PWDF_DRIVER_GLOBALS DriverGlobals,
2928     _In_
2929     WDFIOTARGET IoTarget
2930     );
2931 
2932 _IRQL_requires_max_(DISPATCH_LEVEL)
2933 WDFAPI
2934 WDFDEVICE
2935 VFWDFEXPORT(WdfIoTargetGetDevice)(
2936     _In_
2937     PWDF_DRIVER_GLOBALS DriverGlobals,
2938     _In_
2939     WDFIOTARGET IoTarget
2940     );
2941 
2942 _Must_inspect_result_
2943 _IRQL_requires_max_(PASSIVE_LEVEL)
2944 WDFAPI
2945 NTSTATUS
2946 VFWDFEXPORT(WdfIoTargetQueryTargetProperty)(
2947     _In_
2948     PWDF_DRIVER_GLOBALS DriverGlobals,
2949     _In_
2950     WDFIOTARGET IoTarget,
2951     _In_
2952     DEVICE_REGISTRY_PROPERTY DeviceProperty,
2953     _In_
2954     ULONG BufferLength,
2955     _When_(BufferLength != 0, _Out_writes_bytes_to_opt_(BufferLength, *ResultLength))
2956     _When_(BufferLength == 0, _Out_opt_)
2957     PVOID PropertyBuffer,
2958     _Deref_out_range_(<=,BufferLength)
2959     PULONG ResultLength
2960     );
2961 
2962 _Must_inspect_result_
2963 _IRQL_requires_max_(PASSIVE_LEVEL)
2964 WDFAPI
2965 NTSTATUS
2966 VFWDFEXPORT(WdfIoTargetAllocAndQueryTargetProperty)(
2967     _In_
2968     PWDF_DRIVER_GLOBALS DriverGlobals,
2969     _In_
2970     WDFIOTARGET IoTarget,
2971     _In_
2972     DEVICE_REGISTRY_PROPERTY DeviceProperty,
2973     _In_
2974     _Strict_type_match_
2975     POOL_TYPE PoolType,
2976     _In_opt_
2977     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
2978     _Out_
2979     WDFMEMORY* PropertyMemory
2980     );
2981 
2982 _Must_inspect_result_
2983 _IRQL_requires_max_(PASSIVE_LEVEL)
2984 WDFAPI
2985 NTSTATUS
2986 VFWDFEXPORT(WdfIoTargetQueryForInterface)(
2987     _In_
2988     PWDF_DRIVER_GLOBALS DriverGlobals,
2989     _In_
2990     WDFIOTARGET IoTarget,
2991     _In_
2992     LPCGUID InterfaceType,
2993     _Out_
2994     PINTERFACE Interface,
2995     _In_
2996     USHORT Size,
2997     _In_
2998     USHORT Version,
2999     _In_opt_
3000     PVOID InterfaceSpecificData
3001     );
3002 
3003 _IRQL_requires_max_(DISPATCH_LEVEL)
3004 WDFAPI
3005 PDEVICE_OBJECT
3006 VFWDFEXPORT(WdfIoTargetWdmGetTargetDeviceObject)(
3007     _In_
3008     PWDF_DRIVER_GLOBALS DriverGlobals,
3009     _In_
3010     WDFIOTARGET IoTarget
3011     );
3012 
3013 _IRQL_requires_max_(DISPATCH_LEVEL)
3014 WDFAPI
3015 PDEVICE_OBJECT
3016 VFWDFEXPORT(WdfIoTargetWdmGetTargetPhysicalDevice)(
3017     _In_
3018     PWDF_DRIVER_GLOBALS DriverGlobals,
3019     _In_
3020     WDFIOTARGET IoTarget
3021     );
3022 
3023 _IRQL_requires_max_(DISPATCH_LEVEL)
3024 WDFAPI
3025 PFILE_OBJECT
3026 VFWDFEXPORT(WdfIoTargetWdmGetTargetFileObject)(
3027     _In_
3028     PWDF_DRIVER_GLOBALS DriverGlobals,
3029     _In_
3030     WDFIOTARGET IoTarget
3031     );
3032 
3033 _IRQL_requires_max_(DISPATCH_LEVEL)
3034 WDFAPI
3035 HANDLE
3036 VFWDFEXPORT(WdfIoTargetWdmGetTargetFileHandle)(
3037     _In_
3038     PWDF_DRIVER_GLOBALS DriverGlobals,
3039     _In_
3040     WDFIOTARGET IoTarget
3041     );
3042 
3043 _Must_inspect_result_
3044 _IRQL_requires_max_(PASSIVE_LEVEL)
3045 WDFAPI
3046 NTSTATUS
3047 VFWDFEXPORT(WdfIoTargetSendReadSynchronously)(
3048     _In_
3049     PWDF_DRIVER_GLOBALS DriverGlobals,
3050     _In_
3051     WDFIOTARGET IoTarget,
3052     _In_opt_
3053     WDFREQUEST Request,
3054     _In_opt_
3055     PWDF_MEMORY_DESCRIPTOR OutputBuffer,
3056     _In_opt_
3057     PLONGLONG DeviceOffset,
3058     _In_opt_
3059     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3060     _Out_opt_
3061     PULONG_PTR BytesRead
3062     );
3063 
3064 _Must_inspect_result_
3065 _IRQL_requires_max_(DISPATCH_LEVEL)
3066 WDFAPI
3067 NTSTATUS
3068 VFWDFEXPORT(WdfIoTargetFormatRequestForRead)(
3069     _In_
3070     PWDF_DRIVER_GLOBALS DriverGlobals,
3071     _In_
3072     WDFIOTARGET IoTarget,
3073     _In_
3074     WDFREQUEST Request,
3075     _In_opt_
3076     WDFMEMORY OutputBuffer,
3077     _In_opt_
3078     PWDFMEMORY_OFFSET OutputBufferOffset,
3079     _In_opt_
3080     PLONGLONG DeviceOffset
3081     );
3082 
3083 _Must_inspect_result_
3084 _IRQL_requires_max_(PASSIVE_LEVEL)
3085 WDFAPI
3086 NTSTATUS
3087 VFWDFEXPORT(WdfIoTargetSendWriteSynchronously)(
3088     _In_
3089     PWDF_DRIVER_GLOBALS DriverGlobals,
3090     _In_
3091     WDFIOTARGET IoTarget,
3092     _In_opt_
3093     WDFREQUEST Request,
3094     _In_opt_
3095     PWDF_MEMORY_DESCRIPTOR InputBuffer,
3096     _In_opt_
3097     PLONGLONG DeviceOffset,
3098     _In_opt_
3099     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3100     _Out_opt_
3101     PULONG_PTR BytesWritten
3102     );
3103 
3104 _Must_inspect_result_
3105 _IRQL_requires_max_(DISPATCH_LEVEL)
3106 WDFAPI
3107 NTSTATUS
3108 VFWDFEXPORT(WdfIoTargetFormatRequestForWrite)(
3109     _In_
3110     PWDF_DRIVER_GLOBALS DriverGlobals,
3111     _In_
3112     WDFIOTARGET IoTarget,
3113     _In_
3114     WDFREQUEST Request,
3115     _In_opt_
3116     WDFMEMORY InputBuffer,
3117     _In_opt_
3118     PWDFMEMORY_OFFSET InputBufferOffset,
3119     _In_opt_
3120     PLONGLONG DeviceOffset
3121     );
3122 
3123 _Must_inspect_result_
3124 _IRQL_requires_max_(PASSIVE_LEVEL)
3125 WDFAPI
3126 NTSTATUS
3127 VFWDFEXPORT(WdfIoTargetSendIoctlSynchronously)(
3128     _In_
3129     PWDF_DRIVER_GLOBALS DriverGlobals,
3130     _In_
3131     WDFIOTARGET IoTarget,
3132     _In_opt_
3133     WDFREQUEST Request,
3134     _In_
3135     ULONG IoctlCode,
3136     _In_opt_
3137     PWDF_MEMORY_DESCRIPTOR InputBuffer,
3138     _In_opt_
3139     PWDF_MEMORY_DESCRIPTOR OutputBuffer,
3140     _In_opt_
3141     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3142     _Out_opt_
3143     PULONG_PTR BytesReturned
3144     );
3145 
3146 _Must_inspect_result_
3147 _IRQL_requires_max_(DISPATCH_LEVEL)
3148 WDFAPI
3149 NTSTATUS
3150 VFWDFEXPORT(WdfIoTargetFormatRequestForIoctl)(
3151     _In_
3152     PWDF_DRIVER_GLOBALS DriverGlobals,
3153     _In_
3154     WDFIOTARGET IoTarget,
3155     _In_
3156     WDFREQUEST Request,
3157     _In_
3158     ULONG IoctlCode,
3159     _In_opt_
3160     WDFMEMORY InputBuffer,
3161     _In_opt_
3162     PWDFMEMORY_OFFSET InputBufferOffset,
3163     _In_opt_
3164     WDFMEMORY OutputBuffer,
3165     _In_opt_
3166     PWDFMEMORY_OFFSET OutputBufferOffset
3167     );
3168 
3169 _Must_inspect_result_
3170 _IRQL_requires_max_(PASSIVE_LEVEL)
3171 WDFAPI
3172 NTSTATUS
3173 VFWDFEXPORT(WdfIoTargetSendInternalIoctlSynchronously)(
3174     _In_
3175     PWDF_DRIVER_GLOBALS DriverGlobals,
3176     _In_
3177     WDFIOTARGET IoTarget,
3178     _In_opt_
3179     WDFREQUEST Request,
3180     _In_
3181     ULONG IoctlCode,
3182     _In_opt_
3183     PWDF_MEMORY_DESCRIPTOR InputBuffer,
3184     _In_opt_
3185     PWDF_MEMORY_DESCRIPTOR OutputBuffer,
3186     _In_opt_
3187     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3188     _Out_opt_
3189     PULONG_PTR BytesReturned
3190     );
3191 
3192 _Must_inspect_result_
3193 _IRQL_requires_max_(DISPATCH_LEVEL)
3194 WDFAPI
3195 NTSTATUS
3196 VFWDFEXPORT(WdfIoTargetFormatRequestForInternalIoctl)(
3197     _In_
3198     PWDF_DRIVER_GLOBALS DriverGlobals,
3199     _In_
3200     WDFIOTARGET IoTarget,
3201     _In_
3202     WDFREQUEST Request,
3203     _In_
3204     ULONG IoctlCode,
3205     _In_opt_
3206     WDFMEMORY InputBuffer,
3207     _In_opt_
3208     PWDFMEMORY_OFFSET InputBufferOffset,
3209     _In_opt_
3210     WDFMEMORY OutputBuffer,
3211     _In_opt_
3212     PWDFMEMORY_OFFSET OutputBufferOffset
3213     );
3214 
3215 _Must_inspect_result_
3216 _IRQL_requires_max_(PASSIVE_LEVEL)
3217 WDFAPI
3218 NTSTATUS
3219 VFWDFEXPORT(WdfIoTargetSendInternalIoctlOthersSynchronously)(
3220     _In_
3221     PWDF_DRIVER_GLOBALS DriverGlobals,
3222     _In_
3223     WDFIOTARGET IoTarget,
3224     _In_opt_
3225     WDFREQUEST Request,
3226     _In_
3227     ULONG IoctlCode,
3228     _In_opt_
3229     PWDF_MEMORY_DESCRIPTOR OtherArg1,
3230     _In_opt_
3231     PWDF_MEMORY_DESCRIPTOR OtherArg2,
3232     _In_opt_
3233     PWDF_MEMORY_DESCRIPTOR OtherArg4,
3234     _In_opt_
3235     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3236     _Out_opt_
3237     PULONG_PTR BytesReturned
3238     );
3239 
3240 _Must_inspect_result_
3241 _IRQL_requires_max_(DISPATCH_LEVEL)
3242 WDFAPI
3243 NTSTATUS
3244 VFWDFEXPORT(WdfIoTargetFormatRequestForInternalIoctlOthers)(
3245     _In_
3246     PWDF_DRIVER_GLOBALS DriverGlobals,
3247     _In_
3248     WDFIOTARGET IoTarget,
3249     _In_
3250     WDFREQUEST Request,
3251     _In_
3252     ULONG IoctlCode,
3253     _In_opt_
3254     WDFMEMORY OtherArg1,
3255     _In_opt_
3256     PWDFMEMORY_OFFSET OtherArg1Offset,
3257     _In_opt_
3258     WDFMEMORY OtherArg2,
3259     _In_opt_
3260     PWDFMEMORY_OFFSET OtherArg2Offset,
3261     _In_opt_
3262     WDFMEMORY OtherArg4,
3263     _In_opt_
3264     PWDFMEMORY_OFFSET OtherArg4Offset
3265     );
3266 
3267 _IRQL_requires_max_(DISPATCH_LEVEL)
3268 WDFAPI
3269 NTSTATUS
3270 VFWDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue)(
3271     _In_
3272     PWDF_DRIVER_GLOBALS DriverGlobals,
3273     _In_
3274     WDFIOTARGET IoTarget,
3275     _In_
3276     WDFQUEUE Queue
3277     );
3278 
3279 _Must_inspect_result_
3280 _When_(PoolType == 1 || PoolType == 257, _IRQL_requires_max_(APC_LEVEL))
3281 _When_(PoolType == 0 || PoolType == 256, _IRQL_requires_max_(DISPATCH_LEVEL))
3282 WDFAPI
3283 NTSTATUS
3284 VFWDFEXPORT(WdfMemoryCreate)(
3285     _In_
3286     PWDF_DRIVER_GLOBALS DriverGlobals,
3287     _In_opt_
3288     PWDF_OBJECT_ATTRIBUTES Attributes,
3289     _In_
3290     _Strict_type_match_
3291     POOL_TYPE PoolType,
3292     _In_opt_
3293     ULONG PoolTag,
3294     _In_
3295     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
3296     size_t BufferSize,
3297     _Out_
3298     WDFMEMORY* Memory,
3299     _Outptr_opt_result_bytebuffer_(BufferSize)
3300     PVOID* Buffer
3301     );
3302 
3303 _Must_inspect_result_
3304 _IRQL_requires_max_(DISPATCH_LEVEL)
3305 WDFAPI
3306 NTSTATUS
3307 VFWDFEXPORT(WdfMemoryCreatePreallocated)(
3308     _In_
3309     PWDF_DRIVER_GLOBALS DriverGlobals,
3310     _In_opt_
3311     PWDF_OBJECT_ATTRIBUTES Attributes,
3312     _In_ __drv_aliasesMem
3313     PVOID Buffer,
3314     _In_
3315     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
3316     size_t BufferSize,
3317     _Out_
3318     WDFMEMORY* Memory
3319     );
3320 
3321 _IRQL_requires_max_(DISPATCH_LEVEL)
3322 WDFAPI
3323 PVOID
3324 VFWDFEXPORT(WdfMemoryGetBuffer)(
3325     _In_
3326     PWDF_DRIVER_GLOBALS DriverGlobals,
3327     _In_
3328     WDFMEMORY Memory,
3329     _Out_opt_
3330     size_t* BufferSize
3331     );
3332 
3333 _Must_inspect_result_
3334 _IRQL_requires_max_(DISPATCH_LEVEL)
3335 WDFAPI
3336 NTSTATUS
3337 VFWDFEXPORT(WdfMemoryAssignBuffer)(
3338     _In_
3339     PWDF_DRIVER_GLOBALS DriverGlobals,
3340     _In_
3341     WDFMEMORY Memory,
3342     _Pre_notnull_ _Pre_writable_byte_size_(BufferSize)
3343     PVOID Buffer,
3344     _In_
3345     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
3346     size_t BufferSize
3347     );
3348 
3349 _Must_inspect_result_
3350 _IRQL_requires_max_(DISPATCH_LEVEL)
3351 WDFAPI
3352 NTSTATUS
3353 VFWDFEXPORT(WdfMemoryCopyToBuffer)(
3354     _In_
3355     PWDF_DRIVER_GLOBALS DriverGlobals,
3356     _In_
3357     WDFMEMORY SourceMemory,
3358     _In_
3359     size_t SourceOffset,
3360     _Out_writes_bytes_( NumBytesToCopyTo )
3361     PVOID Buffer,
3362     _In_
3363     _When_(NumBytesToCopyTo == 0, __drv_reportError(NumBytesToCopyTo cannot be zero))
3364     size_t NumBytesToCopyTo
3365     );
3366 
3367 _Must_inspect_result_
3368 _IRQL_requires_max_(DISPATCH_LEVEL)
3369 WDFAPI
3370 NTSTATUS
3371 VFWDFEXPORT(WdfMemoryCopyFromBuffer)(
3372     _In_
3373     PWDF_DRIVER_GLOBALS DriverGlobals,
3374     _In_
3375     WDFMEMORY DestinationMemory,
3376     _In_
3377     size_t DestinationOffset,
3378     _In_
3379     PVOID Buffer,
3380     _In_
3381     _When_(NumBytesToCopyFrom == 0, __drv_reportError(NumBytesToCopyFrom cannot be zero))
3382     size_t NumBytesToCopyFrom
3383     );
3384 
3385 _Must_inspect_result_
3386 _When_(PoolType == 1 || PoolType == 257, _IRQL_requires_max_(APC_LEVEL))
3387 _When_(PoolType == 0 || PoolType == 256, _IRQL_requires_max_(DISPATCH_LEVEL))
3388 WDFAPI
3389 NTSTATUS
3390 VFWDFEXPORT(WdfLookasideListCreate)(
3391     _In_
3392     PWDF_DRIVER_GLOBALS DriverGlobals,
3393     _In_opt_
3394     PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
3395     _In_
3396     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
3397     size_t BufferSize,
3398     _In_
3399     _Strict_type_match_
3400     POOL_TYPE PoolType,
3401     _In_opt_
3402     PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
3403     _In_opt_
3404     ULONG PoolTag,
3405     _Out_
3406     WDFLOOKASIDE* Lookaside
3407     );
3408 
3409 _Must_inspect_result_
3410 _IRQL_requires_max_(DISPATCH_LEVEL)
3411 WDFAPI
3412 NTSTATUS
3413 VFWDFEXPORT(WdfMemoryCreateFromLookaside)(
3414     _In_
3415     PWDF_DRIVER_GLOBALS DriverGlobals,
3416     _In_
3417     WDFLOOKASIDE Lookaside,
3418     _Out_
3419     WDFMEMORY* Memory
3420     );
3421 
3422 _Must_inspect_result_
3423 _IRQL_requires_max_(PASSIVE_LEVEL)
3424 WDFAPI
3425 NTSTATUS
3426 VFWDFEXPORT(WdfDeviceMiniportCreate)(
3427     _In_
3428     PWDF_DRIVER_GLOBALS DriverGlobals,
3429     _In_
3430     WDFDRIVER Driver,
3431     _In_opt_
3432     PWDF_OBJECT_ATTRIBUTES Attributes,
3433     _In_
3434     PDEVICE_OBJECT DeviceObject,
3435     _In_opt_
3436     PDEVICE_OBJECT AttachedDeviceObject,
3437     _In_opt_
3438     PDEVICE_OBJECT Pdo,
3439     _Out_
3440     WDFDEVICE* Device
3441     );
3442 
3443 WDFAPI
3444 VOID
3445 VFWDFEXPORT(WdfDriverMiniportUnload)(
3446     _In_
3447     PWDF_DRIVER_GLOBALS DriverGlobals,
3448     _In_
3449     WDFDRIVER Driver
3450     );
3451 
3452 WDFAPI
3453 PVOID
3454 FASTCALL
3455 VFWDFEXPORT(WdfObjectGetTypedContextWorker)(
3456     _In_
3457     PWDF_DRIVER_GLOBALS DriverGlobals,
3458     _In_
3459     WDFOBJECT Handle,
3460     _In_
3461     PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
3462     );
3463 
3464 WDFAPI
3465 NTSTATUS
3466 VFWDFEXPORT(WdfObjectAllocateContext)(
3467     _In_
3468     PWDF_DRIVER_GLOBALS DriverGlobals,
3469     _In_
3470     WDFOBJECT Handle,
3471     _In_
3472     PWDF_OBJECT_ATTRIBUTES ContextAttributes,
3473     _Outptr_opt_
3474     PVOID* Context
3475     );
3476 
3477 WDFAPI
3478 WDFOBJECT
3479 FASTCALL
3480 VFWDFEXPORT(WdfObjectContextGetObject)(
3481     _In_
3482     PWDF_DRIVER_GLOBALS DriverGlobals,
3483     _In_
3484     PVOID ContextPointer
3485     );
3486 
3487 WDFAPI
3488 VOID
3489 VFWDFEXPORT(WdfObjectReferenceActual)(
3490     _In_
3491     PWDF_DRIVER_GLOBALS DriverGlobals,
3492     _In_
3493     WDFOBJECT Handle,
3494     _In_opt_
3495     PVOID Tag,
3496     _In_
3497     LONG Line,
3498     _In_z_
3499     PCHAR File
3500     );
3501 
3502 WDFAPI
3503 VOID
3504 VFWDFEXPORT(WdfObjectDereferenceActual)(
3505     _In_
3506     PWDF_DRIVER_GLOBALS DriverGlobals,
3507     _In_
3508     WDFOBJECT Handle,
3509     _In_opt_
3510     PVOID Tag,
3511     _In_
3512     LONG Line,
3513     _In_z_
3514     PCHAR File
3515     );
3516 
3517 _Must_inspect_result_
3518 _IRQL_requires_max_(DISPATCH_LEVEL)
3519 WDFAPI
3520 NTSTATUS
3521 VFWDFEXPORT(WdfObjectCreate)(
3522     _In_
3523     PWDF_DRIVER_GLOBALS DriverGlobals,
3524     _In_opt_
3525     PWDF_OBJECT_ATTRIBUTES Attributes,
3526     _Out_
3527     WDFOBJECT* Object
3528     );
3529 
3530 _IRQL_requires_max_(DISPATCH_LEVEL)
3531 WDFAPI
3532 VOID
3533 VFWDFEXPORT(WdfObjectDelete)(
3534     _In_
3535     PWDF_DRIVER_GLOBALS DriverGlobals,
3536     _In_
3537     WDFOBJECT Object
3538     );
3539 
3540 _Must_inspect_result_
3541 _IRQL_requires_max_(DISPATCH_LEVEL)
3542 WDFAPI
3543 NTSTATUS
3544 VFWDFEXPORT(WdfObjectQuery)(
3545     _In_
3546     PWDF_DRIVER_GLOBALS DriverGlobals,
3547     _In_
3548     WDFOBJECT Object,
3549     _In_
3550     CONST GUID* Guid,
3551     _In_
3552     ULONG QueryBufferLength,
3553     _Out_writes_bytes_(QueryBufferLength)
3554     PVOID QueryBuffer
3555     );
3556 
3557 _Must_inspect_result_
3558 _IRQL_requires_max_(PASSIVE_LEVEL)
3559 WDFAPI
3560 PWDFDEVICE_INIT
3561 VFWDFEXPORT(WdfPdoInitAllocate)(
3562     _In_
3563     PWDF_DRIVER_GLOBALS DriverGlobals,
3564     _In_
3565     WDFDEVICE ParentDevice
3566     );
3567 
3568 _IRQL_requires_max_(PASSIVE_LEVEL)
3569 WDFAPI
3570 VOID
3571 VFWDFEXPORT(WdfPdoInitSetEventCallbacks)(
3572     _In_
3573     PWDF_DRIVER_GLOBALS DriverGlobals,
3574     _In_
3575     PWDFDEVICE_INIT DeviceInit,
3576     _In_
3577     PWDF_PDO_EVENT_CALLBACKS DispatchTable
3578     );
3579 
3580 _Must_inspect_result_
3581 _IRQL_requires_max_(PASSIVE_LEVEL)
3582 WDFAPI
3583 NTSTATUS
3584 VFWDFEXPORT(WdfPdoInitAssignDeviceID)(
3585     _In_
3586     PWDF_DRIVER_GLOBALS DriverGlobals,
3587     _In_
3588     PWDFDEVICE_INIT DeviceInit,
3589     _In_
3590     PCUNICODE_STRING DeviceID
3591     );
3592 
3593 _Must_inspect_result_
3594 _IRQL_requires_max_(PASSIVE_LEVEL)
3595 WDFAPI
3596 NTSTATUS
3597 VFWDFEXPORT(WdfPdoInitAssignInstanceID)(
3598     _In_
3599     PWDF_DRIVER_GLOBALS DriverGlobals,
3600     _In_
3601     PWDFDEVICE_INIT DeviceInit,
3602     _In_
3603     PCUNICODE_STRING InstanceID
3604     );
3605 
3606 _Must_inspect_result_
3607 _IRQL_requires_max_(PASSIVE_LEVEL)
3608 WDFAPI
3609 NTSTATUS
3610 VFWDFEXPORT(WdfPdoInitAddHardwareID)(
3611     _In_
3612     PWDF_DRIVER_GLOBALS DriverGlobals,
3613     _In_
3614     PWDFDEVICE_INIT DeviceInit,
3615     _In_
3616     PCUNICODE_STRING HardwareID
3617     );
3618 
3619 _Must_inspect_result_
3620 _IRQL_requires_max_(PASSIVE_LEVEL)
3621 WDFAPI
3622 NTSTATUS
3623 VFWDFEXPORT(WdfPdoInitAddCompatibleID)(
3624     _In_
3625     PWDF_DRIVER_GLOBALS DriverGlobals,
3626     _In_
3627     PWDFDEVICE_INIT DeviceInit,
3628     _In_
3629     PCUNICODE_STRING CompatibleID
3630     );
3631 
3632 _Must_inspect_result_
3633 _IRQL_requires_max_(PASSIVE_LEVEL)
3634 WDFAPI
3635 NTSTATUS
3636 VFWDFEXPORT(WdfPdoInitAssignContainerID)(
3637     _In_
3638     PWDF_DRIVER_GLOBALS DriverGlobals,
3639     _In_
3640     PWDFDEVICE_INIT DeviceInit,
3641     _In_
3642     PCUNICODE_STRING ContainerID
3643     );
3644 
3645 _Must_inspect_result_
3646 _IRQL_requires_max_(PASSIVE_LEVEL)
3647 WDFAPI
3648 NTSTATUS
3649 VFWDFEXPORT(WdfPdoInitAddDeviceText)(
3650     _In_
3651     PWDF_DRIVER_GLOBALS DriverGlobals,
3652     _In_
3653     PWDFDEVICE_INIT DeviceInit,
3654     _In_
3655     PCUNICODE_STRING DeviceDescription,
3656     _In_
3657     PCUNICODE_STRING DeviceLocation,
3658     _In_
3659     LCID LocaleId
3660     );
3661 
3662 _IRQL_requires_max_(PASSIVE_LEVEL)
3663 WDFAPI
3664 VOID
3665 VFWDFEXPORT(WdfPdoInitSetDefaultLocale)(
3666     _In_
3667     PWDF_DRIVER_GLOBALS DriverGlobals,
3668     _In_
3669     PWDFDEVICE_INIT DeviceInit,
3670     _In_
3671     LCID LocaleId
3672     );
3673 
3674 _Must_inspect_result_
3675 _IRQL_requires_max_(PASSIVE_LEVEL)
3676 WDFAPI
3677 NTSTATUS
3678 VFWDFEXPORT(WdfPdoInitAssignRawDevice)(
3679     _In_
3680     PWDF_DRIVER_GLOBALS DriverGlobals,
3681     _In_
3682     PWDFDEVICE_INIT DeviceInit,
3683     _In_
3684     CONST GUID* DeviceClassGuid
3685     );
3686 
3687 _IRQL_requires_max_(PASSIVE_LEVEL)
3688 WDFAPI
3689 VOID
3690 VFWDFEXPORT(WdfPdoInitAllowForwardingRequestToParent)(
3691     _In_
3692     PWDF_DRIVER_GLOBALS DriverGlobals,
3693     _In_
3694     PWDFDEVICE_INIT DeviceInit
3695     );
3696 
3697 _Must_inspect_result_
3698 _IRQL_requires_max_(DISPATCH_LEVEL)
3699 WDFAPI
3700 NTSTATUS
3701 VFWDFEXPORT(WdfPdoMarkMissing)(
3702     _In_
3703     PWDF_DRIVER_GLOBALS DriverGlobals,
3704     _In_
3705     WDFDEVICE Device
3706     );
3707 
3708 _IRQL_requires_max_(DISPATCH_LEVEL)
3709 WDFAPI
3710 VOID
3711 VFWDFEXPORT(WdfPdoRequestEject)(
3712     _In_
3713     PWDF_DRIVER_GLOBALS DriverGlobals,
3714     _In_
3715     WDFDEVICE Device
3716     );
3717 
3718 _IRQL_requires_max_(DISPATCH_LEVEL)
3719 WDFAPI
3720 WDFDEVICE
3721 VFWDFEXPORT(WdfPdoGetParent)(
3722     _In_
3723     PWDF_DRIVER_GLOBALS DriverGlobals,
3724     _In_
3725     WDFDEVICE Device
3726     );
3727 
3728 _Must_inspect_result_
3729 _IRQL_requires_max_(DISPATCH_LEVEL)
3730 WDFAPI
3731 NTSTATUS
3732 VFWDFEXPORT(WdfPdoRetrieveIdentificationDescription)(
3733     _In_
3734     PWDF_DRIVER_GLOBALS DriverGlobals,
3735     _In_
3736     WDFDEVICE Device,
3737     _Inout_
3738     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
3739     );
3740 
3741 _Must_inspect_result_
3742 _IRQL_requires_max_(DISPATCH_LEVEL)
3743 WDFAPI
3744 NTSTATUS
3745 VFWDFEXPORT(WdfPdoRetrieveAddressDescription)(
3746     _In_
3747     PWDF_DRIVER_GLOBALS DriverGlobals,
3748     _In_
3749     WDFDEVICE Device,
3750     _Inout_
3751     PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
3752     );
3753 
3754 _Must_inspect_result_
3755 _IRQL_requires_max_(DISPATCH_LEVEL)
3756 WDFAPI
3757 NTSTATUS
3758 VFWDFEXPORT(WdfPdoUpdateAddressDescription)(
3759     _In_
3760     PWDF_DRIVER_GLOBALS DriverGlobals,
3761     _In_
3762     WDFDEVICE Device,
3763     _Inout_
3764     PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
3765     );
3766 
3767 _Must_inspect_result_
3768 _IRQL_requires_max_(DISPATCH_LEVEL)
3769 WDFAPI
3770 NTSTATUS
3771 VFWDFEXPORT(WdfPdoAddEjectionRelationsPhysicalDevice)(
3772     _In_
3773     PWDF_DRIVER_GLOBALS DriverGlobals,
3774     _In_
3775     WDFDEVICE Device,
3776     _In_
3777     PDEVICE_OBJECT PhysicalDevice
3778     );
3779 
3780 _IRQL_requires_max_(DISPATCH_LEVEL)
3781 WDFAPI
3782 VOID
3783 VFWDFEXPORT(WdfPdoRemoveEjectionRelationsPhysicalDevice)(
3784     _In_
3785     PWDF_DRIVER_GLOBALS DriverGlobals,
3786     _In_
3787     WDFDEVICE Device,
3788     _In_
3789     PDEVICE_OBJECT PhysicalDevice
3790     );
3791 
3792 _IRQL_requires_max_(DISPATCH_LEVEL)
3793 WDFAPI
3794 VOID
3795 VFWDFEXPORT(WdfPdoClearEjectionRelationsDevices)(
3796     _In_
3797     PWDF_DRIVER_GLOBALS DriverGlobals,
3798     _In_
3799     WDFDEVICE Device
3800     );
3801 
3802 _Must_inspect_result_
3803 _IRQL_requires_max_(PASSIVE_LEVEL)
3804 WDFAPI
3805 NTSTATUS
3806 VFWDFEXPORT(WdfDeviceAddQueryInterface)(
3807     _In_
3808     PWDF_DRIVER_GLOBALS DriverGlobals,
3809     _In_
3810     WDFDEVICE Device,
3811     _In_
3812     PWDF_QUERY_INTERFACE_CONFIG InterfaceConfig
3813     );
3814 
3815 _Must_inspect_result_
3816 _IRQL_requires_max_(PASSIVE_LEVEL)
3817 WDFAPI
3818 NTSTATUS
3819 VFWDFEXPORT(WdfRegistryOpenKey)(
3820     _In_
3821     PWDF_DRIVER_GLOBALS DriverGlobals,
3822     _In_opt_
3823     WDFKEY ParentKey,
3824     _In_
3825     PCUNICODE_STRING KeyName,
3826     _In_
3827     ACCESS_MASK DesiredAccess,
3828     _In_opt_
3829     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
3830     _Out_
3831     WDFKEY* Key
3832     );
3833 
3834 _Must_inspect_result_
3835 _IRQL_requires_max_(PASSIVE_LEVEL)
3836 WDFAPI
3837 NTSTATUS
3838 VFWDFEXPORT(WdfRegistryCreateKey)(
3839     _In_
3840     PWDF_DRIVER_GLOBALS DriverGlobals,
3841     _In_opt_
3842     WDFKEY ParentKey,
3843     _In_
3844     PCUNICODE_STRING KeyName,
3845     _In_
3846     ACCESS_MASK DesiredAccess,
3847     _In_
3848     ULONG CreateOptions,
3849     _Out_opt_
3850     PULONG CreateDisposition,
3851     _In_opt_
3852     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
3853     _Out_
3854     WDFKEY* Key
3855     );
3856 
3857 _IRQL_requires_max_(PASSIVE_LEVEL)
3858 WDFAPI
3859 VOID
3860 VFWDFEXPORT(WdfRegistryClose)(
3861     _In_
3862     PWDF_DRIVER_GLOBALS DriverGlobals,
3863     _In_
3864     WDFKEY Key
3865     );
3866 
3867 _IRQL_requires_max_(PASSIVE_LEVEL)
3868 WDFAPI
3869 HANDLE
3870 VFWDFEXPORT(WdfRegistryWdmGetHandle)(
3871     _In_
3872     PWDF_DRIVER_GLOBALS DriverGlobals,
3873     _In_
3874     WDFKEY Key
3875     );
3876 
3877 _Must_inspect_result_
3878 _IRQL_requires_max_(PASSIVE_LEVEL)
3879 WDFAPI
3880 NTSTATUS
3881 VFWDFEXPORT(WdfRegistryRemoveKey)(
3882     _In_
3883     PWDF_DRIVER_GLOBALS DriverGlobals,
3884     _In_
3885     WDFKEY Key
3886     );
3887 
3888 _Must_inspect_result_
3889 _IRQL_requires_max_(PASSIVE_LEVEL)
3890 WDFAPI
3891 NTSTATUS
3892 VFWDFEXPORT(WdfRegistryRemoveValue)(
3893     _In_
3894     PWDF_DRIVER_GLOBALS DriverGlobals,
3895     _In_
3896     WDFKEY Key,
3897     _In_
3898     PCUNICODE_STRING ValueName
3899     );
3900 
3901 _Must_inspect_result_
3902 _IRQL_requires_max_(PASSIVE_LEVEL)
3903 WDFAPI
3904 NTSTATUS
3905 VFWDFEXPORT(WdfRegistryQueryValue)(
3906     _In_
3907     PWDF_DRIVER_GLOBALS DriverGlobals,
3908     _In_
3909     WDFKEY Key,
3910     _In_
3911     PCUNICODE_STRING ValueName,
3912     _In_
3913     ULONG ValueLength,
3914     _Out_writes_bytes_opt_( ValueLength)
3915     PVOID Value,
3916     _Out_opt_
3917     PULONG ValueLengthQueried,
3918     _Out_opt_
3919     PULONG ValueType
3920     );
3921 
3922 _Must_inspect_result_
3923 _IRQL_requires_max_(PASSIVE_LEVEL)
3924 WDFAPI
3925 NTSTATUS
3926 VFWDFEXPORT(WdfRegistryQueryMemory)(
3927     _In_
3928     PWDF_DRIVER_GLOBALS DriverGlobals,
3929     _In_
3930     WDFKEY Key,
3931     _In_
3932     PCUNICODE_STRING ValueName,
3933     _In_
3934     _Strict_type_match_
3935     POOL_TYPE PoolType,
3936     _In_opt_
3937     PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
3938     _Out_
3939     WDFMEMORY* Memory,
3940     _Out_opt_
3941     PULONG ValueType
3942     );
3943 
3944 _Must_inspect_result_
3945 _IRQL_requires_max_(PASSIVE_LEVEL)
3946 WDFAPI
3947 NTSTATUS
3948 VFWDFEXPORT(WdfRegistryQueryMultiString)(
3949     _In_
3950     PWDF_DRIVER_GLOBALS DriverGlobals,
3951     _In_
3952     WDFKEY Key,
3953     _In_
3954     PCUNICODE_STRING ValueName,
3955     _In_opt_
3956     PWDF_OBJECT_ATTRIBUTES StringsAttributes,
3957     _In_
3958     WDFCOLLECTION Collection
3959     );
3960 
3961 _Must_inspect_result_
3962 _IRQL_requires_max_(PASSIVE_LEVEL)
3963 WDFAPI
3964 NTSTATUS
3965 VFWDFEXPORT(WdfRegistryQueryUnicodeString)(
3966     _In_
3967     PWDF_DRIVER_GLOBALS DriverGlobals,
3968     _In_
3969     WDFKEY Key,
3970     _In_
3971     PCUNICODE_STRING ValueName,
3972     _Out_opt_
3973     PUSHORT ValueByteLength,
3974     _Inout_opt_
3975     PUNICODE_STRING Value
3976     );
3977 
3978 _Must_inspect_result_
3979 _IRQL_requires_max_(PASSIVE_LEVEL)
3980 WDFAPI
3981 NTSTATUS
3982 VFWDFEXPORT(WdfRegistryQueryString)(
3983     _In_
3984     PWDF_DRIVER_GLOBALS DriverGlobals,
3985     _In_
3986     WDFKEY Key,
3987     _In_
3988     PCUNICODE_STRING ValueName,
3989     _In_
3990     WDFSTRING String
3991     );
3992 
3993 _Must_inspect_result_
3994 _IRQL_requires_max_(PASSIVE_LEVEL)
3995 WDFAPI
3996 NTSTATUS
3997 VFWDFEXPORT(WdfRegistryQueryULong)(
3998     _In_
3999     PWDF_DRIVER_GLOBALS DriverGlobals,
4000     _In_
4001     WDFKEY Key,
4002     _In_
4003     PCUNICODE_STRING ValueName,
4004     _Out_
4005     PULONG Value
4006     );
4007 
4008 _Must_inspect_result_
4009 _IRQL_requires_max_(PASSIVE_LEVEL)
4010 WDFAPI
4011 NTSTATUS
4012 VFWDFEXPORT(WdfRegistryAssignValue)(
4013     _In_
4014     PWDF_DRIVER_GLOBALS DriverGlobals,
4015     _In_
4016     WDFKEY Key,
4017     _In_
4018     PCUNICODE_STRING ValueName,
4019     _In_
4020     ULONG ValueType,
4021     _In_
4022     ULONG ValueLength,
4023     _In_reads_( ValueLength)
4024     PVOID Value
4025     );
4026 
4027 _Must_inspect_result_
4028 _IRQL_requires_max_(PASSIVE_LEVEL)
4029 WDFAPI
4030 NTSTATUS
4031 VFWDFEXPORT(WdfRegistryAssignMemory)(
4032     _In_
4033     PWDF_DRIVER_GLOBALS DriverGlobals,
4034     _In_
4035     WDFKEY Key,
4036     _In_
4037     PCUNICODE_STRING ValueName,
4038     _In_
4039     ULONG ValueType,
4040     _In_
4041     WDFMEMORY Memory,
4042     _In_opt_
4043     PWDFMEMORY_OFFSET MemoryOffsets
4044     );
4045 
4046 _Must_inspect_result_
4047 _IRQL_requires_max_(PASSIVE_LEVEL)
4048 WDFAPI
4049 NTSTATUS
4050 VFWDFEXPORT(WdfRegistryAssignMultiString)(
4051     _In_
4052     PWDF_DRIVER_GLOBALS DriverGlobals,
4053     _In_
4054     WDFKEY Key,
4055     _In_
4056     PCUNICODE_STRING ValueName,
4057     _In_
4058     WDFCOLLECTION StringsCollection
4059     );
4060 
4061 _Must_inspect_result_
4062 _IRQL_requires_max_(PASSIVE_LEVEL)
4063 WDFAPI
4064 NTSTATUS
4065 VFWDFEXPORT(WdfRegistryAssignUnicodeString)(
4066     _In_
4067     PWDF_DRIVER_GLOBALS DriverGlobals,
4068     _In_
4069     WDFKEY Key,
4070     _In_
4071     PCUNICODE_STRING ValueName,
4072     _In_
4073     PCUNICODE_STRING Value
4074     );
4075 
4076 _Must_inspect_result_
4077 _IRQL_requires_max_(PASSIVE_LEVEL)
4078 WDFAPI
4079 NTSTATUS
4080 VFWDFEXPORT(WdfRegistryAssignString)(
4081     _In_
4082     PWDF_DRIVER_GLOBALS DriverGlobals,
4083     _In_
4084     WDFKEY Key,
4085     _In_
4086     PCUNICODE_STRING ValueName,
4087     _In_
4088     WDFSTRING String
4089     );
4090 
4091 _Must_inspect_result_
4092 _IRQL_requires_max_(PASSIVE_LEVEL)
4093 WDFAPI
4094 NTSTATUS
4095 VFWDFEXPORT(WdfRegistryAssignULong)(
4096     _In_
4097     PWDF_DRIVER_GLOBALS DriverGlobals,
4098     _In_
4099     WDFKEY Key,
4100     _In_
4101     PCUNICODE_STRING ValueName,
4102     _In_
4103     ULONG Value
4104     );
4105 
4106 _Must_inspect_result_
4107 _IRQL_requires_max_(DISPATCH_LEVEL)
4108 WDFAPI
4109 NTSTATUS
4110 VFWDFEXPORT(WdfRequestCreate)(
4111     _In_
4112     PWDF_DRIVER_GLOBALS DriverGlobals,
4113     _In_opt_
4114     PWDF_OBJECT_ATTRIBUTES RequestAttributes,
4115     _In_opt_
4116     WDFIOTARGET IoTarget,
4117     _Out_
4118     WDFREQUEST* Request
4119     );
4120 
4121 _Must_inspect_result_
4122 _IRQL_requires_max_(DISPATCH_LEVEL)
4123 WDFAPI
4124 NTSTATUS
4125 VFWDFEXPORT(WdfRequestCreateFromIrp)(
4126     _In_
4127     PWDF_DRIVER_GLOBALS DriverGlobals,
4128     _In_opt_
4129     PWDF_OBJECT_ATTRIBUTES RequestAttributes,
4130     _In_
4131     PIRP Irp,
4132     _In_
4133     BOOLEAN RequestFreesIrp,
4134     _Out_
4135     WDFREQUEST* Request
4136     );
4137 
4138 _IRQL_requires_max_(DISPATCH_LEVEL)
4139 WDFAPI
4140 NTSTATUS
4141 VFWDFEXPORT(WdfRequestReuse)(
4142     _In_
4143     PWDF_DRIVER_GLOBALS DriverGlobals,
4144     _In_
4145     WDFREQUEST Request,
4146     _In_
4147     PWDF_REQUEST_REUSE_PARAMS ReuseParams
4148     );
4149 
4150 _Must_inspect_result_
4151 _IRQL_requires_max_(DISPATCH_LEVEL)
4152 WDFAPI
4153 NTSTATUS
4154 VFWDFEXPORT(WdfRequestChangeTarget)(
4155     _In_
4156     PWDF_DRIVER_GLOBALS DriverGlobals,
4157     _In_
4158     WDFREQUEST Request,
4159     _In_
4160     WDFIOTARGET IoTarget
4161     );
4162 
4163 _IRQL_requires_max_(DISPATCH_LEVEL)
4164 WDFAPI
4165 VOID
4166 VFWDFEXPORT(WdfRequestFormatRequestUsingCurrentType)(
4167     _In_
4168     PWDF_DRIVER_GLOBALS DriverGlobals,
4169     _In_
4170     WDFREQUEST Request
4171     );
4172 
4173 _IRQL_requires_max_(DISPATCH_LEVEL)
4174 WDFAPI
4175 VOID
4176 VFWDFEXPORT(WdfRequestWdmFormatUsingStackLocation)(
4177     _In_
4178     PWDF_DRIVER_GLOBALS DriverGlobals,
4179     _In_
4180     WDFREQUEST Request,
4181     _In_
4182     PIO_STACK_LOCATION Stack
4183     );
4184 
4185 _IRQL_requires_max_(DISPATCH_LEVEL)
4186 _When_(Options->Flags & WDF_REQUEST_SEND_OPTION_SYNCHRONOUS == 0, _Must_inspect_result_)
4187 WDFAPI
4188 BOOLEAN
4189 VFWDFEXPORT(WdfRequestSend)(
4190     _In_
4191     PWDF_DRIVER_GLOBALS DriverGlobals,
4192     _In_
4193     WDFREQUEST Request,
4194     _In_
4195     WDFIOTARGET Target,
4196     _In_opt_
4197     PWDF_REQUEST_SEND_OPTIONS Options
4198     );
4199 
4200 _Must_inspect_result_
4201 _IRQL_requires_max_(DISPATCH_LEVEL)
4202 WDFAPI
4203 NTSTATUS
4204 VFWDFEXPORT(WdfRequestGetStatus)(
4205     _In_
4206     PWDF_DRIVER_GLOBALS DriverGlobals,
4207     _In_
4208     WDFREQUEST Request
4209     );
4210 
4211 _IRQL_requires_max_(DISPATCH_LEVEL)
4212 WDFAPI
4213 VOID
4214 VFWDFEXPORT(WdfRequestMarkCancelable)(
4215     _In_
4216     PWDF_DRIVER_GLOBALS DriverGlobals,
4217     _In_
4218     WDFREQUEST Request,
4219     _In_
4220     PFN_WDF_REQUEST_CANCEL EvtRequestCancel
4221     );
4222 
4223 _Must_inspect_result_
4224 _IRQL_requires_max_(DISPATCH_LEVEL)
4225 WDFAPI
4226 NTSTATUS
4227 VFWDFEXPORT(WdfRequestMarkCancelableEx)(
4228     _In_
4229     PWDF_DRIVER_GLOBALS DriverGlobals,
4230     _In_
4231     WDFREQUEST Request,
4232     _In_
4233     PFN_WDF_REQUEST_CANCEL EvtRequestCancel
4234     );
4235 
4236 _Must_inspect_result_
4237 _IRQL_requires_max_(DISPATCH_LEVEL)
4238 WDFAPI
4239 NTSTATUS
4240 VFWDFEXPORT(WdfRequestUnmarkCancelable)(
4241     _In_
4242     PWDF_DRIVER_GLOBALS DriverGlobals,
4243     _In_
4244     WDFREQUEST Request
4245     );
4246 
4247 _Must_inspect_result_
4248 _IRQL_requires_max_(DISPATCH_LEVEL)
4249 WDFAPI
4250 BOOLEAN
4251 VFWDFEXPORT(WdfRequestIsCanceled)(
4252     _In_
4253     PWDF_DRIVER_GLOBALS DriverGlobals,
4254     _In_
4255     WDFREQUEST Request
4256     );
4257 
4258 _IRQL_requires_max_(DISPATCH_LEVEL)
4259 WDFAPI
4260 BOOLEAN
4261 VFWDFEXPORT(WdfRequestCancelSentRequest)(
4262     _In_
4263     PWDF_DRIVER_GLOBALS DriverGlobals,
4264     _In_
4265     WDFREQUEST Request
4266     );
4267 
4268 _Must_inspect_result_
4269 _IRQL_requires_max_(APC_LEVEL)
4270 WDFAPI
4271 BOOLEAN
4272 VFWDFEXPORT(WdfRequestIsFrom32BitProcess)(
4273     _In_
4274     PWDF_DRIVER_GLOBALS DriverGlobals,
4275     _In_
4276     WDFREQUEST Request
4277     );
4278 
4279 _IRQL_requires_max_(DISPATCH_LEVEL)
4280 WDFAPI
4281 VOID
4282 VFWDFEXPORT(WdfRequestSetCompletionRoutine)(
4283     _In_
4284     PWDF_DRIVER_GLOBALS DriverGlobals,
4285     _In_
4286     WDFREQUEST Request,
4287     _In_opt_
4288     PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine,
4289     _In_opt_ __drv_aliasesMem
4290     WDFCONTEXT CompletionContext
4291     );
4292 
4293 _IRQL_requires_max_(DISPATCH_LEVEL)
4294 WDFAPI
4295 VOID
4296 VFWDFEXPORT(WdfRequestGetCompletionParams)(
4297     _In_
4298     PWDF_DRIVER_GLOBALS DriverGlobals,
4299     _In_
4300     WDFREQUEST Request,
4301     _Out_
4302     PWDF_REQUEST_COMPLETION_PARAMS Params
4303     );
4304 
4305 _Must_inspect_result_
4306 _IRQL_requires_max_(DISPATCH_LEVEL)
4307 WDFAPI
4308 NTSTATUS
4309 VFWDFEXPORT(WdfRequestAllocateTimer)(
4310     _In_
4311     PWDF_DRIVER_GLOBALS DriverGlobals,
4312     _In_
4313     WDFREQUEST Request
4314     );
4315 
4316 _IRQL_requires_max_(DISPATCH_LEVEL)
4317 WDFAPI
4318 VOID
4319 VFWDFEXPORT(WdfRequestComplete)(
4320     _In_
4321     PWDF_DRIVER_GLOBALS DriverGlobals,
4322     _In_
4323     WDFREQUEST Request,
4324     _In_
4325     NTSTATUS Status
4326     );
4327 
4328 _IRQL_requires_max_(DISPATCH_LEVEL)
4329 WDFAPI
4330 VOID
4331 VFWDFEXPORT(WdfRequestCompleteWithPriorityBoost)(
4332     _In_
4333     PWDF_DRIVER_GLOBALS DriverGlobals,
4334     _In_
4335     WDFREQUEST Request,
4336     _In_
4337     NTSTATUS Status,
4338     _In_
4339     CCHAR PriorityBoost
4340     );
4341 
4342 _IRQL_requires_max_(DISPATCH_LEVEL)
4343 WDFAPI
4344 VOID
4345 VFWDFEXPORT(WdfRequestCompleteWithInformation)(
4346     _In_
4347     PWDF_DRIVER_GLOBALS DriverGlobals,
4348     _In_
4349     WDFREQUEST Request,
4350     _In_
4351     NTSTATUS Status,
4352     _In_
4353     ULONG_PTR Information
4354     );
4355 
4356 _IRQL_requires_max_(DISPATCH_LEVEL)
4357 WDFAPI
4358 VOID
4359 VFWDFEXPORT(WdfRequestGetParameters)(
4360     _In_
4361     PWDF_DRIVER_GLOBALS DriverGlobals,
4362     _In_
4363     WDFREQUEST Request,
4364     _Out_
4365     PWDF_REQUEST_PARAMETERS Parameters
4366     );
4367 
4368 _Must_inspect_result_
4369 _IRQL_requires_max_(DISPATCH_LEVEL)
4370 WDFAPI
4371 NTSTATUS
4372 VFWDFEXPORT(WdfRequestRetrieveInputMemory)(
4373     _In_
4374     PWDF_DRIVER_GLOBALS DriverGlobals,
4375     _In_
4376     WDFREQUEST Request,
4377     _Out_
4378     WDFMEMORY* Memory
4379     );
4380 
4381 _Must_inspect_result_
4382 _IRQL_requires_max_(DISPATCH_LEVEL)
4383 WDFAPI
4384 NTSTATUS
4385 VFWDFEXPORT(WdfRequestRetrieveOutputMemory)(
4386     _In_
4387     PWDF_DRIVER_GLOBALS DriverGlobals,
4388     _In_
4389     WDFREQUEST Request,
4390     _Out_
4391     WDFMEMORY* Memory
4392     );
4393 
4394 _Must_inspect_result_
4395 _IRQL_requires_max_(DISPATCH_LEVEL)
4396 WDFAPI
4397 NTSTATUS
4398 VFWDFEXPORT(WdfRequestRetrieveInputBuffer)(
4399     _In_
4400     PWDF_DRIVER_GLOBALS DriverGlobals,
4401     _In_
4402     WDFREQUEST Request,
4403     _In_
4404     size_t MinimumRequiredLength,
4405     _Outptr_result_bytebuffer_(*Length)
4406     PVOID* Buffer,
4407     _Out_opt_
4408     size_t* Length
4409     );
4410 
4411 _Must_inspect_result_
4412 _IRQL_requires_max_(DISPATCH_LEVEL)
4413 WDFAPI
4414 NTSTATUS
4415 VFWDFEXPORT(WdfRequestRetrieveOutputBuffer)(
4416     _In_
4417     PWDF_DRIVER_GLOBALS DriverGlobals,
4418     _In_
4419     WDFREQUEST Request,
4420     _In_
4421     size_t MinimumRequiredSize,
4422     _Outptr_result_bytebuffer_(*Length)
4423     PVOID* Buffer,
4424     _Out_opt_
4425     size_t* Length
4426     );
4427 
4428 _Must_inspect_result_
4429 _IRQL_requires_max_(DISPATCH_LEVEL)
4430 WDFAPI
4431 NTSTATUS
4432 VFWDFEXPORT(WdfRequestRetrieveInputWdmMdl)(
4433     _In_
4434     PWDF_DRIVER_GLOBALS DriverGlobals,
4435     _In_
4436     WDFREQUEST Request,
4437     _Outptr_
4438     PMDL* Mdl
4439     );
4440 
4441 _Must_inspect_result_
4442 _IRQL_requires_max_(DISPATCH_LEVEL)
4443 WDFAPI
4444 NTSTATUS
4445 VFWDFEXPORT(WdfRequestRetrieveOutputWdmMdl)(
4446     _In_
4447     PWDF_DRIVER_GLOBALS DriverGlobals,
4448     _In_
4449     WDFREQUEST Request,
4450     _Outptr_
4451     PMDL* Mdl
4452     );
4453 
4454 _Must_inspect_result_
4455 _IRQL_requires_max_(PASSIVE_LEVEL)
4456 WDFAPI
4457 NTSTATUS
4458 VFWDFEXPORT(WdfRequestRetrieveUnsafeUserInputBuffer)(
4459     _In_
4460     PWDF_DRIVER_GLOBALS DriverGlobals,
4461     _In_
4462     WDFREQUEST Request,
4463     _In_
4464     size_t MinimumRequiredLength,
4465     _Outptr_result_bytebuffer_maybenull_(*Length)
4466     PVOID* InputBuffer,
4467     _Out_opt_
4468     size_t* Length
4469     );
4470 
4471 _Must_inspect_result_
4472 _IRQL_requires_max_(PASSIVE_LEVEL)
4473 WDFAPI
4474 NTSTATUS
4475 VFWDFEXPORT(WdfRequestRetrieveUnsafeUserOutputBuffer)(
4476     _In_
4477     PWDF_DRIVER_GLOBALS DriverGlobals,
4478     _In_
4479     WDFREQUEST Request,
4480     _In_
4481     size_t MinimumRequiredLength,
4482     _Outptr_result_bytebuffer_maybenull_(*Length)
4483     PVOID* OutputBuffer,
4484     _Out_opt_
4485     size_t* Length
4486     );
4487 
4488 _IRQL_requires_max_(DISPATCH_LEVEL)
4489 WDFAPI
4490 VOID
4491 VFWDFEXPORT(WdfRequestSetInformation)(
4492     _In_
4493     PWDF_DRIVER_GLOBALS DriverGlobals,
4494     _In_
4495     WDFREQUEST Request,
4496     _In_
4497     ULONG_PTR Information
4498     );
4499 
4500 _IRQL_requires_max_(DISPATCH_LEVEL)
4501 WDFAPI
4502 ULONG_PTR
4503 VFWDFEXPORT(WdfRequestGetInformation)(
4504     _In_
4505     PWDF_DRIVER_GLOBALS DriverGlobals,
4506     _In_
4507     WDFREQUEST Request
4508     );
4509 
4510 _IRQL_requires_max_(DISPATCH_LEVEL)
4511 WDFAPI
4512 WDFFILEOBJECT
4513 VFWDFEXPORT(WdfRequestGetFileObject)(
4514     _In_
4515     PWDF_DRIVER_GLOBALS DriverGlobals,
4516     _In_
4517     WDFREQUEST Request
4518     );
4519 
4520 _Must_inspect_result_
4521 _IRQL_requires_max_(PASSIVE_LEVEL)
4522 WDFAPI
4523 NTSTATUS
4524 VFWDFEXPORT(WdfRequestProbeAndLockUserBufferForRead)(
4525     _In_
4526     PWDF_DRIVER_GLOBALS DriverGlobals,
4527     _In_
4528     WDFREQUEST Request,
4529     _In_reads_bytes_(Length)
4530     PVOID Buffer,
4531     _In_
4532     size_t Length,
4533     _Out_
4534     WDFMEMORY* MemoryObject
4535     );
4536 
4537 _Must_inspect_result_
4538 _IRQL_requires_max_(PASSIVE_LEVEL)
4539 WDFAPI
4540 NTSTATUS
4541 VFWDFEXPORT(WdfRequestProbeAndLockUserBufferForWrite)(
4542     _In_
4543     PWDF_DRIVER_GLOBALS DriverGlobals,
4544     _In_
4545     WDFREQUEST Request,
4546     _In_reads_bytes_(Length)
4547     PVOID Buffer,
4548     _In_
4549     size_t Length,
4550     _Out_
4551     WDFMEMORY* MemoryObject
4552     );
4553 
4554 _IRQL_requires_max_(DISPATCH_LEVEL)
4555 WDFAPI
4556 KPROCESSOR_MODE
4557 VFWDFEXPORT(WdfRequestGetRequestorMode)(
4558     _In_
4559     PWDF_DRIVER_GLOBALS DriverGlobals,
4560     _In_
4561     WDFREQUEST Request
4562     );
4563 
4564 _Must_inspect_result_
4565 _IRQL_requires_max_(DISPATCH_LEVEL)
4566 WDFAPI
4567 NTSTATUS
4568 VFWDFEXPORT(WdfRequestForwardToIoQueue)(
4569     _In_
4570     PWDF_DRIVER_GLOBALS DriverGlobals,
4571     _In_
4572     WDFREQUEST Request,
4573     _In_
4574     WDFQUEUE DestinationQueue
4575     );
4576 
4577 _IRQL_requires_max_(DISPATCH_LEVEL)
4578 WDFAPI
4579 WDFQUEUE
4580 VFWDFEXPORT(WdfRequestGetIoQueue)(
4581     _In_
4582     PWDF_DRIVER_GLOBALS DriverGlobals,
4583     _In_
4584     WDFREQUEST Request
4585     );
4586 
4587 _Must_inspect_result_
4588 _IRQL_requires_max_(DISPATCH_LEVEL)
4589 WDFAPI
4590 NTSTATUS
4591 VFWDFEXPORT(WdfRequestRequeue)(
4592     _In_
4593     PWDF_DRIVER_GLOBALS DriverGlobals,
4594     _In_
4595     WDFREQUEST Request
4596     );
4597 
4598 _IRQL_requires_max_(DISPATCH_LEVEL)
4599 WDFAPI
4600 VOID
4601 VFWDFEXPORT(WdfRequestStopAcknowledge)(
4602     _In_
4603     PWDF_DRIVER_GLOBALS DriverGlobals,
4604     _In_
4605     WDFREQUEST Request,
4606     _In_
4607     BOOLEAN Requeue
4608     );
4609 
4610 _IRQL_requires_max_(DISPATCH_LEVEL)
4611 WDFAPI
4612 PIRP
4613 VFWDFEXPORT(WdfRequestWdmGetIrp)(
4614     _In_
4615     PWDF_DRIVER_GLOBALS DriverGlobals,
4616     _In_
4617     WDFREQUEST Request
4618     );
4619 
4620 _IRQL_requires_max_(DISPATCH_LEVEL)
4621 WDFAPI
4622 BOOLEAN
4623 VFWDFEXPORT(WdfRequestIsReserved)(
4624     _In_
4625     PWDF_DRIVER_GLOBALS DriverGlobals,
4626     _In_
4627     WDFREQUEST Request
4628     );
4629 
4630 _Must_inspect_result_
4631 _IRQL_requires_max_(DISPATCH_LEVEL)
4632 WDFAPI
4633 NTSTATUS
4634 VFWDFEXPORT(WdfRequestForwardToParentDeviceIoQueue)(
4635     _In_
4636     PWDF_DRIVER_GLOBALS DriverGlobals,
4637     _In_
4638     WDFREQUEST Request,
4639     _In_
4640     WDFQUEUE ParentDeviceQueue,
4641     _In_
4642     PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions
4643     );
4644 
4645 _IRQL_requires_max_(DISPATCH_LEVEL)
4646 WDFAPI
4647 VOID
4648 VFWDFEXPORT(WdfIoResourceRequirementsListSetSlotNumber)(
4649     _In_
4650     PWDF_DRIVER_GLOBALS DriverGlobals,
4651     _In_
4652     WDFIORESREQLIST RequirementsList,
4653     _In_
4654     ULONG SlotNumber
4655     );
4656 
4657 _IRQL_requires_max_(DISPATCH_LEVEL)
4658 WDFAPI
4659 VOID
4660 VFWDFEXPORT(WdfIoResourceRequirementsListSetInterfaceType)(
4661     _In_
4662     PWDF_DRIVER_GLOBALS DriverGlobals,
4663     _In_
4664     WDFIORESREQLIST RequirementsList,
4665     _In_
4666     _Strict_type_match_
4667     INTERFACE_TYPE InterfaceType
4668     );
4669 
4670 _Must_inspect_result_
4671 _IRQL_requires_max_(DISPATCH_LEVEL)
4672 WDFAPI
4673 NTSTATUS
4674 VFWDFEXPORT(WdfIoResourceRequirementsListAppendIoResList)(
4675     _In_
4676     PWDF_DRIVER_GLOBALS DriverGlobals,
4677     _In_
4678     WDFIORESREQLIST RequirementsList,
4679     _In_
4680     WDFIORESLIST IoResList
4681     );
4682 
4683 _Must_inspect_result_
4684 _IRQL_requires_max_(DISPATCH_LEVEL)
4685 WDFAPI
4686 NTSTATUS
4687 VFWDFEXPORT(WdfIoResourceRequirementsListInsertIoResList)(
4688     _In_
4689     PWDF_DRIVER_GLOBALS DriverGlobals,
4690     _In_
4691     WDFIORESREQLIST RequirementsList,
4692     _In_
4693     WDFIORESLIST IoResList,
4694     _In_
4695     ULONG Index
4696     );
4697 
4698 _IRQL_requires_max_(DISPATCH_LEVEL)
4699 WDFAPI
4700 ULONG
4701 VFWDFEXPORT(WdfIoResourceRequirementsListGetCount)(
4702     _In_
4703     PWDF_DRIVER_GLOBALS DriverGlobals,
4704     _In_
4705     WDFIORESREQLIST RequirementsList
4706     );
4707 
4708 _IRQL_requires_max_(DISPATCH_LEVEL)
4709 WDFAPI
4710 WDFIORESLIST
4711 VFWDFEXPORT(WdfIoResourceRequirementsListGetIoResList)(
4712     _In_
4713     PWDF_DRIVER_GLOBALS DriverGlobals,
4714     _In_
4715     WDFIORESREQLIST RequirementsList,
4716     _In_
4717     ULONG Index
4718     );
4719 
4720 _IRQL_requires_max_(DISPATCH_LEVEL)
4721 WDFAPI
4722 VOID
4723 VFWDFEXPORT(WdfIoResourceRequirementsListRemove)(
4724     _In_
4725     PWDF_DRIVER_GLOBALS DriverGlobals,
4726     _In_
4727     WDFIORESREQLIST RequirementsList,
4728     _In_
4729     ULONG Index
4730     );
4731 
4732 _IRQL_requires_max_(DISPATCH_LEVEL)
4733 WDFAPI
4734 VOID
4735 VFWDFEXPORT(WdfIoResourceRequirementsListRemoveByIoResList)(
4736     _In_
4737     PWDF_DRIVER_GLOBALS DriverGlobals,
4738     _In_
4739     WDFIORESREQLIST RequirementsList,
4740     _In_
4741     WDFIORESLIST IoResList
4742     );
4743 
4744 _Must_inspect_result_
4745 _IRQL_requires_max_(DISPATCH_LEVEL)
4746 WDFAPI
4747 NTSTATUS
4748 VFWDFEXPORT(WdfIoResourceListCreate)(
4749     _In_
4750     PWDF_DRIVER_GLOBALS DriverGlobals,
4751     _In_
4752     WDFIORESREQLIST RequirementsList,
4753     _In_opt_
4754     PWDF_OBJECT_ATTRIBUTES Attributes,
4755     _Out_
4756     WDFIORESLIST* ResourceList
4757     );
4758 
4759 _Must_inspect_result_
4760 _IRQL_requires_max_(DISPATCH_LEVEL)
4761 WDFAPI
4762 NTSTATUS
4763 VFWDFEXPORT(WdfIoResourceListAppendDescriptor)(
4764     _In_
4765     PWDF_DRIVER_GLOBALS DriverGlobals,
4766     _In_
4767     WDFIORESLIST ResourceList,
4768     _In_
4769     PIO_RESOURCE_DESCRIPTOR Descriptor
4770     );
4771 
4772 _Must_inspect_result_
4773 _IRQL_requires_max_(DISPATCH_LEVEL)
4774 WDFAPI
4775 NTSTATUS
4776 VFWDFEXPORT(WdfIoResourceListInsertDescriptor)(
4777     _In_
4778     PWDF_DRIVER_GLOBALS DriverGlobals,
4779     _In_
4780     WDFIORESLIST ResourceList,
4781     _In_
4782     PIO_RESOURCE_DESCRIPTOR Descriptor,
4783     _In_
4784     ULONG Index
4785     );
4786 
4787 _IRQL_requires_max_(DISPATCH_LEVEL)
4788 WDFAPI
4789 VOID
4790 VFWDFEXPORT(WdfIoResourceListUpdateDescriptor)(
4791     _In_
4792     PWDF_DRIVER_GLOBALS DriverGlobals,
4793     _In_
4794     WDFIORESLIST ResourceList,
4795     _In_
4796     PIO_RESOURCE_DESCRIPTOR Descriptor,
4797     _In_
4798     ULONG Index
4799     );
4800 
4801 _IRQL_requires_max_(DISPATCH_LEVEL)
4802 WDFAPI
4803 ULONG
4804 VFWDFEXPORT(WdfIoResourceListGetCount)(
4805     _In_
4806     PWDF_DRIVER_GLOBALS DriverGlobals,
4807     _In_
4808     WDFIORESLIST ResourceList
4809     );
4810 
4811 _IRQL_requires_max_(DISPATCH_LEVEL)
4812 WDFAPI
4813 PIO_RESOURCE_DESCRIPTOR
4814 VFWDFEXPORT(WdfIoResourceListGetDescriptor)(
4815     _In_
4816     PWDF_DRIVER_GLOBALS DriverGlobals,
4817     _In_
4818     WDFIORESLIST ResourceList,
4819     _In_
4820     ULONG Index
4821     );
4822 
4823 _IRQL_requires_max_(DISPATCH_LEVEL)
4824 WDFAPI
4825 VOID
4826 VFWDFEXPORT(WdfIoResourceListRemove)(
4827     _In_
4828     PWDF_DRIVER_GLOBALS DriverGlobals,
4829     _In_
4830     WDFIORESLIST ResourceList,
4831     _In_
4832     ULONG Index
4833     );
4834 
4835 _IRQL_requires_max_(DISPATCH_LEVEL)
4836 WDFAPI
4837 VOID
4838 VFWDFEXPORT(WdfIoResourceListRemoveByDescriptor)(
4839     _In_
4840     PWDF_DRIVER_GLOBALS DriverGlobals,
4841     _In_
4842     WDFIORESLIST ResourceList,
4843     _In_
4844     PIO_RESOURCE_DESCRIPTOR Descriptor
4845     );
4846 
4847 _Must_inspect_result_
4848 _IRQL_requires_max_(DISPATCH_LEVEL)
4849 WDFAPI
4850 NTSTATUS
4851 VFWDFEXPORT(WdfCmResourceListAppendDescriptor)(
4852     _In_
4853     PWDF_DRIVER_GLOBALS DriverGlobals,
4854     _In_
4855     WDFCMRESLIST List,
4856     _In_
4857     PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
4858     );
4859 
4860 _Must_inspect_result_
4861 _IRQL_requires_max_(DISPATCH_LEVEL)
4862 WDFAPI
4863 NTSTATUS
4864 VFWDFEXPORT(WdfCmResourceListInsertDescriptor)(
4865     _In_
4866     PWDF_DRIVER_GLOBALS DriverGlobals,
4867     _In_
4868     WDFCMRESLIST List,
4869     _In_
4870     PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
4871     _In_
4872     ULONG Index
4873     );
4874 
4875 _IRQL_requires_max_(DISPATCH_LEVEL)
4876 WDFAPI
4877 ULONG
4878 VFWDFEXPORT(WdfCmResourceListGetCount)(
4879     _In_
4880     PWDF_DRIVER_GLOBALS DriverGlobals,
4881     _In_
4882     WDFCMRESLIST List
4883     );
4884 
4885 _IRQL_requires_max_(DISPATCH_LEVEL)
4886 WDFAPI
4887 PCM_PARTIAL_RESOURCE_DESCRIPTOR
4888 VFWDFEXPORT(WdfCmResourceListGetDescriptor)(
4889     _In_
4890     PWDF_DRIVER_GLOBALS DriverGlobals,
4891     _In_
4892     WDFCMRESLIST List,
4893     _In_
4894     ULONG Index
4895     );
4896 
4897 _IRQL_requires_max_(DISPATCH_LEVEL)
4898 WDFAPI
4899 VOID
4900 VFWDFEXPORT(WdfCmResourceListRemove)(
4901     _In_
4902     PWDF_DRIVER_GLOBALS DriverGlobals,
4903     _In_
4904     WDFCMRESLIST List,
4905     _In_
4906     ULONG Index
4907     );
4908 
4909 _IRQL_requires_max_(DISPATCH_LEVEL)
4910 WDFAPI
4911 VOID
4912 VFWDFEXPORT(WdfCmResourceListRemoveByDescriptor)(
4913     _In_
4914     PWDF_DRIVER_GLOBALS DriverGlobals,
4915     _In_
4916     WDFCMRESLIST List,
4917     _In_
4918     PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
4919     );
4920 
4921 _Must_inspect_result_
4922 _IRQL_requires_max_(PASSIVE_LEVEL)
4923 WDFAPI
4924 NTSTATUS
4925 VFWDFEXPORT(WdfStringCreate)(
4926     _In_
4927     PWDF_DRIVER_GLOBALS DriverGlobals,
4928     _In_opt_
4929     PCUNICODE_STRING UnicodeString,
4930     _In_opt_
4931     PWDF_OBJECT_ATTRIBUTES StringAttributes,
4932     _Out_
4933     WDFSTRING* String
4934     );
4935 
4936 _IRQL_requires_max_(PASSIVE_LEVEL)
4937 WDFAPI
4938 VOID
4939 VFWDFEXPORT(WdfStringGetUnicodeString)(
4940     _In_
4941     PWDF_DRIVER_GLOBALS DriverGlobals,
4942     _In_
4943     WDFSTRING String,
4944     _Out_
4945     PUNICODE_STRING UnicodeString
4946     );
4947 
4948 _IRQL_requires_max_(DISPATCH_LEVEL)
4949 WDFAPI
4950 VOID
4951 VFWDFEXPORT(WdfObjectAcquireLock)(
4952     _In_
4953     PWDF_DRIVER_GLOBALS DriverGlobals,
4954     _In_
4955     _Requires_lock_not_held_(_Curr_)
4956     _Acquires_lock_(_Curr_)
4957     WDFOBJECT Object
4958     );
4959 
4960 _IRQL_requires_max_(DISPATCH_LEVEL)
4961 WDFAPI
4962 VOID
4963 VFWDFEXPORT(WdfObjectReleaseLock)(
4964     _In_
4965     PWDF_DRIVER_GLOBALS DriverGlobals,
4966     _In_
4967     _Requires_lock_held_(_Curr_)
4968     _Releases_lock_(_Curr_)
4969     WDFOBJECT Object
4970     );
4971 
4972 _Must_inspect_result_
4973 _IRQL_requires_max_(DISPATCH_LEVEL)
4974 WDFAPI
4975 NTSTATUS
4976 VFWDFEXPORT(WdfWaitLockCreate)(
4977     _In_
4978     PWDF_DRIVER_GLOBALS DriverGlobals,
4979     _In_opt_
4980     PWDF_OBJECT_ATTRIBUTES LockAttributes,
4981     _Out_
4982     WDFWAITLOCK* Lock
4983     );
4984 
4985 _When_(Timeout == NULL, _IRQL_requires_max_(PASSIVE_LEVEL))
4986 _When_(Timeout != NULL && *Timeout == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
4987 _When_(Timeout != NULL && *Timeout != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
4988 _Always_(_When_(Timeout == NULL, _Acquires_lock_(Lock)))
4989 _When_(Timeout != NULL && return == STATUS_SUCCESS, _Acquires_lock_(Lock))
4990 _When_(Timeout != NULL, _Must_inspect_result_)
4991 WDFAPI
4992 NTSTATUS
4993 VFWDFEXPORT(WdfWaitLockAcquire)(
4994     _In_
4995     PWDF_DRIVER_GLOBALS DriverGlobals,
4996     _In_
4997     _Requires_lock_not_held_(_Curr_)
4998     WDFWAITLOCK Lock,
4999     _In_opt_
5000     PLONGLONG Timeout
5001     );
5002 
5003 _IRQL_requires_max_(DISPATCH_LEVEL)
5004 WDFAPI
5005 VOID
5006 VFWDFEXPORT(WdfWaitLockRelease)(
5007     _In_
5008     PWDF_DRIVER_GLOBALS DriverGlobals,
5009     _In_
5010     _Requires_lock_held_(_Curr_)
5011     _Releases_lock_(_Curr_)
5012     WDFWAITLOCK Lock
5013     );
5014 
5015 _Must_inspect_result_
5016 _IRQL_requires_max_(DISPATCH_LEVEL)
5017 WDFAPI
5018 NTSTATUS
5019 VFWDFEXPORT(WdfSpinLockCreate)(
5020     _In_
5021     PWDF_DRIVER_GLOBALS DriverGlobals,
5022     _In_opt_
5023     PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
5024     _Out_
5025     WDFSPINLOCK* SpinLock
5026     );
5027 
5028 _IRQL_requires_max_(DISPATCH_LEVEL)
5029 _IRQL_raises_(DISPATCH_LEVEL)
5030 WDFAPI
5031 VOID
5032 VFWDFEXPORT(WdfSpinLockAcquire)(
5033     _In_
5034     PWDF_DRIVER_GLOBALS DriverGlobals,
5035     _In_
5036     _Requires_lock_not_held_(_Curr_)
5037     _Acquires_lock_(_Curr_)
5038     _IRQL_saves_
5039     WDFSPINLOCK SpinLock
5040     );
5041 
5042 _IRQL_requires_max_(DISPATCH_LEVEL)
5043 _IRQL_requires_min_(DISPATCH_LEVEL)
5044 WDFAPI
5045 VOID
5046 VFWDFEXPORT(WdfSpinLockRelease)(
5047     _In_
5048     PWDF_DRIVER_GLOBALS DriverGlobals,
5049     _In_
5050     _Requires_lock_held_(_Curr_)
5051     _Releases_lock_(_Curr_)
5052     _IRQL_restores_
5053     WDFSPINLOCK SpinLock
5054     );
5055 
5056 _Must_inspect_result_
5057 _IRQL_requires_max_(DISPATCH_LEVEL)
5058 WDFAPI
5059 NTSTATUS
5060 VFWDFEXPORT(WdfTimerCreate)(
5061     _In_
5062     PWDF_DRIVER_GLOBALS DriverGlobals,
5063     _In_
5064     PWDF_TIMER_CONFIG Config,
5065     _In_
5066     PWDF_OBJECT_ATTRIBUTES Attributes,
5067     _Out_
5068     WDFTIMER* Timer
5069     );
5070 
5071 _IRQL_requires_max_(DISPATCH_LEVEL)
5072 WDFAPI
5073 BOOLEAN
5074 VFWDFEXPORT(WdfTimerStart)(
5075     _In_
5076     PWDF_DRIVER_GLOBALS DriverGlobals,
5077     _In_
5078     WDFTIMER Timer,
5079     _In_
5080     LONGLONG DueTime
5081     );
5082 
5083 _When_(Wait == __true, _IRQL_requires_max_(PASSIVE_LEVEL))
5084 _When_(Wait == __false, _IRQL_requires_max_(DISPATCH_LEVEL))
5085 WDFAPI
5086 BOOLEAN
5087 VFWDFEXPORT(WdfTimerStop)(
5088     _In_
5089     PWDF_DRIVER_GLOBALS DriverGlobals,
5090     _In_
5091     WDFTIMER Timer,
5092     _In_
5093     BOOLEAN Wait
5094     );
5095 
5096 _IRQL_requires_max_(DISPATCH_LEVEL)
5097 WDFAPI
5098 WDFOBJECT
5099 VFWDFEXPORT(WdfTimerGetParentObject)(
5100     _In_
5101     PWDF_DRIVER_GLOBALS DriverGlobals,
5102     _In_
5103     WDFTIMER Timer
5104     );
5105 
5106 _Must_inspect_result_
5107 _IRQL_requires_max_(PASSIVE_LEVEL)
5108 WDFAPI
5109 NTSTATUS
5110 VFWDFEXPORT(WdfUsbTargetDeviceCreate)(
5111     _In_
5112     PWDF_DRIVER_GLOBALS DriverGlobals,
5113     _In_
5114     WDFDEVICE Device,
5115     _In_opt_
5116     PWDF_OBJECT_ATTRIBUTES Attributes,
5117     _Out_
5118     WDFUSBDEVICE* UsbDevice
5119     );
5120 
5121 _Must_inspect_result_
5122 _IRQL_requires_max_(PASSIVE_LEVEL)
5123 WDFAPI
5124 NTSTATUS
5125 VFWDFEXPORT(WdfUsbTargetDeviceCreateWithParameters)(
5126     _In_
5127     PWDF_DRIVER_GLOBALS DriverGlobals,
5128     _In_
5129     WDFDEVICE Device,
5130     _In_
5131     PWDF_USB_DEVICE_CREATE_CONFIG Config,
5132     _In_opt_
5133     PWDF_OBJECT_ATTRIBUTES Attributes,
5134     _Out_
5135     WDFUSBDEVICE* UsbDevice
5136     );
5137 
5138 _Must_inspect_result_
5139 _IRQL_requires_max_(DISPATCH_LEVEL)
5140 WDFAPI
5141 NTSTATUS
5142 VFWDFEXPORT(WdfUsbTargetDeviceRetrieveInformation)(
5143     _In_
5144     PWDF_DRIVER_GLOBALS DriverGlobals,
5145     _In_
5146     WDFUSBDEVICE UsbDevice,
5147     _Out_
5148     PWDF_USB_DEVICE_INFORMATION Information
5149     );
5150 
5151 _IRQL_requires_max_(PASSIVE_LEVEL)
5152 WDFAPI
5153 VOID
5154 VFWDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor)(
5155     _In_
5156     PWDF_DRIVER_GLOBALS DriverGlobals,
5157     _In_
5158     WDFUSBDEVICE UsbDevice,
5159     _Out_
5160     PUSB_DEVICE_DESCRIPTOR UsbDeviceDescriptor
5161     );
5162 
5163 _Must_inspect_result_
5164 _IRQL_requires_max_(PASSIVE_LEVEL)
5165 WDFAPI
5166 NTSTATUS
5167 VFWDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor)(
5168     _In_
5169     PWDF_DRIVER_GLOBALS DriverGlobals,
5170     _In_
5171     WDFUSBDEVICE UsbDevice,
5172     _Out_writes_bytes_to_opt_(*ConfigDescriptorLength,*ConfigDescriptorLength)
5173     PVOID ConfigDescriptor,
5174     _Inout_
5175     PUSHORT ConfigDescriptorLength
5176     );
5177 
5178 _Must_inspect_result_
5179 _IRQL_requires_max_(PASSIVE_LEVEL)
5180 WDFAPI
5181 NTSTATUS
5182 VFWDFEXPORT(WdfUsbTargetDeviceQueryString)(
5183     _In_
5184     PWDF_DRIVER_GLOBALS DriverGlobals,
5185     _In_
5186     WDFUSBDEVICE UsbDevice,
5187     _In_opt_
5188     WDFREQUEST Request,
5189     _In_opt_
5190     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
5191     _Out_writes_opt_(*NumCharacters)
5192     PUSHORT String,
5193     _Inout_
5194     PUSHORT NumCharacters,
5195     _In_
5196     UCHAR StringIndex,
5197     _In_opt_
5198     USHORT LangID
5199     );
5200 
5201 _Must_inspect_result_
5202 _IRQL_requires_max_(PASSIVE_LEVEL)
5203 WDFAPI
5204 NTSTATUS
5205 VFWDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString)(
5206     _In_
5207     PWDF_DRIVER_GLOBALS DriverGlobals,
5208     _In_
5209     WDFUSBDEVICE UsbDevice,
5210     _In_opt_
5211     PWDF_OBJECT_ATTRIBUTES StringMemoryAttributes,
5212     _Out_
5213     WDFMEMORY* StringMemory,
5214     _Out_opt_
5215     PUSHORT NumCharacters,
5216     _In_
5217     UCHAR StringIndex,
5218     _In_opt_
5219     USHORT LangID
5220     );
5221 
5222 _Must_inspect_result_
5223 _IRQL_requires_max_(DISPATCH_LEVEL)
5224 WDFAPI
5225 NTSTATUS
5226 VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForString)(
5227     _In_
5228     PWDF_DRIVER_GLOBALS DriverGlobals,
5229     _In_
5230     WDFUSBDEVICE UsbDevice,
5231     _In_
5232     WDFREQUEST Request,
5233     _In_
5234     WDFMEMORY Memory,
5235     _In_opt_
5236     PWDFMEMORY_OFFSET Offset,
5237     _In_
5238     UCHAR StringIndex,
5239     _In_opt_
5240     USHORT LangID
5241     );
5242 
5243 _IRQL_requires_max_(DISPATCH_LEVEL)
5244 WDFAPI
5245 UCHAR
5246 VFWDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces)(
5247     _In_
5248     PWDF_DRIVER_GLOBALS DriverGlobals,
5249     _In_
5250     WDFUSBDEVICE UsbDevice
5251     );
5252 
5253 _Must_inspect_result_
5254 _IRQL_requires_max_(PASSIVE_LEVEL)
5255 WDFAPI
5256 NTSTATUS
5257 VFWDFEXPORT(WdfUsbTargetDeviceSelectConfig)(
5258     _In_
5259     PWDF_DRIVER_GLOBALS DriverGlobals,
5260     _In_
5261     WDFUSBDEVICE UsbDevice,
5262     _In_opt_
5263     PWDF_OBJECT_ATTRIBUTES PipeAttributes,
5264     _Inout_
5265     PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params
5266     );
5267 
5268 _IRQL_requires_max_(DISPATCH_LEVEL)
5269 WDFAPI
5270 USBD_CONFIGURATION_HANDLE
5271 VFWDFEXPORT(WdfUsbTargetDeviceWdmGetConfigurationHandle)(
5272     _In_
5273     PWDF_DRIVER_GLOBALS DriverGlobals,
5274     _In_
5275     WDFUSBDEVICE UsbDevice
5276     );
5277 
5278 _Must_inspect_result_
5279 _IRQL_requires_max_(DISPATCH_LEVEL)
5280 WDFAPI
5281 NTSTATUS
5282 VFWDFEXPORT(WdfUsbTargetDeviceRetrieveCurrentFrameNumber)(
5283     _In_
5284     PWDF_DRIVER_GLOBALS DriverGlobals,
5285     _In_
5286     WDFUSBDEVICE UsbDevice,
5287     _Out_
5288     PULONG CurrentFrameNumber
5289     );
5290 
5291 _Must_inspect_result_
5292 _IRQL_requires_max_(PASSIVE_LEVEL)
5293 WDFAPI
5294 NTSTATUS
5295 VFWDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously)(
5296     _In_
5297     PWDF_DRIVER_GLOBALS DriverGlobals,
5298     _In_
5299     WDFUSBDEVICE UsbDevice,
5300     _In_opt_
5301     WDFREQUEST Request,
5302     _In_opt_
5303     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
5304     _In_
5305     PWDF_USB_CONTROL_SETUP_PACKET SetupPacket,
5306     _In_opt_
5307     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
5308     _Out_opt_
5309     PULONG BytesTransferred
5310     );
5311 
5312 _Must_inspect_result_
5313 _IRQL_requires_max_(DISPATCH_LEVEL)
5314 WDFAPI
5315 NTSTATUS
5316 VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer)(
5317     _In_
5318     PWDF_DRIVER_GLOBALS DriverGlobals,
5319     _In_
5320     WDFUSBDEVICE UsbDevice,
5321     _In_
5322     WDFREQUEST Request,
5323     _In_
5324     PWDF_USB_CONTROL_SETUP_PACKET SetupPacket,
5325     _In_opt_
5326     WDFMEMORY TransferMemory,
5327     _In_opt_
5328     PWDFMEMORY_OFFSET TransferOffset
5329     );
5330 
5331 _Must_inspect_result_
5332 _IRQL_requires_max_(PASSIVE_LEVEL)
5333 WDFAPI
5334 NTSTATUS
5335 VFWDFEXPORT(WdfUsbTargetDeviceIsConnectedSynchronous)(
5336     _In_
5337     PWDF_DRIVER_GLOBALS DriverGlobals,
5338     _In_
5339     WDFUSBDEVICE UsbDevice
5340     );
5341 
5342 _Must_inspect_result_
5343 _IRQL_requires_max_(PASSIVE_LEVEL)
5344 WDFAPI
5345 NTSTATUS
5346 VFWDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously)(
5347     _In_
5348     PWDF_DRIVER_GLOBALS DriverGlobals,
5349     _In_
5350     WDFUSBDEVICE UsbDevice
5351     );
5352 
5353 _Must_inspect_result_
5354 _IRQL_requires_max_(PASSIVE_LEVEL)
5355 WDFAPI
5356 NTSTATUS
5357 VFWDFEXPORT(WdfUsbTargetDeviceCyclePortSynchronously)(
5358     _In_
5359     PWDF_DRIVER_GLOBALS DriverGlobals,
5360     _In_
5361     WDFUSBDEVICE UsbDevice
5362     );
5363 
5364 _Must_inspect_result_
5365 _IRQL_requires_max_(DISPATCH_LEVEL)
5366 WDFAPI
5367 NTSTATUS
5368 VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForCyclePort)(
5369     _In_
5370     PWDF_DRIVER_GLOBALS DriverGlobals,
5371     _In_
5372     WDFUSBDEVICE UsbDevice,
5373     _In_
5374     WDFREQUEST Request
5375     );
5376 
5377 _Must_inspect_result_
5378 _IRQL_requires_max_(PASSIVE_LEVEL)
5379 WDFAPI
5380 NTSTATUS
5381 VFWDFEXPORT(WdfUsbTargetDeviceSendUrbSynchronously)(
5382     _In_
5383     PWDF_DRIVER_GLOBALS DriverGlobals,
5384     _In_
5385     WDFUSBDEVICE UsbDevice,
5386     _In_opt_
5387     WDFREQUEST Request,
5388     _In_opt_
5389     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
5390     _In_reads_(_Inexpressible_("union bug in SAL"))
5391     PURB Urb
5392     );
5393 
5394 _Must_inspect_result_
5395 _IRQL_requires_max_(DISPATCH_LEVEL)
5396 WDFAPI
5397 NTSTATUS
5398 VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForUrb)(
5399     _In_
5400     PWDF_DRIVER_GLOBALS DriverGlobals,
5401     _In_
5402     WDFUSBDEVICE UsbDevice,
5403     _In_
5404     WDFREQUEST Request,
5405     _In_
5406     WDFMEMORY UrbMemory,
5407     _In_opt_
5408     PWDFMEMORY_OFFSET UrbMemoryOffset
5409     );
5410 
5411 _Must_inspect_result_
5412 _IRQL_requires_max_(PASSIVE_LEVEL)
5413 WDFAPI
5414 NTSTATUS
5415 VFWDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability)(
5416     _In_
5417     PWDF_DRIVER_GLOBALS DriverGlobals,
5418     _In_
5419     WDFUSBDEVICE UsbDevice,
5420     _In_
5421     CONST GUID* CapabilityType,
5422     _In_
5423     ULONG CapabilityBufferLength,
5424     _When_(CapabilityBufferLength == 0, _Out_opt_)
5425     _When_(CapabilityBufferLength != 0 && ResultLength == NULL, _Out_writes_bytes_(CapabilityBufferLength))
5426     _When_(CapabilityBufferLength != 0 && ResultLength != NULL, _Out_writes_bytes_to_opt_(CapabilityBufferLength, *ResultLength))
5427     PVOID CapabilityBuffer,
5428     _Out_opt_
5429     _When_(ResultLength != NULL,_Deref_out_range_(<=,CapabilityBufferLength))
5430     PULONG ResultLength
5431     );
5432 
5433 _Must_inspect_result_
5434 _IRQL_requires_max_(DISPATCH_LEVEL)
5435 WDFAPI
5436 NTSTATUS
5437 VFWDFEXPORT(WdfUsbTargetDeviceCreateUrb)(
5438     _In_
5439     PWDF_DRIVER_GLOBALS DriverGlobals,
5440     _In_
5441     WDFUSBDEVICE UsbDevice,
5442     _In_opt_
5443     PWDF_OBJECT_ATTRIBUTES Attributes,
5444     _Out_
5445     WDFMEMORY* UrbMemory,
5446     _Outptr_opt_result_bytebuffer_(sizeof(URB))
5447     PURB* Urb
5448     );
5449 
5450 _Must_inspect_result_
5451 _IRQL_requires_max_(DISPATCH_LEVEL)
5452 WDFAPI
5453 NTSTATUS
5454 VFWDFEXPORT(WdfUsbTargetDeviceCreateIsochUrb)(
5455     _In_
5456     PWDF_DRIVER_GLOBALS DriverGlobals,
5457     _In_
5458     WDFUSBDEVICE UsbDevice,
5459     _In_opt_
5460     PWDF_OBJECT_ATTRIBUTES Attributes,
5461     _In_
5462     ULONG NumberOfIsochPackets,
5463     _Out_
5464     WDFMEMORY* UrbMemory,
5465     _Outptr_opt_result_bytebuffer_(GET_ISO_URB_SIZE(NumberOfIsochPackets))
5466     PURB* Urb
5467     );
5468 
5469 _IRQL_requires_max_(DISPATCH_LEVEL)
5470 WDFAPI
5471 VOID
5472 VFWDFEXPORT(WdfUsbTargetPipeGetInformation)(
5473     _In_
5474     PWDF_DRIVER_GLOBALS DriverGlobals,
5475     _In_
5476     WDFUSBPIPE Pipe,
5477     _Out_
5478     PWDF_USB_PIPE_INFORMATION PipeInformation
5479     );
5480 
5481 _IRQL_requires_max_(DISPATCH_LEVEL)
5482 WDFAPI
5483 BOOLEAN
5484 VFWDFEXPORT(WdfUsbTargetPipeIsInEndpoint)(
5485     _In_
5486     PWDF_DRIVER_GLOBALS DriverGlobals,
5487     _In_
5488     WDFUSBPIPE Pipe
5489     );
5490 
5491 _IRQL_requires_max_(DISPATCH_LEVEL)
5492 WDFAPI
5493 BOOLEAN
5494 VFWDFEXPORT(WdfUsbTargetPipeIsOutEndpoint)(
5495     _In_
5496     PWDF_DRIVER_GLOBALS DriverGlobals,
5497     _In_
5498     WDFUSBPIPE Pipe
5499     );
5500 
5501 _IRQL_requires_max_(DISPATCH_LEVEL)
5502 WDFAPI
5503 WDF_USB_PIPE_TYPE
5504 VFWDFEXPORT(WdfUsbTargetPipeGetType)(
5505     _In_
5506     PWDF_DRIVER_GLOBALS DriverGlobals,
5507     _In_
5508     WDFUSBPIPE Pipe
5509     );
5510 
5511 _IRQL_requires_max_(DISPATCH_LEVEL)
5512 WDFAPI
5513 VOID
5514 VFWDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck)(
5515     _In_
5516     PWDF_DRIVER_GLOBALS DriverGlobals,
5517     _In_
5518     WDFUSBPIPE Pipe
5519     );
5520 
5521 _Must_inspect_result_
5522 _IRQL_requires_max_(PASSIVE_LEVEL)
5523 WDFAPI
5524 NTSTATUS
5525 VFWDFEXPORT(WdfUsbTargetPipeWriteSynchronously)(
5526     _In_
5527     PWDF_DRIVER_GLOBALS DriverGlobals,
5528     _In_
5529     WDFUSBPIPE Pipe,
5530     _In_opt_
5531     WDFREQUEST Request,
5532     _In_opt_
5533     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
5534     _In_opt_
5535     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
5536     _Out_opt_
5537     PULONG BytesWritten
5538     );
5539 
5540 _Must_inspect_result_
5541 _IRQL_requires_max_(DISPATCH_LEVEL)
5542 WDFAPI
5543 NTSTATUS
5544 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite)(
5545     _In_
5546     PWDF_DRIVER_GLOBALS DriverGlobals,
5547     _In_
5548     WDFUSBPIPE Pipe,
5549     _In_
5550     WDFREQUEST Request,
5551     _In_opt_
5552     WDFMEMORY WriteMemory,
5553     _In_opt_
5554     PWDFMEMORY_OFFSET WriteOffset
5555     );
5556 
5557 _Must_inspect_result_
5558 _IRQL_requires_max_(PASSIVE_LEVEL)
5559 WDFAPI
5560 NTSTATUS
5561 VFWDFEXPORT(WdfUsbTargetPipeReadSynchronously)(
5562     _In_
5563     PWDF_DRIVER_GLOBALS DriverGlobals,
5564     _In_
5565     WDFUSBPIPE Pipe,
5566     _In_opt_
5567     WDFREQUEST Request,
5568     _In_opt_
5569     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
5570     _In_opt_
5571     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
5572     _Out_opt_
5573     PULONG BytesRead
5574     );
5575 
5576 _Must_inspect_result_
5577 _IRQL_requires_max_(DISPATCH_LEVEL)
5578 WDFAPI
5579 NTSTATUS
5580 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForRead)(
5581     _In_
5582     PWDF_DRIVER_GLOBALS DriverGlobals,
5583     _In_
5584     WDFUSBPIPE Pipe,
5585     _In_
5586     WDFREQUEST Request,
5587     _In_opt_
5588     WDFMEMORY ReadMemory,
5589     _In_opt_
5590     PWDFMEMORY_OFFSET ReadOffset
5591     );
5592 
5593 _Must_inspect_result_
5594 _IRQL_requires_max_(DISPATCH_LEVEL)
5595 WDFAPI
5596 NTSTATUS
5597 VFWDFEXPORT(WdfUsbTargetPipeConfigContinuousReader)(
5598     _In_
5599     PWDF_DRIVER_GLOBALS DriverGlobals,
5600     _In_
5601     WDFUSBPIPE Pipe,
5602     _In_
5603     PWDF_USB_CONTINUOUS_READER_CONFIG Config
5604     );
5605 
5606 _Must_inspect_result_
5607 _IRQL_requires_max_(PASSIVE_LEVEL)
5608 WDFAPI
5609 NTSTATUS
5610 VFWDFEXPORT(WdfUsbTargetPipeAbortSynchronously)(
5611     _In_
5612     PWDF_DRIVER_GLOBALS DriverGlobals,
5613     _In_
5614     WDFUSBPIPE Pipe,
5615     _In_opt_
5616     WDFREQUEST Request,
5617     _In_opt_
5618     PWDF_REQUEST_SEND_OPTIONS RequestOptions
5619     );
5620 
5621 _Must_inspect_result_
5622 _IRQL_requires_max_(DISPATCH_LEVEL)
5623 WDFAPI
5624 NTSTATUS
5625 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort)(
5626     _In_
5627     PWDF_DRIVER_GLOBALS DriverGlobals,
5628     _In_
5629     WDFUSBPIPE Pipe,
5630     _In_
5631     WDFREQUEST Request
5632     );
5633 
5634 _Must_inspect_result_
5635 _IRQL_requires_max_(PASSIVE_LEVEL)
5636 WDFAPI
5637 NTSTATUS
5638 VFWDFEXPORT(WdfUsbTargetPipeResetSynchronously)(
5639     _In_
5640     PWDF_DRIVER_GLOBALS DriverGlobals,
5641     _In_
5642     WDFUSBPIPE Pipe,
5643     _In_opt_
5644     WDFREQUEST Request,
5645     _In_opt_
5646     PWDF_REQUEST_SEND_OPTIONS RequestOptions
5647     );
5648 
5649 _Must_inspect_result_
5650 _IRQL_requires_max_(DISPATCH_LEVEL)
5651 WDFAPI
5652 NTSTATUS
5653 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForReset)(
5654     _In_
5655     PWDF_DRIVER_GLOBALS DriverGlobals,
5656     _In_
5657     WDFUSBPIPE Pipe,
5658     _In_
5659     WDFREQUEST Request
5660     );
5661 
5662 _Must_inspect_result_
5663 _IRQL_requires_max_(PASSIVE_LEVEL)
5664 WDFAPI
5665 NTSTATUS
5666 VFWDFEXPORT(WdfUsbTargetPipeSendUrbSynchronously)(
5667     _In_
5668     PWDF_DRIVER_GLOBALS DriverGlobals,
5669     _In_
5670     WDFUSBPIPE Pipe,
5671     _In_opt_
5672     WDFREQUEST Request,
5673     _In_opt_
5674     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
5675     _In_reads_(_Inexpressible_("union bug in SAL"))
5676     PURB Urb
5677     );
5678 
5679 _Must_inspect_result_
5680 _IRQL_requires_max_(DISPATCH_LEVEL)
5681 WDFAPI
5682 NTSTATUS
5683 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForUrb)(
5684     _In_
5685     PWDF_DRIVER_GLOBALS DriverGlobals,
5686     _In_
5687     WDFUSBPIPE PIPE,
5688     _In_
5689     WDFREQUEST Request,
5690     _In_
5691     WDFMEMORY UrbMemory,
5692     _In_opt_
5693     PWDFMEMORY_OFFSET UrbMemoryOffset
5694     );
5695 
5696 _IRQL_requires_max_(DISPATCH_LEVEL)
5697 WDFAPI
5698 BYTE
5699 VFWDFEXPORT(WdfUsbInterfaceGetInterfaceNumber)(
5700     _In_
5701     PWDF_DRIVER_GLOBALS DriverGlobals,
5702     _In_
5703     WDFUSBINTERFACE UsbInterface
5704     );
5705 
5706 _IRQL_requires_max_(DISPATCH_LEVEL)
5707 WDFAPI
5708 BYTE
5709 VFWDFEXPORT(WdfUsbInterfaceGetNumEndpoints)(
5710     _In_
5711     PWDF_DRIVER_GLOBALS DriverGlobals,
5712     _In_
5713     WDFUSBINTERFACE UsbInterface,
5714     _In_
5715     UCHAR SettingIndex
5716     );
5717 
5718 _IRQL_requires_max_(DISPATCH_LEVEL)
5719 WDFAPI
5720 VOID
5721 VFWDFEXPORT(WdfUsbInterfaceGetDescriptor)(
5722     _In_
5723     PWDF_DRIVER_GLOBALS DriverGlobals,
5724     _In_
5725     WDFUSBINTERFACE UsbInterface,
5726     _In_
5727     UCHAR SettingIndex,
5728     _Out_
5729     PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
5730     );
5731 
5732 _IRQL_requires_max_(DISPATCH_LEVEL)
5733 WDFAPI
5734 BYTE
5735 VFWDFEXPORT(WdfUsbInterfaceGetNumSettings)(
5736     _In_
5737     PWDF_DRIVER_GLOBALS DriverGlobals,
5738     _In_
5739     WDFUSBINTERFACE UsbInterface
5740     );
5741 
5742 _Must_inspect_result_
5743 _IRQL_requires_max_(PASSIVE_LEVEL)
5744 WDFAPI
5745 NTSTATUS
5746 VFWDFEXPORT(WdfUsbInterfaceSelectSetting)(
5747     _In_
5748     PWDF_DRIVER_GLOBALS DriverGlobals,
5749     _In_
5750     WDFUSBINTERFACE UsbInterface,
5751     _In_opt_
5752     PWDF_OBJECT_ATTRIBUTES PipesAttributes,
5753     _In_
5754     PWDF_USB_INTERFACE_SELECT_SETTING_PARAMS Params
5755     );
5756 
5757 _IRQL_requires_max_(DISPATCH_LEVEL)
5758 WDFAPI
5759 VOID
5760 VFWDFEXPORT(WdfUsbInterfaceGetEndpointInformation)(
5761     _In_
5762     PWDF_DRIVER_GLOBALS DriverGlobals,
5763     _In_
5764     WDFUSBINTERFACE UsbInterface,
5765     _In_
5766     UCHAR SettingIndex,
5767     _In_
5768     UCHAR EndpointIndex,
5769     _Out_
5770     PWDF_USB_PIPE_INFORMATION EndpointInfo
5771     );
5772 
5773 _IRQL_requires_max_(DISPATCH_LEVEL)
5774 WDFAPI
5775 WDFUSBINTERFACE
5776 VFWDFEXPORT(WdfUsbTargetDeviceGetInterface)(
5777     _In_
5778     PWDF_DRIVER_GLOBALS DriverGlobals,
5779     _In_
5780     WDFUSBDEVICE UsbDevice,
5781     _In_
5782     UCHAR InterfaceIndex
5783     );
5784 
5785 _IRQL_requires_max_(DISPATCH_LEVEL)
5786 WDFAPI
5787 BYTE
5788 VFWDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex)(
5789     _In_
5790     PWDF_DRIVER_GLOBALS DriverGlobals,
5791     _In_
5792     WDFUSBINTERFACE Interface
5793     );
5794 
5795 _IRQL_requires_max_(DISPATCH_LEVEL)
5796 WDFAPI
5797 BYTE
5798 VFWDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes)(
5799     _In_
5800     PWDF_DRIVER_GLOBALS DriverGlobals,
5801     _In_
5802     WDFUSBINTERFACE UsbInterface
5803     );
5804 
5805 _IRQL_requires_max_(DISPATCH_LEVEL)
5806 WDFAPI
5807 WDFUSBPIPE
5808 VFWDFEXPORT(WdfUsbInterfaceGetConfiguredPipe)(
5809     _In_
5810     PWDF_DRIVER_GLOBALS DriverGlobals,
5811     _In_
5812     WDFUSBINTERFACE UsbInterface,
5813     _In_
5814     UCHAR PipeIndex,
5815     _Out_opt_
5816     PWDF_USB_PIPE_INFORMATION PipeInfo
5817     );
5818 
5819 _IRQL_requires_max_(DISPATCH_LEVEL)
5820 WDFAPI
5821 USBD_PIPE_HANDLE
5822 VFWDFEXPORT(WdfUsbTargetPipeWdmGetPipeHandle)(
5823     _In_
5824     PWDF_DRIVER_GLOBALS DriverGlobals,
5825     _In_
5826     WDFUSBPIPE UsbPipe
5827     );
5828 
5829 WDFAPI
5830 VOID
5831 VFWDFEXPORT(WdfVerifierDbgBreakPoint)(
5832     _In_
5833     PWDF_DRIVER_GLOBALS DriverGlobals
5834     );
5835 
5836 WDFAPI
5837 VOID
5838 VFWDFEXPORT(WdfVerifierKeBugCheck)(
5839     _In_
5840     PWDF_DRIVER_GLOBALS DriverGlobals,
5841     _In_
5842     ULONG BugCheckCode,
5843     _In_
5844     ULONG_PTR BugCheckParameter1,
5845     _In_
5846     ULONG_PTR BugCheckParameter2,
5847     _In_
5848     ULONG_PTR BugCheckParameter3,
5849     _In_
5850     ULONG_PTR BugCheckParameter4
5851     );
5852 
5853 WDFAPI
5854 PVOID
5855 VFWDFEXPORT(WdfGetTriageInfo)(
5856     _In_
5857     PWDF_DRIVER_GLOBALS DriverGlobals
5858     );
5859 
5860 _Must_inspect_result_
5861 _IRQL_requires_max_(DISPATCH_LEVEL)
5862 WDFAPI
5863 NTSTATUS
5864 VFWDFEXPORT(WdfWmiProviderCreate)(
5865     _In_
5866     PWDF_DRIVER_GLOBALS DriverGlobals,
5867     _In_
5868     WDFDEVICE Device,
5869     _In_
5870     PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
5871     _In_opt_
5872     PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
5873     _Out_
5874     WDFWMIPROVIDER* WmiProvider
5875     );
5876 
5877 _IRQL_requires_max_(DISPATCH_LEVEL)
5878 WDFAPI
5879 WDFDEVICE
5880 VFWDFEXPORT(WdfWmiProviderGetDevice)(
5881     _In_
5882     PWDF_DRIVER_GLOBALS DriverGlobals,
5883     _In_
5884     WDFWMIPROVIDER WmiProvider
5885     );
5886 
5887 _IRQL_requires_max_(DISPATCH_LEVEL)
5888 WDFAPI
5889 BOOLEAN
5890 VFWDFEXPORT(WdfWmiProviderIsEnabled)(
5891     _In_
5892     PWDF_DRIVER_GLOBALS DriverGlobals,
5893     _In_
5894     WDFWMIPROVIDER WmiProvider,
5895     _In_
5896     WDF_WMI_PROVIDER_CONTROL ProviderControl
5897     );
5898 
5899 _IRQL_requires_max_(DISPATCH_LEVEL)
5900 WDFAPI
5901 ULONGLONG
5902 VFWDFEXPORT(WdfWmiProviderGetTracingHandle)(
5903     _In_
5904     PWDF_DRIVER_GLOBALS DriverGlobals,
5905     _In_
5906     WDFWMIPROVIDER WmiProvider
5907     );
5908 
5909 _Must_inspect_result_
5910 _IRQL_requires_max_(DISPATCH_LEVEL)
5911 WDFAPI
5912 NTSTATUS
5913 VFWDFEXPORT(WdfWmiInstanceCreate)(
5914     _In_
5915     PWDF_DRIVER_GLOBALS DriverGlobals,
5916     _In_
5917     WDFDEVICE Device,
5918     _In_
5919     PWDF_WMI_INSTANCE_CONFIG InstanceConfig,
5920     _In_opt_
5921     PWDF_OBJECT_ATTRIBUTES InstanceAttributes,
5922     _Out_opt_
5923     WDFWMIINSTANCE* Instance
5924     );
5925 
5926 _Must_inspect_result_
5927 _IRQL_requires_max_(PASSIVE_LEVEL)
5928 WDFAPI
5929 NTSTATUS
5930 VFWDFEXPORT(WdfWmiInstanceRegister)(
5931     _In_
5932     PWDF_DRIVER_GLOBALS DriverGlobals,
5933     _In_
5934     WDFWMIINSTANCE WmiInstance
5935     );
5936 
5937 _IRQL_requires_max_(PASSIVE_LEVEL)
5938 WDFAPI
5939 VOID
5940 VFWDFEXPORT(WdfWmiInstanceDeregister)(
5941     _In_
5942     PWDF_DRIVER_GLOBALS DriverGlobals,
5943     _In_
5944     WDFWMIINSTANCE WmiInstance
5945     );
5946 
5947 _IRQL_requires_max_(DISPATCH_LEVEL)
5948 WDFAPI
5949 WDFDEVICE
5950 VFWDFEXPORT(WdfWmiInstanceGetDevice)(
5951     _In_
5952     PWDF_DRIVER_GLOBALS DriverGlobals,
5953     _In_
5954     WDFWMIINSTANCE WmiInstance
5955     );
5956 
5957 _IRQL_requires_max_(DISPATCH_LEVEL)
5958 WDFAPI
5959 WDFWMIPROVIDER
5960 VFWDFEXPORT(WdfWmiInstanceGetProvider)(
5961     _In_
5962     PWDF_DRIVER_GLOBALS DriverGlobals,
5963     _In_
5964     WDFWMIINSTANCE WmiInstance
5965     );
5966 
5967 _Must_inspect_result_
5968 _IRQL_requires_max_(APC_LEVEL)
5969 WDFAPI
5970 NTSTATUS
5971 VFWDFEXPORT(WdfWmiInstanceFireEvent)(
5972     _In_
5973     PWDF_DRIVER_GLOBALS DriverGlobals,
5974     _In_
5975     WDFWMIINSTANCE WmiInstance,
5976     _In_opt_
5977     ULONG EventDataSize,
5978     _In_reads_bytes_opt_(EventDataSize)
5979     PVOID EventData
5980     );
5981 
5982 _Must_inspect_result_
5983 _IRQL_requires_max_(DISPATCH_LEVEL)
5984 WDFAPI
5985 NTSTATUS
5986 VFWDFEXPORT(WdfWorkItemCreate)(
5987     _In_
5988     PWDF_DRIVER_GLOBALS DriverGlobals,
5989     _In_
5990     PWDF_WORKITEM_CONFIG Config,
5991     _In_
5992     PWDF_OBJECT_ATTRIBUTES Attributes,
5993     _Out_
5994     WDFWORKITEM* WorkItem
5995     );
5996 
5997 _IRQL_requires_max_(DISPATCH_LEVEL)
5998 WDFAPI
5999 VOID
6000 VFWDFEXPORT(WdfWorkItemEnqueue)(
6001     _In_
6002     PWDF_DRIVER_GLOBALS DriverGlobals,
6003     _In_
6004     WDFWORKITEM WorkItem
6005     );
6006 
6007 _IRQL_requires_max_(DISPATCH_LEVEL)
6008 WDFAPI
6009 WDFOBJECT
6010 VFWDFEXPORT(WdfWorkItemGetParentObject)(
6011     _In_
6012     PWDF_DRIVER_GLOBALS DriverGlobals,
6013     _In_
6014     WDFWORKITEM WorkItem
6015     );
6016 
6017 _IRQL_requires_max_(PASSIVE_LEVEL)
6018 WDFAPI
6019 VOID
6020 VFWDFEXPORT(WdfWorkItemFlush)(
6021     _In_
6022     PWDF_DRIVER_GLOBALS DriverGlobals,
6023     _In_
6024     WDFWORKITEM WorkItem
6025     );
6026 
6027 
6028 #ifdef VF_FX_DYNAMICS_GENERATE_TABLE
6029 
6030 WDFVERSION VfWdfVersion = {
6031     sizeof(WDFVERSION),
6032     sizeof(WDFFUNCTIONS)/sizeof(PVOID),
6033     {
6034         VFWDFEXPORT(WdfChildListCreate),
6035         VFWDFEXPORT(WdfChildListGetDevice),
6036         VFWDFEXPORT(WdfChildListRetrievePdo),
6037         VFWDFEXPORT(WdfChildListRetrieveAddressDescription),
6038         VFWDFEXPORT(WdfChildListBeginScan),
6039         VFWDFEXPORT(WdfChildListEndScan),
6040         VFWDFEXPORT(WdfChildListBeginIteration),
6041         VFWDFEXPORT(WdfChildListRetrieveNextDevice),
6042         VFWDFEXPORT(WdfChildListEndIteration),
6043         VFWDFEXPORT(WdfChildListAddOrUpdateChildDescriptionAsPresent),
6044         VFWDFEXPORT(WdfChildListUpdateChildDescriptionAsMissing),
6045         VFWDFEXPORT(WdfChildListUpdateAllChildDescriptionsAsPresent),
6046         VFWDFEXPORT(WdfChildListRequestChildEject),
6047         VFWDFEXPORT(WdfCollectionCreate),
6048         VFWDFEXPORT(WdfCollectionGetCount),
6049         VFWDFEXPORT(WdfCollectionAdd),
6050         VFWDFEXPORT(WdfCollectionRemove),
6051         VFWDFEXPORT(WdfCollectionRemoveItem),
6052         VFWDFEXPORT(WdfCollectionGetItem),
6053         VFWDFEXPORT(WdfCollectionGetFirstItem),
6054         VFWDFEXPORT(WdfCollectionGetLastItem),
6055         VFWDFEXPORT(WdfCommonBufferCreate),
6056         VFWDFEXPORT(WdfCommonBufferGetAlignedVirtualAddress),
6057         VFWDFEXPORT(WdfCommonBufferGetAlignedLogicalAddress),
6058         VFWDFEXPORT(WdfCommonBufferGetLength),
6059         VFWDFEXPORT(WdfControlDeviceInitAllocate),
6060         VFWDFEXPORT(WdfControlDeviceInitSetShutdownNotification),
6061         VFWDFEXPORT(WdfControlFinishInitializing),
6062         VFWDFEXPORT(WdfDeviceGetDeviceState),
6063         VFWDFEXPORT(WdfDeviceSetDeviceState),
6064         VFWDFEXPORT(WdfWdmDeviceGetWdfDeviceHandle),
6065         VFWDFEXPORT(WdfDeviceWdmGetDeviceObject),
6066         VFWDFEXPORT(WdfDeviceWdmGetAttachedDevice),
6067         VFWDFEXPORT(WdfDeviceWdmGetPhysicalDevice),
6068         VFWDFEXPORT(WdfDeviceWdmDispatchPreprocessedIrp),
6069         VFWDFEXPORT(WdfDeviceAddDependentUsageDeviceObject),
6070         VFWDFEXPORT(WdfDeviceAddRemovalRelationsPhysicalDevice),
6071         VFWDFEXPORT(WdfDeviceRemoveRemovalRelationsPhysicalDevice),
6072         VFWDFEXPORT(WdfDeviceClearRemovalRelationsDevices),
6073         VFWDFEXPORT(WdfDeviceGetDriver),
6074         VFWDFEXPORT(WdfDeviceRetrieveDeviceName),
6075         VFWDFEXPORT(WdfDeviceAssignMofResourceName),
6076         VFWDFEXPORT(WdfDeviceGetIoTarget),
6077         VFWDFEXPORT(WdfDeviceGetDevicePnpState),
6078         VFWDFEXPORT(WdfDeviceGetDevicePowerState),
6079         VFWDFEXPORT(WdfDeviceGetDevicePowerPolicyState),
6080         VFWDFEXPORT(WdfDeviceAssignS0IdleSettings),
6081         VFWDFEXPORT(WdfDeviceAssignSxWakeSettings),
6082         VFWDFEXPORT(WdfDeviceOpenRegistryKey),
6083         VFWDFEXPORT(WdfDeviceSetSpecialFileSupport),
6084         VFWDFEXPORT(WdfDeviceSetCharacteristics),
6085         VFWDFEXPORT(WdfDeviceGetCharacteristics),
6086         VFWDFEXPORT(WdfDeviceGetAlignmentRequirement),
6087         VFWDFEXPORT(WdfDeviceSetAlignmentRequirement),
6088         VFWDFEXPORT(WdfDeviceInitFree),
6089         VFWDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks),
6090         VFWDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks),
6091         VFWDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership),
6092         VFWDFEXPORT(WdfDeviceInitRegisterPnpStateChangeCallback),
6093         VFWDFEXPORT(WdfDeviceInitRegisterPowerStateChangeCallback),
6094         VFWDFEXPORT(WdfDeviceInitRegisterPowerPolicyStateChangeCallback),
6095         VFWDFEXPORT(WdfDeviceInitSetIoType),
6096         VFWDFEXPORT(WdfDeviceInitSetExclusive),
6097         VFWDFEXPORT(WdfDeviceInitSetPowerNotPageable),
6098         VFWDFEXPORT(WdfDeviceInitSetPowerPageable),
6099         VFWDFEXPORT(WdfDeviceInitSetPowerInrush),
6100         VFWDFEXPORT(WdfDeviceInitSetDeviceType),
6101         VFWDFEXPORT(WdfDeviceInitAssignName),
6102         VFWDFEXPORT(WdfDeviceInitAssignSDDLString),
6103         VFWDFEXPORT(WdfDeviceInitSetDeviceClass),
6104         VFWDFEXPORT(WdfDeviceInitSetCharacteristics),
6105         VFWDFEXPORT(WdfDeviceInitSetFileObjectConfig),
6106         VFWDFEXPORT(WdfDeviceInitSetRequestAttributes),
6107         VFWDFEXPORT(WdfDeviceInitAssignWdmIrpPreprocessCallback),
6108         VFWDFEXPORT(WdfDeviceInitSetIoInCallerContextCallback),
6109         VFWDFEXPORT(WdfDeviceCreate),
6110         VFWDFEXPORT(WdfDeviceSetStaticStopRemove),
6111         VFWDFEXPORT(WdfDeviceCreateDeviceInterface),
6112         VFWDFEXPORT(WdfDeviceSetDeviceInterfaceState),
6113         VFWDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString),
6114         VFWDFEXPORT(WdfDeviceCreateSymbolicLink),
6115         VFWDFEXPORT(WdfDeviceQueryProperty),
6116         VFWDFEXPORT(WdfDeviceAllocAndQueryProperty),
6117         VFWDFEXPORT(WdfDeviceSetPnpCapabilities),
6118         VFWDFEXPORT(WdfDeviceSetPowerCapabilities),
6119         VFWDFEXPORT(WdfDeviceSetBusInformationForChildren),
6120         VFWDFEXPORT(WdfDeviceIndicateWakeStatus),
6121         VFWDFEXPORT(WdfDeviceSetFailed),
6122         VFWDFEXPORT(WdfDeviceStopIdleNoTrack),
6123         VFWDFEXPORT(WdfDeviceResumeIdleNoTrack),
6124         VFWDFEXPORT(WdfDeviceGetFileObject),
6125         VFWDFEXPORT(WdfDeviceEnqueueRequest),
6126         VFWDFEXPORT(WdfDeviceGetDefaultQueue),
6127         VFWDFEXPORT(WdfDeviceConfigureRequestDispatching),
6128         VFWDFEXPORT(WdfDmaEnablerCreate),
6129         VFWDFEXPORT(WdfDmaEnablerGetMaximumLength),
6130         VFWDFEXPORT(WdfDmaEnablerGetMaximumScatterGatherElements),
6131         VFWDFEXPORT(WdfDmaEnablerSetMaximumScatterGatherElements),
6132         VFWDFEXPORT(WdfDmaTransactionCreate),
6133         VFWDFEXPORT(WdfDmaTransactionInitialize),
6134         VFWDFEXPORT(WdfDmaTransactionInitializeUsingRequest),
6135         VFWDFEXPORT(WdfDmaTransactionExecute),
6136         VFWDFEXPORT(WdfDmaTransactionRelease),
6137         VFWDFEXPORT(WdfDmaTransactionDmaCompleted),
6138         VFWDFEXPORT(WdfDmaTransactionDmaCompletedWithLength),
6139         VFWDFEXPORT(WdfDmaTransactionDmaCompletedFinal),
6140         VFWDFEXPORT(WdfDmaTransactionGetBytesTransferred),
6141         VFWDFEXPORT(WdfDmaTransactionSetMaximumLength),
6142         VFWDFEXPORT(WdfDmaTransactionGetRequest),
6143         VFWDFEXPORT(WdfDmaTransactionGetCurrentDmaTransferLength),
6144         VFWDFEXPORT(WdfDmaTransactionGetDevice),
6145         VFWDFEXPORT(WdfDpcCreate),
6146         VFWDFEXPORT(WdfDpcEnqueue),
6147         VFWDFEXPORT(WdfDpcCancel),
6148         VFWDFEXPORT(WdfDpcGetParentObject),
6149         VFWDFEXPORT(WdfDpcWdmGetDpc),
6150         VFWDFEXPORT(WdfDriverCreate),
6151         VFWDFEXPORT(WdfDriverGetRegistryPath),
6152         VFWDFEXPORT(WdfDriverWdmGetDriverObject),
6153         VFWDFEXPORT(WdfDriverOpenParametersRegistryKey),
6154         VFWDFEXPORT(WdfWdmDriverGetWdfDriverHandle),
6155         VFWDFEXPORT(WdfDriverRegisterTraceInfo),
6156         VFWDFEXPORT(WdfDriverRetrieveVersionString),
6157         VFWDFEXPORT(WdfDriverIsVersionAvailable),
6158         VFWDFEXPORT(WdfFdoInitWdmGetPhysicalDevice),
6159         VFWDFEXPORT(WdfFdoInitOpenRegistryKey),
6160         VFWDFEXPORT(WdfFdoInitQueryProperty),
6161         VFWDFEXPORT(WdfFdoInitAllocAndQueryProperty),
6162         VFWDFEXPORT(WdfFdoInitSetEventCallbacks),
6163         VFWDFEXPORT(WdfFdoInitSetFilter),
6164         VFWDFEXPORT(WdfFdoInitSetDefaultChildListConfig),
6165         VFWDFEXPORT(WdfFdoQueryForInterface),
6166         VFWDFEXPORT(WdfFdoGetDefaultChildList),
6167         VFWDFEXPORT(WdfFdoAddStaticChild),
6168         VFWDFEXPORT(WdfFdoLockStaticChildListForIteration),
6169         VFWDFEXPORT(WdfFdoRetrieveNextStaticChild),
6170         VFWDFEXPORT(WdfFdoUnlockStaticChildListFromIteration),
6171         VFWDFEXPORT(WdfFileObjectGetFileName),
6172         VFWDFEXPORT(WdfFileObjectGetFlags),
6173         VFWDFEXPORT(WdfFileObjectGetDevice),
6174         VFWDFEXPORT(WdfFileObjectWdmGetFileObject),
6175         VFWDFEXPORT(WdfInterruptCreate),
6176         VFWDFEXPORT(WdfInterruptQueueDpcForIsr),
6177         VFWDFEXPORT(WdfInterruptSynchronize),
6178         VFWDFEXPORT(WdfInterruptAcquireLock),
6179         VFWDFEXPORT(WdfInterruptReleaseLock),
6180         VFWDFEXPORT(WdfInterruptEnable),
6181         VFWDFEXPORT(WdfInterruptDisable),
6182         VFWDFEXPORT(WdfInterruptWdmGetInterrupt),
6183         VFWDFEXPORT(WdfInterruptGetInfo),
6184         VFWDFEXPORT(WdfInterruptSetPolicy),
6185         VFWDFEXPORT(WdfInterruptGetDevice),
6186         VFWDFEXPORT(WdfIoQueueCreate),
6187         VFWDFEXPORT(WdfIoQueueGetState),
6188         VFWDFEXPORT(WdfIoQueueStart),
6189         VFWDFEXPORT(WdfIoQueueStop),
6190         VFWDFEXPORT(WdfIoQueueStopSynchronously),
6191         VFWDFEXPORT(WdfIoQueueGetDevice),
6192         VFWDFEXPORT(WdfIoQueueRetrieveNextRequest),
6193         VFWDFEXPORT(WdfIoQueueRetrieveRequestByFileObject),
6194         VFWDFEXPORT(WdfIoQueueFindRequest),
6195         VFWDFEXPORT(WdfIoQueueRetrieveFoundRequest),
6196         VFWDFEXPORT(WdfIoQueueDrainSynchronously),
6197         VFWDFEXPORT(WdfIoQueueDrain),
6198         VFWDFEXPORT(WdfIoQueuePurgeSynchronously),
6199         VFWDFEXPORT(WdfIoQueuePurge),
6200         VFWDFEXPORT(WdfIoQueueReadyNotify),
6201         VFWDFEXPORT(WdfIoTargetCreate),
6202         VFWDFEXPORT(WdfIoTargetOpen),
6203         VFWDFEXPORT(WdfIoTargetCloseForQueryRemove),
6204         VFWDFEXPORT(WdfIoTargetClose),
6205         VFWDFEXPORT(WdfIoTargetStart),
6206         VFWDFEXPORT(WdfIoTargetStop),
6207         VFWDFEXPORT(WdfIoTargetGetState),
6208         VFWDFEXPORT(WdfIoTargetGetDevice),
6209         VFWDFEXPORT(WdfIoTargetQueryTargetProperty),
6210         VFWDFEXPORT(WdfIoTargetAllocAndQueryTargetProperty),
6211         VFWDFEXPORT(WdfIoTargetQueryForInterface),
6212         VFWDFEXPORT(WdfIoTargetWdmGetTargetDeviceObject),
6213         VFWDFEXPORT(WdfIoTargetWdmGetTargetPhysicalDevice),
6214         VFWDFEXPORT(WdfIoTargetWdmGetTargetFileObject),
6215         VFWDFEXPORT(WdfIoTargetWdmGetTargetFileHandle),
6216         VFWDFEXPORT(WdfIoTargetSendReadSynchronously),
6217         VFWDFEXPORT(WdfIoTargetFormatRequestForRead),
6218         VFWDFEXPORT(WdfIoTargetSendWriteSynchronously),
6219         VFWDFEXPORT(WdfIoTargetFormatRequestForWrite),
6220         VFWDFEXPORT(WdfIoTargetSendIoctlSynchronously),
6221         VFWDFEXPORT(WdfIoTargetFormatRequestForIoctl),
6222         VFWDFEXPORT(WdfIoTargetSendInternalIoctlSynchronously),
6223         VFWDFEXPORT(WdfIoTargetFormatRequestForInternalIoctl),
6224         VFWDFEXPORT(WdfIoTargetSendInternalIoctlOthersSynchronously),
6225         VFWDFEXPORT(WdfIoTargetFormatRequestForInternalIoctlOthers),
6226         VFWDFEXPORT(WdfMemoryCreate),
6227         VFWDFEXPORT(WdfMemoryCreatePreallocated),
6228         VFWDFEXPORT(WdfMemoryGetBuffer),
6229         VFWDFEXPORT(WdfMemoryAssignBuffer),
6230         VFWDFEXPORT(WdfMemoryCopyToBuffer),
6231         VFWDFEXPORT(WdfMemoryCopyFromBuffer),
6232         VFWDFEXPORT(WdfLookasideListCreate),
6233         VFWDFEXPORT(WdfMemoryCreateFromLookaside),
6234         VFWDFEXPORT(WdfDeviceMiniportCreate),
6235         VFWDFEXPORT(WdfDriverMiniportUnload),
6236         VFWDFEXPORT(WdfObjectGetTypedContextWorker),
6237         VFWDFEXPORT(WdfObjectAllocateContext),
6238         VFWDFEXPORT(WdfObjectContextGetObject),
6239         VFWDFEXPORT(WdfObjectReferenceActual),
6240         VFWDFEXPORT(WdfObjectDereferenceActual),
6241         VFWDFEXPORT(WdfObjectCreate),
6242         VFWDFEXPORT(WdfObjectDelete),
6243         VFWDFEXPORT(WdfObjectQuery),
6244         VFWDFEXPORT(WdfPdoInitAllocate),
6245         VFWDFEXPORT(WdfPdoInitSetEventCallbacks),
6246         VFWDFEXPORT(WdfPdoInitAssignDeviceID),
6247         VFWDFEXPORT(WdfPdoInitAssignInstanceID),
6248         VFWDFEXPORT(WdfPdoInitAddHardwareID),
6249         VFWDFEXPORT(WdfPdoInitAddCompatibleID),
6250         VFWDFEXPORT(WdfPdoInitAddDeviceText),
6251         VFWDFEXPORT(WdfPdoInitSetDefaultLocale),
6252         VFWDFEXPORT(WdfPdoInitAssignRawDevice),
6253         VFWDFEXPORT(WdfPdoMarkMissing),
6254         VFWDFEXPORT(WdfPdoRequestEject),
6255         VFWDFEXPORT(WdfPdoGetParent),
6256         VFWDFEXPORT(WdfPdoRetrieveIdentificationDescription),
6257         VFWDFEXPORT(WdfPdoRetrieveAddressDescription),
6258         VFWDFEXPORT(WdfPdoUpdateAddressDescription),
6259         VFWDFEXPORT(WdfPdoAddEjectionRelationsPhysicalDevice),
6260         VFWDFEXPORT(WdfPdoRemoveEjectionRelationsPhysicalDevice),
6261         VFWDFEXPORT(WdfPdoClearEjectionRelationsDevices),
6262         VFWDFEXPORT(WdfDeviceAddQueryInterface),
6263         VFWDFEXPORT(WdfRegistryOpenKey),
6264         VFWDFEXPORT(WdfRegistryCreateKey),
6265         VFWDFEXPORT(WdfRegistryClose),
6266         VFWDFEXPORT(WdfRegistryWdmGetHandle),
6267         VFWDFEXPORT(WdfRegistryRemoveKey),
6268         VFWDFEXPORT(WdfRegistryRemoveValue),
6269         VFWDFEXPORT(WdfRegistryQueryValue),
6270         VFWDFEXPORT(WdfRegistryQueryMemory),
6271         VFWDFEXPORT(WdfRegistryQueryMultiString),
6272         VFWDFEXPORT(WdfRegistryQueryUnicodeString),
6273         VFWDFEXPORT(WdfRegistryQueryString),
6274         VFWDFEXPORT(WdfRegistryQueryULong),
6275         VFWDFEXPORT(WdfRegistryAssignValue),
6276         VFWDFEXPORT(WdfRegistryAssignMemory),
6277         VFWDFEXPORT(WdfRegistryAssignMultiString),
6278         VFWDFEXPORT(WdfRegistryAssignUnicodeString),
6279         VFWDFEXPORT(WdfRegistryAssignString),
6280         VFWDFEXPORT(WdfRegistryAssignULong),
6281         VFWDFEXPORT(WdfRequestCreate),
6282         VFWDFEXPORT(WdfRequestCreateFromIrp),
6283         VFWDFEXPORT(WdfRequestReuse),
6284         VFWDFEXPORT(WdfRequestChangeTarget),
6285         VFWDFEXPORT(WdfRequestFormatRequestUsingCurrentType),
6286         VFWDFEXPORT(WdfRequestWdmFormatUsingStackLocation),
6287         VFWDFEXPORT(WdfRequestSend),
6288         VFWDFEXPORT(WdfRequestGetStatus),
6289         VFWDFEXPORT(WdfRequestMarkCancelable),
6290         VFWDFEXPORT(WdfRequestUnmarkCancelable),
6291         VFWDFEXPORT(WdfRequestIsCanceled),
6292         VFWDFEXPORT(WdfRequestCancelSentRequest),
6293         VFWDFEXPORT(WdfRequestIsFrom32BitProcess),
6294         VFWDFEXPORT(WdfRequestSetCompletionRoutine),
6295         VFWDFEXPORT(WdfRequestGetCompletionParams),
6296         VFWDFEXPORT(WdfRequestAllocateTimer),
6297         VFWDFEXPORT(WdfRequestComplete),
6298         VFWDFEXPORT(WdfRequestCompleteWithPriorityBoost),
6299         VFWDFEXPORT(WdfRequestCompleteWithInformation),
6300         VFWDFEXPORT(WdfRequestGetParameters),
6301         VFWDFEXPORT(WdfRequestRetrieveInputMemory),
6302         VFWDFEXPORT(WdfRequestRetrieveOutputMemory),
6303         VFWDFEXPORT(WdfRequestRetrieveInputBuffer),
6304         VFWDFEXPORT(WdfRequestRetrieveOutputBuffer),
6305         VFWDFEXPORT(WdfRequestRetrieveInputWdmMdl),
6306         VFWDFEXPORT(WdfRequestRetrieveOutputWdmMdl),
6307         VFWDFEXPORT(WdfRequestRetrieveUnsafeUserInputBuffer),
6308         VFWDFEXPORT(WdfRequestRetrieveUnsafeUserOutputBuffer),
6309         VFWDFEXPORT(WdfRequestSetInformation),
6310         VFWDFEXPORT(WdfRequestGetInformation),
6311         VFWDFEXPORT(WdfRequestGetFileObject),
6312         VFWDFEXPORT(WdfRequestProbeAndLockUserBufferForRead),
6313         VFWDFEXPORT(WdfRequestProbeAndLockUserBufferForWrite),
6314         VFWDFEXPORT(WdfRequestGetRequestorMode),
6315         VFWDFEXPORT(WdfRequestForwardToIoQueue),
6316         VFWDFEXPORT(WdfRequestGetIoQueue),
6317         VFWDFEXPORT(WdfRequestRequeue),
6318         VFWDFEXPORT(WdfRequestStopAcknowledge),
6319         VFWDFEXPORT(WdfRequestWdmGetIrp),
6320         VFWDFEXPORT(WdfIoResourceRequirementsListSetSlotNumber),
6321         VFWDFEXPORT(WdfIoResourceRequirementsListSetInterfaceType),
6322         VFWDFEXPORT(WdfIoResourceRequirementsListAppendIoResList),
6323         VFWDFEXPORT(WdfIoResourceRequirementsListInsertIoResList),
6324         VFWDFEXPORT(WdfIoResourceRequirementsListGetCount),
6325         VFWDFEXPORT(WdfIoResourceRequirementsListGetIoResList),
6326         VFWDFEXPORT(WdfIoResourceRequirementsListRemove),
6327         VFWDFEXPORT(WdfIoResourceRequirementsListRemoveByIoResList),
6328         VFWDFEXPORT(WdfIoResourceListCreate),
6329         VFWDFEXPORT(WdfIoResourceListAppendDescriptor),
6330         VFWDFEXPORT(WdfIoResourceListInsertDescriptor),
6331         VFWDFEXPORT(WdfIoResourceListUpdateDescriptor),
6332         VFWDFEXPORT(WdfIoResourceListGetCount),
6333         VFWDFEXPORT(WdfIoResourceListGetDescriptor),
6334         VFWDFEXPORT(WdfIoResourceListRemove),
6335         VFWDFEXPORT(WdfIoResourceListRemoveByDescriptor),
6336         VFWDFEXPORT(WdfCmResourceListAppendDescriptor),
6337         VFWDFEXPORT(WdfCmResourceListInsertDescriptor),
6338         VFWDFEXPORT(WdfCmResourceListGetCount),
6339         VFWDFEXPORT(WdfCmResourceListGetDescriptor),
6340         VFWDFEXPORT(WdfCmResourceListRemove),
6341         VFWDFEXPORT(WdfCmResourceListRemoveByDescriptor),
6342         VFWDFEXPORT(WdfStringCreate),
6343         VFWDFEXPORT(WdfStringGetUnicodeString),
6344         VFWDFEXPORT(WdfObjectAcquireLock),
6345         VFWDFEXPORT(WdfObjectReleaseLock),
6346         VFWDFEXPORT(WdfWaitLockCreate),
6347         VFWDFEXPORT(WdfWaitLockAcquire),
6348         VFWDFEXPORT(WdfWaitLockRelease),
6349         VFWDFEXPORT(WdfSpinLockCreate),
6350         VFWDFEXPORT(WdfSpinLockAcquire),
6351         VFWDFEXPORT(WdfSpinLockRelease),
6352         VFWDFEXPORT(WdfTimerCreate),
6353         VFWDFEXPORT(WdfTimerStart),
6354         VFWDFEXPORT(WdfTimerStop),
6355         VFWDFEXPORT(WdfTimerGetParentObject),
6356         VFWDFEXPORT(WdfUsbTargetDeviceCreate),
6357         VFWDFEXPORT(WdfUsbTargetDeviceRetrieveInformation),
6358         VFWDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor),
6359         VFWDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor),
6360         VFWDFEXPORT(WdfUsbTargetDeviceQueryString),
6361         VFWDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString),
6362         VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForString),
6363         VFWDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces),
6364         VFWDFEXPORT(WdfUsbTargetDeviceSelectConfig),
6365         VFWDFEXPORT(WdfUsbTargetDeviceWdmGetConfigurationHandle),
6366         VFWDFEXPORT(WdfUsbTargetDeviceRetrieveCurrentFrameNumber),
6367         VFWDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously),
6368         VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer),
6369         VFWDFEXPORT(WdfUsbTargetDeviceIsConnectedSynchronous),
6370         VFWDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously),
6371         VFWDFEXPORT(WdfUsbTargetDeviceCyclePortSynchronously),
6372         VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForCyclePort),
6373         VFWDFEXPORT(WdfUsbTargetDeviceSendUrbSynchronously),
6374         VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForUrb),
6375         VFWDFEXPORT(WdfUsbTargetPipeGetInformation),
6376         VFWDFEXPORT(WdfUsbTargetPipeIsInEndpoint),
6377         VFWDFEXPORT(WdfUsbTargetPipeIsOutEndpoint),
6378         VFWDFEXPORT(WdfUsbTargetPipeGetType),
6379         VFWDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck),
6380         VFWDFEXPORT(WdfUsbTargetPipeWriteSynchronously),
6381         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite),
6382         VFWDFEXPORT(WdfUsbTargetPipeReadSynchronously),
6383         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForRead),
6384         VFWDFEXPORT(WdfUsbTargetPipeConfigContinuousReader),
6385         VFWDFEXPORT(WdfUsbTargetPipeAbortSynchronously),
6386         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort),
6387         VFWDFEXPORT(WdfUsbTargetPipeResetSynchronously),
6388         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForReset),
6389         VFWDFEXPORT(WdfUsbTargetPipeSendUrbSynchronously),
6390         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForUrb),
6391         VFWDFEXPORT(WdfUsbInterfaceGetInterfaceNumber),
6392         VFWDFEXPORT(WdfUsbInterfaceGetNumEndpoints),
6393         VFWDFEXPORT(WdfUsbInterfaceGetDescriptor),
6394         VFWDFEXPORT(WdfUsbInterfaceSelectSetting),
6395         VFWDFEXPORT(WdfUsbInterfaceGetEndpointInformation),
6396         VFWDFEXPORT(WdfUsbTargetDeviceGetInterface),
6397         VFWDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex),
6398         VFWDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes),
6399         VFWDFEXPORT(WdfUsbInterfaceGetConfiguredPipe),
6400         VFWDFEXPORT(WdfUsbTargetPipeWdmGetPipeHandle),
6401         VFWDFEXPORT(WdfVerifierDbgBreakPoint),
6402         VFWDFEXPORT(WdfVerifierKeBugCheck),
6403         VFWDFEXPORT(WdfWmiProviderCreate),
6404         VFWDFEXPORT(WdfWmiProviderGetDevice),
6405         VFWDFEXPORT(WdfWmiProviderIsEnabled),
6406         VFWDFEXPORT(WdfWmiProviderGetTracingHandle),
6407         VFWDFEXPORT(WdfWmiInstanceCreate),
6408         VFWDFEXPORT(WdfWmiInstanceRegister),
6409         VFWDFEXPORT(WdfWmiInstanceDeregister),
6410         VFWDFEXPORT(WdfWmiInstanceGetDevice),
6411         VFWDFEXPORT(WdfWmiInstanceGetProvider),
6412         VFWDFEXPORT(WdfWmiInstanceFireEvent),
6413         VFWDFEXPORT(WdfWorkItemCreate),
6414         VFWDFEXPORT(WdfWorkItemEnqueue),
6415         VFWDFEXPORT(WdfWorkItemGetParentObject),
6416         VFWDFEXPORT(WdfWorkItemFlush),
6417         VFWDFEXPORT(WdfCommonBufferCreateWithConfig),
6418         VFWDFEXPORT(WdfDmaEnablerGetFragmentLength),
6419         VFWDFEXPORT(WdfDmaEnablerWdmGetDmaAdapter),
6420         VFWDFEXPORT(WdfUsbInterfaceGetNumSettings),
6421         VFWDFEXPORT(WdfDeviceRemoveDependentUsageDeviceObject),
6422         VFWDFEXPORT(WdfDeviceGetSystemPowerAction),
6423         VFWDFEXPORT(WdfInterruptSetExtendedPolicy),
6424         VFWDFEXPORT(WdfIoQueueAssignForwardProgressPolicy),
6425         VFWDFEXPORT(WdfPdoInitAssignContainerID),
6426         VFWDFEXPORT(WdfPdoInitAllowForwardingRequestToParent),
6427         VFWDFEXPORT(WdfRequestMarkCancelableEx),
6428         VFWDFEXPORT(WdfRequestIsReserved),
6429         VFWDFEXPORT(WdfRequestForwardToParentDeviceIoQueue),
6430         VFWDFEXPORT(WdfCxDeviceInitAllocate),
6431         VFWDFEXPORT(WdfCxDeviceInitAssignWdmIrpPreprocessCallback),
6432         VFWDFEXPORT(WdfCxDeviceInitSetIoInCallerContextCallback),
6433         VFWDFEXPORT(WdfCxDeviceInitSetRequestAttributes),
6434         VFWDFEXPORT(WdfCxDeviceInitSetFileObjectConfig),
6435         VFWDFEXPORT(WdfDeviceWdmDispatchIrp),
6436         VFWDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue),
6437         VFWDFEXPORT(WdfDeviceInitSetRemoveLockOptions),
6438         VFWDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback),
6439         VFWDFEXPORT(WdfDmaEnablerConfigureSystemProfile),
6440         VFWDFEXPORT(WdfDmaTransactionInitializeUsingOffset),
6441         VFWDFEXPORT(WdfDmaTransactionGetTransferInfo),
6442         VFWDFEXPORT(WdfDmaTransactionSetChannelConfigurationCallback),
6443         VFWDFEXPORT(WdfDmaTransactionSetTransferCompleteCallback),
6444         VFWDFEXPORT(WdfDmaTransactionSetImmediateExecution),
6445         VFWDFEXPORT(WdfDmaTransactionAllocateResources),
6446         VFWDFEXPORT(WdfDmaTransactionSetDeviceAddressOffset),
6447         VFWDFEXPORT(WdfDmaTransactionFreeResources),
6448         VFWDFEXPORT(WdfDmaTransactionCancel),
6449         VFWDFEXPORT(WdfDmaTransactionWdmGetTransferContext),
6450         VFWDFEXPORT(WdfInterruptQueueWorkItemForIsr),
6451         VFWDFEXPORT(WdfInterruptTryToAcquireLock),
6452         VFWDFEXPORT(WdfIoQueueStopAndPurge),
6453         VFWDFEXPORT(WdfIoQueueStopAndPurgeSynchronously),
6454         VFWDFEXPORT(WdfIoTargetPurge),
6455         VFWDFEXPORT(WdfUsbTargetDeviceCreateWithParameters),
6456         VFWDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability),
6457         VFWDFEXPORT(WdfUsbTargetDeviceCreateUrb),
6458         VFWDFEXPORT(WdfUsbTargetDeviceCreateIsochUrb),
6459         VFWDFEXPORT(WdfDeviceWdmAssignPowerFrameworkSettings),
6460         VFWDFEXPORT(WdfDmaTransactionStopSystemTransfer),
6461         VFWDFEXPORT(WdfCxVerifierKeBugCheck),
6462         VFWDFEXPORT(WdfInterruptReportActive),
6463         VFWDFEXPORT(WdfInterruptReportInactive),
6464         VFWDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure),
6465         VFWDFEXPORT(WdfGetTriageInfo),
6466         VFWDFEXPORT(WdfDeviceInitSetIoTypeEx),
6467         VFWDFEXPORT(WdfDeviceQueryPropertyEx),
6468         VFWDFEXPORT(WdfDeviceAllocAndQueryPropertyEx),
6469         VFWDFEXPORT(WdfDeviceAssignProperty),
6470         VFWDFEXPORT(WdfFdoInitQueryPropertyEx),
6471         VFWDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx),
6472         VFWDFEXPORT(WdfDeviceStopIdleActual),
6473         VFWDFEXPORT(WdfDeviceResumeIdleActual),
6474         VFWDFEXPORT(WdfDeviceGetSelfIoTarget),
6475         VFWDFEXPORT(WdfDeviceInitAllowSelfIoTarget),
6476         VFWDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue),
6477         VFWDFEXPORT(WdfDeviceOpenDevicemapKey),
6478     }
6479 };
6480 
6481 #endif // VF_FX_DYNAMICS_GENERATE_TABLE
6482 
6483 #endif // _VFFXDYNAMICS_H_
6484 
6485