1 /*++
2 
3 Module Name: VfFxDynamics.h
4 
5 Abstract:
6     Generated header for WDF API Verifier hooks
7 
8 Environment:
9     user 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_(DISPATCH_LEVEL)
20 WDFAPI
21 NTSTATUS
22 VFWDFEXPORT(WdfCollectionCreate)(
23     _In_
24     PWDF_DRIVER_GLOBALS DriverGlobals,
25     _In_opt_
26     PWDF_OBJECT_ATTRIBUTES CollectionAttributes,
27     _Out_
28     WDFCOLLECTION* Collection
29     );
30 
31 _IRQL_requires_max_(DISPATCH_LEVEL)
32 WDFAPI
33 ULONG
34 VFWDFEXPORT(WdfCollectionGetCount)(
35     _In_
36     PWDF_DRIVER_GLOBALS DriverGlobals,
37     _In_
38     WDFCOLLECTION Collection
39     );
40 
41 _Must_inspect_result_
42 _IRQL_requires_max_(DISPATCH_LEVEL)
43 WDFAPI
44 NTSTATUS
45 VFWDFEXPORT(WdfCollectionAdd)(
46     _In_
47     PWDF_DRIVER_GLOBALS DriverGlobals,
48     _In_
49     WDFCOLLECTION Collection,
50     _In_
51     WDFOBJECT Object
52     );
53 
54 _IRQL_requires_max_(DISPATCH_LEVEL)
55 WDFAPI
56 VOID
57 VFWDFEXPORT(WdfCollectionRemove)(
58     _In_
59     PWDF_DRIVER_GLOBALS DriverGlobals,
60     _In_
61     WDFCOLLECTION Collection,
62     _In_
63     WDFOBJECT Item
64     );
65 
66 _IRQL_requires_max_(DISPATCH_LEVEL)
67 WDFAPI
68 VOID
69 VFWDFEXPORT(WdfCollectionRemoveItem)(
70     _In_
71     PWDF_DRIVER_GLOBALS DriverGlobals,
72     _In_
73     WDFCOLLECTION Collection,
74     _In_
75     ULONG Index
76     );
77 
78 _IRQL_requires_max_(DISPATCH_LEVEL)
79 WDFAPI
80 WDFOBJECT
81 VFWDFEXPORT(WdfCollectionGetItem)(
82     _In_
83     PWDF_DRIVER_GLOBALS DriverGlobals,
84     _In_
85     WDFCOLLECTION Collection,
86     _In_
87     ULONG Index
88     );
89 
90 _IRQL_requires_max_(DISPATCH_LEVEL)
91 WDFAPI
92 WDFOBJECT
93 VFWDFEXPORT(WdfCollectionGetFirstItem)(
94     _In_
95     PWDF_DRIVER_GLOBALS DriverGlobals,
96     _In_
97     WDFCOLLECTION Collection
98     );
99 
100 _IRQL_requires_max_(DISPATCH_LEVEL)
101 WDFAPI
102 WDFOBJECT
103 VFWDFEXPORT(WdfCollectionGetLastItem)(
104     _In_
105     PWDF_DRIVER_GLOBALS DriverGlobals,
106     _In_
107     WDFCOLLECTION Collection
108     );
109 
110 _Must_inspect_result_
111 _IRQL_requires_max_(PASSIVE_LEVEL)
112 WDFAPI
113 PWDFCXDEVICE_INIT
114 VFWDFEXPORT(WdfCxDeviceInitAllocate)(
115     _In_
116     PWDF_DRIVER_GLOBALS DriverGlobals,
117     _In_
118     PWDFDEVICE_INIT DeviceInit
119     );
120 
121 _IRQL_requires_max_(DISPATCH_LEVEL)
122 WDFAPI
123 VOID
124 VFWDFEXPORT(WdfCxDeviceInitSetRequestAttributes)(
125     _In_
126     PWDF_DRIVER_GLOBALS DriverGlobals,
127     _In_
128     PWDFCXDEVICE_INIT CxDeviceInit,
129     _In_
130     PWDF_OBJECT_ATTRIBUTES RequestAttributes
131     );
132 
133 _IRQL_requires_max_(DISPATCH_LEVEL)
134 WDFAPI
135 VOID
136 VFWDFEXPORT(WdfCxDeviceInitSetFileObjectConfig)(
137     _In_
138     PWDF_DRIVER_GLOBALS DriverGlobals,
139     _In_
140     PWDFCXDEVICE_INIT CxDeviceInit,
141     _In_
142     PWDFCX_FILEOBJECT_CONFIG CxFileObjectConfig,
143     _In_opt_
144     PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
145     );
146 
147 WDFAPI
148 VOID
149 VFWDFEXPORT(WdfCxVerifierKeBugCheck)(
150     _In_
151     PWDF_DRIVER_GLOBALS DriverGlobals,
152     _In_opt_
153     WDFOBJECT Object,
154     _In_
155     ULONG BugCheckCode,
156     _In_
157     ULONG_PTR BugCheckParameter1,
158     _In_
159     ULONG_PTR BugCheckParameter2,
160     _In_
161     ULONG_PTR BugCheckParameter3,
162     _In_
163     ULONG_PTR BugCheckParameter4
164     );
165 
166 _IRQL_requires_max_(DISPATCH_LEVEL)
167 WDFAPI
168 VOID
169 VFWDFEXPORT(WdfDeviceGetDeviceState)(
170     _In_
171     PWDF_DRIVER_GLOBALS DriverGlobals,
172     _In_
173     WDFDEVICE Device,
174     _Out_
175     PWDF_DEVICE_STATE DeviceState
176     );
177 
178 _IRQL_requires_max_(DISPATCH_LEVEL)
179 WDFAPI
180 VOID
181 VFWDFEXPORT(WdfDeviceSetDeviceState)(
182     _In_
183     PWDF_DRIVER_GLOBALS DriverGlobals,
184     _In_
185     WDFDEVICE Device,
186     _In_
187     PWDF_DEVICE_STATE DeviceState
188     );
189 
190 _Must_inspect_result_
191 _IRQL_requires_max_(DISPATCH_LEVEL)
192 WDFAPI
193 NTSTATUS
194 VFWDFEXPORT(WdfDeviceWdmDispatchIrp)(
195     _In_
196     PWDF_DRIVER_GLOBALS DriverGlobals,
197     _In_
198     WDFDEVICE Device,
199     _In_
200     PIRP Irp,
201     _In_
202     WDFCONTEXT DispatchContext
203     );
204 
205 _Must_inspect_result_
206 _IRQL_requires_max_(DISPATCH_LEVEL)
207 WDFAPI
208 NTSTATUS
209 VFWDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue)(
210     _In_
211     PWDF_DRIVER_GLOBALS DriverGlobals,
212     _In_
213     WDFDEVICE Device,
214     _In_
215     PIRP Irp,
216     _In_
217     WDFQUEUE Queue,
218     _In_
219     ULONG Flags
220     );
221 
222 _IRQL_requires_max_(DISPATCH_LEVEL)
223 WDFAPI
224 WDFDRIVER
225 VFWDFEXPORT(WdfDeviceGetDriver)(
226     _In_
227     PWDF_DRIVER_GLOBALS DriverGlobals,
228     _In_
229     WDFDEVICE Device
230     );
231 
232 _IRQL_requires_max_(DISPATCH_LEVEL)
233 WDFAPI
234 WDFIOTARGET
235 VFWDFEXPORT(WdfDeviceGetIoTarget)(
236     _In_
237     PWDF_DRIVER_GLOBALS DriverGlobals,
238     _In_
239     WDFDEVICE Device
240     );
241 
242 _Must_inspect_result_
243 _IRQL_requires_max_(DISPATCH_LEVEL)
244 WDFAPI
245 NTSTATUS
246 VFWDFEXPORT(WdfDeviceAssignS0IdleSettings)(
247     _In_
248     PWDF_DRIVER_GLOBALS DriverGlobals,
249     _In_
250     WDFDEVICE Device,
251     _In_
252     PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
253     );
254 
255 _Must_inspect_result_
256 _IRQL_requires_max_(DISPATCH_LEVEL)
257 WDFAPI
258 NTSTATUS
259 VFWDFEXPORT(WdfDeviceAssignSxWakeSettings)(
260     _In_
261     PWDF_DRIVER_GLOBALS DriverGlobals,
262     _In_
263     WDFDEVICE Device,
264     _In_
265     PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS Settings
266     );
267 
268 _Must_inspect_result_
269 _IRQL_requires_max_(PASSIVE_LEVEL)
270 WDFAPI
271 NTSTATUS
272 VFWDFEXPORT(WdfDeviceOpenRegistryKey)(
273     _In_
274     PWDF_DRIVER_GLOBALS DriverGlobals,
275     _In_
276     WDFDEVICE Device,
277     _In_
278     ULONG DeviceInstanceKeyType,
279     _In_
280     ACCESS_MASK DesiredAccess,
281     _In_opt_
282     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
283     _Out_
284     WDFKEY* Key
285     );
286 
287 _Must_inspect_result_
288 _IRQL_requires_max_(PASSIVE_LEVEL)
289 WDFAPI
290 NTSTATUS
291 VFWDFEXPORT(WdfDeviceOpenDevicemapKey)(
292     _In_
293     PWDF_DRIVER_GLOBALS DriverGlobals,
294     _In_
295     WDFDEVICE Device,
296     _In_
297     PCUNICODE_STRING KeyName,
298     _In_
299     ACCESS_MASK DesiredAccess,
300     _In_opt_
301     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
302     _Out_
303     WDFKEY* Key
304     );
305 
306 _IRQL_requires_max_(DISPATCH_LEVEL)
307 WDFAPI
308 VOID
309 VFWDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks)(
310     _In_
311     PWDF_DRIVER_GLOBALS DriverGlobals,
312     _In_
313     PWDFDEVICE_INIT DeviceInit,
314     _In_
315     PWDF_PNPPOWER_EVENT_CALLBACKS PnpPowerEventCallbacks
316     );
317 
318 _IRQL_requires_max_(DISPATCH_LEVEL)
319 WDFAPI
320 VOID
321 VFWDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks)(
322     _In_
323     PWDF_DRIVER_GLOBALS DriverGlobals,
324     _In_
325     PWDFDEVICE_INIT DeviceInit,
326     _In_
327     PWDF_POWER_POLICY_EVENT_CALLBACKS PowerPolicyEventCallbacks
328     );
329 
330 _IRQL_requires_max_(DISPATCH_LEVEL)
331 WDFAPI
332 VOID
333 VFWDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership)(
334     _In_
335     PWDF_DRIVER_GLOBALS DriverGlobals,
336     _In_
337     PWDFDEVICE_INIT DeviceInit,
338     _In_
339     BOOLEAN IsPowerPolicyOwner
340     );
341 
342 _IRQL_requires_max_(DISPATCH_LEVEL)
343 WDFAPI
344 VOID
345 VFWDFEXPORT(WdfDeviceInitSetIoType)(
346     _In_
347     PWDF_DRIVER_GLOBALS DriverGlobals,
348     _In_
349     PWDFDEVICE_INIT DeviceInit,
350     _In_
351     WDF_DEVICE_IO_TYPE IoType
352     );
353 
354 _IRQL_requires_max_(DISPATCH_LEVEL)
355 WDFAPI
356 VOID
357 VFWDFEXPORT(WdfDeviceInitSetFileObjectConfig)(
358     _In_
359     PWDF_DRIVER_GLOBALS DriverGlobals,
360     _In_
361     PWDFDEVICE_INIT DeviceInit,
362     _In_
363     PWDF_FILEOBJECT_CONFIG FileObjectConfig,
364     _In_opt_
365     PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
366     );
367 
368 _IRQL_requires_max_(DISPATCH_LEVEL)
369 WDFAPI
370 VOID
371 VFWDFEXPORT(WdfDeviceInitSetRequestAttributes)(
372     _In_
373     PWDF_DRIVER_GLOBALS DriverGlobals,
374     _In_
375     PWDFDEVICE_INIT DeviceInit,
376     _In_
377     PWDF_OBJECT_ATTRIBUTES RequestAttributes
378     );
379 
380 _Must_inspect_result_
381 _IRQL_requires_max_(PASSIVE_LEVEL)
382 WDFAPI
383 NTSTATUS
384 VFWDFEXPORT(WdfDeviceCreate)(
385     _In_
386     PWDF_DRIVER_GLOBALS DriverGlobals,
387     _Inout_
388     PWDFDEVICE_INIT* DeviceInit,
389     _In_opt_
390     PWDF_OBJECT_ATTRIBUTES DeviceAttributes,
391     _Out_
392     WDFDEVICE* Device
393     );
394 
395 _IRQL_requires_max_(DISPATCH_LEVEL)
396 WDFAPI
397 VOID
398 VFWDFEXPORT(WdfDeviceSetStaticStopRemove)(
399     _In_
400     PWDF_DRIVER_GLOBALS DriverGlobals,
401     _In_
402     WDFDEVICE Device,
403     _In_
404     BOOLEAN Stoppable
405     );
406 
407 _Must_inspect_result_
408 _IRQL_requires_max_(PASSIVE_LEVEL)
409 WDFAPI
410 NTSTATUS
411 VFWDFEXPORT(WdfDeviceCreateDeviceInterface)(
412     _In_
413     PWDF_DRIVER_GLOBALS DriverGlobals,
414     _In_
415     WDFDEVICE Device,
416     _In_
417     CONST GUID* InterfaceClassGUID,
418     _In_opt_
419     PCUNICODE_STRING ReferenceString
420     );
421 
422 _IRQL_requires_max_(PASSIVE_LEVEL)
423 WDFAPI
424 VOID
425 VFWDFEXPORT(WdfDeviceSetDeviceInterfaceState)(
426     _In_
427     PWDF_DRIVER_GLOBALS DriverGlobals,
428     _In_
429     WDFDEVICE Device,
430     _In_
431     CONST GUID* InterfaceClassGUID,
432     _In_opt_
433     PCUNICODE_STRING ReferenceString,
434     _In_
435     BOOLEAN IsInterfaceEnabled
436     );
437 
438 _Must_inspect_result_
439 _IRQL_requires_max_(PASSIVE_LEVEL)
440 WDFAPI
441 NTSTATUS
442 VFWDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString)(
443     _In_
444     PWDF_DRIVER_GLOBALS DriverGlobals,
445     _In_
446     WDFDEVICE Device,
447     _In_
448     CONST GUID* InterfaceClassGUID,
449     _In_opt_
450     PCUNICODE_STRING ReferenceString,
451     _In_
452     WDFSTRING String
453     );
454 
455 _Must_inspect_result_
456 _IRQL_requires_max_(PASSIVE_LEVEL)
457 WDFAPI
458 NTSTATUS
459 VFWDFEXPORT(WdfDeviceCreateSymbolicLink)(
460     _In_
461     PWDF_DRIVER_GLOBALS DriverGlobals,
462     _In_
463     WDFDEVICE Device,
464     _In_
465     PCUNICODE_STRING SymbolicLinkName
466     );
467 
468 _Must_inspect_result_
469 _IRQL_requires_max_(PASSIVE_LEVEL)
470 WDFAPI
471 NTSTATUS
472 VFWDFEXPORT(WdfDeviceQueryProperty)(
473     _In_
474     PWDF_DRIVER_GLOBALS DriverGlobals,
475     _In_
476     WDFDEVICE Device,
477     _In_
478     DEVICE_REGISTRY_PROPERTY DeviceProperty,
479     _In_
480     ULONG BufferLength,
481     _Out_writes_bytes_all_(BufferLength)
482     PVOID PropertyBuffer,
483     _Out_
484     PULONG ResultLength
485     );
486 
487 _Must_inspect_result_
488 _IRQL_requires_max_(PASSIVE_LEVEL)
489 WDFAPI
490 NTSTATUS
491 VFWDFEXPORT(WdfDeviceAllocAndQueryProperty)(
492     _In_
493     PWDF_DRIVER_GLOBALS DriverGlobals,
494     _In_
495     WDFDEVICE Device,
496     _In_
497     DEVICE_REGISTRY_PROPERTY DeviceProperty,
498     _In_
499     _Strict_type_match_
500     POOL_TYPE PoolType,
501     _In_opt_
502     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
503     _Out_
504     WDFMEMORY* PropertyMemory
505     );
506 
507 _IRQL_requires_max_(DISPATCH_LEVEL)
508 WDFAPI
509 VOID
510 VFWDFEXPORT(WdfDeviceSetPnpCapabilities)(
511     _In_
512     PWDF_DRIVER_GLOBALS DriverGlobals,
513     _In_
514     WDFDEVICE Device,
515     _In_
516     PWDF_DEVICE_PNP_CAPABILITIES PnpCapabilities
517     );
518 
519 _IRQL_requires_max_(DISPATCH_LEVEL)
520 WDFAPI
521 VOID
522 VFWDFEXPORT(WdfDeviceSetPowerCapabilities)(
523     _In_
524     PWDF_DRIVER_GLOBALS DriverGlobals,
525     _In_
526     WDFDEVICE Device,
527     _In_
528     PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
529     );
530 
531 _IRQL_requires_max_(DISPATCH_LEVEL)
532 WDFAPI
533 VOID
534 VFWDFEXPORT(WdfDeviceSetFailed)(
535     _In_
536     PWDF_DRIVER_GLOBALS DriverGlobals,
537     _In_
538     WDFDEVICE Device,
539     _In_
540     WDF_DEVICE_FAILED_ACTION FailedAction
541     );
542 
543 _Must_inspect_result_
544 _When_(WaitForD0 == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
545 _When_(WaitForD0 != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
546 WDFAPI
547 NTSTATUS
548 VFWDFEXPORT(WdfDeviceStopIdleNoTrack)(
549     _In_
550     PWDF_DRIVER_GLOBALS DriverGlobals,
551     _In_
552     WDFDEVICE Device,
553     _In_
554     BOOLEAN WaitForD0
555     );
556 
557 _IRQL_requires_max_(DISPATCH_LEVEL)
558 WDFAPI
559 VOID
560 VFWDFEXPORT(WdfDeviceResumeIdleNoTrack)(
561     _In_
562     PWDF_DRIVER_GLOBALS DriverGlobals,
563     _In_
564     WDFDEVICE Device
565     );
566 
567 _Must_inspect_result_
568 _When_(WaitForD0 == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
569 _When_(WaitForD0 != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
570 WDFAPI
571 NTSTATUS
572 VFWDFEXPORT(WdfDeviceStopIdleActual)(
573     _In_
574     PWDF_DRIVER_GLOBALS DriverGlobals,
575     _In_
576     WDFDEVICE Device,
577     _In_
578     BOOLEAN WaitForD0,
579     _In_opt_
580     PVOID Tag,
581     _In_
582     LONG Line,
583     _In_z_
584     PCHAR File
585     );
586 
587 _IRQL_requires_max_(DISPATCH_LEVEL)
588 WDFAPI
589 VOID
590 VFWDFEXPORT(WdfDeviceResumeIdleActual)(
591     _In_
592     PWDF_DRIVER_GLOBALS DriverGlobals,
593     _In_
594     WDFDEVICE Device,
595     _In_opt_
596     PVOID Tag,
597     _In_
598     LONG Line,
599     _In_z_
600     PCHAR File
601     );
602 
603 _IRQL_requires_max_(DISPATCH_LEVEL)
604 WDFAPI
605 WDFFILEOBJECT
606 VFWDFEXPORT(WdfDeviceGetFileObject)(
607     _In_
608     PWDF_DRIVER_GLOBALS DriverGlobals,
609     _In_
610     WDFDEVICE Device,
611     _In_
612     PFILE_OBJECT FileObject
613     );
614 
615 _IRQL_requires_max_(DISPATCH_LEVEL)
616 WDFAPI
617 WDFQUEUE
618 VFWDFEXPORT(WdfDeviceGetDefaultQueue)(
619     _In_
620     PWDF_DRIVER_GLOBALS DriverGlobals,
621     _In_
622     WDFDEVICE Device
623     );
624 
625 _Must_inspect_result_
626 _IRQL_requires_max_(DISPATCH_LEVEL)
627 WDFAPI
628 NTSTATUS
629 VFWDFEXPORT(WdfDeviceConfigureRequestDispatching)(
630     _In_
631     PWDF_DRIVER_GLOBALS DriverGlobals,
632     _In_
633     WDFDEVICE Device,
634     _In_
635     WDFQUEUE Queue,
636     _In_
637     _Strict_type_match_
638     WDF_REQUEST_TYPE RequestType
639     );
640 
641 _Must_inspect_result_
642 _IRQL_requires_max_(DISPATCH_LEVEL)
643 WDFAPI
644 NTSTATUS
645 VFWDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback)(
646     _In_
647     PWDF_DRIVER_GLOBALS DriverGlobals,
648     _In_
649     WDFDEVICE Device,
650     _In_opt_
651     WDFDRIVER Driver,
652     _In_
653     UCHAR MajorFunction,
654     _In_
655     PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDisptach,
656     _In_opt_
657     WDFCONTEXT DriverContext
658     );
659 
660 _IRQL_requires_max_(DISPATCH_LEVEL)
661 WDFAPI
662 POWER_ACTION
663 VFWDFEXPORT(WdfDeviceGetSystemPowerAction)(
664     _In_
665     PWDF_DRIVER_GLOBALS DriverGlobals,
666     _In_
667     WDFDEVICE Device
668     );
669 
670 _IRQL_requires_max_(DISPATCH_LEVEL)
671 WDFAPI
672 VOID
673 VFWDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure)(
674     _In_
675     PWDF_DRIVER_GLOBALS DriverGlobals,
676     _In_
677     PWDFDEVICE_INIT DeviceInit,
678     _In_
679     WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
680     );
681 
682 _IRQL_requires_max_(PASSIVE_LEVEL)
683 WDFAPI
684 VOID
685 VFWDFEXPORT(WdfDeviceInitSetIoTypeEx)(
686     _In_
687     PWDF_DRIVER_GLOBALS DriverGlobals,
688     _In_
689     PWDFDEVICE_INIT DeviceInit,
690     _In_
691     PWDF_IO_TYPE_CONFIG IoTypeConfig
692     );
693 
694 _IRQL_requires_max_(PASSIVE_LEVEL)
695 WDFAPI
696 NTSTATUS
697 VFWDFEXPORT(WdfDevicePostEvent)(
698     _In_
699     PWDF_DRIVER_GLOBALS DriverGlobals,
700     _In_
701     WDFDEVICE Device,
702     _In_
703     REFGUID EventGuid,
704     _In_
705     WDF_EVENT_TYPE WdfEventType,
706     _In_reads_bytes_(DataSizeCb)
707     BYTE* Data,
708     _In_
709     ULONG DataSizeCb
710     );
711 
712 _Must_inspect_result_
713 _IRQL_requires_max_(PASSIVE_LEVEL)
714 WDFAPI
715 NTSTATUS
716 VFWDFEXPORT(WdfDeviceMapIoSpace)(
717     _In_
718     PWDF_DRIVER_GLOBALS DriverGlobals,
719     _In_
720     WDFDEVICE Device,
721     _In_
722     PHYSICAL_ADDRESS PhysicalAddress,
723     _In_
724     SIZE_T NumberOfBytes,
725     _In_
726     MEMORY_CACHING_TYPE CacheType,
727     _Out_
728     PVOID* PseudoBaseAddress
729     );
730 
731 _IRQL_requires_max_(PASSIVE_LEVEL)
732 WDFAPI
733 VOID
734 VFWDFEXPORT(WdfDeviceUnmapIoSpace)(
735     _In_
736     PWDF_DRIVER_GLOBALS DriverGlobals,
737     _In_
738     WDFDEVICE Device,
739     _In_
740     PVOID PseudoBaseAddress,
741     _In_
742     SIZE_T NumberOfBytes
743     );
744 
745 _IRQL_requires_max_(PASSIVE_LEVEL)
746 WDFAPI
747 PVOID
748 VFWDFEXPORT(WdfDeviceGetHardwareRegisterMappedAddress)(
749     _In_
750     PWDF_DRIVER_GLOBALS DriverGlobals,
751     _In_
752     WDFDEVICE Device,
753     _In_
754     PVOID PseudoBaseAddress
755     );
756 
757 _IRQL_requires_max_(PASSIVE_LEVEL)
758 WDFAPI
759 SIZE_T
760 VFWDFEXPORT(WdfDeviceReadFromHardware)(
761     _In_
762     PWDF_DRIVER_GLOBALS DriverGlobals,
763     _In_
764     WDFDEVICE Device,
765     _In_
766     WDF_DEVICE_HWACCESS_TARGET_TYPE Type,
767     _In_
768     WDF_DEVICE_HWACCESS_TARGET_SIZE Size,
769     _In_
770     PVOID TargetAddress,
771     _Out_writes_all_opt_(Count)
772     PVOID Buffer,
773     _In_opt_
774     ULONG Count
775     );
776 
777 _IRQL_requires_max_(PASSIVE_LEVEL)
778 WDFAPI
779 VOID
780 VFWDFEXPORT(WdfDeviceWriteToHardware)(
781     _In_
782     PWDF_DRIVER_GLOBALS DriverGlobals,
783     _In_
784     WDFDEVICE Device,
785     _In_
786     WDF_DEVICE_HWACCESS_TARGET_TYPE Type,
787     _In_
788     WDF_DEVICE_HWACCESS_TARGET_SIZE Size,
789     _In_
790     PVOID TargetAddress,
791     _In_
792     SIZE_T Value,
793     _In_reads_opt_(Count)
794     PVOID Buffer,
795     _In_opt_
796     ULONG Count
797     );
798 
799 _IRQL_requires_max_(PASSIVE_LEVEL)
800 WDFAPI
801 NTSTATUS
802 VFWDFEXPORT(WdfDeviceAssignInterfaceProperty)(
803     _In_
804     PWDF_DRIVER_GLOBALS DriverGlobals,
805     _In_
806     WDFDEVICE Device,
807     _In_
808     PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData,
809     _In_
810     DEVPROPTYPE Type,
811     _In_
812     ULONG BufferLength,
813     _In_reads_bytes_opt_(BufferLength)
814     PVOID PropertyBuffer
815     );
816 
817 _IRQL_requires_max_(PASSIVE_LEVEL)
818 WDFAPI
819 NTSTATUS
820 VFWDFEXPORT(WdfDeviceAllocAndQueryInterfaceProperty)(
821     _In_
822     PWDF_DRIVER_GLOBALS DriverGlobals,
823     _In_
824     WDFDEVICE Device,
825     _In_
826     PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData,
827     _In_
828     POOL_TYPE PoolType,
829     _In_opt_
830     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
831     _Out_
832     WDFMEMORY* PropertyMemory,
833     _Out_
834     PDEVPROPTYPE Type
835     );
836 
837 _IRQL_requires_max_(PASSIVE_LEVEL)
838 WDFAPI
839 NTSTATUS
840 VFWDFEXPORT(WdfDeviceQueryInterfaceProperty)(
841     _In_
842     PWDF_DRIVER_GLOBALS DriverGlobals,
843     _In_
844     WDFDEVICE Device,
845     _In_
846     PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData,
847     _In_
848     ULONG BufferLength,
849     _Out_writes_bytes_opt_(BufferLength)
850     PVOID PropertyBuffer,
851     _Out_
852     PULONG ResultLength,
853     _Out_
854     PDEVPROPTYPE Type
855     );
856 
857 _IRQL_requires_max_(PASSIVE_LEVEL)
858 WDFAPI
859 VOID
860 VFWDFEXPORT(WdfDeviceGetDeviceStackIoType)(
861     _In_
862     PWDF_DRIVER_GLOBALS DriverGlobals,
863     _In_
864     WDFDEVICE Device,
865     _Out_
866     WDF_DEVICE_IO_TYPE* ReadWriteIoType,
867     _Out_
868     WDF_DEVICE_IO_TYPE* IoControlIoType
869     );
870 
871 _Must_inspect_result_
872 _IRQL_requires_max_(APC_LEVEL)
873 WDFAPI
874 NTSTATUS
875 VFWDFEXPORT(WdfDeviceQueryPropertyEx)(
876     _In_
877     PWDF_DRIVER_GLOBALS DriverGlobals,
878     _In_
879     WDFDEVICE Device,
880     _In_
881     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
882     _In_
883     ULONG BufferLength,
884     _Out_
885     PVOID PropertyBuffer,
886     _Out_
887     PULONG RequiredSize,
888     _Out_
889     PDEVPROPTYPE Type
890     );
891 
892 _Must_inspect_result_
893 _IRQL_requires_max_(APC_LEVEL)
894 WDFAPI
895 NTSTATUS
896 VFWDFEXPORT(WdfDeviceAllocAndQueryPropertyEx)(
897     _In_
898     PWDF_DRIVER_GLOBALS DriverGlobals,
899     _In_
900     WDFDEVICE Device,
901     _In_
902     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
903     _In_
904     _Strict_type_match_
905     POOL_TYPE PoolType,
906     _In_opt_
907     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
908     _Out_
909     WDFMEMORY* PropertyMemory,
910     _Out_
911     PDEVPROPTYPE Type
912     );
913 
914 _Must_inspect_result_
915 _IRQL_requires_max_(APC_LEVEL)
916 WDFAPI
917 NTSTATUS
918 VFWDFEXPORT(WdfDeviceAssignProperty)(
919     _In_
920     PWDF_DRIVER_GLOBALS DriverGlobals,
921     _In_
922     WDFDEVICE Device,
923     _In_
924     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
925     _In_
926     DEVPROPTYPE Type,
927     _In_
928     ULONG Size,
929     _In_opt_
930     PVOID Data
931     );
932 
933 _IRQL_requires_max_(DISPATCH_LEVEL)
934 WDFAPI
935 WDFIOTARGET
936 VFWDFEXPORT(WdfDeviceGetSelfIoTarget)(
937     _In_
938     PWDF_DRIVER_GLOBALS DriverGlobals,
939     _In_
940     WDFDEVICE Device
941     );
942 
943 _IRQL_requires_max_(DISPATCH_LEVEL)
944 WDFAPI
945 VOID
946 VFWDFEXPORT(WdfDeviceInitAllowSelfIoTarget)(
947     _In_
948     PWDF_DRIVER_GLOBALS DriverGlobals,
949     _In_
950     PWDFDEVICE_INIT DeviceInit
951     );
952 
953 _Must_inspect_result_
954 _IRQL_requires_max_(PASSIVE_LEVEL)
955 WDFAPI
956 NTSTATUS
957 VFWDFEXPORT(WdfDriverCreate)(
958     _In_
959     PWDF_DRIVER_GLOBALS DriverGlobals,
960     _In_
961     PDRIVER_OBJECT DriverObject,
962     _In_
963     PCUNICODE_STRING RegistryPath,
964     _In_opt_
965     PWDF_OBJECT_ATTRIBUTES DriverAttributes,
966     _In_
967     PWDF_DRIVER_CONFIG DriverConfig,
968     _Out_opt_
969     WDFDRIVER* Driver
970     );
971 
972 _IRQL_requires_max_(PASSIVE_LEVEL)
973 WDFAPI
974 PWSTR
975 VFWDFEXPORT(WdfDriverGetRegistryPath)(
976     _In_
977     PWDF_DRIVER_GLOBALS DriverGlobals,
978     _In_
979     WDFDRIVER Driver
980     );
981 
982 _Must_inspect_result_
983 _IRQL_requires_max_(PASSIVE_LEVEL)
984 WDFAPI
985 NTSTATUS
986 VFWDFEXPORT(WdfDriverOpenParametersRegistryKey)(
987     _In_
988     PWDF_DRIVER_GLOBALS DriverGlobals,
989     _In_
990     WDFDRIVER Driver,
991     _In_
992     ACCESS_MASK DesiredAccess,
993     _In_opt_
994     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
995     _Out_
996     WDFKEY* Key
997     );
998 
999 _Must_inspect_result_
1000 _IRQL_requires_max_(PASSIVE_LEVEL)
1001 WDFAPI
1002 NTSTATUS
1003 VFWDFEXPORT(WdfDriverRetrieveVersionString)(
1004     _In_
1005     PWDF_DRIVER_GLOBALS DriverGlobals,
1006     _In_
1007     WDFDRIVER Driver,
1008     _In_
1009     WDFSTRING String
1010     );
1011 
1012 _Must_inspect_result_
1013 _IRQL_requires_max_(PASSIVE_LEVEL)
1014 WDFAPI
1015 BOOLEAN
1016 VFWDFEXPORT(WdfDriverIsVersionAvailable)(
1017     _In_
1018     PWDF_DRIVER_GLOBALS DriverGlobals,
1019     _In_
1020     WDFDRIVER Driver,
1021     _In_
1022     PWDF_DRIVER_VERSION_AVAILABLE_PARAMS VersionAvailableParams
1023     );
1024 
1025 _Must_inspect_result_
1026 _IRQL_requires_max_(PASSIVE_LEVEL)
1027 WDFAPI
1028 NTSTATUS
1029 VFWDFEXPORT(WdfFdoInitOpenRegistryKey)(
1030     _In_
1031     PWDF_DRIVER_GLOBALS DriverGlobals,
1032     _In_
1033     PWDFDEVICE_INIT DeviceInit,
1034     _In_
1035     ULONG DeviceInstanceKeyType,
1036     _In_
1037     ACCESS_MASK DesiredAccess,
1038     _In_opt_
1039     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
1040     _Out_
1041     WDFKEY* Key
1042     );
1043 
1044 _Must_inspect_result_
1045 _IRQL_requires_max_(PASSIVE_LEVEL)
1046 WDFAPI
1047 NTSTATUS
1048 VFWDFEXPORT(WdfFdoInitQueryProperty)(
1049     _In_
1050     PWDF_DRIVER_GLOBALS DriverGlobals,
1051     _In_
1052     PWDFDEVICE_INIT DeviceInit,
1053     _In_
1054     DEVICE_REGISTRY_PROPERTY DeviceProperty,
1055     _In_
1056     ULONG BufferLength,
1057     _Out_writes_bytes_all_opt_(BufferLength)
1058     PVOID PropertyBuffer,
1059     _Out_
1060     PULONG ResultLength
1061     );
1062 
1063 _Must_inspect_result_
1064 _IRQL_requires_max_(PASSIVE_LEVEL)
1065 WDFAPI
1066 NTSTATUS
1067 VFWDFEXPORT(WdfFdoInitAllocAndQueryProperty)(
1068     _In_
1069     PWDF_DRIVER_GLOBALS DriverGlobals,
1070     _In_
1071     PWDFDEVICE_INIT DeviceInit,
1072     _In_
1073     DEVICE_REGISTRY_PROPERTY DeviceProperty,
1074     _In_
1075     _Strict_type_match_
1076     POOL_TYPE PoolType,
1077     _In_opt_
1078     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
1079     _Out_
1080     WDFMEMORY* PropertyMemory
1081     );
1082 
1083 _Must_inspect_result_
1084 _IRQL_requires_max_(PASSIVE_LEVEL)
1085 WDFAPI
1086 NTSTATUS
1087 VFWDFEXPORT(WdfFdoInitQueryPropertyEx)(
1088     _In_
1089     PWDF_DRIVER_GLOBALS DriverGlobals,
1090     _In_
1091     PWDFDEVICE_INIT DeviceInit,
1092     _In_
1093     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
1094     _In_
1095     ULONG BufferLength,
1096     _Out_
1097     PVOID PropertyBuffer,
1098     _Out_
1099     PULONG ResultLength,
1100     _Out_
1101     PDEVPROPTYPE Type
1102     );
1103 
1104 _Must_inspect_result_
1105 _IRQL_requires_max_(PASSIVE_LEVEL)
1106 WDFAPI
1107 NTSTATUS
1108 VFWDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx)(
1109     _In_
1110     PWDF_DRIVER_GLOBALS DriverGlobals,
1111     _In_
1112     PWDFDEVICE_INIT DeviceInit,
1113     _In_
1114     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
1115     _In_
1116     _Strict_type_match_
1117     POOL_TYPE PoolType,
1118     _In_opt_
1119     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
1120     _Out_
1121     WDFMEMORY* PropertyMemory,
1122     _Out_
1123     PDEVPROPTYPE Type
1124     );
1125 
1126 _IRQL_requires_max_(PASSIVE_LEVEL)
1127 WDFAPI
1128 VOID
1129 VFWDFEXPORT(WdfFdoInitSetFilter)(
1130     _In_
1131     PWDF_DRIVER_GLOBALS DriverGlobals,
1132     _In_
1133     PWDFDEVICE_INIT DeviceInit
1134     );
1135 
1136 _IRQL_requires_max_(PASSIVE_LEVEL)
1137 WDFAPI
1138 PUNICODE_STRING
1139 VFWDFEXPORT(WdfFileObjectGetFileName)(
1140     _In_
1141     PWDF_DRIVER_GLOBALS DriverGlobals,
1142     _In_
1143     WDFFILEOBJECT FileObject
1144     );
1145 
1146 _IRQL_requires_max_(DISPATCH_LEVEL)
1147 WDFAPI
1148 WDFDEVICE
1149 VFWDFEXPORT(WdfFileObjectGetDevice)(
1150     _In_
1151     PWDF_DRIVER_GLOBALS DriverGlobals,
1152     _In_
1153     WDFFILEOBJECT FileObject
1154     );
1155 
1156 _IRQL_requires_max_(PASSIVE_LEVEL)
1157 WDFAPI
1158 ULONG
1159 VFWDFEXPORT(WdfFileObjectGetInitiatorProcessId)(
1160     _In_
1161     PWDF_DRIVER_GLOBALS DriverGlobals,
1162     _In_
1163     WDFFILEOBJECT FileObject
1164     );
1165 
1166 _IRQL_requires_max_(PASSIVE_LEVEL)
1167 WDFAPI
1168 WDFFILEOBJECT
1169 VFWDFEXPORT(WdfFileObjectGetRelatedFileObject)(
1170     _In_
1171     PWDF_DRIVER_GLOBALS DriverGlobals,
1172     _In_
1173     WDFFILEOBJECT FileObject
1174     );
1175 
1176 _IRQL_requires_max_(PASSIVE_LEVEL)
1177 WDFAPI
1178 VOID
1179 VFWDFEXPORT(WdfDeviceInitEnableHidInterface)(
1180     _In_
1181     PWDF_DRIVER_GLOBALS DriverGlobals,
1182     _In_
1183     PWDFDEVICE_INIT DeviceInit
1184     );
1185 
1186 _Must_inspect_result_
1187 _IRQL_requires_max_(PASSIVE_LEVEL)
1188 WDFAPI
1189 NTSTATUS
1190 VFWDFEXPORT(WdfDeviceHidNotifyPresence)(
1191     _In_
1192     PWDF_DRIVER_GLOBALS DriverGlobals,
1193     _In_
1194     WDFDEVICE Device,
1195     _In_
1196     BOOLEAN IsPresent
1197     );
1198 
1199 _Must_inspect_result_
1200 _IRQL_requires_max_(DISPATCH_LEVEL)
1201 WDFAPI
1202 NTSTATUS
1203 VFWDFEXPORT(WdfInterruptCreate)(
1204     _In_
1205     PWDF_DRIVER_GLOBALS DriverGlobals,
1206     _In_
1207     WDFDEVICE Device,
1208     _In_
1209     PWDF_INTERRUPT_CONFIG Configuration,
1210     _In_opt_
1211     PWDF_OBJECT_ATTRIBUTES Attributes,
1212     _Out_
1213     WDFINTERRUPT* Interrupt
1214     );
1215 
1216 WDFAPI
1217 BOOLEAN
1218 VFWDFEXPORT(WdfInterruptQueueDpcForIsr)(
1219     _In_
1220     PWDF_DRIVER_GLOBALS DriverGlobals,
1221     _In_
1222     WDFINTERRUPT Interrupt
1223     );
1224 
1225 WDFAPI
1226 BOOLEAN
1227 VFWDFEXPORT(WdfInterruptQueueWorkItemForIsr)(
1228     _In_
1229     PWDF_DRIVER_GLOBALS DriverGlobals,
1230     _In_
1231     WDFINTERRUPT Interrupt
1232     );
1233 
1234 _IRQL_requires_max_(DISPATCH_LEVEL)
1235 WDFAPI
1236 BOOLEAN
1237 VFWDFEXPORT(WdfInterruptSynchronize)(
1238     _In_
1239     PWDF_DRIVER_GLOBALS DriverGlobals,
1240     _In_
1241     WDFINTERRUPT Interrupt,
1242     _In_
1243     PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
1244     _In_
1245     WDFCONTEXT Context
1246     );
1247 
1248 _IRQL_requires_max_(DISPATCH_LEVEL + 1)
1249 WDFAPI
1250 VOID
1251 VFWDFEXPORT(WdfInterruptAcquireLock)(
1252     _In_
1253     PWDF_DRIVER_GLOBALS DriverGlobals,
1254     _In_
1255     _Requires_lock_not_held_(_Curr_)
1256     _Acquires_lock_(_Curr_)
1257     WDFINTERRUPT Interrupt
1258     );
1259 
1260 _IRQL_requires_max_(DISPATCH_LEVEL + 1)
1261 WDFAPI
1262 VOID
1263 VFWDFEXPORT(WdfInterruptReleaseLock)(
1264     _In_
1265     PWDF_DRIVER_GLOBALS DriverGlobals,
1266     _In_
1267     _Requires_lock_held_(_Curr_)
1268     _Releases_lock_(_Curr_)
1269     WDFINTERRUPT Interrupt
1270     );
1271 
1272 _IRQL_requires_max_(PASSIVE_LEVEL)
1273 WDFAPI
1274 VOID
1275 VFWDFEXPORT(WdfInterruptEnable)(
1276     _In_
1277     PWDF_DRIVER_GLOBALS DriverGlobals,
1278     _In_
1279     WDFINTERRUPT Interrupt
1280     );
1281 
1282 _IRQL_requires_max_(PASSIVE_LEVEL)
1283 WDFAPI
1284 VOID
1285 VFWDFEXPORT(WdfInterruptDisable)(
1286     _In_
1287     PWDF_DRIVER_GLOBALS DriverGlobals,
1288     _In_
1289     WDFINTERRUPT Interrupt
1290     );
1291 
1292 _IRQL_requires_max_(DISPATCH_LEVEL)
1293 WDFAPI
1294 VOID
1295 VFWDFEXPORT(WdfInterruptGetInfo)(
1296     _In_
1297     PWDF_DRIVER_GLOBALS DriverGlobals,
1298     _In_
1299     WDFINTERRUPT Interrupt,
1300     _Out_
1301     PWDF_INTERRUPT_INFO Info
1302     );
1303 
1304 _IRQL_requires_max_(DISPATCH_LEVEL)
1305 WDFAPI
1306 VOID
1307 VFWDFEXPORT(WdfInterruptSetPolicy)(
1308     _In_
1309     PWDF_DRIVER_GLOBALS DriverGlobals,
1310     _In_
1311     WDFINTERRUPT Interrupt,
1312     _In_
1313     WDF_INTERRUPT_POLICY Policy,
1314     _In_
1315     WDF_INTERRUPT_PRIORITY Priority,
1316     _In_
1317     KAFFINITY TargetProcessorSet
1318     );
1319 
1320 _IRQL_requires_max_(DISPATCH_LEVEL)
1321 WDFAPI
1322 VOID
1323 VFWDFEXPORT(WdfInterruptSetExtendedPolicy)(
1324     _In_
1325     PWDF_DRIVER_GLOBALS DriverGlobals,
1326     _In_
1327     WDFINTERRUPT Interrupt,
1328     _In_
1329     PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
1330     );
1331 
1332 WDFAPI
1333 WDFDEVICE
1334 VFWDFEXPORT(WdfInterruptGetDevice)(
1335     _In_
1336     PWDF_DRIVER_GLOBALS DriverGlobals,
1337     _In_
1338     WDFINTERRUPT Interrupt
1339     );
1340 
1341 _Must_inspect_result_
1342 _Post_satisfies_(return == 1 || return == 0)
1343 _IRQL_requires_max_(PASSIVE_LEVEL)
1344 WDFAPI
1345 BOOLEAN
1346 VFWDFEXPORT(WdfInterruptTryToAcquireLock)(
1347     _In_
1348     PWDF_DRIVER_GLOBALS DriverGlobals,
1349     _In_
1350     _Requires_lock_not_held_(_Curr_)
1351     _When_(return!=0, _Acquires_lock_(_Curr_))
1352     WDFINTERRUPT Interrupt
1353     );
1354 
1355 _Must_inspect_result_
1356 _IRQL_requires_max_(DISPATCH_LEVEL)
1357 WDFAPI
1358 NTSTATUS
1359 VFWDFEXPORT(WdfIoQueueCreate)(
1360     _In_
1361     PWDF_DRIVER_GLOBALS DriverGlobals,
1362     _In_
1363     WDFDEVICE Device,
1364     _In_
1365     PWDF_IO_QUEUE_CONFIG Config,
1366     _In_opt_
1367     PWDF_OBJECT_ATTRIBUTES QueueAttributes,
1368     _Out_opt_
1369     WDFQUEUE* Queue
1370     );
1371 
1372 _IRQL_requires_max_(DISPATCH_LEVEL)
1373 WDFAPI
1374 WDF_IO_QUEUE_STATE
1375 VFWDFEXPORT(WdfIoQueueGetState)(
1376     _In_
1377     PWDF_DRIVER_GLOBALS DriverGlobals,
1378     _In_
1379     WDFQUEUE Queue,
1380     _Out_opt_
1381     PULONG QueueRequests,
1382     _Out_opt_
1383     PULONG DriverRequests
1384     );
1385 
1386 _IRQL_requires_max_(DISPATCH_LEVEL)
1387 WDFAPI
1388 VOID
1389 VFWDFEXPORT(WdfIoQueueStart)(
1390     _In_
1391     PWDF_DRIVER_GLOBALS DriverGlobals,
1392     _In_
1393     WDFQUEUE Queue
1394     );
1395 
1396 _IRQL_requires_max_(DISPATCH_LEVEL)
1397 WDFAPI
1398 VOID
1399 VFWDFEXPORT(WdfIoQueueStop)(
1400     _In_
1401     PWDF_DRIVER_GLOBALS DriverGlobals,
1402     _In_
1403     WDFQUEUE Queue,
1404     _When_(Context != 0, _In_)
1405     _When_(Context == 0, _In_opt_)
1406     PFN_WDF_IO_QUEUE_STATE StopComplete,
1407     _When_(StopComplete != 0, _In_)
1408     _When_(StopComplete == 0, _In_opt_)
1409     WDFCONTEXT Context
1410     );
1411 
1412 _IRQL_requires_max_(PASSIVE_LEVEL)
1413 WDFAPI
1414 VOID
1415 VFWDFEXPORT(WdfIoQueueStopSynchronously)(
1416     _In_
1417     PWDF_DRIVER_GLOBALS DriverGlobals,
1418     _In_
1419     WDFQUEUE Queue
1420     );
1421 
1422 _IRQL_requires_max_(DISPATCH_LEVEL)
1423 WDFAPI
1424 WDFDEVICE
1425 VFWDFEXPORT(WdfIoQueueGetDevice)(
1426     _In_
1427     PWDF_DRIVER_GLOBALS DriverGlobals,
1428     _In_
1429     WDFQUEUE Queue
1430     );
1431 
1432 _Must_inspect_result_
1433 _IRQL_requires_max_(DISPATCH_LEVEL)
1434 WDFAPI
1435 NTSTATUS
1436 VFWDFEXPORT(WdfIoQueueRetrieveNextRequest)(
1437     _In_
1438     PWDF_DRIVER_GLOBALS DriverGlobals,
1439     _In_
1440     WDFQUEUE Queue,
1441     _Out_
1442     WDFREQUEST* OutRequest
1443     );
1444 
1445 _Must_inspect_result_
1446 _IRQL_requires_max_(DISPATCH_LEVEL)
1447 WDFAPI
1448 NTSTATUS
1449 VFWDFEXPORT(WdfIoQueueRetrieveRequestByFileObject)(
1450     _In_
1451     PWDF_DRIVER_GLOBALS DriverGlobals,
1452     _In_
1453     WDFQUEUE Queue,
1454     _In_
1455     WDFFILEOBJECT FileObject,
1456     _Out_
1457     WDFREQUEST* OutRequest
1458     );
1459 
1460 _Must_inspect_result_
1461 _IRQL_requires_max_(DISPATCH_LEVEL)
1462 WDFAPI
1463 NTSTATUS
1464 VFWDFEXPORT(WdfIoQueueFindRequest)(
1465     _In_
1466     PWDF_DRIVER_GLOBALS DriverGlobals,
1467     _In_
1468     WDFQUEUE Queue,
1469     _In_opt_
1470     WDFREQUEST FoundRequest,
1471     _In_opt_
1472     WDFFILEOBJECT FileObject,
1473     _Inout_opt_
1474     PWDF_REQUEST_PARAMETERS Parameters,
1475     _Out_
1476     WDFREQUEST* OutRequest
1477     );
1478 
1479 _Must_inspect_result_
1480 _IRQL_requires_max_(DISPATCH_LEVEL)
1481 WDFAPI
1482 NTSTATUS
1483 VFWDFEXPORT(WdfIoQueueRetrieveFoundRequest)(
1484     _In_
1485     PWDF_DRIVER_GLOBALS DriverGlobals,
1486     _In_
1487     WDFQUEUE Queue,
1488     _In_
1489     WDFREQUEST FoundRequest,
1490     _Out_
1491     WDFREQUEST* OutRequest
1492     );
1493 
1494 _IRQL_requires_max_(PASSIVE_LEVEL)
1495 WDFAPI
1496 VOID
1497 VFWDFEXPORT(WdfIoQueueDrainSynchronously)(
1498     _In_
1499     PWDF_DRIVER_GLOBALS DriverGlobals,
1500     _In_
1501     WDFQUEUE Queue
1502     );
1503 
1504 _IRQL_requires_max_(DISPATCH_LEVEL)
1505 WDFAPI
1506 VOID
1507 VFWDFEXPORT(WdfIoQueueDrain)(
1508     _In_
1509     PWDF_DRIVER_GLOBALS DriverGlobals,
1510     _In_
1511     WDFQUEUE Queue,
1512     _When_(Context != 0, _In_)
1513     _When_(Context == 0, _In_opt_)
1514     PFN_WDF_IO_QUEUE_STATE DrainComplete,
1515     _When_(DrainComplete != 0, _In_)
1516     _When_(DrainComplete == 0, _In_opt_)
1517     WDFCONTEXT Context
1518     );
1519 
1520 _IRQL_requires_max_(PASSIVE_LEVEL)
1521 WDFAPI
1522 VOID
1523 VFWDFEXPORT(WdfIoQueuePurgeSynchronously)(
1524     _In_
1525     PWDF_DRIVER_GLOBALS DriverGlobals,
1526     _In_
1527     WDFQUEUE Queue
1528     );
1529 
1530 _IRQL_requires_max_(DISPATCH_LEVEL)
1531 WDFAPI
1532 VOID
1533 VFWDFEXPORT(WdfIoQueuePurge)(
1534     _In_
1535     PWDF_DRIVER_GLOBALS DriverGlobals,
1536     _In_
1537     WDFQUEUE Queue,
1538     _When_(Context != 0, _In_)
1539     _When_(Context == 0, _In_opt_)
1540     PFN_WDF_IO_QUEUE_STATE PurgeComplete,
1541     _When_(PurgeComplete != 0, _In_)
1542     _When_(PurgeComplete == 0, _In_opt_)
1543     WDFCONTEXT Context
1544     );
1545 
1546 _Must_inspect_result_
1547 _IRQL_requires_max_(DISPATCH_LEVEL)
1548 WDFAPI
1549 NTSTATUS
1550 VFWDFEXPORT(WdfIoQueueReadyNotify)(
1551     _In_
1552     PWDF_DRIVER_GLOBALS DriverGlobals,
1553     _In_
1554     WDFQUEUE Queue,
1555     _In_opt_
1556     PFN_WDF_IO_QUEUE_STATE QueueReady,
1557     _In_opt_
1558     WDFCONTEXT Context
1559     );
1560 
1561 _IRQL_requires_max_(DISPATCH_LEVEL)
1562 WDFAPI
1563 VOID
1564 VFWDFEXPORT(WdfIoQueueStopAndPurge)(
1565     _In_
1566     PWDF_DRIVER_GLOBALS DriverGlobals,
1567     _In_
1568     WDFQUEUE Queue,
1569     _When_(Context != 0, _In_)
1570     _When_(Context == 0, _In_opt_)
1571     PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
1572     _When_(StopAndPurgeComplete != 0, _In_)
1573     _When_(StopAndPurgeComplete == 0, _In_opt_)
1574     WDFCONTEXT Context
1575     );
1576 
1577 _IRQL_requires_max_(PASSIVE_LEVEL)
1578 WDFAPI
1579 VOID
1580 VFWDFEXPORT(WdfIoQueueStopAndPurgeSynchronously)(
1581     _In_
1582     PWDF_DRIVER_GLOBALS DriverGlobals,
1583     _In_
1584     WDFQUEUE Queue
1585     );
1586 
1587 _Must_inspect_result_
1588 _IRQL_requires_max_(PASSIVE_LEVEL)
1589 WDFAPI
1590 NTSTATUS
1591 VFWDFEXPORT(WdfIoTargetCreate)(
1592     _In_
1593     PWDF_DRIVER_GLOBALS DriverGlobals,
1594     _In_
1595     WDFDEVICE Device,
1596     _In_opt_
1597     PWDF_OBJECT_ATTRIBUTES IoTargetAttributes,
1598     _Out_
1599     WDFIOTARGET* IoTarget
1600     );
1601 
1602 _Must_inspect_result_
1603 _IRQL_requires_max_(PASSIVE_LEVEL)
1604 WDFAPI
1605 NTSTATUS
1606 VFWDFEXPORT(WdfIoTargetOpen)(
1607     _In_
1608     PWDF_DRIVER_GLOBALS DriverGlobals,
1609     _In_
1610     WDFIOTARGET IoTarget,
1611     _In_
1612     PWDF_IO_TARGET_OPEN_PARAMS OpenParams
1613     );
1614 
1615 _IRQL_requires_max_(PASSIVE_LEVEL)
1616 WDFAPI
1617 VOID
1618 VFWDFEXPORT(WdfIoTargetCloseForQueryRemove)(
1619     _In_
1620     PWDF_DRIVER_GLOBALS DriverGlobals,
1621     _In_
1622     WDFIOTARGET IoTarget
1623     );
1624 
1625 _IRQL_requires_max_(PASSIVE_LEVEL)
1626 WDFAPI
1627 VOID
1628 VFWDFEXPORT(WdfIoTargetClose)(
1629     _In_
1630     PWDF_DRIVER_GLOBALS DriverGlobals,
1631     _In_
1632     WDFIOTARGET IoTarget
1633     );
1634 
1635 _Must_inspect_result_
1636 _IRQL_requires_max_(DISPATCH_LEVEL)
1637 WDFAPI
1638 NTSTATUS
1639 VFWDFEXPORT(WdfIoTargetStart)(
1640     _In_
1641     PWDF_DRIVER_GLOBALS DriverGlobals,
1642     _In_
1643     WDFIOTARGET IoTarget
1644     );
1645 
1646 _When_(Action == 3, _IRQL_requires_max_(DISPATCH_LEVEL))
1647 _When_(Action == 0 || Action == 1 || Action == 2, _IRQL_requires_max_(PASSIVE_LEVEL))
1648 WDFAPI
1649 VOID
1650 VFWDFEXPORT(WdfIoTargetStop)(
1651     _In_
1652     PWDF_DRIVER_GLOBALS DriverGlobals,
1653     _In_
1654     WDFIOTARGET IoTarget,
1655     _In_
1656     _Strict_type_match_
1657     WDF_IO_TARGET_SENT_IO_ACTION Action
1658     );
1659 
1660 _When_(Action == 2, _IRQL_requires_max_(DISPATCH_LEVEL))
1661 _When_(Action == 0 || Action == 1, _IRQL_requires_max_(PASSIVE_LEVEL))
1662 WDFAPI
1663 VOID
1664 VFWDFEXPORT(WdfIoTargetPurge)(
1665     _In_
1666     PWDF_DRIVER_GLOBALS DriverGlobals,
1667     _In_
1668     WDFIOTARGET IoTarget,
1669     _In_
1670     _Strict_type_match_
1671     WDF_IO_TARGET_PURGE_IO_ACTION Action
1672     );
1673 
1674 _IRQL_requires_max_(DISPATCH_LEVEL)
1675 WDFAPI
1676 WDF_IO_TARGET_STATE
1677 VFWDFEXPORT(WdfIoTargetGetState)(
1678     _In_
1679     PWDF_DRIVER_GLOBALS DriverGlobals,
1680     _In_
1681     WDFIOTARGET IoTarget
1682     );
1683 
1684 _IRQL_requires_max_(DISPATCH_LEVEL)
1685 WDFAPI
1686 WDFDEVICE
1687 VFWDFEXPORT(WdfIoTargetGetDevice)(
1688     _In_
1689     PWDF_DRIVER_GLOBALS DriverGlobals,
1690     _In_
1691     WDFIOTARGET IoTarget
1692     );
1693 
1694 _IRQL_requires_max_(DISPATCH_LEVEL)
1695 WDFAPI
1696 HANDLE
1697 VFWDFEXPORT(WdfIoTargetWdmGetTargetFileHandle)(
1698     _In_
1699     PWDF_DRIVER_GLOBALS DriverGlobals,
1700     _In_
1701     WDFIOTARGET IoTarget
1702     );
1703 
1704 _Must_inspect_result_
1705 _IRQL_requires_max_(PASSIVE_LEVEL)
1706 WDFAPI
1707 NTSTATUS
1708 VFWDFEXPORT(WdfIoTargetSendReadSynchronously)(
1709     _In_
1710     PWDF_DRIVER_GLOBALS DriverGlobals,
1711     _In_
1712     WDFIOTARGET IoTarget,
1713     _In_opt_
1714     WDFREQUEST Request,
1715     _In_opt_
1716     PWDF_MEMORY_DESCRIPTOR OutputBuffer,
1717     _In_opt_
1718     PLONGLONG DeviceOffset,
1719     _In_opt_
1720     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
1721     _Out_opt_
1722     PULONG_PTR BytesRead
1723     );
1724 
1725 _Must_inspect_result_
1726 _IRQL_requires_max_(DISPATCH_LEVEL)
1727 WDFAPI
1728 NTSTATUS
1729 VFWDFEXPORT(WdfIoTargetFormatRequestForRead)(
1730     _In_
1731     PWDF_DRIVER_GLOBALS DriverGlobals,
1732     _In_
1733     WDFIOTARGET IoTarget,
1734     _In_
1735     WDFREQUEST Request,
1736     _In_opt_
1737     WDFMEMORY OutputBuffer,
1738     _In_opt_
1739     PWDFMEMORY_OFFSET OutputBufferOffset,
1740     _In_opt_
1741     PLONGLONG DeviceOffset
1742     );
1743 
1744 _Must_inspect_result_
1745 _IRQL_requires_max_(PASSIVE_LEVEL)
1746 WDFAPI
1747 NTSTATUS
1748 VFWDFEXPORT(WdfIoTargetSendWriteSynchronously)(
1749     _In_
1750     PWDF_DRIVER_GLOBALS DriverGlobals,
1751     _In_
1752     WDFIOTARGET IoTarget,
1753     _In_opt_
1754     WDFREQUEST Request,
1755     _In_opt_
1756     PWDF_MEMORY_DESCRIPTOR InputBuffer,
1757     _In_opt_
1758     PLONGLONG DeviceOffset,
1759     _In_opt_
1760     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
1761     _Out_opt_
1762     PULONG_PTR BytesWritten
1763     );
1764 
1765 _Must_inspect_result_
1766 _IRQL_requires_max_(DISPATCH_LEVEL)
1767 WDFAPI
1768 NTSTATUS
1769 VFWDFEXPORT(WdfIoTargetFormatRequestForWrite)(
1770     _In_
1771     PWDF_DRIVER_GLOBALS DriverGlobals,
1772     _In_
1773     WDFIOTARGET IoTarget,
1774     _In_
1775     WDFREQUEST Request,
1776     _In_opt_
1777     WDFMEMORY InputBuffer,
1778     _In_opt_
1779     PWDFMEMORY_OFFSET InputBufferOffset,
1780     _In_opt_
1781     PLONGLONG DeviceOffset
1782     );
1783 
1784 _Must_inspect_result_
1785 _IRQL_requires_max_(PASSIVE_LEVEL)
1786 WDFAPI
1787 NTSTATUS
1788 VFWDFEXPORT(WdfIoTargetSendIoctlSynchronously)(
1789     _In_
1790     PWDF_DRIVER_GLOBALS DriverGlobals,
1791     _In_
1792     WDFIOTARGET IoTarget,
1793     _In_opt_
1794     WDFREQUEST Request,
1795     _In_
1796     ULONG IoctlCode,
1797     _In_opt_
1798     PWDF_MEMORY_DESCRIPTOR InputBuffer,
1799     _In_opt_
1800     PWDF_MEMORY_DESCRIPTOR OutputBuffer,
1801     _In_opt_
1802     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
1803     _Out_opt_
1804     PULONG_PTR BytesReturned
1805     );
1806 
1807 _Must_inspect_result_
1808 _IRQL_requires_max_(DISPATCH_LEVEL)
1809 WDFAPI
1810 NTSTATUS
1811 VFWDFEXPORT(WdfIoTargetFormatRequestForIoctl)(
1812     _In_
1813     PWDF_DRIVER_GLOBALS DriverGlobals,
1814     _In_
1815     WDFIOTARGET IoTarget,
1816     _In_
1817     WDFREQUEST Request,
1818     _In_
1819     ULONG IoctlCode,
1820     _In_opt_
1821     WDFMEMORY InputBuffer,
1822     _In_opt_
1823     PWDFMEMORY_OFFSET InputBufferOffset,
1824     _In_opt_
1825     WDFMEMORY OutputBuffer,
1826     _In_opt_
1827     PWDFMEMORY_OFFSET OutputBufferOffset
1828     );
1829 
1830 _IRQL_requires_max_(DISPATCH_LEVEL)
1831 WDFAPI
1832 NTSTATUS
1833 VFWDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue)(
1834     _In_
1835     PWDF_DRIVER_GLOBALS DriverGlobals,
1836     _In_
1837     WDFIOTARGET IoTarget,
1838     _In_
1839     WDFQUEUE Queue
1840     );
1841 
1842 _Must_inspect_result_
1843 _When_(PoolType == 1 || PoolType == 257, _IRQL_requires_max_(APC_LEVEL))
1844 _When_(PoolType == 0 || PoolType == 256, _IRQL_requires_max_(DISPATCH_LEVEL))
1845 WDFAPI
1846 NTSTATUS
1847 VFWDFEXPORT(WdfMemoryCreate)(
1848     _In_
1849     PWDF_DRIVER_GLOBALS DriverGlobals,
1850     _In_opt_
1851     PWDF_OBJECT_ATTRIBUTES Attributes,
1852     _In_
1853     _Strict_type_match_
1854     POOL_TYPE PoolType,
1855     _In_opt_
1856     ULONG PoolTag,
1857     _In_
1858     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
1859     size_t BufferSize,
1860     _Out_
1861     WDFMEMORY* Memory,
1862     _Outptr_opt_result_bytebuffer_(BufferSize)
1863     PVOID* Buffer
1864     );
1865 
1866 _Must_inspect_result_
1867 _IRQL_requires_max_(DISPATCH_LEVEL)
1868 WDFAPI
1869 NTSTATUS
1870 VFWDFEXPORT(WdfMemoryCreatePreallocated)(
1871     _In_
1872     PWDF_DRIVER_GLOBALS DriverGlobals,
1873     _In_opt_
1874     PWDF_OBJECT_ATTRIBUTES Attributes,
1875     _In_ __drv_aliasesMem
1876     PVOID Buffer,
1877     _In_
1878     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
1879     size_t BufferSize,
1880     _Out_
1881     WDFMEMORY* Memory
1882     );
1883 
1884 _IRQL_requires_max_(DISPATCH_LEVEL)
1885 WDFAPI
1886 PVOID
1887 VFWDFEXPORT(WdfMemoryGetBuffer)(
1888     _In_
1889     PWDF_DRIVER_GLOBALS DriverGlobals,
1890     _In_
1891     WDFMEMORY Memory,
1892     _Out_opt_
1893     size_t* BufferSize
1894     );
1895 
1896 _Must_inspect_result_
1897 _IRQL_requires_max_(DISPATCH_LEVEL)
1898 WDFAPI
1899 NTSTATUS
1900 VFWDFEXPORT(WdfMemoryAssignBuffer)(
1901     _In_
1902     PWDF_DRIVER_GLOBALS DriverGlobals,
1903     _In_
1904     WDFMEMORY Memory,
1905     _Pre_notnull_ _Pre_writable_byte_size_(BufferSize)
1906     PVOID Buffer,
1907     _In_
1908     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
1909     size_t BufferSize
1910     );
1911 
1912 _Must_inspect_result_
1913 _IRQL_requires_max_(DISPATCH_LEVEL)
1914 WDFAPI
1915 NTSTATUS
1916 VFWDFEXPORT(WdfMemoryCopyToBuffer)(
1917     _In_
1918     PWDF_DRIVER_GLOBALS DriverGlobals,
1919     _In_
1920     WDFMEMORY SourceMemory,
1921     _In_
1922     size_t SourceOffset,
1923     _Out_writes_bytes_( NumBytesToCopyTo )
1924     PVOID Buffer,
1925     _In_
1926     _When_(NumBytesToCopyTo == 0, __drv_reportError(NumBytesToCopyTo cannot be zero))
1927     size_t NumBytesToCopyTo
1928     );
1929 
1930 _Must_inspect_result_
1931 _IRQL_requires_max_(DISPATCH_LEVEL)
1932 WDFAPI
1933 NTSTATUS
1934 VFWDFEXPORT(WdfMemoryCopyFromBuffer)(
1935     _In_
1936     PWDF_DRIVER_GLOBALS DriverGlobals,
1937     _In_
1938     WDFMEMORY DestinationMemory,
1939     _In_
1940     size_t DestinationOffset,
1941     _In_
1942     PVOID Buffer,
1943     _In_
1944     _When_(NumBytesToCopyFrom == 0, __drv_reportError(NumBytesToCopyFrom cannot be zero))
1945     size_t NumBytesToCopyFrom
1946     );
1947 
1948 WDFAPI
1949 PVOID
1950 FASTCALL
1951 VFWDFEXPORT(WdfObjectGetTypedContextWorker)(
1952     _In_
1953     PWDF_DRIVER_GLOBALS DriverGlobals,
1954     _In_
1955     WDFOBJECT Handle,
1956     _In_
1957     PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
1958     );
1959 
1960 WDFAPI
1961 NTSTATUS
1962 VFWDFEXPORT(WdfObjectAllocateContext)(
1963     _In_
1964     PWDF_DRIVER_GLOBALS DriverGlobals,
1965     _In_
1966     WDFOBJECT Handle,
1967     _In_
1968     PWDF_OBJECT_ATTRIBUTES ContextAttributes,
1969     _Outptr_opt_
1970     PVOID* Context
1971     );
1972 
1973 WDFAPI
1974 WDFOBJECT
1975 FASTCALL
1976 VFWDFEXPORT(WdfObjectContextGetObject)(
1977     _In_
1978     PWDF_DRIVER_GLOBALS DriverGlobals,
1979     _In_
1980     PVOID ContextPointer
1981     );
1982 
1983 WDFAPI
1984 VOID
1985 VFWDFEXPORT(WdfObjectReferenceActual)(
1986     _In_
1987     PWDF_DRIVER_GLOBALS DriverGlobals,
1988     _In_
1989     WDFOBJECT Handle,
1990     _In_opt_
1991     PVOID Tag,
1992     _In_
1993     LONG Line,
1994     _In_z_
1995     PCHAR File
1996     );
1997 
1998 WDFAPI
1999 VOID
2000 VFWDFEXPORT(WdfObjectDereferenceActual)(
2001     _In_
2002     PWDF_DRIVER_GLOBALS DriverGlobals,
2003     _In_
2004     WDFOBJECT Handle,
2005     _In_opt_
2006     PVOID Tag,
2007     _In_
2008     LONG Line,
2009     _In_z_
2010     PCHAR File
2011     );
2012 
2013 _Must_inspect_result_
2014 _IRQL_requires_max_(DISPATCH_LEVEL)
2015 WDFAPI
2016 NTSTATUS
2017 VFWDFEXPORT(WdfObjectCreate)(
2018     _In_
2019     PWDF_DRIVER_GLOBALS DriverGlobals,
2020     _In_opt_
2021     PWDF_OBJECT_ATTRIBUTES Attributes,
2022     _Out_
2023     WDFOBJECT* Object
2024     );
2025 
2026 _IRQL_requires_max_(DISPATCH_LEVEL)
2027 WDFAPI
2028 VOID
2029 VFWDFEXPORT(WdfObjectDelete)(
2030     _In_
2031     PWDF_DRIVER_GLOBALS DriverGlobals,
2032     _In_
2033     WDFOBJECT Object
2034     );
2035 
2036 _Must_inspect_result_
2037 _IRQL_requires_max_(DISPATCH_LEVEL)
2038 WDFAPI
2039 NTSTATUS
2040 VFWDFEXPORT(WdfObjectQuery)(
2041     _In_
2042     PWDF_DRIVER_GLOBALS DriverGlobals,
2043     _In_
2044     WDFOBJECT Object,
2045     _In_
2046     CONST GUID* Guid,
2047     _In_
2048     ULONG QueryBufferLength,
2049     _Out_writes_bytes_(QueryBufferLength)
2050     PVOID QueryBuffer
2051     );
2052 
2053 _Must_inspect_result_
2054 _IRQL_requires_max_(PASSIVE_LEVEL)
2055 WDFAPI
2056 NTSTATUS
2057 VFWDFEXPORT(WdfRegistryOpenKey)(
2058     _In_
2059     PWDF_DRIVER_GLOBALS DriverGlobals,
2060     _In_opt_
2061     WDFKEY ParentKey,
2062     _In_
2063     PCUNICODE_STRING KeyName,
2064     _In_
2065     ACCESS_MASK DesiredAccess,
2066     _In_opt_
2067     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
2068     _Out_
2069     WDFKEY* Key
2070     );
2071 
2072 _Must_inspect_result_
2073 _IRQL_requires_max_(PASSIVE_LEVEL)
2074 WDFAPI
2075 NTSTATUS
2076 VFWDFEXPORT(WdfRegistryCreateKey)(
2077     _In_
2078     PWDF_DRIVER_GLOBALS DriverGlobals,
2079     _In_opt_
2080     WDFKEY ParentKey,
2081     _In_
2082     PCUNICODE_STRING KeyName,
2083     _In_
2084     ACCESS_MASK DesiredAccess,
2085     _In_
2086     ULONG CreateOptions,
2087     _Out_opt_
2088     PULONG CreateDisposition,
2089     _In_opt_
2090     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
2091     _Out_
2092     WDFKEY* Key
2093     );
2094 
2095 _IRQL_requires_max_(PASSIVE_LEVEL)
2096 WDFAPI
2097 VOID
2098 VFWDFEXPORT(WdfRegistryClose)(
2099     _In_
2100     PWDF_DRIVER_GLOBALS DriverGlobals,
2101     _In_
2102     WDFKEY Key
2103     );
2104 
2105 _IRQL_requires_max_(PASSIVE_LEVEL)
2106 WDFAPI
2107 HANDLE
2108 VFWDFEXPORT(WdfRegistryWdmGetHandle)(
2109     _In_
2110     PWDF_DRIVER_GLOBALS DriverGlobals,
2111     _In_
2112     WDFKEY Key
2113     );
2114 
2115 _Must_inspect_result_
2116 _IRQL_requires_max_(PASSIVE_LEVEL)
2117 WDFAPI
2118 NTSTATUS
2119 VFWDFEXPORT(WdfRegistryRemoveKey)(
2120     _In_
2121     PWDF_DRIVER_GLOBALS DriverGlobals,
2122     _In_
2123     WDFKEY Key
2124     );
2125 
2126 _Must_inspect_result_
2127 _IRQL_requires_max_(PASSIVE_LEVEL)
2128 WDFAPI
2129 NTSTATUS
2130 VFWDFEXPORT(WdfRegistryRemoveValue)(
2131     _In_
2132     PWDF_DRIVER_GLOBALS DriverGlobals,
2133     _In_
2134     WDFKEY Key,
2135     _In_
2136     PCUNICODE_STRING ValueName
2137     );
2138 
2139 _Must_inspect_result_
2140 _IRQL_requires_max_(PASSIVE_LEVEL)
2141 WDFAPI
2142 NTSTATUS
2143 VFWDFEXPORT(WdfRegistryQueryValue)(
2144     _In_
2145     PWDF_DRIVER_GLOBALS DriverGlobals,
2146     _In_
2147     WDFKEY Key,
2148     _In_
2149     PCUNICODE_STRING ValueName,
2150     _In_
2151     ULONG ValueLength,
2152     _Out_writes_bytes_opt_( ValueLength)
2153     PVOID Value,
2154     _Out_opt_
2155     PULONG ValueLengthQueried,
2156     _Out_opt_
2157     PULONG ValueType
2158     );
2159 
2160 _Must_inspect_result_
2161 _IRQL_requires_max_(PASSIVE_LEVEL)
2162 WDFAPI
2163 NTSTATUS
2164 VFWDFEXPORT(WdfRegistryQueryMemory)(
2165     _In_
2166     PWDF_DRIVER_GLOBALS DriverGlobals,
2167     _In_
2168     WDFKEY Key,
2169     _In_
2170     PCUNICODE_STRING ValueName,
2171     _In_
2172     _Strict_type_match_
2173     POOL_TYPE PoolType,
2174     _In_opt_
2175     PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
2176     _Out_
2177     WDFMEMORY* Memory,
2178     _Out_opt_
2179     PULONG ValueType
2180     );
2181 
2182 _Must_inspect_result_
2183 _IRQL_requires_max_(PASSIVE_LEVEL)
2184 WDFAPI
2185 NTSTATUS
2186 VFWDFEXPORT(WdfRegistryQueryMultiString)(
2187     _In_
2188     PWDF_DRIVER_GLOBALS DriverGlobals,
2189     _In_
2190     WDFKEY Key,
2191     _In_
2192     PCUNICODE_STRING ValueName,
2193     _In_opt_
2194     PWDF_OBJECT_ATTRIBUTES StringsAttributes,
2195     _In_
2196     WDFCOLLECTION Collection
2197     );
2198 
2199 _Must_inspect_result_
2200 _IRQL_requires_max_(PASSIVE_LEVEL)
2201 WDFAPI
2202 NTSTATUS
2203 VFWDFEXPORT(WdfRegistryQueryUnicodeString)(
2204     _In_
2205     PWDF_DRIVER_GLOBALS DriverGlobals,
2206     _In_
2207     WDFKEY Key,
2208     _In_
2209     PCUNICODE_STRING ValueName,
2210     _Out_opt_
2211     PUSHORT ValueByteLength,
2212     _Inout_opt_
2213     PUNICODE_STRING Value
2214     );
2215 
2216 _Must_inspect_result_
2217 _IRQL_requires_max_(PASSIVE_LEVEL)
2218 WDFAPI
2219 NTSTATUS
2220 VFWDFEXPORT(WdfRegistryQueryString)(
2221     _In_
2222     PWDF_DRIVER_GLOBALS DriverGlobals,
2223     _In_
2224     WDFKEY Key,
2225     _In_
2226     PCUNICODE_STRING ValueName,
2227     _In_
2228     WDFSTRING String
2229     );
2230 
2231 _Must_inspect_result_
2232 _IRQL_requires_max_(PASSIVE_LEVEL)
2233 WDFAPI
2234 NTSTATUS
2235 VFWDFEXPORT(WdfRegistryQueryULong)(
2236     _In_
2237     PWDF_DRIVER_GLOBALS DriverGlobals,
2238     _In_
2239     WDFKEY Key,
2240     _In_
2241     PCUNICODE_STRING ValueName,
2242     _Out_
2243     PULONG Value
2244     );
2245 
2246 _Must_inspect_result_
2247 _IRQL_requires_max_(PASSIVE_LEVEL)
2248 WDFAPI
2249 NTSTATUS
2250 VFWDFEXPORT(WdfRegistryAssignValue)(
2251     _In_
2252     PWDF_DRIVER_GLOBALS DriverGlobals,
2253     _In_
2254     WDFKEY Key,
2255     _In_
2256     PCUNICODE_STRING ValueName,
2257     _In_
2258     ULONG ValueType,
2259     _In_
2260     ULONG ValueLength,
2261     _In_reads_( ValueLength)
2262     PVOID Value
2263     );
2264 
2265 _Must_inspect_result_
2266 _IRQL_requires_max_(PASSIVE_LEVEL)
2267 WDFAPI
2268 NTSTATUS
2269 VFWDFEXPORT(WdfRegistryAssignMemory)(
2270     _In_
2271     PWDF_DRIVER_GLOBALS DriverGlobals,
2272     _In_
2273     WDFKEY Key,
2274     _In_
2275     PCUNICODE_STRING ValueName,
2276     _In_
2277     ULONG ValueType,
2278     _In_
2279     WDFMEMORY Memory,
2280     _In_opt_
2281     PWDFMEMORY_OFFSET MemoryOffsets
2282     );
2283 
2284 _Must_inspect_result_
2285 _IRQL_requires_max_(PASSIVE_LEVEL)
2286 WDFAPI
2287 NTSTATUS
2288 VFWDFEXPORT(WdfRegistryAssignMultiString)(
2289     _In_
2290     PWDF_DRIVER_GLOBALS DriverGlobals,
2291     _In_
2292     WDFKEY Key,
2293     _In_
2294     PCUNICODE_STRING ValueName,
2295     _In_
2296     WDFCOLLECTION StringsCollection
2297     );
2298 
2299 _Must_inspect_result_
2300 _IRQL_requires_max_(PASSIVE_LEVEL)
2301 WDFAPI
2302 NTSTATUS
2303 VFWDFEXPORT(WdfRegistryAssignUnicodeString)(
2304     _In_
2305     PWDF_DRIVER_GLOBALS DriverGlobals,
2306     _In_
2307     WDFKEY Key,
2308     _In_
2309     PCUNICODE_STRING ValueName,
2310     _In_
2311     PCUNICODE_STRING Value
2312     );
2313 
2314 _Must_inspect_result_
2315 _IRQL_requires_max_(PASSIVE_LEVEL)
2316 WDFAPI
2317 NTSTATUS
2318 VFWDFEXPORT(WdfRegistryAssignString)(
2319     _In_
2320     PWDF_DRIVER_GLOBALS DriverGlobals,
2321     _In_
2322     WDFKEY Key,
2323     _In_
2324     PCUNICODE_STRING ValueName,
2325     _In_
2326     WDFSTRING String
2327     );
2328 
2329 _Must_inspect_result_
2330 _IRQL_requires_max_(PASSIVE_LEVEL)
2331 WDFAPI
2332 NTSTATUS
2333 VFWDFEXPORT(WdfRegistryAssignULong)(
2334     _In_
2335     PWDF_DRIVER_GLOBALS DriverGlobals,
2336     _In_
2337     WDFKEY Key,
2338     _In_
2339     PCUNICODE_STRING ValueName,
2340     _In_
2341     ULONG Value
2342     );
2343 
2344 _Must_inspect_result_
2345 _IRQL_requires_max_(DISPATCH_LEVEL)
2346 WDFAPI
2347 NTSTATUS
2348 VFWDFEXPORT(WdfRequestCreate)(
2349     _In_
2350     PWDF_DRIVER_GLOBALS DriverGlobals,
2351     _In_opt_
2352     PWDF_OBJECT_ATTRIBUTES RequestAttributes,
2353     _In_opt_
2354     WDFIOTARGET IoTarget,
2355     _Out_
2356     WDFREQUEST* Request
2357     );
2358 
2359 _IRQL_requires_max_(DISPATCH_LEVEL)
2360 WDFAPI
2361 NTSTATUS
2362 VFWDFEXPORT(WdfRequestReuse)(
2363     _In_
2364     PWDF_DRIVER_GLOBALS DriverGlobals,
2365     _In_
2366     WDFREQUEST Request,
2367     _In_
2368     PWDF_REQUEST_REUSE_PARAMS ReuseParams
2369     );
2370 
2371 _Must_inspect_result_
2372 _IRQL_requires_max_(DISPATCH_LEVEL)
2373 WDFAPI
2374 NTSTATUS
2375 VFWDFEXPORT(WdfRequestChangeTarget)(
2376     _In_
2377     PWDF_DRIVER_GLOBALS DriverGlobals,
2378     _In_
2379     WDFREQUEST Request,
2380     _In_
2381     WDFIOTARGET IoTarget
2382     );
2383 
2384 _IRQL_requires_max_(DISPATCH_LEVEL)
2385 WDFAPI
2386 VOID
2387 VFWDFEXPORT(WdfRequestFormatRequestUsingCurrentType)(
2388     _In_
2389     PWDF_DRIVER_GLOBALS DriverGlobals,
2390     _In_
2391     WDFREQUEST Request
2392     );
2393 
2394 _IRQL_requires_max_(DISPATCH_LEVEL)
2395 _When_(Options->Flags & WDF_REQUEST_SEND_OPTION_SYNCHRONOUS == 0, _Must_inspect_result_)
2396 WDFAPI
2397 BOOLEAN
2398 VFWDFEXPORT(WdfRequestSend)(
2399     _In_
2400     PWDF_DRIVER_GLOBALS DriverGlobals,
2401     _In_
2402     WDFREQUEST Request,
2403     _In_
2404     WDFIOTARGET Target,
2405     _In_opt_
2406     PWDF_REQUEST_SEND_OPTIONS Options
2407     );
2408 
2409 _Must_inspect_result_
2410 _IRQL_requires_max_(DISPATCH_LEVEL)
2411 WDFAPI
2412 NTSTATUS
2413 VFWDFEXPORT(WdfRequestGetStatus)(
2414     _In_
2415     PWDF_DRIVER_GLOBALS DriverGlobals,
2416     _In_
2417     WDFREQUEST Request
2418     );
2419 
2420 _IRQL_requires_max_(DISPATCH_LEVEL)
2421 WDFAPI
2422 VOID
2423 VFWDFEXPORT(WdfRequestMarkCancelable)(
2424     _In_
2425     PWDF_DRIVER_GLOBALS DriverGlobals,
2426     _In_
2427     WDFREQUEST Request,
2428     _In_
2429     PFN_WDF_REQUEST_CANCEL EvtRequestCancel
2430     );
2431 
2432 _Must_inspect_result_
2433 _IRQL_requires_max_(DISPATCH_LEVEL)
2434 WDFAPI
2435 NTSTATUS
2436 VFWDFEXPORT(WdfRequestMarkCancelableEx)(
2437     _In_
2438     PWDF_DRIVER_GLOBALS DriverGlobals,
2439     _In_
2440     WDFREQUEST Request,
2441     _In_
2442     PFN_WDF_REQUEST_CANCEL EvtRequestCancel
2443     );
2444 
2445 _Must_inspect_result_
2446 _IRQL_requires_max_(DISPATCH_LEVEL)
2447 WDFAPI
2448 NTSTATUS
2449 VFWDFEXPORT(WdfRequestUnmarkCancelable)(
2450     _In_
2451     PWDF_DRIVER_GLOBALS DriverGlobals,
2452     _In_
2453     WDFREQUEST Request
2454     );
2455 
2456 _Must_inspect_result_
2457 _IRQL_requires_max_(DISPATCH_LEVEL)
2458 WDFAPI
2459 BOOLEAN
2460 VFWDFEXPORT(WdfRequestIsCanceled)(
2461     _In_
2462     PWDF_DRIVER_GLOBALS DriverGlobals,
2463     _In_
2464     WDFREQUEST Request
2465     );
2466 
2467 _IRQL_requires_max_(DISPATCH_LEVEL)
2468 WDFAPI
2469 BOOLEAN
2470 VFWDFEXPORT(WdfRequestCancelSentRequest)(
2471     _In_
2472     PWDF_DRIVER_GLOBALS DriverGlobals,
2473     _In_
2474     WDFREQUEST Request
2475     );
2476 
2477 _Must_inspect_result_
2478 _IRQL_requires_max_(APC_LEVEL)
2479 WDFAPI
2480 BOOLEAN
2481 VFWDFEXPORT(WdfRequestIsFrom32BitProcess)(
2482     _In_
2483     PWDF_DRIVER_GLOBALS DriverGlobals,
2484     _In_
2485     WDFREQUEST Request
2486     );
2487 
2488 _IRQL_requires_max_(DISPATCH_LEVEL)
2489 WDFAPI
2490 VOID
2491 VFWDFEXPORT(WdfRequestSetCompletionRoutine)(
2492     _In_
2493     PWDF_DRIVER_GLOBALS DriverGlobals,
2494     _In_
2495     WDFREQUEST Request,
2496     _In_opt_
2497     PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine,
2498     _In_opt_ __drv_aliasesMem
2499     WDFCONTEXT CompletionContext
2500     );
2501 
2502 _IRQL_requires_max_(DISPATCH_LEVEL)
2503 WDFAPI
2504 VOID
2505 VFWDFEXPORT(WdfRequestGetCompletionParams)(
2506     _In_
2507     PWDF_DRIVER_GLOBALS DriverGlobals,
2508     _In_
2509     WDFREQUEST Request,
2510     _Out_
2511     PWDF_REQUEST_COMPLETION_PARAMS Params
2512     );
2513 
2514 _Must_inspect_result_
2515 _IRQL_requires_max_(DISPATCH_LEVEL)
2516 WDFAPI
2517 NTSTATUS
2518 VFWDFEXPORT(WdfRequestAllocateTimer)(
2519     _In_
2520     PWDF_DRIVER_GLOBALS DriverGlobals,
2521     _In_
2522     WDFREQUEST Request
2523     );
2524 
2525 _IRQL_requires_max_(DISPATCH_LEVEL)
2526 WDFAPI
2527 VOID
2528 VFWDFEXPORT(WdfRequestComplete)(
2529     _In_
2530     PWDF_DRIVER_GLOBALS DriverGlobals,
2531     _In_
2532     WDFREQUEST Request,
2533     _In_
2534     NTSTATUS Status
2535     );
2536 
2537 _IRQL_requires_max_(DISPATCH_LEVEL)
2538 WDFAPI
2539 VOID
2540 VFWDFEXPORT(WdfRequestCompleteWithInformation)(
2541     _In_
2542     PWDF_DRIVER_GLOBALS DriverGlobals,
2543     _In_
2544     WDFREQUEST Request,
2545     _In_
2546     NTSTATUS Status,
2547     _In_
2548     ULONG_PTR Information
2549     );
2550 
2551 _IRQL_requires_max_(DISPATCH_LEVEL)
2552 WDFAPI
2553 VOID
2554 VFWDFEXPORT(WdfRequestGetParameters)(
2555     _In_
2556     PWDF_DRIVER_GLOBALS DriverGlobals,
2557     _In_
2558     WDFREQUEST Request,
2559     _Out_
2560     PWDF_REQUEST_PARAMETERS Parameters
2561     );
2562 
2563 _Must_inspect_result_
2564 _IRQL_requires_max_(DISPATCH_LEVEL)
2565 WDFAPI
2566 NTSTATUS
2567 VFWDFEXPORT(WdfRequestRetrieveInputMemory)(
2568     _In_
2569     PWDF_DRIVER_GLOBALS DriverGlobals,
2570     _In_
2571     WDFREQUEST Request,
2572     _Out_
2573     WDFMEMORY* Memory
2574     );
2575 
2576 _Must_inspect_result_
2577 _IRQL_requires_max_(DISPATCH_LEVEL)
2578 WDFAPI
2579 NTSTATUS
2580 VFWDFEXPORT(WdfRequestRetrieveOutputMemory)(
2581     _In_
2582     PWDF_DRIVER_GLOBALS DriverGlobals,
2583     _In_
2584     WDFREQUEST Request,
2585     _Out_
2586     WDFMEMORY* Memory
2587     );
2588 
2589 _Must_inspect_result_
2590 _IRQL_requires_max_(DISPATCH_LEVEL)
2591 WDFAPI
2592 NTSTATUS
2593 VFWDFEXPORT(WdfRequestRetrieveInputBuffer)(
2594     _In_
2595     PWDF_DRIVER_GLOBALS DriverGlobals,
2596     _In_
2597     WDFREQUEST Request,
2598     _In_
2599     size_t MinimumRequiredLength,
2600     _Outptr_result_bytebuffer_(*Length)
2601     PVOID* Buffer,
2602     _Out_opt_
2603     size_t* Length
2604     );
2605 
2606 _Must_inspect_result_
2607 _IRQL_requires_max_(DISPATCH_LEVEL)
2608 WDFAPI
2609 NTSTATUS
2610 VFWDFEXPORT(WdfRequestRetrieveOutputBuffer)(
2611     _In_
2612     PWDF_DRIVER_GLOBALS DriverGlobals,
2613     _In_
2614     WDFREQUEST Request,
2615     _In_
2616     size_t MinimumRequiredSize,
2617     _Outptr_result_bytebuffer_(*Length)
2618     PVOID* Buffer,
2619     _Out_opt_
2620     size_t* Length
2621     );
2622 
2623 _IRQL_requires_max_(DISPATCH_LEVEL)
2624 WDFAPI
2625 VOID
2626 VFWDFEXPORT(WdfRequestSetInformation)(
2627     _In_
2628     PWDF_DRIVER_GLOBALS DriverGlobals,
2629     _In_
2630     WDFREQUEST Request,
2631     _In_
2632     ULONG_PTR Information
2633     );
2634 
2635 _IRQL_requires_max_(DISPATCH_LEVEL)
2636 WDFAPI
2637 ULONG_PTR
2638 VFWDFEXPORT(WdfRequestGetInformation)(
2639     _In_
2640     PWDF_DRIVER_GLOBALS DriverGlobals,
2641     _In_
2642     WDFREQUEST Request
2643     );
2644 
2645 _IRQL_requires_max_(DISPATCH_LEVEL)
2646 WDFAPI
2647 WDFFILEOBJECT
2648 VFWDFEXPORT(WdfRequestGetFileObject)(
2649     _In_
2650     PWDF_DRIVER_GLOBALS DriverGlobals,
2651     _In_
2652     WDFREQUEST Request
2653     );
2654 
2655 _IRQL_requires_max_(DISPATCH_LEVEL)
2656 WDFAPI
2657 KPROCESSOR_MODE
2658 VFWDFEXPORT(WdfRequestGetRequestorMode)(
2659     _In_
2660     PWDF_DRIVER_GLOBALS DriverGlobals,
2661     _In_
2662     WDFREQUEST Request
2663     );
2664 
2665 _Must_inspect_result_
2666 _IRQL_requires_max_(DISPATCH_LEVEL)
2667 WDFAPI
2668 NTSTATUS
2669 VFWDFEXPORT(WdfRequestForwardToIoQueue)(
2670     _In_
2671     PWDF_DRIVER_GLOBALS DriverGlobals,
2672     _In_
2673     WDFREQUEST Request,
2674     _In_
2675     WDFQUEUE DestinationQueue
2676     );
2677 
2678 _IRQL_requires_max_(DISPATCH_LEVEL)
2679 WDFAPI
2680 WDFQUEUE
2681 VFWDFEXPORT(WdfRequestGetIoQueue)(
2682     _In_
2683     PWDF_DRIVER_GLOBALS DriverGlobals,
2684     _In_
2685     WDFREQUEST Request
2686     );
2687 
2688 _Must_inspect_result_
2689 _IRQL_requires_max_(DISPATCH_LEVEL)
2690 WDFAPI
2691 NTSTATUS
2692 VFWDFEXPORT(WdfRequestRequeue)(
2693     _In_
2694     PWDF_DRIVER_GLOBALS DriverGlobals,
2695     _In_
2696     WDFREQUEST Request
2697     );
2698 
2699 _IRQL_requires_max_(DISPATCH_LEVEL)
2700 WDFAPI
2701 VOID
2702 VFWDFEXPORT(WdfRequestStopAcknowledge)(
2703     _In_
2704     PWDF_DRIVER_GLOBALS DriverGlobals,
2705     _In_
2706     WDFREQUEST Request,
2707     _In_
2708     BOOLEAN Requeue
2709     );
2710 
2711 _Must_inspect_result_
2712 _IRQL_requires_max_(PASSIVE_LEVEL)
2713 WDFAPI
2714 NTSTATUS
2715 VFWDFEXPORT(WdfRequestImpersonate)(
2716     _In_
2717     PWDF_DRIVER_GLOBALS DriverGlobals,
2718     _In_
2719     WDFREQUEST Request,
2720     _In_
2721     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
2722     _In_
2723     PFN_WDF_REQUEST_IMPERSONATE EvtRequestImpersonate,
2724     _In_opt_
2725     PVOID Context
2726     );
2727 
2728 _IRQL_requires_max_(PASSIVE_LEVEL)
2729 WDFAPI
2730 ULONG
2731 VFWDFEXPORT(WdfRequestGetRequestorProcessId)(
2732     _In_
2733     PWDF_DRIVER_GLOBALS DriverGlobals,
2734     _In_
2735     WDFREQUEST Request
2736     );
2737 
2738 _IRQL_requires_max_(PASSIVE_LEVEL)
2739 WDFAPI
2740 BOOLEAN
2741 VFWDFEXPORT(WdfRequestIsFromUserModeDriver)(
2742     _In_
2743     PWDF_DRIVER_GLOBALS DriverGlobals,
2744     _In_
2745     WDFREQUEST Request
2746     );
2747 
2748 _IRQL_requires_max_(PASSIVE_LEVEL)
2749 WDFAPI
2750 VOID
2751 VFWDFEXPORT(WdfRequestSetUserModeDriverInitiatedIo)(
2752     _In_
2753     PWDF_DRIVER_GLOBALS DriverGlobals,
2754     _In_
2755     WDFREQUEST Request,
2756     _In_
2757     BOOLEAN IsUserModeDriverInitiated
2758     );
2759 
2760 _IRQL_requires_max_(PASSIVE_LEVEL)
2761 WDFAPI
2762 BOOLEAN
2763 VFWDFEXPORT(WdfRequestGetUserModeDriverInitiatedIo)(
2764     _In_
2765     PWDF_DRIVER_GLOBALS DriverGlobals,
2766     _In_
2767     WDFREQUEST Request
2768     );
2769 
2770 _IRQL_requires_max_(PASSIVE_LEVEL)
2771 WDFAPI
2772 VOID
2773 VFWDFEXPORT(WdfRequestSetActivityId)(
2774     _In_
2775     PWDF_DRIVER_GLOBALS DriverGlobals,
2776     _In_
2777     WDFREQUEST Request,
2778     _In_
2779     LPGUID ActivityId
2780     );
2781 
2782 _IRQL_requires_max_(PASSIVE_LEVEL)
2783 WDFAPI
2784 NTSTATUS
2785 VFWDFEXPORT(WdfRequestRetrieveActivityId)(
2786     _In_
2787     PWDF_DRIVER_GLOBALS DriverGlobals,
2788     _In_
2789     WDFREQUEST Request,
2790     _Out_
2791     LPGUID ActivityId
2792     );
2793 
2794 _IRQL_requires_max_(PASSIVE_LEVEL)
2795 WDFAPI
2796 WDF_DEVICE_IO_TYPE
2797 VFWDFEXPORT(WdfRequestGetEffectiveIoType)(
2798     _In_
2799     PWDF_DRIVER_GLOBALS DriverGlobals,
2800     _In_
2801     WDFREQUEST Request
2802     );
2803 
2804 _IRQL_requires_max_(DISPATCH_LEVEL)
2805 WDFAPI
2806 ULONG
2807 VFWDFEXPORT(WdfCmResourceListGetCount)(
2808     _In_
2809     PWDF_DRIVER_GLOBALS DriverGlobals,
2810     _In_
2811     WDFCMRESLIST List
2812     );
2813 
2814 _IRQL_requires_max_(DISPATCH_LEVEL)
2815 WDFAPI
2816 PCM_PARTIAL_RESOURCE_DESCRIPTOR
2817 VFWDFEXPORT(WdfCmResourceListGetDescriptor)(
2818     _In_
2819     PWDF_DRIVER_GLOBALS DriverGlobals,
2820     _In_
2821     WDFCMRESLIST List,
2822     _In_
2823     ULONG Index
2824     );
2825 
2826 _Must_inspect_result_
2827 _IRQL_requires_max_(PASSIVE_LEVEL)
2828 WDFAPI
2829 NTSTATUS
2830 VFWDFEXPORT(WdfStringCreate)(
2831     _In_
2832     PWDF_DRIVER_GLOBALS DriverGlobals,
2833     _In_opt_
2834     PCUNICODE_STRING UnicodeString,
2835     _In_opt_
2836     PWDF_OBJECT_ATTRIBUTES StringAttributes,
2837     _Out_
2838     WDFSTRING* String
2839     );
2840 
2841 _IRQL_requires_max_(PASSIVE_LEVEL)
2842 WDFAPI
2843 VOID
2844 VFWDFEXPORT(WdfStringGetUnicodeString)(
2845     _In_
2846     PWDF_DRIVER_GLOBALS DriverGlobals,
2847     _In_
2848     WDFSTRING String,
2849     _Out_
2850     PUNICODE_STRING UnicodeString
2851     );
2852 
2853 _IRQL_requires_max_(DISPATCH_LEVEL)
2854 WDFAPI
2855 VOID
2856 VFWDFEXPORT(WdfObjectAcquireLock)(
2857     _In_
2858     PWDF_DRIVER_GLOBALS DriverGlobals,
2859     _In_
2860     _Requires_lock_not_held_(_Curr_)
2861     _Acquires_lock_(_Curr_)
2862     WDFOBJECT Object
2863     );
2864 
2865 _IRQL_requires_max_(DISPATCH_LEVEL)
2866 WDFAPI
2867 VOID
2868 VFWDFEXPORT(WdfObjectReleaseLock)(
2869     _In_
2870     PWDF_DRIVER_GLOBALS DriverGlobals,
2871     _In_
2872     _Requires_lock_held_(_Curr_)
2873     _Releases_lock_(_Curr_)
2874     WDFOBJECT Object
2875     );
2876 
2877 _Must_inspect_result_
2878 _IRQL_requires_max_(DISPATCH_LEVEL)
2879 WDFAPI
2880 NTSTATUS
2881 VFWDFEXPORT(WdfWaitLockCreate)(
2882     _In_
2883     PWDF_DRIVER_GLOBALS DriverGlobals,
2884     _In_opt_
2885     PWDF_OBJECT_ATTRIBUTES LockAttributes,
2886     _Out_
2887     WDFWAITLOCK* Lock
2888     );
2889 
2890 _When_(Timeout == NULL, _IRQL_requires_max_(PASSIVE_LEVEL))
2891 _When_(Timeout != NULL && *Timeout == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
2892 _When_(Timeout != NULL && *Timeout != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
2893 _Always_(_When_(Timeout == NULL, _Acquires_lock_(Lock)))
2894 _When_(Timeout != NULL && return == STATUS_SUCCESS, _Acquires_lock_(Lock))
2895 _When_(Timeout != NULL, _Must_inspect_result_)
2896 WDFAPI
2897 NTSTATUS
2898 VFWDFEXPORT(WdfWaitLockAcquire)(
2899     _In_
2900     PWDF_DRIVER_GLOBALS DriverGlobals,
2901     _In_
2902     _Requires_lock_not_held_(_Curr_)
2903     WDFWAITLOCK Lock,
2904     _In_opt_
2905     PLONGLONG Timeout
2906     );
2907 
2908 _IRQL_requires_max_(DISPATCH_LEVEL)
2909 WDFAPI
2910 VOID
2911 VFWDFEXPORT(WdfWaitLockRelease)(
2912     _In_
2913     PWDF_DRIVER_GLOBALS DriverGlobals,
2914     _In_
2915     _Requires_lock_held_(_Curr_)
2916     _Releases_lock_(_Curr_)
2917     WDFWAITLOCK Lock
2918     );
2919 
2920 _Must_inspect_result_
2921 _IRQL_requires_max_(DISPATCH_LEVEL)
2922 WDFAPI
2923 NTSTATUS
2924 VFWDFEXPORT(WdfSpinLockCreate)(
2925     _In_
2926     PWDF_DRIVER_GLOBALS DriverGlobals,
2927     _In_opt_
2928     PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
2929     _Out_
2930     WDFSPINLOCK* SpinLock
2931     );
2932 
2933 _IRQL_requires_max_(DISPATCH_LEVEL)
2934 _IRQL_raises_(DISPATCH_LEVEL)
2935 WDFAPI
2936 VOID
2937 VFWDFEXPORT(WdfSpinLockAcquire)(
2938     _In_
2939     PWDF_DRIVER_GLOBALS DriverGlobals,
2940     _In_
2941     _Requires_lock_not_held_(_Curr_)
2942     _Acquires_lock_(_Curr_)
2943     _IRQL_saves_
2944     WDFSPINLOCK SpinLock
2945     );
2946 
2947 _IRQL_requires_max_(DISPATCH_LEVEL)
2948 _IRQL_requires_min_(DISPATCH_LEVEL)
2949 WDFAPI
2950 VOID
2951 VFWDFEXPORT(WdfSpinLockRelease)(
2952     _In_
2953     PWDF_DRIVER_GLOBALS DriverGlobals,
2954     _In_
2955     _Requires_lock_held_(_Curr_)
2956     _Releases_lock_(_Curr_)
2957     _IRQL_restores_
2958     WDFSPINLOCK SpinLock
2959     );
2960 
2961 _Must_inspect_result_
2962 _IRQL_requires_max_(DISPATCH_LEVEL)
2963 WDFAPI
2964 NTSTATUS
2965 VFWDFEXPORT(WdfTimerCreate)(
2966     _In_
2967     PWDF_DRIVER_GLOBALS DriverGlobals,
2968     _In_
2969     PWDF_TIMER_CONFIG Config,
2970     _In_
2971     PWDF_OBJECT_ATTRIBUTES Attributes,
2972     _Out_
2973     WDFTIMER* Timer
2974     );
2975 
2976 _IRQL_requires_max_(DISPATCH_LEVEL)
2977 WDFAPI
2978 BOOLEAN
2979 VFWDFEXPORT(WdfTimerStart)(
2980     _In_
2981     PWDF_DRIVER_GLOBALS DriverGlobals,
2982     _In_
2983     WDFTIMER Timer,
2984     _In_
2985     LONGLONG DueTime
2986     );
2987 
2988 _When_(Wait == __true, _IRQL_requires_max_(PASSIVE_LEVEL))
2989 _When_(Wait == __false, _IRQL_requires_max_(DISPATCH_LEVEL))
2990 WDFAPI
2991 BOOLEAN
2992 VFWDFEXPORT(WdfTimerStop)(
2993     _In_
2994     PWDF_DRIVER_GLOBALS DriverGlobals,
2995     _In_
2996     WDFTIMER Timer,
2997     _In_
2998     BOOLEAN Wait
2999     );
3000 
3001 _IRQL_requires_max_(DISPATCH_LEVEL)
3002 WDFAPI
3003 WDFOBJECT
3004 VFWDFEXPORT(WdfTimerGetParentObject)(
3005     _In_
3006     PWDF_DRIVER_GLOBALS DriverGlobals,
3007     _In_
3008     WDFTIMER Timer
3009     );
3010 
3011 _Must_inspect_result_
3012 _IRQL_requires_max_(PASSIVE_LEVEL)
3013 WDFAPI
3014 NTSTATUS
3015 VFWDFEXPORT(WdfUsbTargetDeviceCreate)(
3016     _In_
3017     PWDF_DRIVER_GLOBALS DriverGlobals,
3018     _In_
3019     WDFDEVICE Device,
3020     _In_opt_
3021     PWDF_OBJECT_ATTRIBUTES Attributes,
3022     _Out_
3023     WDFUSBDEVICE* UsbDevice
3024     );
3025 
3026 _Must_inspect_result_
3027 _IRQL_requires_max_(PASSIVE_LEVEL)
3028 WDFAPI
3029 NTSTATUS
3030 VFWDFEXPORT(WdfUsbTargetDeviceCreateWithParameters)(
3031     _In_
3032     PWDF_DRIVER_GLOBALS DriverGlobals,
3033     _In_
3034     WDFDEVICE Device,
3035     _In_
3036     PWDF_USB_DEVICE_CREATE_CONFIG Config,
3037     _In_opt_
3038     PWDF_OBJECT_ATTRIBUTES Attributes,
3039     _Out_
3040     WDFUSBDEVICE* UsbDevice
3041     );
3042 
3043 _Must_inspect_result_
3044 _IRQL_requires_max_(DISPATCH_LEVEL)
3045 WDFAPI
3046 NTSTATUS
3047 VFWDFEXPORT(WdfUsbTargetDeviceRetrieveInformation)(
3048     _In_
3049     PWDF_DRIVER_GLOBALS DriverGlobals,
3050     _In_
3051     WDFUSBDEVICE UsbDevice,
3052     _Out_
3053     PWDF_USB_DEVICE_INFORMATION Information
3054     );
3055 
3056 _IRQL_requires_max_(PASSIVE_LEVEL)
3057 WDFAPI
3058 VOID
3059 VFWDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor)(
3060     _In_
3061     PWDF_DRIVER_GLOBALS DriverGlobals,
3062     _In_
3063     WDFUSBDEVICE UsbDevice,
3064     _Out_
3065     PUSB_DEVICE_DESCRIPTOR UsbDeviceDescriptor
3066     );
3067 
3068 _Must_inspect_result_
3069 _IRQL_requires_max_(PASSIVE_LEVEL)
3070 WDFAPI
3071 NTSTATUS
3072 VFWDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor)(
3073     _In_
3074     PWDF_DRIVER_GLOBALS DriverGlobals,
3075     _In_
3076     WDFUSBDEVICE UsbDevice,
3077     _Out_writes_bytes_to_opt_(*ConfigDescriptorLength,*ConfigDescriptorLength)
3078     PVOID ConfigDescriptor,
3079     _Inout_
3080     PUSHORT ConfigDescriptorLength
3081     );
3082 
3083 _Must_inspect_result_
3084 _IRQL_requires_max_(PASSIVE_LEVEL)
3085 WDFAPI
3086 NTSTATUS
3087 VFWDFEXPORT(WdfUsbTargetDeviceQueryString)(
3088     _In_
3089     PWDF_DRIVER_GLOBALS DriverGlobals,
3090     _In_
3091     WDFUSBDEVICE UsbDevice,
3092     _In_opt_
3093     WDFREQUEST Request,
3094     _In_opt_
3095     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3096     _Out_writes_opt_(*NumCharacters)
3097     PUSHORT String,
3098     _Inout_
3099     PUSHORT NumCharacters,
3100     _In_
3101     UCHAR StringIndex,
3102     _In_opt_
3103     USHORT LangID
3104     );
3105 
3106 _Must_inspect_result_
3107 _IRQL_requires_max_(PASSIVE_LEVEL)
3108 WDFAPI
3109 NTSTATUS
3110 VFWDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString)(
3111     _In_
3112     PWDF_DRIVER_GLOBALS DriverGlobals,
3113     _In_
3114     WDFUSBDEVICE UsbDevice,
3115     _In_opt_
3116     PWDF_OBJECT_ATTRIBUTES StringMemoryAttributes,
3117     _Out_
3118     WDFMEMORY* StringMemory,
3119     _Out_opt_
3120     PUSHORT NumCharacters,
3121     _In_
3122     UCHAR StringIndex,
3123     _In_opt_
3124     USHORT LangID
3125     );
3126 
3127 _Must_inspect_result_
3128 _IRQL_requires_max_(DISPATCH_LEVEL)
3129 WDFAPI
3130 NTSTATUS
3131 VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForString)(
3132     _In_
3133     PWDF_DRIVER_GLOBALS DriverGlobals,
3134     _In_
3135     WDFUSBDEVICE UsbDevice,
3136     _In_
3137     WDFREQUEST Request,
3138     _In_
3139     WDFMEMORY Memory,
3140     _In_opt_
3141     PWDFMEMORY_OFFSET Offset,
3142     _In_
3143     UCHAR StringIndex,
3144     _In_opt_
3145     USHORT LangID
3146     );
3147 
3148 _IRQL_requires_max_(DISPATCH_LEVEL)
3149 WDFAPI
3150 UCHAR
3151 VFWDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces)(
3152     _In_
3153     PWDF_DRIVER_GLOBALS DriverGlobals,
3154     _In_
3155     WDFUSBDEVICE UsbDevice
3156     );
3157 
3158 _Must_inspect_result_
3159 _IRQL_requires_max_(PASSIVE_LEVEL)
3160 WDFAPI
3161 NTSTATUS
3162 VFWDFEXPORT(WdfUsbTargetDeviceSelectConfig)(
3163     _In_
3164     PWDF_DRIVER_GLOBALS DriverGlobals,
3165     _In_
3166     WDFUSBDEVICE UsbDevice,
3167     _In_opt_
3168     PWDF_OBJECT_ATTRIBUTES PipeAttributes,
3169     _Inout_
3170     PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params
3171     );
3172 
3173 _Must_inspect_result_
3174 _IRQL_requires_max_(PASSIVE_LEVEL)
3175 WDFAPI
3176 NTSTATUS
3177 VFWDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously)(
3178     _In_
3179     PWDF_DRIVER_GLOBALS DriverGlobals,
3180     _In_
3181     WDFUSBDEVICE UsbDevice,
3182     _In_opt_
3183     WDFREQUEST Request,
3184     _In_opt_
3185     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3186     _In_
3187     PWDF_USB_CONTROL_SETUP_PACKET SetupPacket,
3188     _In_opt_
3189     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
3190     _Out_opt_
3191     PULONG BytesTransferred
3192     );
3193 
3194 _Must_inspect_result_
3195 _IRQL_requires_max_(DISPATCH_LEVEL)
3196 WDFAPI
3197 NTSTATUS
3198 VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer)(
3199     _In_
3200     PWDF_DRIVER_GLOBALS DriverGlobals,
3201     _In_
3202     WDFUSBDEVICE UsbDevice,
3203     _In_
3204     WDFREQUEST Request,
3205     _In_
3206     PWDF_USB_CONTROL_SETUP_PACKET SetupPacket,
3207     _In_opt_
3208     WDFMEMORY TransferMemory,
3209     _In_opt_
3210     PWDFMEMORY_OFFSET TransferOffset
3211     );
3212 
3213 _Must_inspect_result_
3214 _IRQL_requires_max_(PASSIVE_LEVEL)
3215 WDFAPI
3216 NTSTATUS
3217 VFWDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously)(
3218     _In_
3219     PWDF_DRIVER_GLOBALS DriverGlobals,
3220     _In_
3221     WDFUSBDEVICE UsbDevice
3222     );
3223 
3224 _Must_inspect_result_
3225 _IRQL_requires_max_(PASSIVE_LEVEL)
3226 WDFAPI
3227 NTSTATUS
3228 VFWDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability)(
3229     _In_
3230     PWDF_DRIVER_GLOBALS DriverGlobals,
3231     _In_
3232     WDFUSBDEVICE UsbDevice,
3233     _In_
3234     CONST GUID* CapabilityType,
3235     _In_
3236     ULONG CapabilityBufferLength,
3237     _When_(CapabilityBufferLength == 0, _Out_opt_)
3238     _When_(CapabilityBufferLength != 0 && ResultLength == NULL, _Out_writes_bytes_(CapabilityBufferLength))
3239     _When_(CapabilityBufferLength != 0 && ResultLength != NULL, _Out_writes_bytes_to_opt_(CapabilityBufferLength, *ResultLength))
3240     PVOID CapabilityBuffer,
3241     _Out_opt_
3242     _When_(ResultLength != NULL,_Deref_out_range_(<=,CapabilityBufferLength))
3243     PULONG ResultLength
3244     );
3245 
3246 _IRQL_requires_max_(DISPATCH_LEVEL)
3247 WDFAPI
3248 VOID
3249 VFWDFEXPORT(WdfUsbTargetPipeGetInformation)(
3250     _In_
3251     PWDF_DRIVER_GLOBALS DriverGlobals,
3252     _In_
3253     WDFUSBPIPE Pipe,
3254     _Out_
3255     PWDF_USB_PIPE_INFORMATION PipeInformation
3256     );
3257 
3258 _IRQL_requires_max_(DISPATCH_LEVEL)
3259 WDFAPI
3260 BOOLEAN
3261 VFWDFEXPORT(WdfUsbTargetPipeIsInEndpoint)(
3262     _In_
3263     PWDF_DRIVER_GLOBALS DriverGlobals,
3264     _In_
3265     WDFUSBPIPE Pipe
3266     );
3267 
3268 _IRQL_requires_max_(DISPATCH_LEVEL)
3269 WDFAPI
3270 BOOLEAN
3271 VFWDFEXPORT(WdfUsbTargetPipeIsOutEndpoint)(
3272     _In_
3273     PWDF_DRIVER_GLOBALS DriverGlobals,
3274     _In_
3275     WDFUSBPIPE Pipe
3276     );
3277 
3278 _IRQL_requires_max_(DISPATCH_LEVEL)
3279 WDFAPI
3280 WDF_USB_PIPE_TYPE
3281 VFWDFEXPORT(WdfUsbTargetPipeGetType)(
3282     _In_
3283     PWDF_DRIVER_GLOBALS DriverGlobals,
3284     _In_
3285     WDFUSBPIPE Pipe
3286     );
3287 
3288 _IRQL_requires_max_(DISPATCH_LEVEL)
3289 WDFAPI
3290 VOID
3291 VFWDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck)(
3292     _In_
3293     PWDF_DRIVER_GLOBALS DriverGlobals,
3294     _In_
3295     WDFUSBPIPE Pipe
3296     );
3297 
3298 _Must_inspect_result_
3299 _IRQL_requires_max_(PASSIVE_LEVEL)
3300 WDFAPI
3301 NTSTATUS
3302 VFWDFEXPORT(WdfUsbTargetPipeWriteSynchronously)(
3303     _In_
3304     PWDF_DRIVER_GLOBALS DriverGlobals,
3305     _In_
3306     WDFUSBPIPE Pipe,
3307     _In_opt_
3308     WDFREQUEST Request,
3309     _In_opt_
3310     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3311     _In_opt_
3312     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
3313     _Out_opt_
3314     PULONG BytesWritten
3315     );
3316 
3317 _Must_inspect_result_
3318 _IRQL_requires_max_(DISPATCH_LEVEL)
3319 WDFAPI
3320 NTSTATUS
3321 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite)(
3322     _In_
3323     PWDF_DRIVER_GLOBALS DriverGlobals,
3324     _In_
3325     WDFUSBPIPE Pipe,
3326     _In_
3327     WDFREQUEST Request,
3328     _In_opt_
3329     WDFMEMORY WriteMemory,
3330     _In_opt_
3331     PWDFMEMORY_OFFSET WriteOffset
3332     );
3333 
3334 _Must_inspect_result_
3335 _IRQL_requires_max_(PASSIVE_LEVEL)
3336 WDFAPI
3337 NTSTATUS
3338 VFWDFEXPORT(WdfUsbTargetPipeReadSynchronously)(
3339     _In_
3340     PWDF_DRIVER_GLOBALS DriverGlobals,
3341     _In_
3342     WDFUSBPIPE Pipe,
3343     _In_opt_
3344     WDFREQUEST Request,
3345     _In_opt_
3346     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3347     _In_opt_
3348     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
3349     _Out_opt_
3350     PULONG BytesRead
3351     );
3352 
3353 _Must_inspect_result_
3354 _IRQL_requires_max_(DISPATCH_LEVEL)
3355 WDFAPI
3356 NTSTATUS
3357 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForRead)(
3358     _In_
3359     PWDF_DRIVER_GLOBALS DriverGlobals,
3360     _In_
3361     WDFUSBPIPE Pipe,
3362     _In_
3363     WDFREQUEST Request,
3364     _In_opt_
3365     WDFMEMORY ReadMemory,
3366     _In_opt_
3367     PWDFMEMORY_OFFSET ReadOffset
3368     );
3369 
3370 _Must_inspect_result_
3371 _IRQL_requires_max_(DISPATCH_LEVEL)
3372 WDFAPI
3373 NTSTATUS
3374 VFWDFEXPORT(WdfUsbTargetPipeConfigContinuousReader)(
3375     _In_
3376     PWDF_DRIVER_GLOBALS DriverGlobals,
3377     _In_
3378     WDFUSBPIPE Pipe,
3379     _In_
3380     PWDF_USB_CONTINUOUS_READER_CONFIG Config
3381     );
3382 
3383 _Must_inspect_result_
3384 _IRQL_requires_max_(PASSIVE_LEVEL)
3385 WDFAPI
3386 NTSTATUS
3387 VFWDFEXPORT(WdfUsbTargetPipeAbortSynchronously)(
3388     _In_
3389     PWDF_DRIVER_GLOBALS DriverGlobals,
3390     _In_
3391     WDFUSBPIPE Pipe,
3392     _In_opt_
3393     WDFREQUEST Request,
3394     _In_opt_
3395     PWDF_REQUEST_SEND_OPTIONS RequestOptions
3396     );
3397 
3398 _Must_inspect_result_
3399 _IRQL_requires_max_(DISPATCH_LEVEL)
3400 WDFAPI
3401 NTSTATUS
3402 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort)(
3403     _In_
3404     PWDF_DRIVER_GLOBALS DriverGlobals,
3405     _In_
3406     WDFUSBPIPE Pipe,
3407     _In_
3408     WDFREQUEST Request
3409     );
3410 
3411 _Must_inspect_result_
3412 _IRQL_requires_max_(PASSIVE_LEVEL)
3413 WDFAPI
3414 NTSTATUS
3415 VFWDFEXPORT(WdfUsbTargetPipeResetSynchronously)(
3416     _In_
3417     PWDF_DRIVER_GLOBALS DriverGlobals,
3418     _In_
3419     WDFUSBPIPE Pipe,
3420     _In_opt_
3421     WDFREQUEST Request,
3422     _In_opt_
3423     PWDF_REQUEST_SEND_OPTIONS RequestOptions
3424     );
3425 
3426 _Must_inspect_result_
3427 _IRQL_requires_max_(DISPATCH_LEVEL)
3428 WDFAPI
3429 NTSTATUS
3430 VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForReset)(
3431     _In_
3432     PWDF_DRIVER_GLOBALS DriverGlobals,
3433     _In_
3434     WDFUSBPIPE Pipe,
3435     _In_
3436     WDFREQUEST Request
3437     );
3438 
3439 _IRQL_requires_max_(DISPATCH_LEVEL)
3440 WDFAPI
3441 BYTE
3442 VFWDFEXPORT(WdfUsbInterfaceGetInterfaceNumber)(
3443     _In_
3444     PWDF_DRIVER_GLOBALS DriverGlobals,
3445     _In_
3446     WDFUSBINTERFACE UsbInterface
3447     );
3448 
3449 _IRQL_requires_max_(DISPATCH_LEVEL)
3450 WDFAPI
3451 BYTE
3452 VFWDFEXPORT(WdfUsbInterfaceGetNumEndpoints)(
3453     _In_
3454     PWDF_DRIVER_GLOBALS DriverGlobals,
3455     _In_
3456     WDFUSBINTERFACE UsbInterface,
3457     _In_
3458     UCHAR SettingIndex
3459     );
3460 
3461 _IRQL_requires_max_(DISPATCH_LEVEL)
3462 WDFAPI
3463 VOID
3464 VFWDFEXPORT(WdfUsbInterfaceGetDescriptor)(
3465     _In_
3466     PWDF_DRIVER_GLOBALS DriverGlobals,
3467     _In_
3468     WDFUSBINTERFACE UsbInterface,
3469     _In_
3470     UCHAR SettingIndex,
3471     _Out_
3472     PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
3473     );
3474 
3475 _IRQL_requires_max_(DISPATCH_LEVEL)
3476 WDFAPI
3477 BYTE
3478 VFWDFEXPORT(WdfUsbInterfaceGetNumSettings)(
3479     _In_
3480     PWDF_DRIVER_GLOBALS DriverGlobals,
3481     _In_
3482     WDFUSBINTERFACE UsbInterface
3483     );
3484 
3485 _Must_inspect_result_
3486 _IRQL_requires_max_(PASSIVE_LEVEL)
3487 WDFAPI
3488 NTSTATUS
3489 VFWDFEXPORT(WdfUsbInterfaceSelectSetting)(
3490     _In_
3491     PWDF_DRIVER_GLOBALS DriverGlobals,
3492     _In_
3493     WDFUSBINTERFACE UsbInterface,
3494     _In_opt_
3495     PWDF_OBJECT_ATTRIBUTES PipesAttributes,
3496     _In_
3497     PWDF_USB_INTERFACE_SELECT_SETTING_PARAMS Params
3498     );
3499 
3500 _IRQL_requires_max_(DISPATCH_LEVEL)
3501 WDFAPI
3502 VOID
3503 VFWDFEXPORT(WdfUsbInterfaceGetEndpointInformation)(
3504     _In_
3505     PWDF_DRIVER_GLOBALS DriverGlobals,
3506     _In_
3507     WDFUSBINTERFACE UsbInterface,
3508     _In_
3509     UCHAR SettingIndex,
3510     _In_
3511     UCHAR EndpointIndex,
3512     _Out_
3513     PWDF_USB_PIPE_INFORMATION EndpointInfo
3514     );
3515 
3516 _IRQL_requires_max_(DISPATCH_LEVEL)
3517 WDFAPI
3518 WDFUSBINTERFACE
3519 VFWDFEXPORT(WdfUsbTargetDeviceGetInterface)(
3520     _In_
3521     PWDF_DRIVER_GLOBALS DriverGlobals,
3522     _In_
3523     WDFUSBDEVICE UsbDevice,
3524     _In_
3525     UCHAR InterfaceIndex
3526     );
3527 
3528 _IRQL_requires_max_(DISPATCH_LEVEL)
3529 WDFAPI
3530 BYTE
3531 VFWDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex)(
3532     _In_
3533     PWDF_DRIVER_GLOBALS DriverGlobals,
3534     _In_
3535     WDFUSBINTERFACE Interface
3536     );
3537 
3538 _IRQL_requires_max_(DISPATCH_LEVEL)
3539 WDFAPI
3540 BYTE
3541 VFWDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes)(
3542     _In_
3543     PWDF_DRIVER_GLOBALS DriverGlobals,
3544     _In_
3545     WDFUSBINTERFACE UsbInterface
3546     );
3547 
3548 _IRQL_requires_max_(DISPATCH_LEVEL)
3549 WDFAPI
3550 WDFUSBPIPE
3551 VFWDFEXPORT(WdfUsbInterfaceGetConfiguredPipe)(
3552     _In_
3553     PWDF_DRIVER_GLOBALS DriverGlobals,
3554     _In_
3555     WDFUSBINTERFACE UsbInterface,
3556     _In_
3557     UCHAR PipeIndex,
3558     _Out_opt_
3559     PWDF_USB_PIPE_INFORMATION PipeInfo
3560     );
3561 
3562 WDFAPI
3563 VOID
3564 VFWDFEXPORT(WdfVerifierDbgBreakPoint)(
3565     _In_
3566     PWDF_DRIVER_GLOBALS DriverGlobals
3567     );
3568 
3569 WDFAPI
3570 VOID
3571 VFWDFEXPORT(WdfVerifierKeBugCheck)(
3572     _In_
3573     PWDF_DRIVER_GLOBALS DriverGlobals,
3574     _In_
3575     ULONG BugCheckCode,
3576     _In_
3577     ULONG_PTR BugCheckParameter1,
3578     _In_
3579     ULONG_PTR BugCheckParameter2,
3580     _In_
3581     ULONG_PTR BugCheckParameter3,
3582     _In_
3583     ULONG_PTR BugCheckParameter4
3584     );
3585 
3586 WDFAPI
3587 PVOID
3588 VFWDFEXPORT(WdfGetTriageInfo)(
3589     _In_
3590     PWDF_DRIVER_GLOBALS DriverGlobals
3591     );
3592 
3593 _Must_inspect_result_
3594 _IRQL_requires_max_(DISPATCH_LEVEL)
3595 WDFAPI
3596 NTSTATUS
3597 VFWDFEXPORT(WdfWorkItemCreate)(
3598     _In_
3599     PWDF_DRIVER_GLOBALS DriverGlobals,
3600     _In_
3601     PWDF_WORKITEM_CONFIG Config,
3602     _In_
3603     PWDF_OBJECT_ATTRIBUTES Attributes,
3604     _Out_
3605     WDFWORKITEM* WorkItem
3606     );
3607 
3608 _IRQL_requires_max_(DISPATCH_LEVEL)
3609 WDFAPI
3610 VOID
3611 VFWDFEXPORT(WdfWorkItemEnqueue)(
3612     _In_
3613     PWDF_DRIVER_GLOBALS DriverGlobals,
3614     _In_
3615     WDFWORKITEM WorkItem
3616     );
3617 
3618 _IRQL_requires_max_(DISPATCH_LEVEL)
3619 WDFAPI
3620 WDFOBJECT
3621 VFWDFEXPORT(WdfWorkItemGetParentObject)(
3622     _In_
3623     PWDF_DRIVER_GLOBALS DriverGlobals,
3624     _In_
3625     WDFWORKITEM WorkItem
3626     );
3627 
3628 _IRQL_requires_max_(PASSIVE_LEVEL)
3629 WDFAPI
3630 VOID
3631 VFWDFEXPORT(WdfWorkItemFlush)(
3632     _In_
3633     PWDF_DRIVER_GLOBALS DriverGlobals,
3634     _In_
3635     WDFWORKITEM WorkItem
3636     );
3637 
3638 
3639 #ifdef VF_FX_DYNAMICS_GENERATE_TABLE
3640 
3641 WDFVERSION VfWdfVersion = {
3642     sizeof(WDFVERSION),
3643     sizeof(WDFFUNCTIONS)/sizeof(PVOID),
3644     {
3645         VFWDFEXPORT(WdfCollectionCreate),
3646         VFWDFEXPORT(WdfCollectionGetCount),
3647         VFWDFEXPORT(WdfCollectionAdd),
3648         VFWDFEXPORT(WdfCollectionRemove),
3649         VFWDFEXPORT(WdfCollectionRemoveItem),
3650         VFWDFEXPORT(WdfCollectionGetItem),
3651         VFWDFEXPORT(WdfCollectionGetFirstItem),
3652         VFWDFEXPORT(WdfCollectionGetLastItem),
3653         VFWDFEXPORT(WdfCxDeviceInitAllocate),
3654         VFWDFEXPORT(WdfCxDeviceInitSetRequestAttributes),
3655         VFWDFEXPORT(WdfCxDeviceInitSetFileObjectConfig),
3656         VFWDFEXPORT(WdfCxVerifierKeBugCheck),
3657         VFWDFEXPORT(WdfDeviceGetDeviceState),
3658         VFWDFEXPORT(WdfDeviceSetDeviceState),
3659         VFWDFEXPORT(WdfDeviceGetDriver),
3660         VFWDFEXPORT(WdfDeviceGetIoTarget),
3661         VFWDFEXPORT(WdfDeviceAssignS0IdleSettings),
3662         VFWDFEXPORT(WdfDeviceAssignSxWakeSettings),
3663         VFWDFEXPORT(WdfDeviceOpenRegistryKey),
3664         VFWDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks),
3665         VFWDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks),
3666         VFWDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership),
3667         VFWDFEXPORT(WdfDeviceInitSetIoType),
3668         VFWDFEXPORT(WdfDeviceInitSetFileObjectConfig),
3669         VFWDFEXPORT(WdfDeviceInitSetRequestAttributes),
3670         VFWDFEXPORT(WdfDeviceCreate),
3671         VFWDFEXPORT(WdfDeviceSetStaticStopRemove),
3672         VFWDFEXPORT(WdfDeviceCreateDeviceInterface),
3673         VFWDFEXPORT(WdfDeviceSetDeviceInterfaceState),
3674         VFWDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString),
3675         VFWDFEXPORT(WdfDeviceCreateSymbolicLink),
3676         VFWDFEXPORT(WdfDeviceQueryProperty),
3677         VFWDFEXPORT(WdfDeviceAllocAndQueryProperty),
3678         VFWDFEXPORT(WdfDeviceSetPnpCapabilities),
3679         VFWDFEXPORT(WdfDeviceSetPowerCapabilities),
3680         VFWDFEXPORT(WdfDeviceSetFailed),
3681         VFWDFEXPORT(WdfDeviceStopIdleNoTrack),
3682         VFWDFEXPORT(WdfDeviceResumeIdleNoTrack),
3683         VFWDFEXPORT(WdfDeviceGetFileObject),
3684         VFWDFEXPORT(WdfDeviceGetDefaultQueue),
3685         VFWDFEXPORT(WdfDeviceConfigureRequestDispatching),
3686         VFWDFEXPORT(WdfDeviceGetSystemPowerAction),
3687         VFWDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure),
3688         VFWDFEXPORT(WdfDeviceInitSetIoTypeEx),
3689         VFWDFEXPORT(WdfDevicePostEvent),
3690         VFWDFEXPORT(WdfDeviceMapIoSpace),
3691         VFWDFEXPORT(WdfDeviceUnmapIoSpace),
3692         VFWDFEXPORT(WdfDeviceGetHardwareRegisterMappedAddress),
3693         VFWDFEXPORT(WdfDeviceReadFromHardware),
3694         VFWDFEXPORT(WdfDeviceWriteToHardware),
3695         VFWDFEXPORT(WdfDeviceAssignInterfaceProperty),
3696         VFWDFEXPORT(WdfDeviceAllocAndQueryInterfaceProperty),
3697         VFWDFEXPORT(WdfDeviceQueryInterfaceProperty),
3698         VFWDFEXPORT(WdfDeviceGetDeviceStackIoType),
3699         VFWDFEXPORT(WdfDeviceQueryPropertyEx),
3700         VFWDFEXPORT(WdfDeviceAllocAndQueryPropertyEx),
3701         VFWDFEXPORT(WdfDeviceAssignProperty),
3702         VFWDFEXPORT(WdfDriverCreate),
3703         VFWDFEXPORT(WdfDriverGetRegistryPath),
3704         VFWDFEXPORT(WdfDriverOpenParametersRegistryKey),
3705         VFWDFEXPORT(WdfDriverRetrieveVersionString),
3706         VFWDFEXPORT(WdfDriverIsVersionAvailable),
3707         VFWDFEXPORT(WdfFdoInitOpenRegistryKey),
3708         VFWDFEXPORT(WdfFdoInitQueryProperty),
3709         VFWDFEXPORT(WdfFdoInitAllocAndQueryProperty),
3710         VFWDFEXPORT(WdfFdoInitQueryPropertyEx),
3711         VFWDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx),
3712         VFWDFEXPORT(WdfFdoInitSetFilter),
3713         VFWDFEXPORT(WdfFileObjectGetFileName),
3714         VFWDFEXPORT(WdfFileObjectGetDevice),
3715         VFWDFEXPORT(WdfFileObjectGetInitiatorProcessId),
3716         VFWDFEXPORT(WdfFileObjectGetRelatedFileObject),
3717         VFWDFEXPORT(WdfInterruptCreate),
3718         VFWDFEXPORT(WdfInterruptQueueDpcForIsr),
3719         VFWDFEXPORT(WdfInterruptQueueWorkItemForIsr),
3720         VFWDFEXPORT(WdfInterruptSynchronize),
3721         VFWDFEXPORT(WdfInterruptAcquireLock),
3722         VFWDFEXPORT(WdfInterruptReleaseLock),
3723         VFWDFEXPORT(WdfInterruptEnable),
3724         VFWDFEXPORT(WdfInterruptDisable),
3725         VFWDFEXPORT(WdfInterruptGetInfo),
3726         VFWDFEXPORT(WdfInterruptSetPolicy),
3727         VFWDFEXPORT(WdfInterruptSetExtendedPolicy),
3728         VFWDFEXPORT(WdfInterruptGetDevice),
3729         VFWDFEXPORT(WdfInterruptTryToAcquireLock),
3730         VFWDFEXPORT(WdfIoQueueCreate),
3731         VFWDFEXPORT(WdfIoQueueGetState),
3732         VFWDFEXPORT(WdfIoQueueStart),
3733         VFWDFEXPORT(WdfIoQueueStop),
3734         VFWDFEXPORT(WdfIoQueueStopSynchronously),
3735         VFWDFEXPORT(WdfIoQueueGetDevice),
3736         VFWDFEXPORT(WdfIoQueueRetrieveNextRequest),
3737         VFWDFEXPORT(WdfIoQueueRetrieveRequestByFileObject),
3738         VFWDFEXPORT(WdfIoQueueFindRequest),
3739         VFWDFEXPORT(WdfIoQueueRetrieveFoundRequest),
3740         VFWDFEXPORT(WdfIoQueueDrainSynchronously),
3741         VFWDFEXPORT(WdfIoQueueDrain),
3742         VFWDFEXPORT(WdfIoQueuePurgeSynchronously),
3743         VFWDFEXPORT(WdfIoQueuePurge),
3744         VFWDFEXPORT(WdfIoQueueReadyNotify),
3745         VFWDFEXPORT(WdfIoQueueStopAndPurge),
3746         VFWDFEXPORT(WdfIoQueueStopAndPurgeSynchronously),
3747         VFWDFEXPORT(WdfIoTargetCreate),
3748         VFWDFEXPORT(WdfIoTargetOpen),
3749         VFWDFEXPORT(WdfIoTargetCloseForQueryRemove),
3750         VFWDFEXPORT(WdfIoTargetClose),
3751         VFWDFEXPORT(WdfIoTargetStart),
3752         VFWDFEXPORT(WdfIoTargetStop),
3753         VFWDFEXPORT(WdfIoTargetPurge),
3754         VFWDFEXPORT(WdfIoTargetGetState),
3755         VFWDFEXPORT(WdfIoTargetGetDevice),
3756         VFWDFEXPORT(WdfIoTargetSendReadSynchronously),
3757         VFWDFEXPORT(WdfIoTargetFormatRequestForRead),
3758         VFWDFEXPORT(WdfIoTargetSendWriteSynchronously),
3759         VFWDFEXPORT(WdfIoTargetFormatRequestForWrite),
3760         VFWDFEXPORT(WdfIoTargetSendIoctlSynchronously),
3761         VFWDFEXPORT(WdfIoTargetFormatRequestForIoctl),
3762         VFWDFEXPORT(WdfMemoryCreate),
3763         VFWDFEXPORT(WdfMemoryCreatePreallocated),
3764         VFWDFEXPORT(WdfMemoryGetBuffer),
3765         VFWDFEXPORT(WdfMemoryAssignBuffer),
3766         VFWDFEXPORT(WdfMemoryCopyToBuffer),
3767         VFWDFEXPORT(WdfMemoryCopyFromBuffer),
3768         VFWDFEXPORT(WdfObjectGetTypedContextWorker),
3769         VFWDFEXPORT(WdfObjectAllocateContext),
3770         VFWDFEXPORT(WdfObjectContextGetObject),
3771         VFWDFEXPORT(WdfObjectReferenceActual),
3772         VFWDFEXPORT(WdfObjectDereferenceActual),
3773         VFWDFEXPORT(WdfObjectCreate),
3774         VFWDFEXPORT(WdfObjectDelete),
3775         VFWDFEXPORT(WdfObjectQuery),
3776         VFWDFEXPORT(WdfRegistryOpenKey),
3777         VFWDFEXPORT(WdfRegistryCreateKey),
3778         VFWDFEXPORT(WdfRegistryClose),
3779         VFWDFEXPORT(WdfRegistryRemoveKey),
3780         VFWDFEXPORT(WdfRegistryRemoveValue),
3781         VFWDFEXPORT(WdfRegistryQueryValue),
3782         VFWDFEXPORT(WdfRegistryQueryMemory),
3783         VFWDFEXPORT(WdfRegistryQueryMultiString),
3784         VFWDFEXPORT(WdfRegistryQueryUnicodeString),
3785         VFWDFEXPORT(WdfRegistryQueryString),
3786         VFWDFEXPORT(WdfRegistryQueryULong),
3787         VFWDFEXPORT(WdfRegistryAssignValue),
3788         VFWDFEXPORT(WdfRegistryAssignMemory),
3789         VFWDFEXPORT(WdfRegistryAssignMultiString),
3790         VFWDFEXPORT(WdfRegistryAssignUnicodeString),
3791         VFWDFEXPORT(WdfRegistryAssignString),
3792         VFWDFEXPORT(WdfRegistryAssignULong),
3793         VFWDFEXPORT(WdfRequestCreate),
3794         VFWDFEXPORT(WdfRequestReuse),
3795         VFWDFEXPORT(WdfRequestChangeTarget),
3796         VFWDFEXPORT(WdfRequestFormatRequestUsingCurrentType),
3797         VFWDFEXPORT(WdfRequestSend),
3798         VFWDFEXPORT(WdfRequestGetStatus),
3799         VFWDFEXPORT(WdfRequestMarkCancelable),
3800         VFWDFEXPORT(WdfRequestMarkCancelableEx),
3801         VFWDFEXPORT(WdfRequestUnmarkCancelable),
3802         VFWDFEXPORT(WdfRequestIsCanceled),
3803         VFWDFEXPORT(WdfRequestCancelSentRequest),
3804         VFWDFEXPORT(WdfRequestIsFrom32BitProcess),
3805         VFWDFEXPORT(WdfRequestSetCompletionRoutine),
3806         VFWDFEXPORT(WdfRequestGetCompletionParams),
3807         VFWDFEXPORT(WdfRequestAllocateTimer),
3808         VFWDFEXPORT(WdfRequestComplete),
3809         VFWDFEXPORT(WdfRequestCompleteWithInformation),
3810         VFWDFEXPORT(WdfRequestGetParameters),
3811         VFWDFEXPORT(WdfRequestRetrieveInputMemory),
3812         VFWDFEXPORT(WdfRequestRetrieveOutputMemory),
3813         VFWDFEXPORT(WdfRequestRetrieveInputBuffer),
3814         VFWDFEXPORT(WdfRequestRetrieveOutputBuffer),
3815         VFWDFEXPORT(WdfRequestSetInformation),
3816         VFWDFEXPORT(WdfRequestGetInformation),
3817         VFWDFEXPORT(WdfRequestGetFileObject),
3818         VFWDFEXPORT(WdfRequestGetRequestorMode),
3819         VFWDFEXPORT(WdfRequestForwardToIoQueue),
3820         VFWDFEXPORT(WdfRequestGetIoQueue),
3821         VFWDFEXPORT(WdfRequestRequeue),
3822         VFWDFEXPORT(WdfRequestStopAcknowledge),
3823         VFWDFEXPORT(WdfRequestImpersonate),
3824         VFWDFEXPORT(WdfRequestGetRequestorProcessId),
3825         VFWDFEXPORT(WdfRequestIsFromUserModeDriver),
3826         VFWDFEXPORT(WdfRequestSetUserModeDriverInitiatedIo),
3827         VFWDFEXPORT(WdfRequestGetUserModeDriverInitiatedIo),
3828         VFWDFEXPORT(WdfRequestSetActivityId),
3829         VFWDFEXPORT(WdfRequestRetrieveActivityId),
3830         VFWDFEXPORT(WdfRequestGetEffectiveIoType),
3831         VFWDFEXPORT(WdfCmResourceListGetCount),
3832         VFWDFEXPORT(WdfCmResourceListGetDescriptor),
3833         VFWDFEXPORT(WdfStringCreate),
3834         VFWDFEXPORT(WdfStringGetUnicodeString),
3835         VFWDFEXPORT(WdfObjectAcquireLock),
3836         VFWDFEXPORT(WdfObjectReleaseLock),
3837         VFWDFEXPORT(WdfWaitLockCreate),
3838         VFWDFEXPORT(WdfWaitLockAcquire),
3839         VFWDFEXPORT(WdfWaitLockRelease),
3840         VFWDFEXPORT(WdfSpinLockCreate),
3841         VFWDFEXPORT(WdfSpinLockAcquire),
3842         VFWDFEXPORT(WdfSpinLockRelease),
3843         VFWDFEXPORT(WdfTimerCreate),
3844         VFWDFEXPORT(WdfTimerStart),
3845         VFWDFEXPORT(WdfTimerStop),
3846         VFWDFEXPORT(WdfTimerGetParentObject),
3847         VFWDFEXPORT(WdfUsbTargetDeviceCreate),
3848         VFWDFEXPORT(WdfUsbTargetDeviceCreateWithParameters),
3849         VFWDFEXPORT(WdfUsbTargetDeviceRetrieveInformation),
3850         VFWDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor),
3851         VFWDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor),
3852         VFWDFEXPORT(WdfUsbTargetDeviceQueryString),
3853         VFWDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString),
3854         VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForString),
3855         VFWDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces),
3856         VFWDFEXPORT(WdfUsbTargetDeviceSelectConfig),
3857         VFWDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously),
3858         VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer),
3859         VFWDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously),
3860         VFWDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability),
3861         VFWDFEXPORT(WdfUsbTargetPipeGetInformation),
3862         VFWDFEXPORT(WdfUsbTargetPipeIsInEndpoint),
3863         VFWDFEXPORT(WdfUsbTargetPipeIsOutEndpoint),
3864         VFWDFEXPORT(WdfUsbTargetPipeGetType),
3865         VFWDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck),
3866         VFWDFEXPORT(WdfUsbTargetPipeWriteSynchronously),
3867         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite),
3868         VFWDFEXPORT(WdfUsbTargetPipeReadSynchronously),
3869         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForRead),
3870         VFWDFEXPORT(WdfUsbTargetPipeConfigContinuousReader),
3871         VFWDFEXPORT(WdfUsbTargetPipeAbortSynchronously),
3872         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort),
3873         VFWDFEXPORT(WdfUsbTargetPipeResetSynchronously),
3874         VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForReset),
3875         VFWDFEXPORT(WdfUsbInterfaceGetInterfaceNumber),
3876         VFWDFEXPORT(WdfUsbInterfaceGetNumEndpoints),
3877         VFWDFEXPORT(WdfUsbInterfaceGetDescriptor),
3878         VFWDFEXPORT(WdfUsbInterfaceGetNumSettings),
3879         VFWDFEXPORT(WdfUsbInterfaceSelectSetting),
3880         VFWDFEXPORT(WdfUsbInterfaceGetEndpointInformation),
3881         VFWDFEXPORT(WdfUsbTargetDeviceGetInterface),
3882         VFWDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex),
3883         VFWDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes),
3884         VFWDFEXPORT(WdfUsbInterfaceGetConfiguredPipe),
3885         VFWDFEXPORT(WdfVerifierDbgBreakPoint),
3886         VFWDFEXPORT(WdfVerifierKeBugCheck),
3887         VFWDFEXPORT(WdfGetTriageInfo),
3888         VFWDFEXPORT(WdfWorkItemCreate),
3889         VFWDFEXPORT(WdfWorkItemEnqueue),
3890         VFWDFEXPORT(WdfWorkItemGetParentObject),
3891         VFWDFEXPORT(WdfWorkItemFlush),
3892         VFWDFEXPORT(WdfRegistryWdmGetHandle),
3893         VFWDFEXPORT(WdfDeviceStopIdleActual),
3894         VFWDFEXPORT(WdfDeviceResumeIdleActual),
3895         VFWDFEXPORT(WdfDeviceInitEnableHidInterface),
3896         VFWDFEXPORT(WdfDeviceHidNotifyPresence),
3897         VFWDFEXPORT(WdfDeviceGetSelfIoTarget),
3898         VFWDFEXPORT(WdfDeviceInitAllowSelfIoTarget),
3899         VFWDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue),
3900         VFWDFEXPORT(WdfDeviceOpenDevicemapKey),
3901         VFWDFEXPORT(WdfIoTargetWdmGetTargetFileHandle),
3902         VFWDFEXPORT(WdfDeviceWdmDispatchIrp),
3903         VFWDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue),
3904         VFWDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback),
3905     }
3906 };
3907 
3908 #endif // VF_FX_DYNAMICS_GENERATE_TABLE
3909 
3910 #endif // _VFFXDYNAMICS_H_
3911 
3912