1 /*++
2 
3 Module Name: FxDynamics.h
4 
5 Abstract:
6     Generated header for WDF APIs
7 
8 Environment:
9     kernel mode only
10 
11     Warning: manual changes to this file will be lost.
12 --*/
13 
14 #ifndef _FXDYNAMICS_H_
15 #define _FXDYNAMICS_H_
16 
17 typedef WDFAPI NTSTATUS
18 (STDCALL *PFN_ROSWDFUNIMPLEMENTED)(VOID);
19 
20 WDFAPI
21 NTSTATUS
22 STDCALL
23 WdfApiNotImplemented();
24 
25 
26 typedef struct _WDFFUNCTIONS {
27 
28     PFN_WDFCHILDLISTCREATE                                    pfnWdfChildListCreate;
29     PFN_WDFCHILDLISTGETDEVICE                                 pfnWdfChildListGetDevice;
30     PFN_WDFCHILDLISTRETRIEVEPDO                               pfnWdfChildListRetrievePdo;
31     PFN_WDFCHILDLISTRETRIEVEADDRESSDESCRIPTION                pfnWdfChildListRetrieveAddressDescription;
32     PFN_WDFCHILDLISTBEGINSCAN                                 pfnWdfChildListBeginScan;
33     PFN_WDFCHILDLISTENDSCAN                                   pfnWdfChildListEndScan;
34     PFN_WDFCHILDLISTBEGINITERATION                            pfnWdfChildListBeginIteration;
35     PFN_WDFCHILDLISTRETRIEVENEXTDEVICE                        pfnWdfChildListRetrieveNextDevice;
36     PFN_WDFCHILDLISTENDITERATION                              pfnWdfChildListEndIteration;
37     PFN_WDFCHILDLISTADDORUPDATECHILDDESCRIPTIONASPRESENT      pfnWdfChildListAddOrUpdateChildDescriptionAsPresent;
38     PFN_WDFCHILDLISTUPDATECHILDDESCRIPTIONASMISSING           pfnWdfChildListUpdateChildDescriptionAsMissing;
39     PFN_WDFCHILDLISTUPDATEALLCHILDDESCRIPTIONSASPRESENT       pfnWdfChildListUpdateAllChildDescriptionsAsPresent;
40     PFN_WDFCHILDLISTREQUESTCHILDEJECT                         pfnWdfChildListRequestChildEject;
41     PFN_WDFCOLLECTIONCREATE                                   pfnWdfCollectionCreate;
42     PFN_WDFCOLLECTIONGETCOUNT                                 pfnWdfCollectionGetCount;
43     PFN_WDFCOLLECTIONADD                                      pfnWdfCollectionAdd;
44     PFN_WDFCOLLECTIONREMOVE                                   pfnWdfCollectionRemove;
45     PFN_WDFCOLLECTIONREMOVEITEM                               pfnWdfCollectionRemoveItem;
46     PFN_WDFCOLLECTIONGETITEM                                  pfnWdfCollectionGetItem;
47     PFN_WDFCOLLECTIONGETFIRSTITEM                             pfnWdfCollectionGetFirstItem;
48     PFN_WDFCOLLECTIONGETLASTITEM                              pfnWdfCollectionGetLastItem;
49     // PFN_WDFCOMMONBUFFERCREATE                                 pfnWdfCommonBufferCreate;
50     // PFN_WDFCOMMONBUFFERGETALIGNEDVIRTUALADDRESS               pfnWdfCommonBufferGetAlignedVirtualAddress;
51     // PFN_WDFCOMMONBUFFERGETALIGNEDLOGICALADDRESS               pfnWdfCommonBufferGetAlignedLogicalAddress;
52     // PFN_WDFCOMMONBUFFERGETLENGTH                              pfnWdfCommonBufferGetLength;
53     PFN_ROSWDFUNIMPLEMENTED                                 pfnWdfCommonBufferCreate;
54     PFN_ROSWDFUNIMPLEMENTED               pfnWdfCommonBufferGetAlignedVirtualAddress;
55     PFN_ROSWDFUNIMPLEMENTED               pfnWdfCommonBufferGetAlignedLogicalAddress;
56     PFN_ROSWDFUNIMPLEMENTED                              pfnWdfCommonBufferGetLength;
57 
58     PFN_WDFCONTROLDEVICEINITALLOCATE                          pfnWdfControlDeviceInitAllocate;
59     PFN_WDFCONTROLDEVICEINITSETSHUTDOWNNOTIFICATION           pfnWdfControlDeviceInitSetShutdownNotification;
60     PFN_WDFCONTROLFINISHINITIALIZING                          pfnWdfControlFinishInitializing;
61     PFN_WDFDEVICEGETDEVICESTATE                               pfnWdfDeviceGetDeviceState;
62     PFN_WDFDEVICESETDEVICESTATE                               pfnWdfDeviceSetDeviceState;
63     PFN_WDFWDMDEVICEGETWDFDEVICEHANDLE                        pfnWdfWdmDeviceGetWdfDeviceHandle;
64     PFN_WDFDEVICEWDMGETDEVICEOBJECT                           pfnWdfDeviceWdmGetDeviceObject;
65     PFN_WDFDEVICEWDMGETATTACHEDDEVICE                         pfnWdfDeviceWdmGetAttachedDevice;
66     PFN_WDFDEVICEWDMGETPHYSICALDEVICE                         pfnWdfDeviceWdmGetPhysicalDevice;
67     PFN_WDFDEVICEWDMDISPATCHPREPROCESSEDIRP                   pfnWdfDeviceWdmDispatchPreprocessedIrp;
68     PFN_WDFDEVICEADDDEPENDENTUSAGEDEVICEOBJECT                pfnWdfDeviceAddDependentUsageDeviceObject;
69     PFN_WDFDEVICEADDREMOVALRELATIONSPHYSICALDEVICE            pfnWdfDeviceAddRemovalRelationsPhysicalDevice;
70     PFN_WDFDEVICEREMOVEREMOVALRELATIONSPHYSICALDEVICE         pfnWdfDeviceRemoveRemovalRelationsPhysicalDevice;
71     PFN_WDFDEVICECLEARREMOVALRELATIONSDEVICES                 pfnWdfDeviceClearRemovalRelationsDevices;
72     PFN_WDFDEVICEGETDRIVER                                    pfnWdfDeviceGetDriver;
73     PFN_WDFDEVICERETRIEVEDEVICENAME                           pfnWdfDeviceRetrieveDeviceName;
74     PFN_WDFDEVICEASSIGNMOFRESOURCENAME                        pfnWdfDeviceAssignMofResourceName;
75     PFN_WDFDEVICEGETIOTARGET                                  pfnWdfDeviceGetIoTarget;
76     PFN_WDFDEVICEGETDEVICEPNPSTATE                            pfnWdfDeviceGetDevicePnpState;
77     PFN_WDFDEVICEGETDEVICEPOWERSTATE                          pfnWdfDeviceGetDevicePowerState;
78     PFN_WDFDEVICEGETDEVICEPOWERPOLICYSTATE                    pfnWdfDeviceGetDevicePowerPolicyState;
79     PFN_WDFDEVICEASSIGNS0IDLESETTINGS                         pfnWdfDeviceAssignS0IdleSettings;
80     PFN_WDFDEVICEASSIGNSXWAKESETTINGS                         pfnWdfDeviceAssignSxWakeSettings;
81     PFN_WDFDEVICEOPENREGISTRYKEY                              pfnWdfDeviceOpenRegistryKey;
82     PFN_WDFDEVICESETSPECIALFILESUPPORT                        pfnWdfDeviceSetSpecialFileSupport;
83     PFN_WDFDEVICESETCHARACTERISTICS                           pfnWdfDeviceSetCharacteristics;
84     PFN_WDFDEVICEGETCHARACTERISTICS                           pfnWdfDeviceGetCharacteristics;
85     PFN_WDFDEVICEGETALIGNMENTREQUIREMENT                      pfnWdfDeviceGetAlignmentRequirement;
86     PFN_WDFDEVICESETALIGNMENTREQUIREMENT                      pfnWdfDeviceSetAlignmentRequirement;
87     PFN_WDFDEVICEINITFREE                                     pfnWdfDeviceInitFree;
88     PFN_WDFDEVICEINITSETPNPPOWEREVENTCALLBACKS                pfnWdfDeviceInitSetPnpPowerEventCallbacks;
89     PFN_WDFDEVICEINITSETPOWERPOLICYEVENTCALLBACKS             pfnWdfDeviceInitSetPowerPolicyEventCallbacks;
90     PFN_WDFDEVICEINITSETPOWERPOLICYOWNERSHIP                  pfnWdfDeviceInitSetPowerPolicyOwnership;
91     PFN_WDFDEVICEINITREGISTERPNPSTATECHANGECALLBACK           pfnWdfDeviceInitRegisterPnpStateChangeCallback;
92     PFN_WDFDEVICEINITREGISTERPOWERSTATECHANGECALLBACK         pfnWdfDeviceInitRegisterPowerStateChangeCallback;
93     PFN_WDFDEVICEINITREGISTERPOWERPOLICYSTATECHANGECALLBACK    pfnWdfDeviceInitRegisterPowerPolicyStateChangeCallback;
94     PFN_WDFDEVICEINITSETIOTYPE                                pfnWdfDeviceInitSetIoType;
95     PFN_WDFDEVICEINITSETEXCLUSIVE                             pfnWdfDeviceInitSetExclusive;
96     PFN_WDFDEVICEINITSETPOWERNOTPAGEABLE                      pfnWdfDeviceInitSetPowerNotPageable;
97     PFN_WDFDEVICEINITSETPOWERPAGEABLE                         pfnWdfDeviceInitSetPowerPageable;
98     PFN_WDFDEVICEINITSETPOWERINRUSH                           pfnWdfDeviceInitSetPowerInrush;
99     PFN_WDFDEVICEINITSETDEVICETYPE                            pfnWdfDeviceInitSetDeviceType;
100     PFN_WDFDEVICEINITASSIGNNAME                               pfnWdfDeviceInitAssignName;
101     PFN_WDFDEVICEINITASSIGNSDDLSTRING                         pfnWdfDeviceInitAssignSDDLString;
102     PFN_WDFDEVICEINITSETDEVICECLASS                           pfnWdfDeviceInitSetDeviceClass;
103     PFN_WDFDEVICEINITSETCHARACTERISTICS                       pfnWdfDeviceInitSetCharacteristics;
104     PFN_WDFDEVICEINITSETFILEOBJECTCONFIG                      pfnWdfDeviceInitSetFileObjectConfig;
105     PFN_WDFDEVICEINITSETREQUESTATTRIBUTES                     pfnWdfDeviceInitSetRequestAttributes;
106     PFN_WDFDEVICEINITASSIGNWDMIRPPREPROCESSCALLBACK           pfnWdfDeviceInitAssignWdmIrpPreprocessCallback;
107     PFN_WDFDEVICEINITSETIOINCALLERCONTEXTCALLBACK             pfnWdfDeviceInitSetIoInCallerContextCallback;
108     PFN_WDFDEVICECREATE                                       pfnWdfDeviceCreate;
109     PFN_WDFDEVICESETSTATICSTOPREMOVE                          pfnWdfDeviceSetStaticStopRemove;
110     PFN_WDFDEVICECREATEDEVICEINTERFACE                        pfnWdfDeviceCreateDeviceInterface;
111     PFN_WDFDEVICESETDEVICEINTERFACESTATE                      pfnWdfDeviceSetDeviceInterfaceState;
112     PFN_WDFDEVICERETRIEVEDEVICEINTERFACESTRING                pfnWdfDeviceRetrieveDeviceInterfaceString;
113     PFN_WDFDEVICECREATESYMBOLICLINK                           pfnWdfDeviceCreateSymbolicLink;
114     PFN_WDFDEVICEQUERYPROPERTY                                pfnWdfDeviceQueryProperty;
115     PFN_WDFDEVICEALLOCANDQUERYPROPERTY                        pfnWdfDeviceAllocAndQueryProperty;
116     PFN_WDFDEVICESETPNPCAPABILITIES                           pfnWdfDeviceSetPnpCapabilities;
117     PFN_WDFDEVICESETPOWERCAPABILITIES                         pfnWdfDeviceSetPowerCapabilities;
118     PFN_WDFDEVICESETBUSINFORMATIONFORCHILDREN                 pfnWdfDeviceSetBusInformationForChildren;
119     PFN_WDFDEVICEINDICATEWAKESTATUS                           pfnWdfDeviceIndicateWakeStatus;
120     PFN_WDFDEVICESETFAILED                                    pfnWdfDeviceSetFailed;
121     PFN_WDFDEVICESTOPIDLENOTRACK                              pfnWdfDeviceStopIdleNoTrack;
122     PFN_WDFDEVICERESUMEIDLENOTRACK                            pfnWdfDeviceResumeIdleNoTrack;
123     PFN_WDFDEVICEGETFILEOBJECT                                pfnWdfDeviceGetFileObject;
124     PFN_WDFDEVICEENQUEUEREQUEST                               pfnWdfDeviceEnqueueRequest;
125     PFN_WDFDEVICEGETDEFAULTQUEUE                              pfnWdfDeviceGetDefaultQueue;
126     PFN_WDFDEVICECONFIGUREREQUESTDISPATCHING                  pfnWdfDeviceConfigureRequestDispatching;
127     // PFN_WDFDMAENABLERCREATE                                   pfnWdfDmaEnablerCreate;
128     // PFN_WDFDMAENABLERGETMAXIMUMLENGTH                         pfnWdfDmaEnablerGetMaximumLength;
129     // PFN_WDFDMAENABLERGETMAXIMUMSCATTERGATHERELEMENTS          pfnWdfDmaEnablerGetMaximumScatterGatherElements;
130     // PFN_WDFDMAENABLERSETMAXIMUMSCATTERGATHERELEMENTS          pfnWdfDmaEnablerSetMaximumScatterGatherElements;
131     // PFN_WDFDMATRANSACTIONCREATE                               pfnWdfDmaTransactionCreate;
132     // PFN_WDFDMATRANSACTIONINITIALIZE                           pfnWdfDmaTransactionInitialize;
133     // PFN_WDFDMATRANSACTIONINITIALIZEUSINGREQUEST               pfnWdfDmaTransactionInitializeUsingRequest;
134     // PFN_WDFDMATRANSACTIONEXECUTE                              pfnWdfDmaTransactionExecute;
135     // PFN_WDFDMATRANSACTIONRELEASE                              pfnWdfDmaTransactionRelease;
136     // PFN_WDFDMATRANSACTIONDMACOMPLETED                         pfnWdfDmaTransactionDmaCompleted;
137     // PFN_WDFDMATRANSACTIONDMACOMPLETEDWITHLENGTH               pfnWdfDmaTransactionDmaCompletedWithLength;
138     // PFN_WDFDMATRANSACTIONDMACOMPLETEDFINAL                    pfnWdfDmaTransactionDmaCompletedFinal;
139     // PFN_WDFDMATRANSACTIONGETBYTESTRANSFERRED                  pfnWdfDmaTransactionGetBytesTransferred;
140     // PFN_WDFDMATRANSACTIONSETMAXIMUMLENGTH                     pfnWdfDmaTransactionSetMaximumLength;
141     // PFN_WDFDMATRANSACTIONGETREQUEST                           pfnWdfDmaTransactionGetRequest;
142     // PFN_WDFDMATRANSACTIONGETCURRENTDMATRANSFERLENGTH          pfnWdfDmaTransactionGetCurrentDmaTransferLength;
143     // PFN_WDFDMATRANSACTIONGETDEVICE                            pfnWdfDmaTransactionGetDevice;
144     PFN_ROSWDFUNIMPLEMENTED                                   pfnWdfDmaEnablerCreate;
145     PFN_ROSWDFUNIMPLEMENTED                         pfnWdfDmaEnablerGetMaximumLength;
146     PFN_ROSWDFUNIMPLEMENTED          pfnWdfDmaEnablerGetMaximumScatterGatherElements;
147     PFN_ROSWDFUNIMPLEMENTED          pfnWdfDmaEnablerSetMaximumScatterGatherElements;
148     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfDmaTransactionCreate;
149     PFN_ROSWDFUNIMPLEMENTED                           pfnWdfDmaTransactionInitialize;
150     PFN_ROSWDFUNIMPLEMENTED               pfnWdfDmaTransactionInitializeUsingRequest;
151     PFN_ROSWDFUNIMPLEMENTED                              pfnWdfDmaTransactionExecute;
152     PFN_ROSWDFUNIMPLEMENTED                              pfnWdfDmaTransactionRelease;
153     PFN_ROSWDFUNIMPLEMENTED                         pfnWdfDmaTransactionDmaCompleted;
154     PFN_ROSWDFUNIMPLEMENTED               pfnWdfDmaTransactionDmaCompletedWithLength;
155     PFN_ROSWDFUNIMPLEMENTED                    pfnWdfDmaTransactionDmaCompletedFinal;
156     PFN_ROSWDFUNIMPLEMENTED                  pfnWdfDmaTransactionGetBytesTransferred;
157     PFN_ROSWDFUNIMPLEMENTED                     pfnWdfDmaTransactionSetMaximumLength;
158     PFN_ROSWDFUNIMPLEMENTED                           pfnWdfDmaTransactionGetRequest;
159     PFN_ROSWDFUNIMPLEMENTED          pfnWdfDmaTransactionGetCurrentDmaTransferLength;
160     PFN_ROSWDFUNIMPLEMENTED                            pfnWdfDmaTransactionGetDevice;
161 
162     PFN_WDFDPCCREATE                                          pfnWdfDpcCreate;
163     PFN_WDFDPCENQUEUE                                         pfnWdfDpcEnqueue;
164     PFN_WDFDPCCANCEL                                          pfnWdfDpcCancel;
165     PFN_WDFDPCGETPARENTOBJECT                                 pfnWdfDpcGetParentObject;
166     PFN_WDFDPCWDMGETDPC                                       pfnWdfDpcWdmGetDpc;
167     PFN_WDFDRIVERCREATE                                       pfnWdfDriverCreate;
168     PFN_WDFDRIVERGETREGISTRYPATH                              pfnWdfDriverGetRegistryPath;
169     PFN_WDFDRIVERWDMGETDRIVEROBJECT                           pfnWdfDriverWdmGetDriverObject;
170     PFN_WDFDRIVEROPENPARAMETERSREGISTRYKEY                    pfnWdfDriverOpenParametersRegistryKey;
171     PFN_WDFWDMDRIVERGETWDFDRIVERHANDLE                        pfnWdfWdmDriverGetWdfDriverHandle;
172     PFN_WDFDRIVERREGISTERTRACEINFO                            pfnWdfDriverRegisterTraceInfo;
173     PFN_WDFDRIVERRETRIEVEVERSIONSTRING                        pfnWdfDriverRetrieveVersionString;
174     PFN_WDFDRIVERISVERSIONAVAILABLE                           pfnWdfDriverIsVersionAvailable;
175     PFN_WDFFDOINITWDMGETPHYSICALDEVICE                        pfnWdfFdoInitWdmGetPhysicalDevice;
176     PFN_WDFFDOINITOPENREGISTRYKEY                             pfnWdfFdoInitOpenRegistryKey;
177     PFN_WDFFDOINITQUERYPROPERTY                               pfnWdfFdoInitQueryProperty;
178     PFN_WDFFDOINITALLOCANDQUERYPROPERTY                       pfnWdfFdoInitAllocAndQueryProperty;
179     PFN_WDFFDOINITSETEVENTCALLBACKS                           pfnWdfFdoInitSetEventCallbacks;
180     PFN_WDFFDOINITSETFILTER                                   pfnWdfFdoInitSetFilter;
181     PFN_WDFFDOINITSETDEFAULTCHILDLISTCONFIG                   pfnWdfFdoInitSetDefaultChildListConfig;
182     PFN_WDFFDOQUERYFORINTERFACE                               pfnWdfFdoQueryForInterface;
183     PFN_WDFFDOGETDEFAULTCHILDLIST                             pfnWdfFdoGetDefaultChildList;
184     PFN_WDFFDOADDSTATICCHILD                                  pfnWdfFdoAddStaticChild;
185     PFN_WDFFDOLOCKSTATICCHILDLISTFORITERATION                 pfnWdfFdoLockStaticChildListForIteration;
186     PFN_WDFFDORETRIEVENEXTSTATICCHILD                         pfnWdfFdoRetrieveNextStaticChild;
187     PFN_WDFFDOUNLOCKSTATICCHILDLISTFROMITERATION              pfnWdfFdoUnlockStaticChildListFromIteration;
188     PFN_WDFFILEOBJECTGETFILENAME                              pfnWdfFileObjectGetFileName;
189     PFN_WDFFILEOBJECTGETFLAGS                                 pfnWdfFileObjectGetFlags;
190     PFN_WDFFILEOBJECTGETDEVICE                                pfnWdfFileObjectGetDevice;
191     PFN_WDFFILEOBJECTWDMGETFILEOBJECT                         pfnWdfFileObjectWdmGetFileObject;
192     PFN_WDFINTERRUPTCREATE                                    pfnWdfInterruptCreate;
193     PFN_WDFINTERRUPTQUEUEDPCFORISR                            pfnWdfInterruptQueueDpcForIsr;
194     PFN_WDFINTERRUPTSYNCHRONIZE                               pfnWdfInterruptSynchronize;
195     PFN_WDFINTERRUPTACQUIRELOCK                               pfnWdfInterruptAcquireLock;
196     PFN_WDFINTERRUPTRELEASELOCK                               pfnWdfInterruptReleaseLock;
197     PFN_WDFINTERRUPTENABLE                                    pfnWdfInterruptEnable;
198     PFN_WDFINTERRUPTDISABLE                                   pfnWdfInterruptDisable;
199     PFN_WDFINTERRUPTWDMGETINTERRUPT                           pfnWdfInterruptWdmGetInterrupt;
200     PFN_WDFINTERRUPTGETINFO                                   pfnWdfInterruptGetInfo;
201     PFN_WDFINTERRUPTSETPOLICY                                 pfnWdfInterruptSetPolicy;
202     PFN_WDFINTERRUPTGETDEVICE                                 pfnWdfInterruptGetDevice;
203     PFN_WDFIOQUEUECREATE                                      pfnWdfIoQueueCreate;
204     PFN_WDFIOQUEUEGETSTATE                                    pfnWdfIoQueueGetState;
205     PFN_WDFIOQUEUESTART                                       pfnWdfIoQueueStart;
206     PFN_WDFIOQUEUESTOP                                        pfnWdfIoQueueStop;
207     PFN_WDFIOQUEUESTOPSYNCHRONOUSLY                           pfnWdfIoQueueStopSynchronously;
208     PFN_WDFIOQUEUEGETDEVICE                                   pfnWdfIoQueueGetDevice;
209     PFN_WDFIOQUEUERETRIEVENEXTREQUEST                         pfnWdfIoQueueRetrieveNextRequest;
210     PFN_WDFIOQUEUERETRIEVEREQUESTBYFILEOBJECT                 pfnWdfIoQueueRetrieveRequestByFileObject;
211     PFN_WDFIOQUEUEFINDREQUEST                                 pfnWdfIoQueueFindRequest;
212     PFN_WDFIOQUEUERETRIEVEFOUNDREQUEST                        pfnWdfIoQueueRetrieveFoundRequest;
213     PFN_WDFIOQUEUEDRAINSYNCHRONOUSLY                          pfnWdfIoQueueDrainSynchronously;
214     PFN_WDFIOQUEUEDRAIN                                       pfnWdfIoQueueDrain;
215     PFN_WDFIOQUEUEPURGESYNCHRONOUSLY                          pfnWdfIoQueuePurgeSynchronously;
216     PFN_WDFIOQUEUEPURGE                                       pfnWdfIoQueuePurge;
217     PFN_WDFIOQUEUEREADYNOTIFY                                 pfnWdfIoQueueReadyNotify;
218     PFN_WDFIOTARGETCREATE                                     pfnWdfIoTargetCreate;
219     PFN_WDFIOTARGETOPEN                                       pfnWdfIoTargetOpen;
220     PFN_WDFIOTARGETCLOSEFORQUERYREMOVE                        pfnWdfIoTargetCloseForQueryRemove;
221     PFN_WDFIOTARGETCLOSE                                      pfnWdfIoTargetClose;
222     PFN_WDFIOTARGETSTART                                      pfnWdfIoTargetStart;
223     PFN_WDFIOTARGETSTOP                                       pfnWdfIoTargetStop;
224     PFN_WDFIOTARGETGETSTATE                                   pfnWdfIoTargetGetState;
225     PFN_WDFIOTARGETGETDEVICE                                  pfnWdfIoTargetGetDevice;
226     PFN_WDFIOTARGETQUERYTARGETPROPERTY                        pfnWdfIoTargetQueryTargetProperty;
227     PFN_WDFIOTARGETALLOCANDQUERYTARGETPROPERTY                pfnWdfIoTargetAllocAndQueryTargetProperty;
228     PFN_WDFIOTARGETQUERYFORINTERFACE                          pfnWdfIoTargetQueryForInterface;
229     PFN_WDFIOTARGETWDMGETTARGETDEVICEOBJECT                   pfnWdfIoTargetWdmGetTargetDeviceObject;
230     PFN_WDFIOTARGETWDMGETTARGETPHYSICALDEVICE                 pfnWdfIoTargetWdmGetTargetPhysicalDevice;
231     PFN_WDFIOTARGETWDMGETTARGETFILEOBJECT                     pfnWdfIoTargetWdmGetTargetFileObject;
232     PFN_WDFIOTARGETWDMGETTARGETFILEHANDLE                     pfnWdfIoTargetWdmGetTargetFileHandle;
233     PFN_WDFIOTARGETSENDREADSYNCHRONOUSLY                      pfnWdfIoTargetSendReadSynchronously;
234     PFN_WDFIOTARGETFORMATREQUESTFORREAD                       pfnWdfIoTargetFormatRequestForRead;
235     PFN_WDFIOTARGETSENDWRITESYNCHRONOUSLY                     pfnWdfIoTargetSendWriteSynchronously;
236     PFN_WDFIOTARGETFORMATREQUESTFORWRITE                      pfnWdfIoTargetFormatRequestForWrite;
237     PFN_WDFIOTARGETSENDIOCTLSYNCHRONOUSLY                     pfnWdfIoTargetSendIoctlSynchronously;
238     PFN_WDFIOTARGETFORMATREQUESTFORIOCTL                      pfnWdfIoTargetFormatRequestForIoctl;
239     PFN_WDFIOTARGETSENDINTERNALIOCTLSYNCHRONOUSLY             pfnWdfIoTargetSendInternalIoctlSynchronously;
240     PFN_WDFIOTARGETFORMATREQUESTFORINTERNALIOCTL              pfnWdfIoTargetFormatRequestForInternalIoctl;
241     PFN_WDFIOTARGETSENDINTERNALIOCTLOTHERSSYNCHRONOUSLY       pfnWdfIoTargetSendInternalIoctlOthersSynchronously;
242     PFN_WDFIOTARGETFORMATREQUESTFORINTERNALIOCTLOTHERS        pfnWdfIoTargetFormatRequestForInternalIoctlOthers;
243     PFN_WDFMEMORYCREATE                                       pfnWdfMemoryCreate;
244     PFN_WDFMEMORYCREATEPREALLOCATED                           pfnWdfMemoryCreatePreallocated;
245     PFN_WDFMEMORYGETBUFFER                                    pfnWdfMemoryGetBuffer;
246     PFN_WDFMEMORYASSIGNBUFFER                                 pfnWdfMemoryAssignBuffer;
247     PFN_WDFMEMORYCOPYTOBUFFER                                 pfnWdfMemoryCopyToBuffer;
248     PFN_WDFMEMORYCOPYFROMBUFFER                               pfnWdfMemoryCopyFromBuffer;
249     PFN_WDFLOOKASIDELISTCREATE                                pfnWdfLookasideListCreate;
250     PFN_WDFMEMORYCREATEFROMLOOKASIDE                          pfnWdfMemoryCreateFromLookaside;
251     PFN_WDFDEVICEMINIPORTCREATE                               pfnWdfDeviceMiniportCreate;
252     PFN_WDFDRIVERMINIPORTUNLOAD                               pfnWdfDriverMiniportUnload;
253     PFN_WDFOBJECTGETTYPEDCONTEXTWORKER                        pfnWdfObjectGetTypedContextWorker;
254     PFN_WDFOBJECTALLOCATECONTEXT                              pfnWdfObjectAllocateContext;
255     PFN_WDFOBJECTCONTEXTGETOBJECT                             pfnWdfObjectContextGetObject;
256     PFN_WDFOBJECTREFERENCEACTUAL                              pfnWdfObjectReferenceActual;
257     PFN_WDFOBJECTDEREFERENCEACTUAL                            pfnWdfObjectDereferenceActual;
258     PFN_WDFOBJECTCREATE                                       pfnWdfObjectCreate;
259     PFN_WDFOBJECTDELETE                                       pfnWdfObjectDelete;
260     PFN_WDFOBJECTQUERY                                        pfnWdfObjectQuery;
261     PFN_WDFPDOINITALLOCATE                                    pfnWdfPdoInitAllocate;
262     PFN_WDFPDOINITSETEVENTCALLBACKS                           pfnWdfPdoInitSetEventCallbacks;
263     PFN_WDFPDOINITASSIGNDEVICEID                              pfnWdfPdoInitAssignDeviceID;
264     PFN_WDFPDOINITASSIGNINSTANCEID                            pfnWdfPdoInitAssignInstanceID;
265     PFN_WDFPDOINITADDHARDWAREID                               pfnWdfPdoInitAddHardwareID;
266     PFN_WDFPDOINITADDCOMPATIBLEID                             pfnWdfPdoInitAddCompatibleID;
267     PFN_WDFPDOINITADDDEVICETEXT                               pfnWdfPdoInitAddDeviceText;
268     PFN_WDFPDOINITSETDEFAULTLOCALE                            pfnWdfPdoInitSetDefaultLocale;
269     PFN_WDFPDOINITASSIGNRAWDEVICE                             pfnWdfPdoInitAssignRawDevice;
270     PFN_WDFPDOMARKMISSING                                     pfnWdfPdoMarkMissing;
271     PFN_WDFPDOREQUESTEJECT                                    pfnWdfPdoRequestEject;
272     PFN_WDFPDOGETPARENT                                       pfnWdfPdoGetParent;
273     PFN_WDFPDORETRIEVEIDENTIFICATIONDESCRIPTION               pfnWdfPdoRetrieveIdentificationDescription;
274     PFN_WDFPDORETRIEVEADDRESSDESCRIPTION                      pfnWdfPdoRetrieveAddressDescription;
275     PFN_WDFPDOUPDATEADDRESSDESCRIPTION                        pfnWdfPdoUpdateAddressDescription;
276     PFN_WDFPDOADDEJECTIONRELATIONSPHYSICALDEVICE              pfnWdfPdoAddEjectionRelationsPhysicalDevice;
277     PFN_WDFPDOREMOVEEJECTIONRELATIONSPHYSICALDEVICE           pfnWdfPdoRemoveEjectionRelationsPhysicalDevice;
278     PFN_WDFPDOCLEAREJECTIONRELATIONSDEVICES                   pfnWdfPdoClearEjectionRelationsDevices;
279     PFN_WDFDEVICEADDQUERYINTERFACE                            pfnWdfDeviceAddQueryInterface;
280     PFN_WDFREGISTRYOPENKEY                                    pfnWdfRegistryOpenKey;
281     PFN_WDFREGISTRYCREATEKEY                                  pfnWdfRegistryCreateKey;
282     PFN_WDFREGISTRYCLOSE                                      pfnWdfRegistryClose;
283     PFN_WDFREGISTRYWDMGETHANDLE                               pfnWdfRegistryWdmGetHandle;
284     PFN_WDFREGISTRYREMOVEKEY                                  pfnWdfRegistryRemoveKey;
285     PFN_WDFREGISTRYREMOVEVALUE                                pfnWdfRegistryRemoveValue;
286     PFN_WDFREGISTRYQUERYVALUE                                 pfnWdfRegistryQueryValue;
287     PFN_WDFREGISTRYQUERYMEMORY                                pfnWdfRegistryQueryMemory;
288     PFN_WDFREGISTRYQUERYMULTISTRING                           pfnWdfRegistryQueryMultiString;
289     PFN_WDFREGISTRYQUERYUNICODESTRING                         pfnWdfRegistryQueryUnicodeString;
290     PFN_WDFREGISTRYQUERYSTRING                                pfnWdfRegistryQueryString;
291     PFN_WDFREGISTRYQUERYULONG                                 pfnWdfRegistryQueryULong;
292     PFN_WDFREGISTRYASSIGNVALUE                                pfnWdfRegistryAssignValue;
293     PFN_WDFREGISTRYASSIGNMEMORY                               pfnWdfRegistryAssignMemory;
294     PFN_WDFREGISTRYASSIGNMULTISTRING                          pfnWdfRegistryAssignMultiString;
295     PFN_WDFREGISTRYASSIGNUNICODESTRING                        pfnWdfRegistryAssignUnicodeString;
296     PFN_WDFREGISTRYASSIGNSTRING                               pfnWdfRegistryAssignString;
297     PFN_WDFREGISTRYASSIGNULONG                                pfnWdfRegistryAssignULong;
298     PFN_WDFREQUESTCREATE                                      pfnWdfRequestCreate;
299     PFN_WDFREQUESTCREATEFROMIRP                               pfnWdfRequestCreateFromIrp;
300     PFN_WDFREQUESTREUSE                                       pfnWdfRequestReuse;
301     PFN_WDFREQUESTCHANGETARGET                                pfnWdfRequestChangeTarget;
302     PFN_WDFREQUESTFORMATREQUESTUSINGCURRENTTYPE               pfnWdfRequestFormatRequestUsingCurrentType;
303     PFN_WDFREQUESTWDMFORMATUSINGSTACKLOCATION                 pfnWdfRequestWdmFormatUsingStackLocation;
304     PFN_WDFREQUESTSEND                                        pfnWdfRequestSend;
305     PFN_WDFREQUESTGETSTATUS                                   pfnWdfRequestGetStatus;
306     PFN_WDFREQUESTMARKCANCELABLE                              pfnWdfRequestMarkCancelable;
307     PFN_WDFREQUESTUNMARKCANCELABLE                            pfnWdfRequestUnmarkCancelable;
308     PFN_WDFREQUESTISCANCELED                                  pfnWdfRequestIsCanceled;
309     PFN_WDFREQUESTCANCELSENTREQUEST                           pfnWdfRequestCancelSentRequest;
310     PFN_WDFREQUESTISFROM32BITPROCESS                          pfnWdfRequestIsFrom32BitProcess;
311     PFN_WDFREQUESTSETCOMPLETIONROUTINE                        pfnWdfRequestSetCompletionRoutine;
312     PFN_WDFREQUESTGETCOMPLETIONPARAMS                         pfnWdfRequestGetCompletionParams;
313     PFN_WDFREQUESTALLOCATETIMER                               pfnWdfRequestAllocateTimer;
314     PFN_WDFREQUESTCOMPLETE                                    pfnWdfRequestComplete;
315     PFN_WDFREQUESTCOMPLETEWITHPRIORITYBOOST                   pfnWdfRequestCompleteWithPriorityBoost;
316     PFN_WDFREQUESTCOMPLETEWITHINFORMATION                     pfnWdfRequestCompleteWithInformation;
317     PFN_WDFREQUESTGETPARAMETERS                               pfnWdfRequestGetParameters;
318     PFN_WDFREQUESTRETRIEVEINPUTMEMORY                         pfnWdfRequestRetrieveInputMemory;
319     PFN_WDFREQUESTRETRIEVEOUTPUTMEMORY                        pfnWdfRequestRetrieveOutputMemory;
320     PFN_WDFREQUESTRETRIEVEINPUTBUFFER                         pfnWdfRequestRetrieveInputBuffer;
321     PFN_WDFREQUESTRETRIEVEOUTPUTBUFFER                        pfnWdfRequestRetrieveOutputBuffer;
322     PFN_WDFREQUESTRETRIEVEINPUTWDMMDL                         pfnWdfRequestRetrieveInputWdmMdl;
323     PFN_WDFREQUESTRETRIEVEOUTPUTWDMMDL                        pfnWdfRequestRetrieveOutputWdmMdl;
324     PFN_WDFREQUESTRETRIEVEUNSAFEUSERINPUTBUFFER               pfnWdfRequestRetrieveUnsafeUserInputBuffer;
325     PFN_WDFREQUESTRETRIEVEUNSAFEUSEROUTPUTBUFFER              pfnWdfRequestRetrieveUnsafeUserOutputBuffer;
326     PFN_WDFREQUESTSETINFORMATION                              pfnWdfRequestSetInformation;
327     PFN_WDFREQUESTGETINFORMATION                              pfnWdfRequestGetInformation;
328     PFN_WDFREQUESTGETFILEOBJECT                               pfnWdfRequestGetFileObject;
329     PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORREAD               pfnWdfRequestProbeAndLockUserBufferForRead;
330     PFN_WDFREQUESTPROBEANDLOCKUSERBUFFERFORWRITE              pfnWdfRequestProbeAndLockUserBufferForWrite;
331     PFN_WDFREQUESTGETREQUESTORMODE                            pfnWdfRequestGetRequestorMode;
332     PFN_WDFREQUESTFORWARDTOIOQUEUE                            pfnWdfRequestForwardToIoQueue;
333     PFN_WDFREQUESTGETIOQUEUE                                  pfnWdfRequestGetIoQueue;
334     PFN_WDFREQUESTREQUEUE                                     pfnWdfRequestRequeue;
335     PFN_WDFREQUESTSTOPACKNOWLEDGE                             pfnWdfRequestStopAcknowledge;
336     PFN_WDFREQUESTWDMGETIRP                                   pfnWdfRequestWdmGetIrp;
337     PFN_WDFIORESOURCEREQUIREMENTSLISTSETSLOTNUMBER            pfnWdfIoResourceRequirementsListSetSlotNumber;
338     PFN_WDFIORESOURCEREQUIREMENTSLISTSETINTERFACETYPE         pfnWdfIoResourceRequirementsListSetInterfaceType;
339     PFN_WDFIORESOURCEREQUIREMENTSLISTAPPENDIORESLIST          pfnWdfIoResourceRequirementsListAppendIoResList;
340     PFN_WDFIORESOURCEREQUIREMENTSLISTINSERTIORESLIST          pfnWdfIoResourceRequirementsListInsertIoResList;
341     PFN_WDFIORESOURCEREQUIREMENTSLISTGETCOUNT                 pfnWdfIoResourceRequirementsListGetCount;
342     PFN_WDFIORESOURCEREQUIREMENTSLISTGETIORESLIST             pfnWdfIoResourceRequirementsListGetIoResList;
343     PFN_WDFIORESOURCEREQUIREMENTSLISTREMOVE                   pfnWdfIoResourceRequirementsListRemove;
344     PFN_WDFIORESOURCEREQUIREMENTSLISTREMOVEBYIORESLIST        pfnWdfIoResourceRequirementsListRemoveByIoResList;
345     PFN_WDFIORESOURCELISTCREATE                               pfnWdfIoResourceListCreate;
346     PFN_WDFIORESOURCELISTAPPENDDESCRIPTOR                     pfnWdfIoResourceListAppendDescriptor;
347     PFN_WDFIORESOURCELISTINSERTDESCRIPTOR                     pfnWdfIoResourceListInsertDescriptor;
348     PFN_WDFIORESOURCELISTUPDATEDESCRIPTOR                     pfnWdfIoResourceListUpdateDescriptor;
349     PFN_WDFIORESOURCELISTGETCOUNT                             pfnWdfIoResourceListGetCount;
350     PFN_WDFIORESOURCELISTGETDESCRIPTOR                        pfnWdfIoResourceListGetDescriptor;
351     PFN_WDFIORESOURCELISTREMOVE                               pfnWdfIoResourceListRemove;
352     PFN_WDFIORESOURCELISTREMOVEBYDESCRIPTOR                   pfnWdfIoResourceListRemoveByDescriptor;
353     PFN_WDFCMRESOURCELISTAPPENDDESCRIPTOR                     pfnWdfCmResourceListAppendDescriptor;
354     PFN_WDFCMRESOURCELISTINSERTDESCRIPTOR                     pfnWdfCmResourceListInsertDescriptor;
355     PFN_WDFCMRESOURCELISTGETCOUNT                             pfnWdfCmResourceListGetCount;
356     PFN_WDFCMRESOURCELISTGETDESCRIPTOR                        pfnWdfCmResourceListGetDescriptor;
357     PFN_WDFCMRESOURCELISTREMOVE                               pfnWdfCmResourceListRemove;
358     PFN_WDFCMRESOURCELISTREMOVEBYDESCRIPTOR                   pfnWdfCmResourceListRemoveByDescriptor;
359     PFN_WDFSTRINGCREATE                                       pfnWdfStringCreate;
360     PFN_WDFSTRINGGETUNICODESTRING                             pfnWdfStringGetUnicodeString;
361     PFN_WDFOBJECTACQUIRELOCK                                  pfnWdfObjectAcquireLock;
362     PFN_WDFOBJECTRELEASELOCK                                  pfnWdfObjectReleaseLock;
363     PFN_WDFWAITLOCKCREATE                                     pfnWdfWaitLockCreate;
364     PFN_WDFWAITLOCKACQUIRE                                    pfnWdfWaitLockAcquire;
365     PFN_WDFWAITLOCKRELEASE                                    pfnWdfWaitLockRelease;
366     PFN_WDFSPINLOCKCREATE                                     pfnWdfSpinLockCreate;
367     PFN_WDFSPINLOCKACQUIRE                                    pfnWdfSpinLockAcquire;
368     PFN_WDFSPINLOCKRELEASE                                    pfnWdfSpinLockRelease;
369     PFN_WDFTIMERCREATE                                        pfnWdfTimerCreate;
370     PFN_WDFTIMERSTART                                         pfnWdfTimerStart;
371     PFN_WDFTIMERSTOP                                          pfnWdfTimerStop;
372     PFN_WDFTIMERGETPARENTOBJECT                               pfnWdfTimerGetParentObject;
373     // PFN_WDFUSBTARGETDEVICECREATE                              pfnWdfUsbTargetDeviceCreate;
374     // PFN_WDFUSBTARGETDEVICERETRIEVEINFORMATION                 pfnWdfUsbTargetDeviceRetrieveInformation;
375     // PFN_WDFUSBTARGETDEVICEGETDEVICEDESCRIPTOR                 pfnWdfUsbTargetDeviceGetDeviceDescriptor;
376     // PFN_WDFUSBTARGETDEVICERETRIEVECONFIGDESCRIPTOR            pfnWdfUsbTargetDeviceRetrieveConfigDescriptor;
377     // PFN_WDFUSBTARGETDEVICEQUERYSTRING                         pfnWdfUsbTargetDeviceQueryString;
378     // PFN_WDFUSBTARGETDEVICEALLOCANDQUERYSTRING                 pfnWdfUsbTargetDeviceAllocAndQueryString;
379     // PFN_WDFUSBTARGETDEVICEFORMATREQUESTFORSTRING              pfnWdfUsbTargetDeviceFormatRequestForString;
380     // PFN_WDFUSBTARGETDEVICEGETNUMINTERFACES                    pfnWdfUsbTargetDeviceGetNumInterfaces;
381     // PFN_WDFUSBTARGETDEVICESELECTCONFIG                        pfnWdfUsbTargetDeviceSelectConfig;
382     // PFN_WDFUSBTARGETDEVICEWDMGETCONFIGURATIONHANDLE           pfnWdfUsbTargetDeviceWdmGetConfigurationHandle;
383     // PFN_WDFUSBTARGETDEVICERETRIEVECURRENTFRAMENUMBER          pfnWdfUsbTargetDeviceRetrieveCurrentFrameNumber;
384     // PFN_WDFUSBTARGETDEVICESENDCONTROLTRANSFERSYNCHRONOUSLY    pfnWdfUsbTargetDeviceSendControlTransferSynchronously;
385     // PFN_WDFUSBTARGETDEVICEFORMATREQUESTFORCONTROLTRANSFER     pfnWdfUsbTargetDeviceFormatRequestForControlTransfer;
386     // PFN_WDFUSBTARGETDEVICEISCONNECTEDSYNCHRONOUS              pfnWdfUsbTargetDeviceIsConnectedSynchronous;
387     // PFN_WDFUSBTARGETDEVICERESETPORTSYNCHRONOUSLY              pfnWdfUsbTargetDeviceResetPortSynchronously;
388     // PFN_WDFUSBTARGETDEVICECYCLEPORTSYNCHRONOUSLY              pfnWdfUsbTargetDeviceCyclePortSynchronously;
389     // PFN_WDFUSBTARGETDEVICEFORMATREQUESTFORCYCLEPORT           pfnWdfUsbTargetDeviceFormatRequestForCyclePort;
390     // PFN_WDFUSBTARGETDEVICESENDURBSYNCHRONOUSLY                pfnWdfUsbTargetDeviceSendUrbSynchronously;
391     // PFN_WDFUSBTARGETDEVICEFORMATREQUESTFORURB                 pfnWdfUsbTargetDeviceFormatRequestForUrb;
392     // PFN_WDFUSBTARGETPIPEGETINFORMATION                        pfnWdfUsbTargetPipeGetInformation;
393     // PFN_WDFUSBTARGETPIPEISINENDPOINT                          pfnWdfUsbTargetPipeIsInEndpoint;
394     // PFN_WDFUSBTARGETPIPEISOUTENDPOINT                         pfnWdfUsbTargetPipeIsOutEndpoint;
395     // PFN_WDFUSBTARGETPIPEGETTYPE                               pfnWdfUsbTargetPipeGetType;
396     // PFN_WDFUSBTARGETPIPESETNOMAXIMUMPACKETSIZECHECK           pfnWdfUsbTargetPipeSetNoMaximumPacketSizeCheck;
397     // PFN_WDFUSBTARGETPIPEWRITESYNCHRONOUSLY                    pfnWdfUsbTargetPipeWriteSynchronously;
398     // PFN_WDFUSBTARGETPIPEFORMATREQUESTFORWRITE                 pfnWdfUsbTargetPipeFormatRequestForWrite;
399     // PFN_WDFUSBTARGETPIPEREADSYNCHRONOUSLY                     pfnWdfUsbTargetPipeReadSynchronously;
400     // PFN_WDFUSBTARGETPIPEFORMATREQUESTFORREAD                  pfnWdfUsbTargetPipeFormatRequestForRead;
401     // PFN_WDFUSBTARGETPIPECONFIGCONTINUOUSREADER                pfnWdfUsbTargetPipeConfigContinuousReader;
402     // PFN_WDFUSBTARGETPIPEABORTSYNCHRONOUSLY                    pfnWdfUsbTargetPipeAbortSynchronously;
403     // PFN_WDFUSBTARGETPIPEFORMATREQUESTFORABORT                 pfnWdfUsbTargetPipeFormatRequestForAbort;
404     // PFN_WDFUSBTARGETPIPERESETSYNCHRONOUSLY                    pfnWdfUsbTargetPipeResetSynchronously;
405     // PFN_WDFUSBTARGETPIPEFORMATREQUESTFORRESET                 pfnWdfUsbTargetPipeFormatRequestForReset;
406     // PFN_WDFUSBTARGETPIPESENDURBSYNCHRONOUSLY                  pfnWdfUsbTargetPipeSendUrbSynchronously;
407     // PFN_WDFUSBTARGETPIPEFORMATREQUESTFORURB                   pfnWdfUsbTargetPipeFormatRequestForUrb;
408     // PFN_WDFUSBINTERFACEGETINTERFACENUMBER                     pfnWdfUsbInterfaceGetInterfaceNumber;
409     // PFN_WDFUSBINTERFACEGETNUMENDPOINTS                        pfnWdfUsbInterfaceGetNumEndpoints;
410     // PFN_WDFUSBINTERFACEGETDESCRIPTOR                          pfnWdfUsbInterfaceGetDescriptor;
411     // PFN_WDFUSBINTERFACESELECTSETTING                          pfnWdfUsbInterfaceSelectSetting;
412     // PFN_WDFUSBINTERFACEGETENDPOINTINFORMATION                 pfnWdfUsbInterfaceGetEndpointInformation;
413     // PFN_WDFUSBTARGETDEVICEGETINTERFACE                        pfnWdfUsbTargetDeviceGetInterface;
414     // PFN_WDFUSBINTERFACEGETCONFIGUREDSETTINGINDEX              pfnWdfUsbInterfaceGetConfiguredSettingIndex;
415     // PFN_WDFUSBINTERFACEGETNUMCONFIGUREDPIPES                  pfnWdfUsbInterfaceGetNumConfiguredPipes;
416     // PFN_WDFUSBINTERFACEGETCONFIGUREDPIPE                      pfnWdfUsbInterfaceGetConfiguredPipe;
417     // PFN_WDFUSBTARGETPIPEWDMGETPIPEHANDLE                      pfnWdfUsbTargetPipeWdmGetPipeHandle;
418     // PFN_WDFVERIFIERDBGBREAKPOINT                              pfnWdfVerifierDbgBreakPoint;
419     // PFN_WDFVERIFIERKEBUGCHECK                                 pfnWdfVerifierKeBugCheck;
420     // PFN_WDFWMIPROVIDERCREATE                                  pfnWdfWmiProviderCreate;
421     // PFN_WDFWMIPROVIDERGETDEVICE                               pfnWdfWmiProviderGetDevice;
422     // PFN_WDFWMIPROVIDERISENABLED                               pfnWdfWmiProviderIsEnabled;
423     // PFN_WDFWMIPROVIDERGETTRACINGHANDLE                        pfnWdfWmiProviderGetTracingHandle;
424     // PFN_WDFWMIINSTANCECREATE                                  pfnWdfWmiInstanceCreate;
425     // PFN_WDFWMIINSTANCEREGISTER                                pfnWdfWmiInstanceRegister;
426     // PFN_WDFWMIINSTANCEDEREGISTER                              pfnWdfWmiInstanceDeregister;
427     // PFN_WDFWMIINSTANCEGETDEVICE                               pfnWdfWmiInstanceGetDevice;
428     // PFN_WDFWMIINSTANCEGETPROVIDER                             pfnWdfWmiInstanceGetProvider;
429     // PFN_WDFWMIINSTANCEFIREEVENT                               pfnWdfWmiInstanceFireEvent;
430     PFN_ROSWDFUNIMPLEMENTED                              pfnWdfUsbTargetDeviceCreate;
431     PFN_ROSWDFUNIMPLEMENTED                 pfnWdfUsbTargetDeviceRetrieveInformation;
432     PFN_ROSWDFUNIMPLEMENTED                 pfnWdfUsbTargetDeviceGetDeviceDescriptor;
433     PFN_ROSWDFUNIMPLEMENTED            pfnWdfUsbTargetDeviceRetrieveConfigDescriptor;
434     PFN_ROSWDFUNIMPLEMENTED                         pfnWdfUsbTargetDeviceQueryString;
435     PFN_ROSWDFUNIMPLEMENTED                 pfnWdfUsbTargetDeviceAllocAndQueryString;
436     PFN_ROSWDFUNIMPLEMENTED              pfnWdfUsbTargetDeviceFormatRequestForString;
437     PFN_ROSWDFUNIMPLEMENTED                    pfnWdfUsbTargetDeviceGetNumInterfaces;
438     PFN_ROSWDFUNIMPLEMENTED                        pfnWdfUsbTargetDeviceSelectConfig;
439     PFN_ROSWDFUNIMPLEMENTED           pfnWdfUsbTargetDeviceWdmGetConfigurationHandle;
440     PFN_ROSWDFUNIMPLEMENTED          pfnWdfUsbTargetDeviceRetrieveCurrentFrameNumber;
441     PFN_ROSWDFUNIMPLEMENTED    pfnWdfUsbTargetDeviceSendControlTransferSynchronously;
442     PFN_ROSWDFUNIMPLEMENTED     pfnWdfUsbTargetDeviceFormatRequestForControlTransfer;
443     PFN_ROSWDFUNIMPLEMENTED              pfnWdfUsbTargetDeviceIsConnectedSynchronous;
444     PFN_ROSWDFUNIMPLEMENTED              pfnWdfUsbTargetDeviceResetPortSynchronously;
445     PFN_ROSWDFUNIMPLEMENTED              pfnWdfUsbTargetDeviceCyclePortSynchronously;
446     PFN_ROSWDFUNIMPLEMENTED           pfnWdfUsbTargetDeviceFormatRequestForCyclePort;
447     PFN_ROSWDFUNIMPLEMENTED                pfnWdfUsbTargetDeviceSendUrbSynchronously;
448     PFN_ROSWDFUNIMPLEMENTED                 pfnWdfUsbTargetDeviceFormatRequestForUrb;
449     PFN_ROSWDFUNIMPLEMENTED                        pfnWdfUsbTargetPipeGetInformation;
450     PFN_ROSWDFUNIMPLEMENTED                          pfnWdfUsbTargetPipeIsInEndpoint;
451     PFN_ROSWDFUNIMPLEMENTED                         pfnWdfUsbTargetPipeIsOutEndpoint;
452     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfUsbTargetPipeGetType;
453     PFN_ROSWDFUNIMPLEMENTED           pfnWdfUsbTargetPipeSetNoMaximumPacketSizeCheck;
454     PFN_ROSWDFUNIMPLEMENTED                    pfnWdfUsbTargetPipeWriteSynchronously;
455     PFN_ROSWDFUNIMPLEMENTED                 pfnWdfUsbTargetPipeFormatRequestForWrite;
456     PFN_ROSWDFUNIMPLEMENTED                     pfnWdfUsbTargetPipeReadSynchronously;
457     PFN_ROSWDFUNIMPLEMENTED                  pfnWdfUsbTargetPipeFormatRequestForRead;
458     PFN_ROSWDFUNIMPLEMENTED                pfnWdfUsbTargetPipeConfigContinuousReader;
459     PFN_ROSWDFUNIMPLEMENTED                    pfnWdfUsbTargetPipeAbortSynchronously;
460     PFN_ROSWDFUNIMPLEMENTED                 pfnWdfUsbTargetPipeFormatRequestForAbort;
461     PFN_ROSWDFUNIMPLEMENTED                    pfnWdfUsbTargetPipeResetSynchronously;
462     PFN_ROSWDFUNIMPLEMENTED                 pfnWdfUsbTargetPipeFormatRequestForReset;
463     PFN_ROSWDFUNIMPLEMENTED                  pfnWdfUsbTargetPipeSendUrbSynchronously;
464     PFN_ROSWDFUNIMPLEMENTED                   pfnWdfUsbTargetPipeFormatRequestForUrb;
465     PFN_ROSWDFUNIMPLEMENTED                     pfnWdfUsbInterfaceGetInterfaceNumber;
466     PFN_ROSWDFUNIMPLEMENTED                        pfnWdfUsbInterfaceGetNumEndpoints;
467     PFN_ROSWDFUNIMPLEMENTED                          pfnWdfUsbInterfaceGetDescriptor;
468     PFN_ROSWDFUNIMPLEMENTED                          pfnWdfUsbInterfaceSelectSetting;
469     PFN_ROSWDFUNIMPLEMENTED                 pfnWdfUsbInterfaceGetEndpointInformation;
470     PFN_ROSWDFUNIMPLEMENTED                        pfnWdfUsbTargetDeviceGetInterface;
471     PFN_ROSWDFUNIMPLEMENTED              pfnWdfUsbInterfaceGetConfiguredSettingIndex;
472     PFN_ROSWDFUNIMPLEMENTED                  pfnWdfUsbInterfaceGetNumConfiguredPipes;
473     PFN_ROSWDFUNIMPLEMENTED                      pfnWdfUsbInterfaceGetConfiguredPipe;
474     PFN_ROSWDFUNIMPLEMENTED                      pfnWdfUsbTargetPipeWdmGetPipeHandle;
475     PFN_ROSWDFUNIMPLEMENTED                              pfnWdfVerifierDbgBreakPoint;
476     PFN_ROSWDFUNIMPLEMENTED                                 pfnWdfVerifierKeBugCheck;
477     PFN_ROSWDFUNIMPLEMENTED                                  pfnWdfWmiProviderCreate;
478     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfWmiProviderGetDevice;
479     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfWmiProviderIsEnabled;
480     PFN_ROSWDFUNIMPLEMENTED                        pfnWdfWmiProviderGetTracingHandle;
481     PFN_ROSWDFUNIMPLEMENTED                                  pfnWdfWmiInstanceCreate;
482     PFN_ROSWDFUNIMPLEMENTED                                pfnWdfWmiInstanceRegister;
483     PFN_ROSWDFUNIMPLEMENTED                              pfnWdfWmiInstanceDeregister;
484     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfWmiInstanceGetDevice;
485     PFN_ROSWDFUNIMPLEMENTED                             pfnWdfWmiInstanceGetProvider;
486     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfWmiInstanceFireEvent;
487 
488     PFN_WDFWORKITEMCREATE                                     pfnWdfWorkItemCreate;
489     PFN_WDFWORKITEMENQUEUE                                    pfnWdfWorkItemEnqueue;
490     PFN_WDFWORKITEMGETPARENTOBJECT                            pfnWdfWorkItemGetParentObject;
491     PFN_WDFWORKITEMFLUSH                                      pfnWdfWorkItemFlush;
492     // PFN_WDFCOMMONBUFFERCREATEWITHCONFIG                       pfnWdfCommonBufferCreateWithConfig;
493     // PFN_WDFDMAENABLERGETFRAGMENTLENGTH                        pfnWdfDmaEnablerGetFragmentLength;
494     // PFN_WDFDMAENABLERWDMGETDMAADAPTER                         pfnWdfDmaEnablerWdmGetDmaAdapter;
495     // PFN_WDFUSBINTERFACEGETNUMSETTINGS                         pfnWdfUsbInterfaceGetNumSettings;
496     PFN_ROSWDFUNIMPLEMENTED                       pfnWdfCommonBufferCreateWithConfig;
497     PFN_ROSWDFUNIMPLEMENTED                        pfnWdfDmaEnablerGetFragmentLength;
498     PFN_ROSWDFUNIMPLEMENTED                         pfnWdfDmaEnablerWdmGetDmaAdapter;
499     PFN_ROSWDFUNIMPLEMENTED                         pfnWdfUsbInterfaceGetNumSettings;
500 
501     PFN_WDFDEVICEREMOVEDEPENDENTUSAGEDEVICEOBJECT             pfnWdfDeviceRemoveDependentUsageDeviceObject;
502     PFN_WDFDEVICEGETSYSTEMPOWERACTION                         pfnWdfDeviceGetSystemPowerAction;
503     PFN_WDFINTERRUPTSETEXTENDEDPOLICY                         pfnWdfInterruptSetExtendedPolicy;
504     PFN_WDFIOQUEUEASSIGNFORWARDPROGRESSPOLICY                 pfnWdfIoQueueAssignForwardProgressPolicy;
505     PFN_WDFPDOINITASSIGNCONTAINERID                           pfnWdfPdoInitAssignContainerID;
506     PFN_WDFPDOINITALLOWFORWARDINGREQUESTTOPARENT              pfnWdfPdoInitAllowForwardingRequestToParent;
507     PFN_WDFREQUESTMARKCANCELABLEEX                            pfnWdfRequestMarkCancelableEx;
508     PFN_WDFREQUESTISRESERVED                                  pfnWdfRequestIsReserved;
509     PFN_WDFREQUESTFORWARDTOPARENTDEVICEIOQUEUE                pfnWdfRequestForwardToParentDeviceIoQueue;
510     // PFN_WDFCXDEVICEINITALLOCATE                               pfnWdfCxDeviceInitAllocate;
511     // PFN_WDFCXDEVICEINITASSIGNWDMIRPPREPROCESSCALLBACK         pfnWdfCxDeviceInitAssignWdmIrpPreprocessCallback;
512     // PFN_WDFCXDEVICEINITSETIOINCALLERCONTEXTCALLBACK           pfnWdfCxDeviceInitSetIoInCallerContextCallback;
513     // PFN_WDFCXDEVICEINITSETREQUESTATTRIBUTES                   pfnWdfCxDeviceInitSetRequestAttributes;
514     // PFN_WDFCXDEVICEINITSETFILEOBJECTCONFIG                    pfnWdfCxDeviceInitSetFileObjectConfig;
515     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfCxDeviceInitAllocate;
516     PFN_ROSWDFUNIMPLEMENTED         pfnWdfCxDeviceInitAssignWdmIrpPreprocessCallback;
517     PFN_ROSWDFUNIMPLEMENTED           pfnWdfCxDeviceInitSetIoInCallerContextCallback;
518     PFN_ROSWDFUNIMPLEMENTED                   pfnWdfCxDeviceInitSetRequestAttributes;
519     PFN_ROSWDFUNIMPLEMENTED                    pfnWdfCxDeviceInitSetFileObjectConfig;
520 
521     PFN_WDFDEVICEWDMDISPATCHIRP                               pfnWdfDeviceWdmDispatchIrp;
522     PFN_WDFDEVICEWDMDISPATCHIRPTOIOQUEUE                      pfnWdfDeviceWdmDispatchIrpToIoQueue;
523     PFN_WDFDEVICEINITSETREMOVELOCKOPTIONS                     pfnWdfDeviceInitSetRemoveLockOptions;
524     PFN_WDFDEVICECONFIGUREWDMIRPDISPATCHCALLBACK              pfnWdfDeviceConfigureWdmIrpDispatchCallback;
525     // PFN_WDFDMAENABLERCONFIGURESYSTEMPROFILE                   pfnWdfDmaEnablerConfigureSystemProfile;
526     // PFN_WDFDMATRANSACTIONINITIALIZEUSINGOFFSET                pfnWdfDmaTransactionInitializeUsingOffset;
527     // PFN_WDFDMATRANSACTIONGETTRANSFERINFO                      pfnWdfDmaTransactionGetTransferInfo;
528     // PFN_WDFDMATRANSACTIONSETCHANNELCONFIGURATIONCALLBACK      pfnWdfDmaTransactionSetChannelConfigurationCallback;
529     // PFN_WDFDMATRANSACTIONSETTRANSFERCOMPLETECALLBACK          pfnWdfDmaTransactionSetTransferCompleteCallback;
530     // PFN_WDFDMATRANSACTIONSETIMMEDIATEEXECUTION                pfnWdfDmaTransactionSetImmediateExecution;
531     // PFN_WDFDMATRANSACTIONALLOCATERESOURCES                    pfnWdfDmaTransactionAllocateResources;
532     // PFN_WDFDMATRANSACTIONSETDEVICEADDRESSOFFSET               pfnWdfDmaTransactionSetDeviceAddressOffset;
533     // PFN_WDFDMATRANSACTIONFREERESOURCES                        pfnWdfDmaTransactionFreeResources;
534     // PFN_WDFDMATRANSACTIONCANCEL                               pfnWdfDmaTransactionCancel;
535     // PFN_WDFDMATRANSACTIONWDMGETTRANSFERCONTEXT                pfnWdfDmaTransactionWdmGetTransferContext;
536     PFN_ROSWDFUNIMPLEMENTED                   pfnWdfDmaEnablerConfigureSystemProfile;
537     PFN_ROSWDFUNIMPLEMENTED                pfnWdfDmaTransactionInitializeUsingOffset;
538     PFN_ROSWDFUNIMPLEMENTED                      pfnWdfDmaTransactionGetTransferInfo;
539     PFN_ROSWDFUNIMPLEMENTED      pfnWdfDmaTransactionSetChannelConfigurationCallback;
540     PFN_ROSWDFUNIMPLEMENTED          pfnWdfDmaTransactionSetTransferCompleteCallback;
541     PFN_ROSWDFUNIMPLEMENTED                pfnWdfDmaTransactionSetImmediateExecution;
542     PFN_ROSWDFUNIMPLEMENTED                    pfnWdfDmaTransactionAllocateResources;
543     PFN_ROSWDFUNIMPLEMENTED               pfnWdfDmaTransactionSetDeviceAddressOffset;
544     PFN_ROSWDFUNIMPLEMENTED                        pfnWdfDmaTransactionFreeResources;
545     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfDmaTransactionCancel;
546     PFN_ROSWDFUNIMPLEMENTED                pfnWdfDmaTransactionWdmGetTransferContext;
547 
548     PFN_WDFINTERRUPTQUEUEWORKITEMFORISR                       pfnWdfInterruptQueueWorkItemForIsr;
549     PFN_WDFINTERRUPTTRYTOACQUIRELOCK                          pfnWdfInterruptTryToAcquireLock;
550     PFN_WDFIOQUEUESTOPANDPURGE                                pfnWdfIoQueueStopAndPurge;
551     PFN_WDFIOQUEUESTOPANDPURGESYNCHRONOUSLY                   pfnWdfIoQueueStopAndPurgeSynchronously;
552     PFN_WDFIOTARGETPURGE                                      pfnWdfIoTargetPurge;
553     // PFN_WDFUSBTARGETDEVICECREATEWITHPARAMETERS                pfnWdfUsbTargetDeviceCreateWithParameters;
554     // PFN_WDFUSBTARGETDEVICEQUERYUSBCAPABILITY                  pfnWdfUsbTargetDeviceQueryUsbCapability;
555     // PFN_WDFUSBTARGETDEVICECREATEURB                           pfnWdfUsbTargetDeviceCreateUrb;
556     // PFN_WDFUSBTARGETDEVICECREATEISOCHURB                      pfnWdfUsbTargetDeviceCreateIsochUrb;
557     PFN_ROSWDFUNIMPLEMENTED                pfnWdfUsbTargetDeviceCreateWithParameters;
558     PFN_ROSWDFUNIMPLEMENTED                  pfnWdfUsbTargetDeviceQueryUsbCapability;
559     PFN_ROSWDFUNIMPLEMENTED                           pfnWdfUsbTargetDeviceCreateUrb;
560     PFN_ROSWDFUNIMPLEMENTED                      pfnWdfUsbTargetDeviceCreateIsochUrb;
561 
562     PFN_WDFDEVICEWDMASSIGNPOWERFRAMEWORKSETTINGS              pfnWdfDeviceWdmAssignPowerFrameworkSettings;
563     // PFN_WDFDMATRANSACTIONSTOPSYSTEMTRANSFER                   pfnWdfDmaTransactionStopSystemTransfer;
564     // PFN_WDFCXVERIFIERKEBUGCHECK                               pfnWdfCxVerifierKeBugCheck;
565     PFN_ROSWDFUNIMPLEMENTED                   pfnWdfDmaTransactionStopSystemTransfer;
566     PFN_ROSWDFUNIMPLEMENTED                               pfnWdfCxVerifierKeBugCheck;
567 
568     PFN_WDFINTERRUPTREPORTACTIVE                              pfnWdfInterruptReportActive;
569     PFN_WDFINTERRUPTREPORTINACTIVE                            pfnWdfInterruptReportInactive;
570     PFN_WDFDEVICEINITSETRELEASEHARDWAREORDERONFAILURE         pfnWdfDeviceInitSetReleaseHardwareOrderOnFailure;
571     // PFN_WDFGETTRIAGEINFO                                      pfnWdfGetTriageInfo;
572     PFN_ROSWDFUNIMPLEMENTED                                      pfnWdfGetTriageInfo;
573 
574     PFN_WDFDEVICEINITSETIOTYPEEX                              pfnWdfDeviceInitSetIoTypeEx;
575     PFN_WDFDEVICEQUERYPROPERTYEX                              pfnWdfDeviceQueryPropertyEx;
576     PFN_WDFDEVICEALLOCANDQUERYPROPERTYEX                      pfnWdfDeviceAllocAndQueryPropertyEx;
577     PFN_WDFDEVICEASSIGNPROPERTY                               pfnWdfDeviceAssignProperty;
578     PFN_WDFFDOINITQUERYPROPERTYEX                             pfnWdfFdoInitQueryPropertyEx;
579     PFN_WDFFDOINITALLOCANDQUERYPROPERTYEX                     pfnWdfFdoInitAllocAndQueryPropertyEx;
580     PFN_WDFDEVICESTOPIDLEACTUAL                               pfnWdfDeviceStopIdleActual;
581     PFN_WDFDEVICERESUMEIDLEACTUAL                             pfnWdfDeviceResumeIdleActual;
582     PFN_WDFDEVICEGETSELFIOTARGET                              pfnWdfDeviceGetSelfIoTarget;
583     PFN_WDFDEVICEINITALLOWSELFIOTARGET                        pfnWdfDeviceInitAllowSelfIoTarget;
584     PFN_WDFIOTARGETSELFASSIGNDEFAULTIOQUEUE                   pfnWdfIoTargetSelfAssignDefaultIoQueue;
585     PFN_WDFDEVICEOPENDEVICEMAPKEY                             pfnWdfDeviceOpenDevicemapKey;
586 
587 } WDFFUNCTIONS, *PWDFFUNCTIONS;
588 
589 
590 typedef struct _WDFVERSION {
591 
592     ULONG         Size;
593     ULONG         FuncCount;
594     WDFFUNCTIONS  Functions;
595 
596 } WDFVERSION, *PWDFVERSION;
597 
598 
599 _Must_inspect_result_
600 _IRQL_requires_max_(PASSIVE_LEVEL)
601 WDFAPI
602 NTSTATUS
603 STDCALL
604 WDFEXPORT(WdfChildListCreate)(
605     _In_
606     PWDF_DRIVER_GLOBALS DriverGlobals,
607     _In_
608     WDFDEVICE Device,
609     _In_
610     PWDF_CHILD_LIST_CONFIG Config,
611     _In_opt_
612     PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
613     _Out_
614     WDFCHILDLIST* ChildList
615     );
616 
617 _IRQL_requires_max_(DISPATCH_LEVEL)
618 WDFAPI
619 WDFDEVICE
620 STDCALL
621 WDFEXPORT(WdfChildListGetDevice)(
622     _In_
623     PWDF_DRIVER_GLOBALS DriverGlobals,
624     _In_
625     WDFCHILDLIST ChildList
626     );
627 
628 _Must_inspect_result_
629 _IRQL_requires_max_(DISPATCH_LEVEL)
630 WDFAPI
631 WDFDEVICE
632 STDCALL
633 WDFEXPORT(WdfChildListRetrievePdo)(
634     _In_
635     PWDF_DRIVER_GLOBALS DriverGlobals,
636     _In_
637     WDFCHILDLIST ChildList,
638     _Inout_
639     PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
640     );
641 
642 _Must_inspect_result_
643 _IRQL_requires_max_(DISPATCH_LEVEL)
644 WDFAPI
645 NTSTATUS
646 STDCALL
647 WDFEXPORT(WdfChildListRetrieveAddressDescription)(
648     _In_
649     PWDF_DRIVER_GLOBALS DriverGlobals,
650     _In_
651     WDFCHILDLIST ChildList,
652     _In_
653     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
654     _Inout_
655     PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
656     );
657 
658 _IRQL_requires_max_(DISPATCH_LEVEL)
659 WDFAPI
660 VOID
661 STDCALL
662 WDFEXPORT(WdfChildListBeginScan)(
663     _In_
664     PWDF_DRIVER_GLOBALS DriverGlobals,
665     _In_
666     WDFCHILDLIST ChildList
667     );
668 
669 _IRQL_requires_max_(DISPATCH_LEVEL)
670 WDFAPI
671 VOID
672 STDCALL
673 WDFEXPORT(WdfChildListEndScan)(
674     _In_
675     PWDF_DRIVER_GLOBALS DriverGlobals,
676     _In_
677     WDFCHILDLIST ChildList
678     );
679 
680 _IRQL_requires_max_(DISPATCH_LEVEL)
681 WDFAPI
682 VOID
683 STDCALL
684 WDFEXPORT(WdfChildListBeginIteration)(
685     _In_
686     PWDF_DRIVER_GLOBALS DriverGlobals,
687     _In_
688     WDFCHILDLIST ChildList,
689     _In_
690     PWDF_CHILD_LIST_ITERATOR Iterator
691     );
692 
693 _Must_inspect_result_
694 _IRQL_requires_max_(DISPATCH_LEVEL)
695 WDFAPI
696 NTSTATUS
697 STDCALL
698 WDFEXPORT(WdfChildListRetrieveNextDevice)(
699     _In_
700     PWDF_DRIVER_GLOBALS DriverGlobals,
701     _In_
702     WDFCHILDLIST ChildList,
703     _In_
704     PWDF_CHILD_LIST_ITERATOR Iterator,
705     _Out_
706     WDFDEVICE* Device,
707     _Inout_opt_
708     PWDF_CHILD_RETRIEVE_INFO Info
709     );
710 
711 _IRQL_requires_max_(DISPATCH_LEVEL)
712 WDFAPI
713 VOID
714 STDCALL
715 WDFEXPORT(WdfChildListEndIteration)(
716     _In_
717     PWDF_DRIVER_GLOBALS DriverGlobals,
718     _In_
719     WDFCHILDLIST ChildList,
720     _In_
721     PWDF_CHILD_LIST_ITERATOR Iterator
722     );
723 
724 _Must_inspect_result_
725 _IRQL_requires_max_(DISPATCH_LEVEL)
726 WDFAPI
727 NTSTATUS
728 STDCALL
729 WDFEXPORT(WdfChildListAddOrUpdateChildDescriptionAsPresent)(
730     _In_
731     PWDF_DRIVER_GLOBALS DriverGlobals,
732     _In_
733     WDFCHILDLIST ChildList,
734     _In_
735     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
736     _In_opt_
737     PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
738     );
739 
740 _Must_inspect_result_
741 _IRQL_requires_max_(DISPATCH_LEVEL)
742 WDFAPI
743 NTSTATUS
744 STDCALL
745 WDFEXPORT(WdfChildListUpdateChildDescriptionAsMissing)(
746     _In_
747     PWDF_DRIVER_GLOBALS DriverGlobals,
748     _In_
749     WDFCHILDLIST ChildList,
750     _In_
751     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
752     );
753 
754 _IRQL_requires_max_(DISPATCH_LEVEL)
755 WDFAPI
756 VOID
757 STDCALL
758 WDFEXPORT(WdfChildListUpdateAllChildDescriptionsAsPresent)(
759     _In_
760     PWDF_DRIVER_GLOBALS DriverGlobals,
761     _In_
762     WDFCHILDLIST ChildList
763     );
764 
765 _IRQL_requires_max_(DISPATCH_LEVEL)
766 WDFAPI
767 BOOLEAN
768 STDCALL
769 WDFEXPORT(WdfChildListRequestChildEject)(
770     _In_
771     PWDF_DRIVER_GLOBALS DriverGlobals,
772     _In_
773     WDFCHILDLIST ChildList,
774     _In_
775     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
776     );
777 
778 _Must_inspect_result_
779 _IRQL_requires_max_(DISPATCH_LEVEL)
780 WDFAPI
781 NTSTATUS
782 STDCALL
783 WDFEXPORT(WdfCollectionCreate)(
784     _In_
785     PWDF_DRIVER_GLOBALS DriverGlobals,
786     _In_opt_
787     PWDF_OBJECT_ATTRIBUTES CollectionAttributes,
788     _Out_
789     WDFCOLLECTION* Collection
790     );
791 
792 _IRQL_requires_max_(DISPATCH_LEVEL)
793 WDFAPI
794 ULONG
795 STDCALL
796 WDFEXPORT(WdfCollectionGetCount)(
797     _In_
798     PWDF_DRIVER_GLOBALS DriverGlobals,
799     _In_
800     WDFCOLLECTION Collection
801     );
802 
803 _Must_inspect_result_
804 _IRQL_requires_max_(DISPATCH_LEVEL)
805 WDFAPI
806 NTSTATUS
807 STDCALL
808 WDFEXPORT(WdfCollectionAdd)(
809     _In_
810     PWDF_DRIVER_GLOBALS DriverGlobals,
811     _In_
812     WDFCOLLECTION Collection,
813     _In_
814     WDFOBJECT Object
815     );
816 
817 _IRQL_requires_max_(DISPATCH_LEVEL)
818 WDFAPI
819 VOID
820 STDCALL
821 WDFEXPORT(WdfCollectionRemove)(
822     _In_
823     PWDF_DRIVER_GLOBALS DriverGlobals,
824     _In_
825     WDFCOLLECTION Collection,
826     _In_
827     WDFOBJECT Item
828     );
829 
830 _IRQL_requires_max_(DISPATCH_LEVEL)
831 WDFAPI
832 VOID
833 STDCALL
834 WDFEXPORT(WdfCollectionRemoveItem)(
835     _In_
836     PWDF_DRIVER_GLOBALS DriverGlobals,
837     _In_
838     WDFCOLLECTION Collection,
839     _In_
840     ULONG Index
841     );
842 
843 _IRQL_requires_max_(DISPATCH_LEVEL)
844 WDFAPI
845 WDFOBJECT
846 STDCALL
847 WDFEXPORT(WdfCollectionGetItem)(
848     _In_
849     PWDF_DRIVER_GLOBALS DriverGlobals,
850     _In_
851     WDFCOLLECTION Collection,
852     _In_
853     ULONG Index
854     );
855 
856 _IRQL_requires_max_(DISPATCH_LEVEL)
857 WDFAPI
858 WDFOBJECT
859 STDCALL
860 WDFEXPORT(WdfCollectionGetFirstItem)(
861     _In_
862     PWDF_DRIVER_GLOBALS DriverGlobals,
863     _In_
864     WDFCOLLECTION Collection
865     );
866 
867 _IRQL_requires_max_(DISPATCH_LEVEL)
868 WDFAPI
869 WDFOBJECT
870 STDCALL
871 WDFEXPORT(WdfCollectionGetLastItem)(
872     _In_
873     PWDF_DRIVER_GLOBALS DriverGlobals,
874     _In_
875     WDFCOLLECTION Collection
876     );
877 
878 _Must_inspect_result_
879 _IRQL_requires_max_(PASSIVE_LEVEL)
880 WDFAPI
881 NTSTATUS
882 STDCALL
883 WDFEXPORT(WdfCommonBufferCreate)(
884     _In_
885     PWDF_DRIVER_GLOBALS DriverGlobals,
886     _In_
887     WDFDMAENABLER DmaEnabler,
888     _In_
889     _When_(Length == 0, __drv_reportError(Length cannot be zero))
890     size_t Length,
891     _In_opt_
892     PWDF_OBJECT_ATTRIBUTES Attributes,
893     _Out_
894     WDFCOMMONBUFFER* CommonBuffer
895     );
896 
897 _Must_inspect_result_
898 _IRQL_requires_max_(PASSIVE_LEVEL)
899 WDFAPI
900 NTSTATUS
901 STDCALL
902 WDFEXPORT(WdfCommonBufferCreateWithConfig)(
903     _In_
904     PWDF_DRIVER_GLOBALS DriverGlobals,
905     _In_
906     WDFDMAENABLER DmaEnabler,
907     _In_
908     _When_(Length == 0, __drv_reportError(Length cannot be zero))
909     size_t Length,
910     _In_
911     PWDF_COMMON_BUFFER_CONFIG Config,
912     _In_opt_
913     PWDF_OBJECT_ATTRIBUTES Attributes,
914     _Out_
915     WDFCOMMONBUFFER* CommonBuffer
916     );
917 
918 _IRQL_requires_max_(DISPATCH_LEVEL)
919 WDFAPI
920 PVOID
921 STDCALL
922 WDFEXPORT(WdfCommonBufferGetAlignedVirtualAddress)(
923     _In_
924     PWDF_DRIVER_GLOBALS DriverGlobals,
925     _In_
926     WDFCOMMONBUFFER CommonBuffer
927     );
928 
929 _IRQL_requires_max_(DISPATCH_LEVEL)
930 WDFAPI
931 PHYSICAL_ADDRESS
932 STDCALL
933 WDFEXPORT(WdfCommonBufferGetAlignedLogicalAddress)(
934     _In_
935     PWDF_DRIVER_GLOBALS DriverGlobals,
936     _In_
937     WDFCOMMONBUFFER CommonBuffer
938     );
939 
940 _IRQL_requires_max_(DISPATCH_LEVEL)
941 WDFAPI
942 size_t
943 STDCALL
944 WDFEXPORT(WdfCommonBufferGetLength)(
945     _In_
946     PWDF_DRIVER_GLOBALS DriverGlobals,
947     _In_
948     WDFCOMMONBUFFER CommonBuffer
949     );
950 
951 _Must_inspect_result_
952 _IRQL_requires_max_(PASSIVE_LEVEL)
953 WDFAPI
954 PWDFDEVICE_INIT
955 STDCALL
956 WDFEXPORT(WdfControlDeviceInitAllocate)(
957     _In_
958     PWDF_DRIVER_GLOBALS DriverGlobals,
959     _In_
960     WDFDRIVER Driver,
961     _In_
962     CONST UNICODE_STRING* SDDLString
963     );
964 
965 _IRQL_requires_max_(PASSIVE_LEVEL)
966 WDFAPI
967 VOID
968 STDCALL
969 WDFEXPORT(WdfControlDeviceInitSetShutdownNotification)(
970     _In_
971     PWDF_DRIVER_GLOBALS DriverGlobals,
972     _In_
973     PWDFDEVICE_INIT DeviceInit,
974     _In_
975     PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification,
976     _In_
977     UCHAR Flags
978     );
979 
980 _IRQL_requires_max_(DISPATCH_LEVEL)
981 WDFAPI
982 VOID
983 STDCALL
984 WDFEXPORT(WdfControlFinishInitializing)(
985     _In_
986     PWDF_DRIVER_GLOBALS DriverGlobals,
987     _In_
988     WDFDEVICE Device
989     );
990 
991 _Must_inspect_result_
992 _IRQL_requires_max_(PASSIVE_LEVEL)
993 WDFAPI
994 PWDFCXDEVICE_INIT
995 STDCALL
996 WDFEXPORT(WdfCxDeviceInitAllocate)(
997     _In_
998     PWDF_DRIVER_GLOBALS DriverGlobals,
999     _In_
1000     PWDFDEVICE_INIT DeviceInit
1001     );
1002 
1003 _Must_inspect_result_
1004 _IRQL_requires_max_(DISPATCH_LEVEL)
1005 WDFAPI
1006 NTSTATUS
1007 STDCALL
1008 WDFEXPORT(WdfCxDeviceInitAssignWdmIrpPreprocessCallback)(
1009     _In_
1010     PWDF_DRIVER_GLOBALS DriverGlobals,
1011     _In_
1012     PWDFCXDEVICE_INIT CxDeviceInit,
1013     _In_
1014     PFN_WDFCXDEVICE_WDM_IRP_PREPROCESS EvtCxDeviceWdmIrpPreprocess,
1015     _In_
1016     UCHAR MajorFunction,
1017     _When_(NumMinorFunctions > 0, _In_reads_bytes_(NumMinorFunctions))
1018     _When_(NumMinorFunctions == 0, _In_opt_)
1019     PUCHAR MinorFunctions,
1020     _In_
1021     ULONG NumMinorFunctions
1022     );
1023 
1024 _IRQL_requires_max_(DISPATCH_LEVEL)
1025 WDFAPI
1026 VOID
1027 STDCALL
1028 WDFEXPORT(WdfCxDeviceInitSetIoInCallerContextCallback)(
1029     _In_
1030     PWDF_DRIVER_GLOBALS DriverGlobals,
1031     _In_
1032     PWDFCXDEVICE_INIT CxDeviceInit,
1033     _In_
1034     PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
1035     );
1036 
1037 _IRQL_requires_max_(DISPATCH_LEVEL)
1038 WDFAPI
1039 VOID
1040 STDCALL
1041 WDFEXPORT(WdfCxDeviceInitSetRequestAttributes)(
1042     _In_
1043     PWDF_DRIVER_GLOBALS DriverGlobals,
1044     _In_
1045     PWDFCXDEVICE_INIT CxDeviceInit,
1046     _In_
1047     PWDF_OBJECT_ATTRIBUTES RequestAttributes
1048     );
1049 
1050 _IRQL_requires_max_(DISPATCH_LEVEL)
1051 WDFAPI
1052 VOID
1053 STDCALL
1054 WDFEXPORT(WdfCxDeviceInitSetFileObjectConfig)(
1055     _In_
1056     PWDF_DRIVER_GLOBALS DriverGlobals,
1057     _In_
1058     PWDFCXDEVICE_INIT CxDeviceInit,
1059     _In_
1060     PWDFCX_FILEOBJECT_CONFIG CxFileObjectConfig,
1061     _In_opt_
1062     PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
1063     );
1064 
1065 WDFAPI
1066 VOID
1067 STDCALL
1068 WDFEXPORT(WdfCxVerifierKeBugCheck)(
1069     _In_
1070     PWDF_DRIVER_GLOBALS DriverGlobals,
1071     _In_opt_
1072     WDFOBJECT Object,
1073     _In_
1074     ULONG BugCheckCode,
1075     _In_
1076     ULONG_PTR BugCheckParameter1,
1077     _In_
1078     ULONG_PTR BugCheckParameter2,
1079     _In_
1080     ULONG_PTR BugCheckParameter3,
1081     _In_
1082     ULONG_PTR BugCheckParameter4
1083     );
1084 
1085 _IRQL_requires_max_(DISPATCH_LEVEL)
1086 WDFAPI
1087 VOID
1088 STDCALL
1089 WDFEXPORT(WdfDeviceGetDeviceState)(
1090     _In_
1091     PWDF_DRIVER_GLOBALS DriverGlobals,
1092     _In_
1093     WDFDEVICE Device,
1094     _Out_
1095     PWDF_DEVICE_STATE DeviceState
1096     );
1097 
1098 _IRQL_requires_max_(DISPATCH_LEVEL)
1099 WDFAPI
1100 VOID
1101 STDCALL
1102 WDFEXPORT(WdfDeviceSetDeviceState)(
1103     _In_
1104     PWDF_DRIVER_GLOBALS DriverGlobals,
1105     _In_
1106     WDFDEVICE Device,
1107     _In_
1108     PWDF_DEVICE_STATE DeviceState
1109     );
1110 
1111 _IRQL_requires_max_(DISPATCH_LEVEL)
1112 WDFAPI
1113 WDFDEVICE
1114 STDCALL
1115 WDFEXPORT(WdfWdmDeviceGetWdfDeviceHandle)(
1116     _In_
1117     PWDF_DRIVER_GLOBALS DriverGlobals,
1118     _In_
1119     PDEVICE_OBJECT DeviceObject
1120     );
1121 
1122 _IRQL_requires_max_(DISPATCH_LEVEL)
1123 WDFAPI
1124 PDEVICE_OBJECT
1125 STDCALL
1126 WDFEXPORT(WdfDeviceWdmGetDeviceObject)(
1127     _In_
1128     PWDF_DRIVER_GLOBALS DriverGlobals,
1129     _In_
1130     WDFDEVICE Device
1131     );
1132 
1133 _IRQL_requires_max_(DISPATCH_LEVEL)
1134 WDFAPI
1135 PDEVICE_OBJECT
1136 STDCALL
1137 WDFEXPORT(WdfDeviceWdmGetAttachedDevice)(
1138     _In_
1139     PWDF_DRIVER_GLOBALS DriverGlobals,
1140     _In_
1141     WDFDEVICE Device
1142     );
1143 
1144 _IRQL_requires_max_(DISPATCH_LEVEL)
1145 WDFAPI
1146 PDEVICE_OBJECT
1147 STDCALL
1148 WDFEXPORT(WdfDeviceWdmGetPhysicalDevice)(
1149     _In_
1150     PWDF_DRIVER_GLOBALS DriverGlobals,
1151     _In_
1152     WDFDEVICE Device
1153     );
1154 
1155 _Must_inspect_result_
1156 _IRQL_requires_max_(DISPATCH_LEVEL)
1157 WDFAPI
1158 NTSTATUS
1159 STDCALL
1160 WDFEXPORT(WdfDeviceWdmDispatchPreprocessedIrp)(
1161     _In_
1162     PWDF_DRIVER_GLOBALS DriverGlobals,
1163     _In_
1164     WDFDEVICE Device,
1165     _In_
1166     PIRP Irp
1167     );
1168 
1169 _Must_inspect_result_
1170 _IRQL_requires_max_(DISPATCH_LEVEL)
1171 WDFAPI
1172 NTSTATUS
1173 STDCALL
1174 WDFEXPORT(WdfDeviceWdmDispatchIrp)(
1175     _In_
1176     PWDF_DRIVER_GLOBALS DriverGlobals,
1177     _In_
1178     WDFDEVICE Device,
1179     _In_
1180     PIRP Irp,
1181     _In_
1182     WDFCONTEXT DispatchContext
1183     );
1184 
1185 _Must_inspect_result_
1186 _IRQL_requires_max_(DISPATCH_LEVEL)
1187 WDFAPI
1188 NTSTATUS
1189 STDCALL
1190 WDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue)(
1191     _In_
1192     PWDF_DRIVER_GLOBALS DriverGlobals,
1193     _In_
1194     WDFDEVICE Device,
1195     _In_
1196     PIRP Irp,
1197     _In_
1198     WDFQUEUE Queue,
1199     _In_
1200     ULONG Flags
1201     );
1202 
1203 _Must_inspect_result_
1204 _IRQL_requires_max_(DISPATCH_LEVEL)
1205 WDFAPI
1206 NTSTATUS
1207 STDCALL
1208 WDFEXPORT(WdfDeviceAddDependentUsageDeviceObject)(
1209     _In_
1210     PWDF_DRIVER_GLOBALS DriverGlobals,
1211     _In_
1212     WDFDEVICE Device,
1213     _In_
1214     PDEVICE_OBJECT DependentDevice
1215     );
1216 
1217 _IRQL_requires_max_(DISPATCH_LEVEL)
1218 WDFAPI
1219 VOID
1220 STDCALL
1221 WDFEXPORT(WdfDeviceRemoveDependentUsageDeviceObject)(
1222     _In_
1223     PWDF_DRIVER_GLOBALS DriverGlobals,
1224     _In_
1225     WDFDEVICE Device,
1226     _In_
1227     PDEVICE_OBJECT DependentDevice
1228     );
1229 
1230 _Must_inspect_result_
1231 _IRQL_requires_max_(DISPATCH_LEVEL)
1232 WDFAPI
1233 NTSTATUS
1234 STDCALL
1235 WDFEXPORT(WdfDeviceAddRemovalRelationsPhysicalDevice)(
1236     _In_
1237     PWDF_DRIVER_GLOBALS DriverGlobals,
1238     _In_
1239     WDFDEVICE Device,
1240     _In_
1241     PDEVICE_OBJECT PhysicalDevice
1242     );
1243 
1244 _IRQL_requires_max_(DISPATCH_LEVEL)
1245 WDFAPI
1246 VOID
1247 STDCALL
1248 WDFEXPORT(WdfDeviceRemoveRemovalRelationsPhysicalDevice)(
1249     _In_
1250     PWDF_DRIVER_GLOBALS DriverGlobals,
1251     _In_
1252     WDFDEVICE Device,
1253     _In_
1254     PDEVICE_OBJECT PhysicalDevice
1255     );
1256 
1257 _IRQL_requires_max_(DISPATCH_LEVEL)
1258 WDFAPI
1259 VOID
1260 STDCALL
1261 WDFEXPORT(WdfDeviceClearRemovalRelationsDevices)(
1262     _In_
1263     PWDF_DRIVER_GLOBALS DriverGlobals,
1264     _In_
1265     WDFDEVICE Device
1266     );
1267 
1268 _IRQL_requires_max_(DISPATCH_LEVEL)
1269 WDFAPI
1270 WDFDRIVER
1271 STDCALL
1272 WDFEXPORT(WdfDeviceGetDriver)(
1273     _In_
1274     PWDF_DRIVER_GLOBALS DriverGlobals,
1275     _In_
1276     WDFDEVICE Device
1277     );
1278 
1279 _Must_inspect_result_
1280 _IRQL_requires_max_(PASSIVE_LEVEL)
1281 WDFAPI
1282 NTSTATUS
1283 STDCALL
1284 WDFEXPORT(WdfDeviceRetrieveDeviceName)(
1285     _In_
1286     PWDF_DRIVER_GLOBALS DriverGlobals,
1287     _In_
1288     WDFDEVICE Device,
1289     _In_
1290     WDFSTRING String
1291     );
1292 
1293 _Must_inspect_result_
1294 _IRQL_requires_max_(PASSIVE_LEVEL)
1295 WDFAPI
1296 NTSTATUS
1297 STDCALL
1298 WDFEXPORT(WdfDeviceAssignMofResourceName)(
1299     _In_
1300     PWDF_DRIVER_GLOBALS DriverGlobals,
1301     _In_
1302     WDFDEVICE Device,
1303     _In_
1304     PCUNICODE_STRING MofResourceName
1305     );
1306 
1307 _IRQL_requires_max_(DISPATCH_LEVEL)
1308 WDFAPI
1309 WDFIOTARGET
1310 STDCALL
1311 WDFEXPORT(WdfDeviceGetIoTarget)(
1312     _In_
1313     PWDF_DRIVER_GLOBALS DriverGlobals,
1314     _In_
1315     WDFDEVICE Device
1316     );
1317 
1318 _IRQL_requires_max_(DISPATCH_LEVEL)
1319 WDFAPI
1320 WDF_DEVICE_PNP_STATE
1321 STDCALL
1322 WDFEXPORT(WdfDeviceGetDevicePnpState)(
1323     _In_
1324     PWDF_DRIVER_GLOBALS DriverGlobals,
1325     _In_
1326     WDFDEVICE Device
1327     );
1328 
1329 _IRQL_requires_max_(DISPATCH_LEVEL)
1330 WDFAPI
1331 WDF_DEVICE_POWER_STATE
1332 STDCALL
1333 WDFEXPORT(WdfDeviceGetDevicePowerState)(
1334     _In_
1335     PWDF_DRIVER_GLOBALS DriverGlobals,
1336     _In_
1337     WDFDEVICE Device
1338     );
1339 
1340 _IRQL_requires_max_(DISPATCH_LEVEL)
1341 WDFAPI
1342 WDF_DEVICE_POWER_POLICY_STATE
1343 STDCALL
1344 WDFEXPORT(WdfDeviceGetDevicePowerPolicyState)(
1345     _In_
1346     PWDF_DRIVER_GLOBALS DriverGlobals,
1347     _In_
1348     WDFDEVICE Device
1349     );
1350 
1351 _Must_inspect_result_
1352 _IRQL_requires_max_(DISPATCH_LEVEL)
1353 WDFAPI
1354 NTSTATUS
1355 STDCALL
1356 WDFEXPORT(WdfDeviceAssignS0IdleSettings)(
1357     _In_
1358     PWDF_DRIVER_GLOBALS DriverGlobals,
1359     _In_
1360     WDFDEVICE Device,
1361     _In_
1362     PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
1363     );
1364 
1365 _Must_inspect_result_
1366 _IRQL_requires_max_(DISPATCH_LEVEL)
1367 WDFAPI
1368 NTSTATUS
1369 STDCALL
1370 WDFEXPORT(WdfDeviceAssignSxWakeSettings)(
1371     _In_
1372     PWDF_DRIVER_GLOBALS DriverGlobals,
1373     _In_
1374     WDFDEVICE Device,
1375     _In_
1376     PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS Settings
1377     );
1378 
1379 _Must_inspect_result_
1380 _IRQL_requires_max_(PASSIVE_LEVEL)
1381 WDFAPI
1382 NTSTATUS
1383 STDCALL
1384 WDFEXPORT(WdfDeviceOpenRegistryKey)(
1385     _In_
1386     PWDF_DRIVER_GLOBALS DriverGlobals,
1387     _In_
1388     WDFDEVICE Device,
1389     _In_
1390     ULONG DeviceInstanceKeyType,
1391     _In_
1392     ACCESS_MASK DesiredAccess,
1393     _In_opt_
1394     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
1395     _Out_
1396     WDFKEY* Key
1397     );
1398 
1399 _Must_inspect_result_
1400 _IRQL_requires_max_(PASSIVE_LEVEL)
1401 WDFAPI
1402 NTSTATUS
1403 STDCALL
1404 WDFEXPORT(WdfDeviceOpenDevicemapKey)(
1405     _In_
1406     PWDF_DRIVER_GLOBALS DriverGlobals,
1407     _In_
1408     WDFDEVICE Device,
1409     _In_
1410     PCUNICODE_STRING KeyName,
1411     _In_
1412     ACCESS_MASK DesiredAccess,
1413     _In_opt_
1414     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
1415     _Out_
1416     WDFKEY* Key
1417     );
1418 
1419 _IRQL_requires_max_(DISPATCH_LEVEL)
1420 WDFAPI
1421 VOID
1422 STDCALL
1423 WDFEXPORT(WdfDeviceSetSpecialFileSupport)(
1424     _In_
1425     PWDF_DRIVER_GLOBALS DriverGlobals,
1426     _In_
1427     WDFDEVICE Device,
1428     _In_
1429     WDF_SPECIAL_FILE_TYPE FileType,
1430     _In_
1431     BOOLEAN FileTypeIsSupported
1432     );
1433 
1434 _IRQL_requires_max_(DISPATCH_LEVEL)
1435 WDFAPI
1436 VOID
1437 STDCALL
1438 WDFEXPORT(WdfDeviceSetCharacteristics)(
1439     _In_
1440     PWDF_DRIVER_GLOBALS DriverGlobals,
1441     _In_
1442     WDFDEVICE Device,
1443     _In_
1444     ULONG DeviceCharacteristics
1445     );
1446 
1447 _IRQL_requires_max_(DISPATCH_LEVEL)
1448 WDFAPI
1449 ULONG
1450 STDCALL
1451 WDFEXPORT(WdfDeviceGetCharacteristics)(
1452     _In_
1453     PWDF_DRIVER_GLOBALS DriverGlobals,
1454     _In_
1455     WDFDEVICE Device
1456     );
1457 
1458 _IRQL_requires_max_(DISPATCH_LEVEL)
1459 WDFAPI
1460 ULONG
1461 STDCALL
1462 WDFEXPORT(WdfDeviceGetAlignmentRequirement)(
1463     _In_
1464     PWDF_DRIVER_GLOBALS DriverGlobals,
1465     _In_
1466     WDFDEVICE Device
1467     );
1468 
1469 _IRQL_requires_max_(DISPATCH_LEVEL)
1470 WDFAPI
1471 VOID
1472 STDCALL
1473 WDFEXPORT(WdfDeviceSetAlignmentRequirement)(
1474     _In_
1475     PWDF_DRIVER_GLOBALS DriverGlobals,
1476     _In_
1477     WDFDEVICE Device,
1478     _In_
1479     ULONG AlignmentRequirement
1480     );
1481 
1482 _IRQL_requires_max_(DISPATCH_LEVEL)
1483 WDFAPI
1484 VOID
1485 STDCALL
1486 WDFEXPORT(WdfDeviceInitFree)(
1487     _In_
1488     PWDF_DRIVER_GLOBALS DriverGlobals,
1489     _In_
1490     PWDFDEVICE_INIT DeviceInit
1491     );
1492 
1493 _IRQL_requires_max_(DISPATCH_LEVEL)
1494 WDFAPI
1495 VOID
1496 STDCALL
1497 WDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks)(
1498     _In_
1499     PWDF_DRIVER_GLOBALS DriverGlobals,
1500     _In_
1501     PWDFDEVICE_INIT DeviceInit,
1502     _In_
1503     PWDF_PNPPOWER_EVENT_CALLBACKS PnpPowerEventCallbacks
1504     );
1505 
1506 _IRQL_requires_max_(DISPATCH_LEVEL)
1507 WDFAPI
1508 VOID
1509 STDCALL
1510 WDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks)(
1511     _In_
1512     PWDF_DRIVER_GLOBALS DriverGlobals,
1513     _In_
1514     PWDFDEVICE_INIT DeviceInit,
1515     _In_
1516     PWDF_POWER_POLICY_EVENT_CALLBACKS PowerPolicyEventCallbacks
1517     );
1518 
1519 _IRQL_requires_max_(DISPATCH_LEVEL)
1520 WDFAPI
1521 VOID
1522 STDCALL
1523 WDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership)(
1524     _In_
1525     PWDF_DRIVER_GLOBALS DriverGlobals,
1526     _In_
1527     PWDFDEVICE_INIT DeviceInit,
1528     _In_
1529     BOOLEAN IsPowerPolicyOwner
1530     );
1531 
1532 _Must_inspect_result_
1533 _IRQL_requires_max_(PASSIVE_LEVEL)
1534 WDFAPI
1535 NTSTATUS
1536 STDCALL
1537 WDFEXPORT(WdfDeviceInitRegisterPnpStateChangeCallback)(
1538     _In_
1539     PWDF_DRIVER_GLOBALS DriverGlobals,
1540     _In_
1541     PWDFDEVICE_INIT DeviceInit,
1542     _In_
1543     WDF_DEVICE_PNP_STATE PnpState,
1544     _In_
1545     PFN_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION EvtDevicePnpStateChange,
1546     _In_
1547     ULONG CallbackTypes
1548     );
1549 
1550 _Must_inspect_result_
1551 _IRQL_requires_max_(PASSIVE_LEVEL)
1552 WDFAPI
1553 NTSTATUS
1554 STDCALL
1555 WDFEXPORT(WdfDeviceInitRegisterPowerStateChangeCallback)(
1556     _In_
1557     PWDF_DRIVER_GLOBALS DriverGlobals,
1558     _In_
1559     PWDFDEVICE_INIT DeviceInit,
1560     _In_
1561     WDF_DEVICE_POWER_STATE PowerState,
1562     _In_
1563     PFN_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION EvtDevicePowerStateChange,
1564     _In_
1565     ULONG CallbackTypes
1566     );
1567 
1568 _Must_inspect_result_
1569 _IRQL_requires_max_(PASSIVE_LEVEL)
1570 WDFAPI
1571 NTSTATUS
1572 STDCALL
1573 WDFEXPORT(WdfDeviceInitRegisterPowerPolicyStateChangeCallback)(
1574     _In_
1575     PWDF_DRIVER_GLOBALS DriverGlobals,
1576     _In_
1577     PWDFDEVICE_INIT DeviceInit,
1578     _In_
1579     WDF_DEVICE_POWER_POLICY_STATE PowerPolicyState,
1580     _In_
1581     PFN_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION EvtDevicePowerPolicyStateChange,
1582     _In_
1583     ULONG CallbackTypes
1584     );
1585 
1586 _IRQL_requires_max_(DISPATCH_LEVEL)
1587 WDFAPI
1588 VOID
1589 STDCALL
1590 WDFEXPORT(WdfDeviceInitSetExclusive)(
1591     _In_
1592     PWDF_DRIVER_GLOBALS DriverGlobals,
1593     _In_
1594     PWDFDEVICE_INIT DeviceInit,
1595     _In_
1596     BOOLEAN IsExclusive
1597     );
1598 
1599 _IRQL_requires_max_(DISPATCH_LEVEL)
1600 WDFAPI
1601 VOID
1602 STDCALL
1603 WDFEXPORT(WdfDeviceInitSetIoType)(
1604     _In_
1605     PWDF_DRIVER_GLOBALS DriverGlobals,
1606     _In_
1607     PWDFDEVICE_INIT DeviceInit,
1608     _In_
1609     WDF_DEVICE_IO_TYPE IoType
1610     );
1611 
1612 _IRQL_requires_max_(DISPATCH_LEVEL)
1613 WDFAPI
1614 VOID
1615 STDCALL
1616 WDFEXPORT(WdfDeviceInitSetPowerNotPageable)(
1617     _In_
1618     PWDF_DRIVER_GLOBALS DriverGlobals,
1619     _In_
1620     PWDFDEVICE_INIT DeviceInit
1621     );
1622 
1623 _IRQL_requires_max_(DISPATCH_LEVEL)
1624 WDFAPI
1625 VOID
1626 STDCALL
1627 WDFEXPORT(WdfDeviceInitSetPowerPageable)(
1628     _In_
1629     PWDF_DRIVER_GLOBALS DriverGlobals,
1630     _In_
1631     PWDFDEVICE_INIT DeviceInit
1632     );
1633 
1634 _IRQL_requires_max_(DISPATCH_LEVEL)
1635 WDFAPI
1636 VOID
1637 STDCALL
1638 WDFEXPORT(WdfDeviceInitSetPowerInrush)(
1639     _In_
1640     PWDF_DRIVER_GLOBALS DriverGlobals,
1641     _In_
1642     PWDFDEVICE_INIT DeviceInit
1643     );
1644 
1645 _IRQL_requires_max_(DISPATCH_LEVEL)
1646 WDFAPI
1647 VOID
1648 STDCALL
1649 WDFEXPORT(WdfDeviceInitSetDeviceType)(
1650     _In_
1651     PWDF_DRIVER_GLOBALS DriverGlobals,
1652     _In_
1653     PWDFDEVICE_INIT DeviceInit,
1654     _In_
1655     DEVICE_TYPE DeviceType
1656     );
1657 
1658 _Must_inspect_result_
1659 _IRQL_requires_max_(PASSIVE_LEVEL)
1660 WDFAPI
1661 NTSTATUS
1662 STDCALL
1663 WDFEXPORT(WdfDeviceInitAssignName)(
1664     _In_
1665     PWDF_DRIVER_GLOBALS DriverGlobals,
1666     _In_
1667     PWDFDEVICE_INIT DeviceInit,
1668     _In_opt_
1669     PCUNICODE_STRING DeviceName
1670     );
1671 
1672 _Must_inspect_result_
1673 _IRQL_requires_max_(PASSIVE_LEVEL)
1674 WDFAPI
1675 NTSTATUS
1676 STDCALL
1677 WDFEXPORT(WdfDeviceInitAssignSDDLString)(
1678     _In_
1679     PWDF_DRIVER_GLOBALS DriverGlobals,
1680     _In_
1681     PWDFDEVICE_INIT DeviceInit,
1682     _In_opt_
1683     PCUNICODE_STRING SDDLString
1684     );
1685 
1686 _IRQL_requires_max_(DISPATCH_LEVEL)
1687 WDFAPI
1688 VOID
1689 STDCALL
1690 WDFEXPORT(WdfDeviceInitSetDeviceClass)(
1691     _In_
1692     PWDF_DRIVER_GLOBALS DriverGlobals,
1693     _In_
1694     PWDFDEVICE_INIT DeviceInit,
1695     _In_
1696     CONST GUID* DeviceClassGuid
1697     );
1698 
1699 _IRQL_requires_max_(DISPATCH_LEVEL)
1700 WDFAPI
1701 VOID
1702 STDCALL
1703 WDFEXPORT(WdfDeviceInitSetCharacteristics)(
1704     _In_
1705     PWDF_DRIVER_GLOBALS DriverGlobals,
1706     _In_
1707     PWDFDEVICE_INIT DeviceInit,
1708     _In_
1709     ULONG DeviceCharacteristics,
1710     _In_
1711     BOOLEAN OrInValues
1712     );
1713 
1714 _IRQL_requires_max_(DISPATCH_LEVEL)
1715 WDFAPI
1716 VOID
1717 STDCALL
1718 WDFEXPORT(WdfDeviceInitSetFileObjectConfig)(
1719     _In_
1720     PWDF_DRIVER_GLOBALS DriverGlobals,
1721     _In_
1722     PWDFDEVICE_INIT DeviceInit,
1723     _In_
1724     PWDF_FILEOBJECT_CONFIG FileObjectConfig,
1725     _In_opt_
1726     PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
1727     );
1728 
1729 _IRQL_requires_max_(DISPATCH_LEVEL)
1730 WDFAPI
1731 VOID
1732 STDCALL
1733 WDFEXPORT(WdfDeviceInitSetRequestAttributes)(
1734     _In_
1735     PWDF_DRIVER_GLOBALS DriverGlobals,
1736     _In_
1737     PWDFDEVICE_INIT DeviceInit,
1738     _In_
1739     PWDF_OBJECT_ATTRIBUTES RequestAttributes
1740     );
1741 
1742 _Must_inspect_result_
1743 _IRQL_requires_max_(DISPATCH_LEVEL)
1744 WDFAPI
1745 NTSTATUS
1746 STDCALL
1747 WDFEXPORT(WdfDeviceInitAssignWdmIrpPreprocessCallback)(
1748     _In_
1749     PWDF_DRIVER_GLOBALS DriverGlobals,
1750     _In_
1751     PWDFDEVICE_INIT DeviceInit,
1752     _In_
1753     PFN_WDFDEVICE_WDM_IRP_PREPROCESS EvtDeviceWdmIrpPreprocess,
1754     _In_
1755     UCHAR MajorFunction,
1756     _When_(NumMinorFunctions > 0, _In_reads_bytes_(NumMinorFunctions))
1757     _When_(NumMinorFunctions == 0, _In_opt_)
1758     PUCHAR MinorFunctions,
1759     _In_
1760     ULONG NumMinorFunctions
1761     );
1762 
1763 _IRQL_requires_max_(DISPATCH_LEVEL)
1764 WDFAPI
1765 VOID
1766 STDCALL
1767 WDFEXPORT(WdfDeviceInitSetIoInCallerContextCallback)(
1768     _In_
1769     PWDF_DRIVER_GLOBALS DriverGlobals,
1770     _In_
1771     PWDFDEVICE_INIT DeviceInit,
1772     _In_
1773     PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
1774     );
1775 
1776 _IRQL_requires_max_(DISPATCH_LEVEL)
1777 WDFAPI
1778 VOID
1779 STDCALL
1780 WDFEXPORT(WdfDeviceInitSetRemoveLockOptions)(
1781     _In_
1782     PWDF_DRIVER_GLOBALS DriverGlobals,
1783     _In_
1784     PWDFDEVICE_INIT DeviceInit,
1785     _In_
1786     PWDF_REMOVE_LOCK_OPTIONS Options
1787     );
1788 
1789 _Must_inspect_result_
1790 _IRQL_requires_max_(PASSIVE_LEVEL)
1791 WDFAPI
1792 NTSTATUS
1793 STDCALL
1794 WDFEXPORT(WdfDeviceCreate)(
1795     _In_
1796     PWDF_DRIVER_GLOBALS DriverGlobals,
1797     _Inout_
1798     PWDFDEVICE_INIT* DeviceInit,
1799     _In_opt_
1800     PWDF_OBJECT_ATTRIBUTES DeviceAttributes,
1801     _Out_
1802     WDFDEVICE* Device
1803     );
1804 
1805 _IRQL_requires_max_(DISPATCH_LEVEL)
1806 WDFAPI
1807 VOID
1808 STDCALL
1809 WDFEXPORT(WdfDeviceSetStaticStopRemove)(
1810     _In_
1811     PWDF_DRIVER_GLOBALS DriverGlobals,
1812     _In_
1813     WDFDEVICE Device,
1814     _In_
1815     BOOLEAN Stoppable
1816     );
1817 
1818 _Must_inspect_result_
1819 _IRQL_requires_max_(PASSIVE_LEVEL)
1820 WDFAPI
1821 NTSTATUS
1822 STDCALL
1823 WDFEXPORT(WdfDeviceCreateDeviceInterface)(
1824     _In_
1825     PWDF_DRIVER_GLOBALS DriverGlobals,
1826     _In_
1827     WDFDEVICE Device,
1828     _In_
1829     CONST GUID* InterfaceClassGUID,
1830     _In_opt_
1831     PCUNICODE_STRING ReferenceString
1832     );
1833 
1834 _IRQL_requires_max_(PASSIVE_LEVEL)
1835 WDFAPI
1836 VOID
1837 STDCALL
1838 WDFEXPORT(WdfDeviceSetDeviceInterfaceState)(
1839     _In_
1840     PWDF_DRIVER_GLOBALS DriverGlobals,
1841     _In_
1842     WDFDEVICE Device,
1843     _In_
1844     CONST GUID* InterfaceClassGUID,
1845     _In_opt_
1846     PCUNICODE_STRING ReferenceString,
1847     _In_
1848     BOOLEAN IsInterfaceEnabled
1849     );
1850 
1851 _Must_inspect_result_
1852 _IRQL_requires_max_(PASSIVE_LEVEL)
1853 WDFAPI
1854 NTSTATUS
1855 STDCALL
1856 WDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString)(
1857     _In_
1858     PWDF_DRIVER_GLOBALS DriverGlobals,
1859     _In_
1860     WDFDEVICE Device,
1861     _In_
1862     CONST GUID* InterfaceClassGUID,
1863     _In_opt_
1864     PCUNICODE_STRING ReferenceString,
1865     _In_
1866     WDFSTRING String
1867     );
1868 
1869 _Must_inspect_result_
1870 _IRQL_requires_max_(PASSIVE_LEVEL)
1871 WDFAPI
1872 NTSTATUS
1873 STDCALL
1874 WDFEXPORT(WdfDeviceCreateSymbolicLink)(
1875     _In_
1876     PWDF_DRIVER_GLOBALS DriverGlobals,
1877     _In_
1878     WDFDEVICE Device,
1879     _In_
1880     PCUNICODE_STRING SymbolicLinkName
1881     );
1882 
1883 _Must_inspect_result_
1884 _IRQL_requires_max_(PASSIVE_LEVEL)
1885 WDFAPI
1886 NTSTATUS
1887 STDCALL
1888 WDFEXPORT(WdfDeviceQueryProperty)(
1889     _In_
1890     PWDF_DRIVER_GLOBALS DriverGlobals,
1891     _In_
1892     WDFDEVICE Device,
1893     _In_
1894     DEVICE_REGISTRY_PROPERTY DeviceProperty,
1895     _In_
1896     ULONG BufferLength,
1897     _Out_writes_bytes_all_(BufferLength)
1898     PVOID PropertyBuffer,
1899     _Out_
1900     PULONG ResultLength
1901     );
1902 
1903 _Must_inspect_result_
1904 _IRQL_requires_max_(PASSIVE_LEVEL)
1905 WDFAPI
1906 NTSTATUS
1907 STDCALL
1908 WDFEXPORT(WdfDeviceAllocAndQueryProperty)(
1909     _In_
1910     PWDF_DRIVER_GLOBALS DriverGlobals,
1911     _In_
1912     WDFDEVICE Device,
1913     _In_
1914     DEVICE_REGISTRY_PROPERTY DeviceProperty,
1915     _In_
1916     _Strict_type_match_
1917     POOL_TYPE PoolType,
1918     _In_opt_
1919     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
1920     _Out_
1921     WDFMEMORY* PropertyMemory
1922     );
1923 
1924 _IRQL_requires_max_(DISPATCH_LEVEL)
1925 WDFAPI
1926 VOID
1927 STDCALL
1928 WDFEXPORT(WdfDeviceSetPnpCapabilities)(
1929     _In_
1930     PWDF_DRIVER_GLOBALS DriverGlobals,
1931     _In_
1932     WDFDEVICE Device,
1933     _In_
1934     PWDF_DEVICE_PNP_CAPABILITIES PnpCapabilities
1935     );
1936 
1937 _IRQL_requires_max_(DISPATCH_LEVEL)
1938 WDFAPI
1939 VOID
1940 STDCALL
1941 WDFEXPORT(WdfDeviceSetPowerCapabilities)(
1942     _In_
1943     PWDF_DRIVER_GLOBALS DriverGlobals,
1944     _In_
1945     WDFDEVICE Device,
1946     _In_
1947     PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
1948     );
1949 
1950 _IRQL_requires_max_(DISPATCH_LEVEL)
1951 WDFAPI
1952 VOID
1953 STDCALL
1954 WDFEXPORT(WdfDeviceSetBusInformationForChildren)(
1955     _In_
1956     PWDF_DRIVER_GLOBALS DriverGlobals,
1957     _In_
1958     WDFDEVICE Device,
1959     _In_
1960     PPNP_BUS_INFORMATION BusInformation
1961     );
1962 
1963 _Must_inspect_result_
1964 _IRQL_requires_max_(DISPATCH_LEVEL)
1965 WDFAPI
1966 NTSTATUS
1967 STDCALL
1968 WDFEXPORT(WdfDeviceIndicateWakeStatus)(
1969     _In_
1970     PWDF_DRIVER_GLOBALS DriverGlobals,
1971     _In_
1972     WDFDEVICE Device,
1973     _In_
1974     NTSTATUS WaitWakeStatus
1975     );
1976 
1977 _IRQL_requires_max_(DISPATCH_LEVEL)
1978 WDFAPI
1979 VOID
1980 STDCALL
1981 WDFEXPORT(WdfDeviceSetFailed)(
1982     _In_
1983     PWDF_DRIVER_GLOBALS DriverGlobals,
1984     _In_
1985     WDFDEVICE Device,
1986     _In_
1987     WDF_DEVICE_FAILED_ACTION FailedAction
1988     );
1989 
1990 _Must_inspect_result_
1991 _When_(WaitForD0 == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
1992 _When_(WaitForD0 != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
1993 WDFAPI
1994 NTSTATUS
1995 STDCALL
1996 WDFEXPORT(WdfDeviceStopIdleNoTrack)(
1997     _In_
1998     PWDF_DRIVER_GLOBALS DriverGlobals,
1999     _In_
2000     WDFDEVICE Device,
2001     _In_
2002     BOOLEAN WaitForD0
2003     );
2004 
2005 _IRQL_requires_max_(DISPATCH_LEVEL)
2006 WDFAPI
2007 VOID
2008 STDCALL
2009 WDFEXPORT(WdfDeviceResumeIdleNoTrack)(
2010     _In_
2011     PWDF_DRIVER_GLOBALS DriverGlobals,
2012     _In_
2013     WDFDEVICE Device
2014     );
2015 
2016 _Must_inspect_result_
2017 _When_(WaitForD0 == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
2018 _When_(WaitForD0 != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
2019 WDFAPI
2020 NTSTATUS
2021 STDCALL
2022 WDFEXPORT(WdfDeviceStopIdleActual)(
2023     _In_
2024     PWDF_DRIVER_GLOBALS DriverGlobals,
2025     _In_
2026     WDFDEVICE Device,
2027     _In_
2028     BOOLEAN WaitForD0,
2029     _In_opt_
2030     PVOID Tag,
2031     _In_
2032     LONG Line,
2033     _In_z_
2034     PCHAR File
2035     );
2036 
2037 _IRQL_requires_max_(DISPATCH_LEVEL)
2038 WDFAPI
2039 VOID
2040 STDCALL
2041 WDFEXPORT(WdfDeviceResumeIdleActual)(
2042     _In_
2043     PWDF_DRIVER_GLOBALS DriverGlobals,
2044     _In_
2045     WDFDEVICE Device,
2046     _In_opt_
2047     PVOID Tag,
2048     _In_
2049     LONG Line,
2050     _In_z_
2051     PCHAR File
2052     );
2053 
2054 _IRQL_requires_max_(DISPATCH_LEVEL)
2055 WDFAPI
2056 WDFFILEOBJECT
2057 STDCALL
2058 WDFEXPORT(WdfDeviceGetFileObject)(
2059     _In_
2060     PWDF_DRIVER_GLOBALS DriverGlobals,
2061     _In_
2062     WDFDEVICE Device,
2063     _In_
2064     PFILE_OBJECT FileObject
2065     );
2066 
2067 _Must_inspect_result_
2068 _IRQL_requires_max_(DISPATCH_LEVEL)
2069 WDFAPI
2070 NTSTATUS
2071 STDCALL
2072 WDFEXPORT(WdfDeviceEnqueueRequest)(
2073     _In_
2074     PWDF_DRIVER_GLOBALS DriverGlobals,
2075     _In_
2076     WDFDEVICE Device,
2077     _In_
2078     WDFREQUEST Request
2079     );
2080 
2081 _IRQL_requires_max_(DISPATCH_LEVEL)
2082 WDFAPI
2083 WDFQUEUE
2084 STDCALL
2085 WDFEXPORT(WdfDeviceGetDefaultQueue)(
2086     _In_
2087     PWDF_DRIVER_GLOBALS DriverGlobals,
2088     _In_
2089     WDFDEVICE Device
2090     );
2091 
2092 _Must_inspect_result_
2093 _IRQL_requires_max_(DISPATCH_LEVEL)
2094 WDFAPI
2095 NTSTATUS
2096 STDCALL
2097 WDFEXPORT(WdfDeviceConfigureRequestDispatching)(
2098     _In_
2099     PWDF_DRIVER_GLOBALS DriverGlobals,
2100     _In_
2101     WDFDEVICE Device,
2102     _In_
2103     WDFQUEUE Queue,
2104     _In_
2105     _Strict_type_match_
2106     WDF_REQUEST_TYPE RequestType
2107     );
2108 
2109 _Must_inspect_result_
2110 _IRQL_requires_max_(DISPATCH_LEVEL)
2111 WDFAPI
2112 NTSTATUS
2113 STDCALL
2114 WDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback)(
2115     _In_
2116     PWDF_DRIVER_GLOBALS DriverGlobals,
2117     _In_
2118     WDFDEVICE Device,
2119     _In_opt_
2120     WDFDRIVER Driver,
2121     _In_
2122     UCHAR MajorFunction,
2123     _In_
2124     PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDisptach,
2125     _In_opt_
2126     WDFCONTEXT DriverContext
2127     );
2128 
2129 _IRQL_requires_max_(DISPATCH_LEVEL)
2130 WDFAPI
2131 POWER_ACTION
2132 STDCALL
2133 WDFEXPORT(WdfDeviceGetSystemPowerAction)(
2134     _In_
2135     PWDF_DRIVER_GLOBALS DriverGlobals,
2136     _In_
2137     WDFDEVICE Device
2138     );
2139 
2140 _Must_inspect_result_
2141 _IRQL_requires_max_(PASSIVE_LEVEL)
2142 WDFAPI
2143 NTSTATUS
2144 STDCALL
2145 WDFEXPORT(WdfDeviceWdmAssignPowerFrameworkSettings)(
2146     _In_
2147     PWDF_DRIVER_GLOBALS DriverGlobals,
2148     _In_
2149     WDFDEVICE Device,
2150     _In_
2151     PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
2152     );
2153 
2154 _IRQL_requires_max_(DISPATCH_LEVEL)
2155 WDFAPI
2156 VOID
2157 STDCALL
2158 WDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure)(
2159     _In_
2160     PWDF_DRIVER_GLOBALS DriverGlobals,
2161     _In_
2162     PWDFDEVICE_INIT DeviceInit,
2163     _In_
2164     WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
2165     );
2166 
2167 _IRQL_requires_max_(PASSIVE_LEVEL)
2168 WDFAPI
2169 VOID
2170 STDCALL
2171 WDFEXPORT(WdfDeviceInitSetIoTypeEx)(
2172     _In_
2173     PWDF_DRIVER_GLOBALS DriverGlobals,
2174     _In_
2175     PWDFDEVICE_INIT DeviceInit,
2176     _In_
2177     PWDF_IO_TYPE_CONFIG IoTypeConfig
2178     );
2179 
2180 _Must_inspect_result_
2181 _IRQL_requires_max_(APC_LEVEL)
2182 WDFAPI
2183 NTSTATUS
2184 STDCALL
2185 WDFEXPORT(WdfDeviceQueryPropertyEx)(
2186     _In_
2187     PWDF_DRIVER_GLOBALS DriverGlobals,
2188     _In_
2189     WDFDEVICE Device,
2190     _In_
2191     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
2192     _In_
2193     ULONG BufferLength,
2194     _Out_
2195     PVOID PropertyBuffer,
2196     _Out_
2197     PULONG RequiredSize,
2198     _Out_
2199     PDEVPROPTYPE Type
2200     );
2201 
2202 _Must_inspect_result_
2203 _IRQL_requires_max_(APC_LEVEL)
2204 WDFAPI
2205 NTSTATUS
2206 STDCALL
2207 WDFEXPORT(WdfDeviceAllocAndQueryPropertyEx)(
2208     _In_
2209     PWDF_DRIVER_GLOBALS DriverGlobals,
2210     _In_
2211     WDFDEVICE Device,
2212     _In_
2213     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
2214     _In_
2215     _Strict_type_match_
2216     POOL_TYPE PoolType,
2217     _In_opt_
2218     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
2219     _Out_
2220     WDFMEMORY* PropertyMemory,
2221     _Out_
2222     PDEVPROPTYPE Type
2223     );
2224 
2225 _Must_inspect_result_
2226 _IRQL_requires_max_(APC_LEVEL)
2227 WDFAPI
2228 NTSTATUS
2229 STDCALL
2230 WDFEXPORT(WdfDeviceAssignProperty)(
2231     _In_
2232     PWDF_DRIVER_GLOBALS DriverGlobals,
2233     _In_
2234     WDFDEVICE Device,
2235     _In_
2236     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
2237     _In_
2238     DEVPROPTYPE Type,
2239     _In_
2240     ULONG Size,
2241     _In_opt_
2242     PVOID Data
2243     );
2244 
2245 _IRQL_requires_max_(DISPATCH_LEVEL)
2246 WDFAPI
2247 WDFIOTARGET
2248 STDCALL
2249 WDFEXPORT(WdfDeviceGetSelfIoTarget)(
2250     _In_
2251     PWDF_DRIVER_GLOBALS DriverGlobals,
2252     _In_
2253     WDFDEVICE Device
2254     );
2255 
2256 _IRQL_requires_max_(DISPATCH_LEVEL)
2257 WDFAPI
2258 VOID
2259 STDCALL
2260 WDFEXPORT(WdfDeviceInitAllowSelfIoTarget)(
2261     _In_
2262     PWDF_DRIVER_GLOBALS DriverGlobals,
2263     _In_
2264     PWDFDEVICE_INIT DeviceInit
2265     );
2266 
2267 _Must_inspect_result_
2268 _IRQL_requires_max_(PASSIVE_LEVEL)
2269 WDFAPI
2270 NTSTATUS
2271 STDCALL
2272 WDFEXPORT(WdfDmaEnablerCreate)(
2273     _In_
2274     PWDF_DRIVER_GLOBALS DriverGlobals,
2275     _In_
2276     WDFDEVICE Device,
2277     _In_
2278     PWDF_DMA_ENABLER_CONFIG Config,
2279     _In_opt_
2280     PWDF_OBJECT_ATTRIBUTES Attributes,
2281     _Out_
2282     WDFDMAENABLER* DmaEnablerHandle
2283     );
2284 
2285 _Must_inspect_result_
2286 _IRQL_requires_max_(PASSIVE_LEVEL)
2287 WDFAPI
2288 NTSTATUS
2289 STDCALL
2290 WDFEXPORT(WdfDmaEnablerConfigureSystemProfile)(
2291     _In_
2292     PWDF_DRIVER_GLOBALS DriverGlobals,
2293     _In_
2294     WDFDMAENABLER DmaEnabler,
2295     _In_
2296     PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig,
2297     _In_
2298     WDF_DMA_DIRECTION ConfigDirection
2299     );
2300 
2301 _IRQL_requires_max_(DISPATCH_LEVEL)
2302 WDFAPI
2303 size_t
2304 STDCALL
2305 WDFEXPORT(WdfDmaEnablerGetMaximumLength)(
2306     _In_
2307     PWDF_DRIVER_GLOBALS DriverGlobals,
2308     _In_
2309     WDFDMAENABLER DmaEnabler
2310     );
2311 
2312 _IRQL_requires_max_(DISPATCH_LEVEL)
2313 WDFAPI
2314 size_t
2315 STDCALL
2316 WDFEXPORT(WdfDmaEnablerGetMaximumScatterGatherElements)(
2317     _In_
2318     PWDF_DRIVER_GLOBALS DriverGlobals,
2319     _In_
2320     WDFDMAENABLER DmaEnabler
2321     );
2322 
2323 _IRQL_requires_max_(PASSIVE_LEVEL)
2324 WDFAPI
2325 VOID
2326 STDCALL
2327 WDFEXPORT(WdfDmaEnablerSetMaximumScatterGatherElements)(
2328     _In_
2329     PWDF_DRIVER_GLOBALS DriverGlobals,
2330     _In_
2331     WDFDMAENABLER DmaEnabler,
2332     _In_
2333     _When_(MaximumFragments == 0, __drv_reportError(MaximumFragments cannot be zero))
2334     size_t MaximumFragments
2335     );
2336 
2337 _IRQL_requires_max_(DISPATCH_LEVEL)
2338 WDFAPI
2339 size_t
2340 STDCALL
2341 WDFEXPORT(WdfDmaEnablerGetFragmentLength)(
2342     _In_
2343     PWDF_DRIVER_GLOBALS DriverGlobals,
2344     _In_
2345     WDFDMAENABLER DmaEnabler,
2346     _In_
2347     WDF_DMA_DIRECTION DmaDirection
2348     );
2349 
2350 _IRQL_requires_max_(DISPATCH_LEVEL)
2351 WDFAPI
2352 PDMA_ADAPTER
2353 STDCALL
2354 WDFEXPORT(WdfDmaEnablerWdmGetDmaAdapter)(
2355     _In_
2356     PWDF_DRIVER_GLOBALS DriverGlobals,
2357     _In_
2358     WDFDMAENABLER DmaEnabler,
2359     _In_
2360     WDF_DMA_DIRECTION DmaDirection
2361     );
2362 
2363 _Must_inspect_result_
2364 _IRQL_requires_max_(DISPATCH_LEVEL)
2365 WDFAPI
2366 NTSTATUS
2367 STDCALL
2368 WDFEXPORT(WdfDmaTransactionCreate)(
2369     _In_
2370     PWDF_DRIVER_GLOBALS DriverGlobals,
2371     _In_
2372     WDFDMAENABLER DmaEnabler,
2373     _In_opt_
2374     PWDF_OBJECT_ATTRIBUTES Attributes,
2375     _Out_
2376     WDFDMATRANSACTION* DmaTransaction
2377     );
2378 
2379 _Must_inspect_result_
2380 _IRQL_requires_max_(DISPATCH_LEVEL)
2381 WDFAPI
2382 NTSTATUS
2383 STDCALL
2384 WDFEXPORT(WdfDmaTransactionInitialize)(
2385     _In_
2386     PWDF_DRIVER_GLOBALS DriverGlobals,
2387     _In_
2388     WDFDMATRANSACTION DmaTransaction,
2389     _In_
2390     PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
2391     _In_
2392     WDF_DMA_DIRECTION DmaDirection,
2393     _In_
2394     PMDL Mdl,
2395     _In_
2396     PVOID VirtualAddress,
2397     _In_
2398     _When_(Length == 0, __drv_reportError(Length cannot be zero))
2399     size_t Length
2400     );
2401 
2402 _Must_inspect_result_
2403 _IRQL_requires_max_(DISPATCH_LEVEL)
2404 WDFAPI
2405 NTSTATUS
2406 STDCALL
2407 WDFEXPORT(WdfDmaTransactionInitializeUsingOffset)(
2408     _In_
2409     PWDF_DRIVER_GLOBALS DriverGlobals,
2410     _In_
2411     WDFDMATRANSACTION DmaTransaction,
2412     _In_
2413     PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
2414     _In_
2415     WDF_DMA_DIRECTION DmaDirection,
2416     _In_
2417     PMDL Mdl,
2418     _In_
2419     size_t Offset,
2420     _In_
2421     _When_(Length == 0, __drv_reportError(Length cannot be zero))
2422     size_t Length
2423     );
2424 
2425 _Must_inspect_result_
2426 _IRQL_requires_max_(DISPATCH_LEVEL)
2427 WDFAPI
2428 NTSTATUS
2429 STDCALL
2430 WDFEXPORT(WdfDmaTransactionInitializeUsingRequest)(
2431     _In_
2432     PWDF_DRIVER_GLOBALS DriverGlobals,
2433     _In_
2434     WDFDMATRANSACTION DmaTransaction,
2435     _In_
2436     WDFREQUEST Request,
2437     _In_
2438     PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
2439     _In_
2440     WDF_DMA_DIRECTION DmaDirection
2441     );
2442 
2443 _Must_inspect_result_
2444 _IRQL_requires_max_(DISPATCH_LEVEL)
2445 WDFAPI
2446 NTSTATUS
2447 STDCALL
2448 WDFEXPORT(WdfDmaTransactionExecute)(
2449     _In_
2450     PWDF_DRIVER_GLOBALS DriverGlobals,
2451     _In_
2452     WDFDMATRANSACTION DmaTransaction,
2453     _In_opt_
2454     WDFCONTEXT Context
2455     );
2456 
2457 _Success_(TRUE)
2458 _IRQL_requires_max_(DISPATCH_LEVEL)
2459 WDFAPI
2460 NTSTATUS
2461 STDCALL
2462 WDFEXPORT(WdfDmaTransactionRelease)(
2463     _In_
2464     PWDF_DRIVER_GLOBALS DriverGlobals,
2465     _In_
2466     WDFDMATRANSACTION DmaTransaction
2467     );
2468 
2469 _IRQL_requires_max_(DISPATCH_LEVEL)
2470 WDFAPI
2471 BOOLEAN
2472 STDCALL
2473 WDFEXPORT(WdfDmaTransactionDmaCompleted)(
2474     _In_
2475     PWDF_DRIVER_GLOBALS DriverGlobals,
2476     _In_
2477     WDFDMATRANSACTION DmaTransaction,
2478     _Out_
2479     NTSTATUS* Status
2480     );
2481 
2482 _IRQL_requires_max_(DISPATCH_LEVEL)
2483 WDFAPI
2484 BOOLEAN
2485 STDCALL
2486 WDFEXPORT(WdfDmaTransactionDmaCompletedWithLength)(
2487     _In_
2488     PWDF_DRIVER_GLOBALS DriverGlobals,
2489     _In_
2490     WDFDMATRANSACTION DmaTransaction,
2491     _In_
2492     size_t TransferredLength,
2493     _Out_
2494     NTSTATUS* Status
2495     );
2496 
2497 _IRQL_requires_max_(DISPATCH_LEVEL)
2498 WDFAPI
2499 BOOLEAN
2500 STDCALL
2501 WDFEXPORT(WdfDmaTransactionDmaCompletedFinal)(
2502     _In_
2503     PWDF_DRIVER_GLOBALS DriverGlobals,
2504     _In_
2505     WDFDMATRANSACTION DmaTransaction,
2506     _In_
2507     size_t FinalTransferredLength,
2508     _Out_
2509     NTSTATUS* Status
2510     );
2511 
2512 _IRQL_requires_max_(DISPATCH_LEVEL)
2513 WDFAPI
2514 size_t
2515 STDCALL
2516 WDFEXPORT(WdfDmaTransactionGetBytesTransferred)(
2517     _In_
2518     PWDF_DRIVER_GLOBALS DriverGlobals,
2519     _In_
2520     WDFDMATRANSACTION DmaTransaction
2521     );
2522 
2523 _IRQL_requires_max_(DISPATCH_LEVEL)
2524 WDFAPI
2525 VOID
2526 STDCALL
2527 WDFEXPORT(WdfDmaTransactionSetMaximumLength)(
2528     _In_
2529     PWDF_DRIVER_GLOBALS DriverGlobals,
2530     _In_
2531     WDFDMATRANSACTION DmaTransaction,
2532     _In_
2533     size_t MaximumLength
2534     );
2535 
2536 _IRQL_requires_max_(DISPATCH_LEVEL)
2537 WDFAPI
2538 WDFREQUEST
2539 STDCALL
2540 WDFEXPORT(WdfDmaTransactionGetRequest)(
2541     _In_
2542     PWDF_DRIVER_GLOBALS DriverGlobals,
2543     _In_
2544     WDFDMATRANSACTION DmaTransaction
2545     );
2546 
2547 _IRQL_requires_max_(DISPATCH_LEVEL)
2548 WDFAPI
2549 size_t
2550 STDCALL
2551 WDFEXPORT(WdfDmaTransactionGetCurrentDmaTransferLength)(
2552     _In_
2553     PWDF_DRIVER_GLOBALS DriverGlobals,
2554     _In_
2555     WDFDMATRANSACTION DmaTransaction
2556     );
2557 
2558 _IRQL_requires_max_(DISPATCH_LEVEL)
2559 WDFAPI
2560 WDFDEVICE
2561 STDCALL
2562 WDFEXPORT(WdfDmaTransactionGetDevice)(
2563     _In_
2564     PWDF_DRIVER_GLOBALS DriverGlobals,
2565     _In_
2566     WDFDMATRANSACTION DmaTransaction
2567     );
2568 
2569 _IRQL_requires_max_(DISPATCH_LEVEL)
2570 WDFAPI
2571 VOID
2572 STDCALL
2573 WDFEXPORT(WdfDmaTransactionGetTransferInfo)(
2574     _In_
2575     PWDF_DRIVER_GLOBALS DriverGlobals,
2576     _In_
2577     WDFDMATRANSACTION DmaTransaction,
2578     _Out_opt_
2579     ULONG* MapRegisterCount,
2580     _Out_opt_
2581     ULONG* ScatterGatherElementCount
2582     );
2583 
2584 _IRQL_requires_max_(DISPATCH_LEVEL)
2585 WDFAPI
2586 VOID
2587 STDCALL
2588 WDFEXPORT(WdfDmaTransactionSetChannelConfigurationCallback)(
2589     _In_
2590     PWDF_DRIVER_GLOBALS DriverGlobals,
2591     _In_
2592     WDFDMATRANSACTION DmaTransaction,
2593     _In_opt_
2594     PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL ConfigureRoutine,
2595     _In_opt_
2596     PVOID ConfigureContext
2597     );
2598 
2599 _IRQL_requires_max_(DISPATCH_LEVEL)
2600 WDFAPI
2601 VOID
2602 STDCALL
2603 WDFEXPORT(WdfDmaTransactionSetTransferCompleteCallback)(
2604     _In_
2605     PWDF_DRIVER_GLOBALS DriverGlobals,
2606     _In_
2607     WDFDMATRANSACTION DmaTransaction,
2608     _In_opt_
2609     PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
2610     _In_opt_
2611     PVOID DmaCompletionContext
2612     );
2613 
2614 _IRQL_requires_max_(DISPATCH_LEVEL)
2615 WDFAPI
2616 VOID
2617 STDCALL
2618 WDFEXPORT(WdfDmaTransactionSetImmediateExecution)(
2619     _In_
2620     PWDF_DRIVER_GLOBALS DriverGlobals,
2621     _In_
2622     WDFDMATRANSACTION DmaTransaction,
2623     _In_
2624     BOOLEAN UseImmediateExecution
2625     );
2626 
2627 _IRQL_requires_max_(DISPATCH_LEVEL)
2628 WDFAPI
2629 NTSTATUS
2630 STDCALL
2631 WDFEXPORT(WdfDmaTransactionAllocateResources)(
2632     _In_
2633     PWDF_DRIVER_GLOBALS DriverGlobals,
2634     _In_
2635     WDFDMATRANSACTION DmaTransaction,
2636     _In_
2637     WDF_DMA_DIRECTION DmaDirection,
2638     _In_
2639     ULONG RequiredMapRegisters,
2640     _In_
2641     PFN_WDF_RESERVE_DMA EvtReserveDmaFunction,
2642     _In_
2643     PVOID EvtReserveDmaContext
2644     );
2645 
2646 _IRQL_requires_max_(DISPATCH_LEVEL)
2647 WDFAPI
2648 VOID
2649 STDCALL
2650 WDFEXPORT(WdfDmaTransactionSetDeviceAddressOffset)(
2651     _In_
2652     PWDF_DRIVER_GLOBALS DriverGlobals,
2653     _In_
2654     WDFDMATRANSACTION DmaTransaction,
2655     _In_
2656     ULONG Offset
2657     );
2658 
2659 _IRQL_requires_max_(DISPATCH_LEVEL)
2660 WDFAPI
2661 VOID
2662 STDCALL
2663 WDFEXPORT(WdfDmaTransactionFreeResources)(
2664     _In_
2665     PWDF_DRIVER_GLOBALS DriverGlobals,
2666     _In_
2667     WDFDMATRANSACTION DmaTransaction
2668     );
2669 
2670 _IRQL_requires_max_(DISPATCH_LEVEL)
2671 WDFAPI
2672 BOOLEAN
2673 STDCALL
2674 WDFEXPORT(WdfDmaTransactionCancel)(
2675     _In_
2676     PWDF_DRIVER_GLOBALS DriverGlobals,
2677     _In_
2678     WDFDMATRANSACTION DmaTransaction
2679     );
2680 
2681 _IRQL_requires_max_(DISPATCH_LEVEL)
2682 WDFAPI
2683 PVOID
2684 STDCALL
2685 WDFEXPORT(WdfDmaTransactionWdmGetTransferContext)(
2686     _In_
2687     PWDF_DRIVER_GLOBALS DriverGlobals,
2688     _In_
2689     WDFDMATRANSACTION DmaTransaction
2690     );
2691 
2692 _IRQL_requires_max_(DISPATCH_LEVEL)
2693 WDFAPI
2694 VOID
2695 STDCALL
2696 WDFEXPORT(WdfDmaTransactionStopSystemTransfer)(
2697     _In_
2698     PWDF_DRIVER_GLOBALS DriverGlobals,
2699     _In_
2700     WDFDMATRANSACTION DmaTransaction
2701     );
2702 
2703 _Must_inspect_result_
2704 _IRQL_requires_max_(DISPATCH_LEVEL)
2705 WDFAPI
2706 NTSTATUS
2707 STDCALL
2708 WDFEXPORT(WdfDpcCreate)(
2709     _In_
2710     PWDF_DRIVER_GLOBALS DriverGlobals,
2711     _In_
2712     PWDF_DPC_CONFIG Config,
2713     _In_
2714     PWDF_OBJECT_ATTRIBUTES Attributes,
2715     _Out_
2716     WDFDPC* Dpc
2717     );
2718 
2719 _IRQL_requires_max_(HIGH_LEVEL)
2720 WDFAPI
2721 BOOLEAN
2722 STDCALL
2723 WDFEXPORT(WdfDpcEnqueue)(
2724     _In_
2725     PWDF_DRIVER_GLOBALS DriverGlobals,
2726     _In_
2727     WDFDPC Dpc
2728     );
2729 
2730 _When_(Wait == __true, _IRQL_requires_max_(PASSIVE_LEVEL))
2731 _When_(Wait == __false, _IRQL_requires_max_(HIGH_LEVEL))
2732 WDFAPI
2733 BOOLEAN
2734 STDCALL
2735 WDFEXPORT(WdfDpcCancel)(
2736     _In_
2737     PWDF_DRIVER_GLOBALS DriverGlobals,
2738     _In_
2739     WDFDPC Dpc,
2740     _In_
2741     BOOLEAN Wait
2742     );
2743 
2744 _IRQL_requires_max_(HIGH_LEVEL)
2745 WDFAPI
2746 WDFOBJECT
2747 STDCALL
2748 WDFEXPORT(WdfDpcGetParentObject)(
2749     _In_
2750     PWDF_DRIVER_GLOBALS DriverGlobals,
2751     _In_
2752     WDFDPC Dpc
2753     );
2754 
2755 _IRQL_requires_max_(HIGH_LEVEL)
2756 WDFAPI
2757 PKDPC
2758 STDCALL
2759 WDFEXPORT(WdfDpcWdmGetDpc)(
2760     _In_
2761     PWDF_DRIVER_GLOBALS DriverGlobals,
2762     _In_
2763     WDFDPC Dpc
2764     );
2765 
2766 _Must_inspect_result_
2767 _IRQL_requires_max_(PASSIVE_LEVEL)
2768 WDFAPI
2769 NTSTATUS
2770 STDCALL
2771 WDFEXPORT(WdfDriverCreate)(
2772     _In_
2773     PWDF_DRIVER_GLOBALS DriverGlobals,
2774     _In_
2775     PDRIVER_OBJECT DriverObject,
2776     _In_
2777     PCUNICODE_STRING RegistryPath,
2778     _In_opt_
2779     PWDF_OBJECT_ATTRIBUTES DriverAttributes,
2780     _In_
2781     PWDF_DRIVER_CONFIG DriverConfig,
2782     _Out_opt_
2783     WDFDRIVER* Driver
2784     );
2785 
2786 _IRQL_requires_max_(PASSIVE_LEVEL)
2787 WDFAPI
2788 PWSTR
2789 STDCALL
2790 WDFEXPORT(WdfDriverGetRegistryPath)(
2791     _In_
2792     PWDF_DRIVER_GLOBALS DriverGlobals,
2793     _In_
2794     WDFDRIVER Driver
2795     );
2796 
2797 _IRQL_requires_max_(DISPATCH_LEVEL)
2798 WDFAPI
2799 PDRIVER_OBJECT
2800 STDCALL
2801 WDFEXPORT(WdfDriverWdmGetDriverObject)(
2802     _In_
2803     PWDF_DRIVER_GLOBALS DriverGlobals,
2804     _In_
2805     WDFDRIVER Driver
2806     );
2807 
2808 _Must_inspect_result_
2809 _IRQL_requires_max_(PASSIVE_LEVEL)
2810 WDFAPI
2811 NTSTATUS
2812 STDCALL
2813 WDFEXPORT(WdfDriverOpenParametersRegistryKey)(
2814     _In_
2815     PWDF_DRIVER_GLOBALS DriverGlobals,
2816     _In_
2817     WDFDRIVER Driver,
2818     _In_
2819     ACCESS_MASK DesiredAccess,
2820     _In_opt_
2821     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
2822     _Out_
2823     WDFKEY* Key
2824     );
2825 
2826 _IRQL_requires_max_(DISPATCH_LEVEL)
2827 WDFAPI
2828 WDFDRIVER
2829 STDCALL
2830 WDFEXPORT(WdfWdmDriverGetWdfDriverHandle)(
2831     _In_
2832     PWDF_DRIVER_GLOBALS DriverGlobals,
2833     _In_
2834     PDRIVER_OBJECT DriverObject
2835     );
2836 
2837 _Must_inspect_result_
2838 _IRQL_requires_max_(PASSIVE_LEVEL)
2839 WDFAPI
2840 NTSTATUS
2841 STDCALL
2842 WDFEXPORT(WdfDriverRegisterTraceInfo)(
2843     _In_
2844     PWDF_DRIVER_GLOBALS DriverGlobals,
2845     _In_
2846     PDRIVER_OBJECT DriverObject,
2847     _In_
2848     PFN_WDF_TRACE_CALLBACK EvtTraceCallback,
2849     _In_
2850     PVOID ControlBlock
2851     );
2852 
2853 _Must_inspect_result_
2854 _IRQL_requires_max_(PASSIVE_LEVEL)
2855 WDFAPI
2856 NTSTATUS
2857 STDCALL
2858 WDFEXPORT(WdfDriverRetrieveVersionString)(
2859     _In_
2860     PWDF_DRIVER_GLOBALS DriverGlobals,
2861     _In_
2862     WDFDRIVER Driver,
2863     _In_
2864     WDFSTRING String
2865     );
2866 
2867 _Must_inspect_result_
2868 _IRQL_requires_max_(PASSIVE_LEVEL)
2869 WDFAPI
2870 BOOLEAN
2871 STDCALL
2872 WDFEXPORT(WdfDriverIsVersionAvailable)(
2873     _In_
2874     PWDF_DRIVER_GLOBALS DriverGlobals,
2875     _In_
2876     WDFDRIVER Driver,
2877     _In_
2878     PWDF_DRIVER_VERSION_AVAILABLE_PARAMS VersionAvailableParams
2879     );
2880 
2881 _IRQL_requires_max_(DISPATCH_LEVEL)
2882 WDFAPI
2883 PDEVICE_OBJECT
2884 STDCALL
2885 WDFEXPORT(WdfFdoInitWdmGetPhysicalDevice)(
2886     _In_
2887     PWDF_DRIVER_GLOBALS DriverGlobals,
2888     _In_
2889     PWDFDEVICE_INIT DeviceInit
2890     );
2891 
2892 _Must_inspect_result_
2893 _IRQL_requires_max_(PASSIVE_LEVEL)
2894 WDFAPI
2895 NTSTATUS
2896 STDCALL
2897 WDFEXPORT(WdfFdoInitOpenRegistryKey)(
2898     _In_
2899     PWDF_DRIVER_GLOBALS DriverGlobals,
2900     _In_
2901     PWDFDEVICE_INIT DeviceInit,
2902     _In_
2903     ULONG DeviceInstanceKeyType,
2904     _In_
2905     ACCESS_MASK DesiredAccess,
2906     _In_opt_
2907     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
2908     _Out_
2909     WDFKEY* Key
2910     );
2911 
2912 _Must_inspect_result_
2913 _IRQL_requires_max_(PASSIVE_LEVEL)
2914 WDFAPI
2915 NTSTATUS
2916 STDCALL
2917 WDFEXPORT(WdfFdoInitQueryProperty)(
2918     _In_
2919     PWDF_DRIVER_GLOBALS DriverGlobals,
2920     _In_
2921     PWDFDEVICE_INIT DeviceInit,
2922     _In_
2923     DEVICE_REGISTRY_PROPERTY DeviceProperty,
2924     _In_
2925     ULONG BufferLength,
2926     _Out_writes_bytes_all_opt_(BufferLength)
2927     PVOID PropertyBuffer,
2928     _Out_
2929     PULONG ResultLength
2930     );
2931 
2932 _Must_inspect_result_
2933 _IRQL_requires_max_(PASSIVE_LEVEL)
2934 WDFAPI
2935 NTSTATUS
2936 STDCALL
2937 WDFEXPORT(WdfFdoInitAllocAndQueryProperty)(
2938     _In_
2939     PWDF_DRIVER_GLOBALS DriverGlobals,
2940     _In_
2941     PWDFDEVICE_INIT DeviceInit,
2942     _In_
2943     DEVICE_REGISTRY_PROPERTY DeviceProperty,
2944     _In_
2945     _Strict_type_match_
2946     POOL_TYPE PoolType,
2947     _In_opt_
2948     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
2949     _Out_
2950     WDFMEMORY* PropertyMemory
2951     );
2952 
2953 _Must_inspect_result_
2954 _IRQL_requires_max_(PASSIVE_LEVEL)
2955 WDFAPI
2956 NTSTATUS
2957 STDCALL
2958 WDFEXPORT(WdfFdoInitQueryPropertyEx)(
2959     _In_
2960     PWDF_DRIVER_GLOBALS DriverGlobals,
2961     _In_
2962     PWDFDEVICE_INIT DeviceInit,
2963     _In_
2964     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
2965     _In_
2966     ULONG BufferLength,
2967     _Out_
2968     PVOID PropertyBuffer,
2969     _Out_
2970     PULONG ResultLength,
2971     _Out_
2972     PDEVPROPTYPE Type
2973     );
2974 
2975 _Must_inspect_result_
2976 _IRQL_requires_max_(PASSIVE_LEVEL)
2977 WDFAPI
2978 NTSTATUS
2979 STDCALL
2980 WDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx)(
2981     _In_
2982     PWDF_DRIVER_GLOBALS DriverGlobals,
2983     _In_
2984     PWDFDEVICE_INIT DeviceInit,
2985     _In_
2986     PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
2987     _In_
2988     _Strict_type_match_
2989     POOL_TYPE PoolType,
2990     _In_opt_
2991     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
2992     _Out_
2993     WDFMEMORY* PropertyMemory,
2994     _Out_
2995     PDEVPROPTYPE Type
2996     );
2997 
2998 _IRQL_requires_max_(PASSIVE_LEVEL)
2999 WDFAPI
3000 VOID
3001 STDCALL
3002 WDFEXPORT(WdfFdoInitSetEventCallbacks)(
3003     _In_
3004     PWDF_DRIVER_GLOBALS DriverGlobals,
3005     _In_
3006     PWDFDEVICE_INIT DeviceInit,
3007     _In_
3008     PWDF_FDO_EVENT_CALLBACKS FdoEventCallbacks
3009     );
3010 
3011 _IRQL_requires_max_(PASSIVE_LEVEL)
3012 WDFAPI
3013 VOID
3014 STDCALL
3015 WDFEXPORT(WdfFdoInitSetFilter)(
3016     _In_
3017     PWDF_DRIVER_GLOBALS DriverGlobals,
3018     _In_
3019     PWDFDEVICE_INIT DeviceInit
3020     );
3021 
3022 _IRQL_requires_max_(PASSIVE_LEVEL)
3023 WDFAPI
3024 VOID
3025 STDCALL
3026 WDFEXPORT(WdfFdoInitSetDefaultChildListConfig)(
3027     _In_
3028     PWDF_DRIVER_GLOBALS DriverGlobals,
3029     _Inout_
3030     PWDFDEVICE_INIT DeviceInit,
3031     _In_
3032     PWDF_CHILD_LIST_CONFIG Config,
3033     _In_opt_
3034     PWDF_OBJECT_ATTRIBUTES DefaultChildListAttributes
3035     );
3036 
3037 _Must_inspect_result_
3038 _IRQL_requires_max_(PASSIVE_LEVEL)
3039 WDFAPI
3040 NTSTATUS
3041 STDCALL
3042 WDFEXPORT(WdfFdoQueryForInterface)(
3043     _In_
3044     PWDF_DRIVER_GLOBALS DriverGlobals,
3045     _In_
3046     WDFDEVICE Fdo,
3047     _In_
3048     LPCGUID InterfaceType,
3049     _Out_
3050     PINTERFACE Interface,
3051     _In_
3052     USHORT Size,
3053     _In_
3054     USHORT Version,
3055     _In_opt_
3056     PVOID InterfaceSpecificData
3057     );
3058 
3059 _IRQL_requires_max_(DISPATCH_LEVEL)
3060 WDFAPI
3061 WDFCHILDLIST
3062 STDCALL
3063 WDFEXPORT(WdfFdoGetDefaultChildList)(
3064     _In_
3065     PWDF_DRIVER_GLOBALS DriverGlobals,
3066     _In_
3067     WDFDEVICE Fdo
3068     );
3069 
3070 _Must_inspect_result_
3071 _IRQL_requires_max_(DISPATCH_LEVEL)
3072 WDFAPI
3073 NTSTATUS
3074 STDCALL
3075 WDFEXPORT(WdfFdoAddStaticChild)(
3076     _In_
3077     PWDF_DRIVER_GLOBALS DriverGlobals,
3078     _In_
3079     WDFDEVICE Fdo,
3080     _In_
3081     WDFDEVICE Child
3082     );
3083 
3084 _IRQL_requires_max_(DISPATCH_LEVEL)
3085 WDFAPI
3086 VOID
3087 STDCALL
3088 WDFEXPORT(WdfFdoLockStaticChildListForIteration)(
3089     _In_
3090     PWDF_DRIVER_GLOBALS DriverGlobals,
3091     _In_
3092     WDFDEVICE Fdo
3093     );
3094 
3095 _Must_inspect_result_
3096 _IRQL_requires_max_(DISPATCH_LEVEL)
3097 WDFAPI
3098 WDFDEVICE
3099 STDCALL
3100 WDFEXPORT(WdfFdoRetrieveNextStaticChild)(
3101     _In_
3102     PWDF_DRIVER_GLOBALS DriverGlobals,
3103     _In_
3104     WDFDEVICE Fdo,
3105     _In_opt_
3106     WDFDEVICE PreviousChild,
3107     _In_
3108     ULONG Flags
3109     );
3110 
3111 _IRQL_requires_max_(DISPATCH_LEVEL)
3112 WDFAPI
3113 VOID
3114 STDCALL
3115 WDFEXPORT(WdfFdoUnlockStaticChildListFromIteration)(
3116     _In_
3117     PWDF_DRIVER_GLOBALS DriverGlobals,
3118     _In_
3119     WDFDEVICE Fdo
3120     );
3121 
3122 _IRQL_requires_max_(PASSIVE_LEVEL)
3123 WDFAPI
3124 PUNICODE_STRING
3125 STDCALL
3126 WDFEXPORT(WdfFileObjectGetFileName)(
3127     _In_
3128     PWDF_DRIVER_GLOBALS DriverGlobals,
3129     _In_
3130     WDFFILEOBJECT FileObject
3131     );
3132 
3133 _IRQL_requires_max_(DISPATCH_LEVEL)
3134 WDFAPI
3135 ULONG
3136 STDCALL
3137 WDFEXPORT(WdfFileObjectGetFlags)(
3138     _In_
3139     PWDF_DRIVER_GLOBALS DriverGlobals,
3140     _In_
3141     WDFFILEOBJECT FileObject
3142     );
3143 
3144 _IRQL_requires_max_(DISPATCH_LEVEL)
3145 WDFAPI
3146 WDFDEVICE
3147 STDCALL
3148 WDFEXPORT(WdfFileObjectGetDevice)(
3149     _In_
3150     PWDF_DRIVER_GLOBALS DriverGlobals,
3151     _In_
3152     WDFFILEOBJECT FileObject
3153     );
3154 
3155 _IRQL_requires_max_(DISPATCH_LEVEL)
3156 WDFAPI
3157 PFILE_OBJECT
3158 STDCALL
3159 WDFEXPORT(WdfFileObjectWdmGetFileObject)(
3160     _In_
3161     PWDF_DRIVER_GLOBALS DriverGlobals,
3162     _In_
3163     WDFFILEOBJECT FileObject
3164     );
3165 
3166 _Must_inspect_result_
3167 _IRQL_requires_max_(DISPATCH_LEVEL)
3168 WDFAPI
3169 NTSTATUS
3170 STDCALL
3171 WDFEXPORT(WdfInterruptCreate)(
3172     _In_
3173     PWDF_DRIVER_GLOBALS DriverGlobals,
3174     _In_
3175     WDFDEVICE Device,
3176     _In_
3177     PWDF_INTERRUPT_CONFIG Configuration,
3178     _In_opt_
3179     PWDF_OBJECT_ATTRIBUTES Attributes,
3180     _Out_
3181     WDFINTERRUPT* Interrupt
3182     );
3183 
3184 WDFAPI
3185 BOOLEAN
3186 STDCALL
3187 WDFEXPORT(WdfInterruptQueueDpcForIsr)(
3188     _In_
3189     PWDF_DRIVER_GLOBALS DriverGlobals,
3190     _In_
3191     WDFINTERRUPT Interrupt
3192     );
3193 
3194 WDFAPI
3195 BOOLEAN
3196 STDCALL
3197 WDFEXPORT(WdfInterruptQueueWorkItemForIsr)(
3198     _In_
3199     PWDF_DRIVER_GLOBALS DriverGlobals,
3200     _In_
3201     WDFINTERRUPT Interrupt
3202     );
3203 
3204 _IRQL_requires_max_(DISPATCH_LEVEL)
3205 WDFAPI
3206 BOOLEAN
3207 STDCALL
3208 WDFEXPORT(WdfInterruptSynchronize)(
3209     _In_
3210     PWDF_DRIVER_GLOBALS DriverGlobals,
3211     _In_
3212     WDFINTERRUPT Interrupt,
3213     _In_
3214     PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
3215     _In_
3216     WDFCONTEXT Context
3217     );
3218 
3219 _IRQL_requires_max_(DISPATCH_LEVEL + 1)
3220 WDFAPI
3221 VOID
3222 STDCALL
3223 WDFEXPORT(WdfInterruptAcquireLock)(
3224     _In_
3225     PWDF_DRIVER_GLOBALS DriverGlobals,
3226     _In_
3227     _Requires_lock_not_held_(_Curr_)
3228     _Acquires_lock_(_Curr_)
3229     WDFINTERRUPT Interrupt
3230     );
3231 
3232 _IRQL_requires_max_(DISPATCH_LEVEL + 1)
3233 WDFAPI
3234 VOID
3235 STDCALL
3236 WDFEXPORT(WdfInterruptReleaseLock)(
3237     _In_
3238     PWDF_DRIVER_GLOBALS DriverGlobals,
3239     _In_
3240     _Requires_lock_held_(_Curr_)
3241     _Releases_lock_(_Curr_)
3242     WDFINTERRUPT Interrupt
3243     );
3244 
3245 _IRQL_requires_max_(PASSIVE_LEVEL)
3246 WDFAPI
3247 VOID
3248 STDCALL
3249 WDFEXPORT(WdfInterruptEnable)(
3250     _In_
3251     PWDF_DRIVER_GLOBALS DriverGlobals,
3252     _In_
3253     WDFINTERRUPT Interrupt
3254     );
3255 
3256 _IRQL_requires_max_(PASSIVE_LEVEL)
3257 WDFAPI
3258 VOID
3259 STDCALL
3260 WDFEXPORT(WdfInterruptDisable)(
3261     _In_
3262     PWDF_DRIVER_GLOBALS DriverGlobals,
3263     _In_
3264     WDFINTERRUPT Interrupt
3265     );
3266 
3267 _Must_inspect_result_
3268 WDFAPI
3269 PKINTERRUPT
3270 STDCALL
3271 WDFEXPORT(WdfInterruptWdmGetInterrupt)(
3272     _In_
3273     PWDF_DRIVER_GLOBALS DriverGlobals,
3274     _In_
3275     WDFINTERRUPT Interrupt
3276     );
3277 
3278 _IRQL_requires_max_(DISPATCH_LEVEL)
3279 WDFAPI
3280 VOID
3281 STDCALL
3282 WDFEXPORT(WdfInterruptGetInfo)(
3283     _In_
3284     PWDF_DRIVER_GLOBALS DriverGlobals,
3285     _In_
3286     WDFINTERRUPT Interrupt,
3287     _Out_
3288     PWDF_INTERRUPT_INFO Info
3289     );
3290 
3291 _IRQL_requires_max_(DISPATCH_LEVEL)
3292 WDFAPI
3293 VOID
3294 STDCALL
3295 WDFEXPORT(WdfInterruptSetPolicy)(
3296     _In_
3297     PWDF_DRIVER_GLOBALS DriverGlobals,
3298     _In_
3299     WDFINTERRUPT Interrupt,
3300     _In_
3301     WDF_INTERRUPT_POLICY Policy,
3302     _In_
3303     WDF_INTERRUPT_PRIORITY Priority,
3304     _In_
3305     KAFFINITY TargetProcessorSet
3306     );
3307 
3308 _IRQL_requires_max_(DISPATCH_LEVEL)
3309 WDFAPI
3310 VOID
3311 STDCALL
3312 WDFEXPORT(WdfInterruptSetExtendedPolicy)(
3313     _In_
3314     PWDF_DRIVER_GLOBALS DriverGlobals,
3315     _In_
3316     WDFINTERRUPT Interrupt,
3317     _In_
3318     PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
3319     );
3320 
3321 WDFAPI
3322 WDFDEVICE
3323 STDCALL
3324 WDFEXPORT(WdfInterruptGetDevice)(
3325     _In_
3326     PWDF_DRIVER_GLOBALS DriverGlobals,
3327     _In_
3328     WDFINTERRUPT Interrupt
3329     );
3330 
3331 _Must_inspect_result_
3332 _Post_satisfies_(return == 1 || return == 0)
3333 _IRQL_requires_max_(PASSIVE_LEVEL)
3334 WDFAPI
3335 BOOLEAN
3336 STDCALL
3337 WDFEXPORT(WdfInterruptTryToAcquireLock)(
3338     _In_
3339     PWDF_DRIVER_GLOBALS DriverGlobals,
3340     _In_
3341     _Requires_lock_not_held_(_Curr_)
3342     _When_(return!=0, _Acquires_lock_(_Curr_))
3343     WDFINTERRUPT Interrupt
3344     );
3345 
3346 _IRQL_requires_max_(DISPATCH_LEVEL)
3347 WDFAPI
3348 VOID
3349 STDCALL
3350 WDFEXPORT(WdfInterruptReportActive)(
3351     _In_
3352     PWDF_DRIVER_GLOBALS DriverGlobals,
3353     _In_
3354     WDFINTERRUPT Interrupt
3355     );
3356 
3357 _IRQL_requires_max_(DISPATCH_LEVEL)
3358 WDFAPI
3359 VOID
3360 STDCALL
3361 WDFEXPORT(WdfInterruptReportInactive)(
3362     _In_
3363     PWDF_DRIVER_GLOBALS DriverGlobals,
3364     _In_
3365     WDFINTERRUPT Interrupt
3366     );
3367 
3368 _Must_inspect_result_
3369 _IRQL_requires_max_(DISPATCH_LEVEL)
3370 WDFAPI
3371 NTSTATUS
3372 STDCALL
3373 WDFEXPORT(WdfIoQueueCreate)(
3374     _In_
3375     PWDF_DRIVER_GLOBALS DriverGlobals,
3376     _In_
3377     WDFDEVICE Device,
3378     _In_
3379     PWDF_IO_QUEUE_CONFIG Config,
3380     _In_opt_
3381     PWDF_OBJECT_ATTRIBUTES QueueAttributes,
3382     _Out_opt_
3383     WDFQUEUE* Queue
3384     );
3385 
3386 _IRQL_requires_max_(DISPATCH_LEVEL)
3387 WDFAPI
3388 WDF_IO_QUEUE_STATE
3389 STDCALL
3390 WDFEXPORT(WdfIoQueueGetState)(
3391     _In_
3392     PWDF_DRIVER_GLOBALS DriverGlobals,
3393     _In_
3394     WDFQUEUE Queue,
3395     _Out_opt_
3396     PULONG QueueRequests,
3397     _Out_opt_
3398     PULONG DriverRequests
3399     );
3400 
3401 _IRQL_requires_max_(DISPATCH_LEVEL)
3402 WDFAPI
3403 VOID
3404 STDCALL
3405 WDFEXPORT(WdfIoQueueStart)(
3406     _In_
3407     PWDF_DRIVER_GLOBALS DriverGlobals,
3408     _In_
3409     WDFQUEUE Queue
3410     );
3411 
3412 _IRQL_requires_max_(DISPATCH_LEVEL)
3413 WDFAPI
3414 VOID
3415 STDCALL
3416 WDFEXPORT(WdfIoQueueStop)(
3417     _In_
3418     PWDF_DRIVER_GLOBALS DriverGlobals,
3419     _In_
3420     WDFQUEUE Queue,
3421     _When_(Context != 0, _In_)
3422     _When_(Context == 0, _In_opt_)
3423     PFN_WDF_IO_QUEUE_STATE StopComplete,
3424     _When_(StopComplete != 0, _In_)
3425     _When_(StopComplete == 0, _In_opt_)
3426     WDFCONTEXT Context
3427     );
3428 
3429 _IRQL_requires_max_(PASSIVE_LEVEL)
3430 WDFAPI
3431 VOID
3432 STDCALL
3433 WDFEXPORT(WdfIoQueueStopSynchronously)(
3434     _In_
3435     PWDF_DRIVER_GLOBALS DriverGlobals,
3436     _In_
3437     WDFQUEUE Queue
3438     );
3439 
3440 _IRQL_requires_max_(DISPATCH_LEVEL)
3441 WDFAPI
3442 WDFDEVICE
3443 STDCALL
3444 WDFEXPORT(WdfIoQueueGetDevice)(
3445     _In_
3446     PWDF_DRIVER_GLOBALS DriverGlobals,
3447     _In_
3448     WDFQUEUE Queue
3449     );
3450 
3451 _Must_inspect_result_
3452 _IRQL_requires_max_(DISPATCH_LEVEL)
3453 WDFAPI
3454 NTSTATUS
3455 STDCALL
3456 WDFEXPORT(WdfIoQueueRetrieveNextRequest)(
3457     _In_
3458     PWDF_DRIVER_GLOBALS DriverGlobals,
3459     _In_
3460     WDFQUEUE Queue,
3461     _Out_
3462     WDFREQUEST* OutRequest
3463     );
3464 
3465 _Must_inspect_result_
3466 _IRQL_requires_max_(DISPATCH_LEVEL)
3467 WDFAPI
3468 NTSTATUS
3469 STDCALL
3470 WDFEXPORT(WdfIoQueueRetrieveRequestByFileObject)(
3471     _In_
3472     PWDF_DRIVER_GLOBALS DriverGlobals,
3473     _In_
3474     WDFQUEUE Queue,
3475     _In_
3476     WDFFILEOBJECT FileObject,
3477     _Out_
3478     WDFREQUEST* OutRequest
3479     );
3480 
3481 _Must_inspect_result_
3482 _IRQL_requires_max_(DISPATCH_LEVEL)
3483 WDFAPI
3484 NTSTATUS
3485 STDCALL
3486 WDFEXPORT(WdfIoQueueFindRequest)(
3487     _In_
3488     PWDF_DRIVER_GLOBALS DriverGlobals,
3489     _In_
3490     WDFQUEUE Queue,
3491     _In_opt_
3492     WDFREQUEST FoundRequest,
3493     _In_opt_
3494     WDFFILEOBJECT FileObject,
3495     _Inout_opt_
3496     PWDF_REQUEST_PARAMETERS Parameters,
3497     _Out_
3498     WDFREQUEST* OutRequest
3499     );
3500 
3501 _Must_inspect_result_
3502 _IRQL_requires_max_(DISPATCH_LEVEL)
3503 WDFAPI
3504 NTSTATUS
3505 STDCALL
3506 WDFEXPORT(WdfIoQueueRetrieveFoundRequest)(
3507     _In_
3508     PWDF_DRIVER_GLOBALS DriverGlobals,
3509     _In_
3510     WDFQUEUE Queue,
3511     _In_
3512     WDFREQUEST FoundRequest,
3513     _Out_
3514     WDFREQUEST* OutRequest
3515     );
3516 
3517 _IRQL_requires_max_(PASSIVE_LEVEL)
3518 WDFAPI
3519 VOID
3520 STDCALL
3521 WDFEXPORT(WdfIoQueueDrainSynchronously)(
3522     _In_
3523     PWDF_DRIVER_GLOBALS DriverGlobals,
3524     _In_
3525     WDFQUEUE Queue
3526     );
3527 
3528 _IRQL_requires_max_(DISPATCH_LEVEL)
3529 WDFAPI
3530 VOID
3531 STDCALL
3532 WDFEXPORT(WdfIoQueueDrain)(
3533     _In_
3534     PWDF_DRIVER_GLOBALS DriverGlobals,
3535     _In_
3536     WDFQUEUE Queue,
3537     _When_(Context != 0, _In_)
3538     _When_(Context == 0, _In_opt_)
3539     PFN_WDF_IO_QUEUE_STATE DrainComplete,
3540     _When_(DrainComplete != 0, _In_)
3541     _When_(DrainComplete == 0, _In_opt_)
3542     WDFCONTEXT Context
3543     );
3544 
3545 _IRQL_requires_max_(PASSIVE_LEVEL)
3546 WDFAPI
3547 VOID
3548 STDCALL
3549 WDFEXPORT(WdfIoQueuePurgeSynchronously)(
3550     _In_
3551     PWDF_DRIVER_GLOBALS DriverGlobals,
3552     _In_
3553     WDFQUEUE Queue
3554     );
3555 
3556 _IRQL_requires_max_(DISPATCH_LEVEL)
3557 WDFAPI
3558 VOID
3559 STDCALL
3560 WDFEXPORT(WdfIoQueuePurge)(
3561     _In_
3562     PWDF_DRIVER_GLOBALS DriverGlobals,
3563     _In_
3564     WDFQUEUE Queue,
3565     _When_(Context != 0, _In_)
3566     _When_(Context == 0, _In_opt_)
3567     PFN_WDF_IO_QUEUE_STATE PurgeComplete,
3568     _When_(PurgeComplete != 0, _In_)
3569     _When_(PurgeComplete == 0, _In_opt_)
3570     WDFCONTEXT Context
3571     );
3572 
3573 _Must_inspect_result_
3574 _IRQL_requires_max_(DISPATCH_LEVEL)
3575 WDFAPI
3576 NTSTATUS
3577 STDCALL
3578 WDFEXPORT(WdfIoQueueReadyNotify)(
3579     _In_
3580     PWDF_DRIVER_GLOBALS DriverGlobals,
3581     _In_
3582     WDFQUEUE Queue,
3583     _In_opt_
3584     PFN_WDF_IO_QUEUE_STATE QueueReady,
3585     _In_opt_
3586     WDFCONTEXT Context
3587     );
3588 
3589 _Must_inspect_result_
3590 _IRQL_requires_max_(PASSIVE_LEVEL)
3591 WDFAPI
3592 NTSTATUS
3593 STDCALL
3594 WDFEXPORT(WdfIoQueueAssignForwardProgressPolicy)(
3595     _In_
3596     PWDF_DRIVER_GLOBALS DriverGlobals,
3597     _In_
3598     WDFQUEUE Queue,
3599     _In_
3600     PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY ForwardProgressPolicy
3601     );
3602 
3603 _IRQL_requires_max_(DISPATCH_LEVEL)
3604 WDFAPI
3605 VOID
3606 STDCALL
3607 WDFEXPORT(WdfIoQueueStopAndPurge)(
3608     _In_
3609     PWDF_DRIVER_GLOBALS DriverGlobals,
3610     _In_
3611     WDFQUEUE Queue,
3612     _When_(Context != 0, _In_)
3613     _When_(Context == 0, _In_opt_)
3614     PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
3615     _When_(StopAndPurgeComplete != 0, _In_)
3616     _When_(StopAndPurgeComplete == 0, _In_opt_)
3617     WDFCONTEXT Context
3618     );
3619 
3620 _IRQL_requires_max_(PASSIVE_LEVEL)
3621 WDFAPI
3622 VOID
3623 STDCALL
3624 WDFEXPORT(WdfIoQueueStopAndPurgeSynchronously)(
3625     _In_
3626     PWDF_DRIVER_GLOBALS DriverGlobals,
3627     _In_
3628     WDFQUEUE Queue
3629     );
3630 
3631 _Must_inspect_result_
3632 _IRQL_requires_max_(PASSIVE_LEVEL)
3633 WDFAPI
3634 NTSTATUS
3635 STDCALL
3636 WDFEXPORT(WdfIoTargetCreate)(
3637     _In_
3638     PWDF_DRIVER_GLOBALS DriverGlobals,
3639     _In_
3640     WDFDEVICE Device,
3641     _In_opt_
3642     PWDF_OBJECT_ATTRIBUTES IoTargetAttributes,
3643     _Out_
3644     WDFIOTARGET* IoTarget
3645     );
3646 
3647 _Must_inspect_result_
3648 _IRQL_requires_max_(PASSIVE_LEVEL)
3649 WDFAPI
3650 NTSTATUS
3651 STDCALL
3652 WDFEXPORT(WdfIoTargetOpen)(
3653     _In_
3654     PWDF_DRIVER_GLOBALS DriverGlobals,
3655     _In_
3656     WDFIOTARGET IoTarget,
3657     _In_
3658     PWDF_IO_TARGET_OPEN_PARAMS OpenParams
3659     );
3660 
3661 _IRQL_requires_max_(PASSIVE_LEVEL)
3662 WDFAPI
3663 VOID
3664 STDCALL
3665 WDFEXPORT(WdfIoTargetCloseForQueryRemove)(
3666     _In_
3667     PWDF_DRIVER_GLOBALS DriverGlobals,
3668     _In_
3669     WDFIOTARGET IoTarget
3670     );
3671 
3672 _IRQL_requires_max_(PASSIVE_LEVEL)
3673 WDFAPI
3674 VOID
3675 STDCALL
3676 WDFEXPORT(WdfIoTargetClose)(
3677     _In_
3678     PWDF_DRIVER_GLOBALS DriverGlobals,
3679     _In_
3680     WDFIOTARGET IoTarget
3681     );
3682 
3683 _Must_inspect_result_
3684 _IRQL_requires_max_(DISPATCH_LEVEL)
3685 WDFAPI
3686 NTSTATUS
3687 STDCALL
3688 WDFEXPORT(WdfIoTargetStart)(
3689     _In_
3690     PWDF_DRIVER_GLOBALS DriverGlobals,
3691     _In_
3692     WDFIOTARGET IoTarget
3693     );
3694 
3695 _When_(Action == 3, _IRQL_requires_max_(DISPATCH_LEVEL))
3696 _When_(Action == 0 || Action == 1 || Action == 2, _IRQL_requires_max_(PASSIVE_LEVEL))
3697 WDFAPI
3698 VOID
3699 STDCALL
3700 WDFEXPORT(WdfIoTargetStop)(
3701     _In_
3702     PWDF_DRIVER_GLOBALS DriverGlobals,
3703     _In_
3704     WDFIOTARGET IoTarget,
3705     _In_
3706     _Strict_type_match_
3707     WDF_IO_TARGET_SENT_IO_ACTION Action
3708     );
3709 
3710 _When_(Action == 2, _IRQL_requires_max_(DISPATCH_LEVEL))
3711 _When_(Action == 0 || Action == 1, _IRQL_requires_max_(PASSIVE_LEVEL))
3712 WDFAPI
3713 VOID
3714 STDCALL
3715 WDFEXPORT(WdfIoTargetPurge)(
3716     _In_
3717     PWDF_DRIVER_GLOBALS DriverGlobals,
3718     _In_
3719     WDFIOTARGET IoTarget,
3720     _In_
3721     _Strict_type_match_
3722     WDF_IO_TARGET_PURGE_IO_ACTION Action
3723     );
3724 
3725 _IRQL_requires_max_(DISPATCH_LEVEL)
3726 WDFAPI
3727 WDF_IO_TARGET_STATE
3728 STDCALL
3729 WDFEXPORT(WdfIoTargetGetState)(
3730     _In_
3731     PWDF_DRIVER_GLOBALS DriverGlobals,
3732     _In_
3733     WDFIOTARGET IoTarget
3734     );
3735 
3736 _IRQL_requires_max_(DISPATCH_LEVEL)
3737 WDFAPI
3738 WDFDEVICE
3739 STDCALL
3740 WDFEXPORT(WdfIoTargetGetDevice)(
3741     _In_
3742     PWDF_DRIVER_GLOBALS DriverGlobals,
3743     _In_
3744     WDFIOTARGET IoTarget
3745     );
3746 
3747 _Must_inspect_result_
3748 _IRQL_requires_max_(PASSIVE_LEVEL)
3749 WDFAPI
3750 NTSTATUS
3751 STDCALL
3752 WDFEXPORT(WdfIoTargetQueryTargetProperty)(
3753     _In_
3754     PWDF_DRIVER_GLOBALS DriverGlobals,
3755     _In_
3756     WDFIOTARGET IoTarget,
3757     _In_
3758     DEVICE_REGISTRY_PROPERTY DeviceProperty,
3759     _In_
3760     ULONG BufferLength,
3761     _When_(BufferLength != 0, _Out_writes_bytes_to_opt_(BufferLength, *ResultLength))
3762     _When_(BufferLength == 0, _Out_opt_)
3763     PVOID PropertyBuffer,
3764     _Deref_out_range_(<=,BufferLength)
3765     PULONG ResultLength
3766     );
3767 
3768 _Must_inspect_result_
3769 _IRQL_requires_max_(PASSIVE_LEVEL)
3770 WDFAPI
3771 NTSTATUS
3772 STDCALL
3773 WDFEXPORT(WdfIoTargetAllocAndQueryTargetProperty)(
3774     _In_
3775     PWDF_DRIVER_GLOBALS DriverGlobals,
3776     _In_
3777     WDFIOTARGET IoTarget,
3778     _In_
3779     DEVICE_REGISTRY_PROPERTY DeviceProperty,
3780     _In_
3781     _Strict_type_match_
3782     POOL_TYPE PoolType,
3783     _In_opt_
3784     PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
3785     _Out_
3786     WDFMEMORY* PropertyMemory
3787     );
3788 
3789 _Must_inspect_result_
3790 _IRQL_requires_max_(PASSIVE_LEVEL)
3791 WDFAPI
3792 NTSTATUS
3793 STDCALL
3794 WDFEXPORT(WdfIoTargetQueryForInterface)(
3795     _In_
3796     PWDF_DRIVER_GLOBALS DriverGlobals,
3797     _In_
3798     WDFIOTARGET IoTarget,
3799     _In_
3800     LPCGUID InterfaceType,
3801     _Out_
3802     PINTERFACE Interface,
3803     _In_
3804     USHORT Size,
3805     _In_
3806     USHORT Version,
3807     _In_opt_
3808     PVOID InterfaceSpecificData
3809     );
3810 
3811 _IRQL_requires_max_(DISPATCH_LEVEL)
3812 WDFAPI
3813 PDEVICE_OBJECT
3814 STDCALL
3815 WDFEXPORT(WdfIoTargetWdmGetTargetDeviceObject)(
3816     _In_
3817     PWDF_DRIVER_GLOBALS DriverGlobals,
3818     _In_
3819     WDFIOTARGET IoTarget
3820     );
3821 
3822 _IRQL_requires_max_(DISPATCH_LEVEL)
3823 WDFAPI
3824 PDEVICE_OBJECT
3825 STDCALL
3826 WDFEXPORT(WdfIoTargetWdmGetTargetPhysicalDevice)(
3827     _In_
3828     PWDF_DRIVER_GLOBALS DriverGlobals,
3829     _In_
3830     WDFIOTARGET IoTarget
3831     );
3832 
3833 _IRQL_requires_max_(DISPATCH_LEVEL)
3834 WDFAPI
3835 PFILE_OBJECT
3836 STDCALL
3837 WDFEXPORT(WdfIoTargetWdmGetTargetFileObject)(
3838     _In_
3839     PWDF_DRIVER_GLOBALS DriverGlobals,
3840     _In_
3841     WDFIOTARGET IoTarget
3842     );
3843 
3844 _IRQL_requires_max_(DISPATCH_LEVEL)
3845 WDFAPI
3846 HANDLE
3847 STDCALL
3848 WDFEXPORT(WdfIoTargetWdmGetTargetFileHandle)(
3849     _In_
3850     PWDF_DRIVER_GLOBALS DriverGlobals,
3851     _In_
3852     WDFIOTARGET IoTarget
3853     );
3854 
3855 _Must_inspect_result_
3856 _IRQL_requires_max_(PASSIVE_LEVEL)
3857 WDFAPI
3858 NTSTATUS
3859 STDCALL
3860 WDFEXPORT(WdfIoTargetSendReadSynchronously)(
3861     _In_
3862     PWDF_DRIVER_GLOBALS DriverGlobals,
3863     _In_
3864     WDFIOTARGET IoTarget,
3865     _In_opt_
3866     WDFREQUEST Request,
3867     _In_opt_
3868     PWDF_MEMORY_DESCRIPTOR OutputBuffer,
3869     _In_opt_
3870     PLONGLONG DeviceOffset,
3871     _In_opt_
3872     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3873     _Out_opt_
3874     PULONG_PTR BytesRead
3875     );
3876 
3877 _Must_inspect_result_
3878 _IRQL_requires_max_(DISPATCH_LEVEL)
3879 WDFAPI
3880 NTSTATUS
3881 STDCALL
3882 WDFEXPORT(WdfIoTargetFormatRequestForRead)(
3883     _In_
3884     PWDF_DRIVER_GLOBALS DriverGlobals,
3885     _In_
3886     WDFIOTARGET IoTarget,
3887     _In_
3888     WDFREQUEST Request,
3889     _In_opt_
3890     WDFMEMORY OutputBuffer,
3891     _In_opt_
3892     PWDFMEMORY_OFFSET OutputBufferOffset,
3893     _In_opt_
3894     PLONGLONG DeviceOffset
3895     );
3896 
3897 _Must_inspect_result_
3898 _IRQL_requires_max_(PASSIVE_LEVEL)
3899 WDFAPI
3900 NTSTATUS
3901 STDCALL
3902 WDFEXPORT(WdfIoTargetSendWriteSynchronously)(
3903     _In_
3904     PWDF_DRIVER_GLOBALS DriverGlobals,
3905     _In_
3906     WDFIOTARGET IoTarget,
3907     _In_opt_
3908     WDFREQUEST Request,
3909     _In_opt_
3910     PWDF_MEMORY_DESCRIPTOR InputBuffer,
3911     _In_opt_
3912     PLONGLONG DeviceOffset,
3913     _In_opt_
3914     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3915     _Out_opt_
3916     PULONG_PTR BytesWritten
3917     );
3918 
3919 _Must_inspect_result_
3920 _IRQL_requires_max_(DISPATCH_LEVEL)
3921 WDFAPI
3922 NTSTATUS
3923 STDCALL
3924 WDFEXPORT(WdfIoTargetFormatRequestForWrite)(
3925     _In_
3926     PWDF_DRIVER_GLOBALS DriverGlobals,
3927     _In_
3928     WDFIOTARGET IoTarget,
3929     _In_
3930     WDFREQUEST Request,
3931     _In_opt_
3932     WDFMEMORY InputBuffer,
3933     _In_opt_
3934     PWDFMEMORY_OFFSET InputBufferOffset,
3935     _In_opt_
3936     PLONGLONG DeviceOffset
3937     );
3938 
3939 _Must_inspect_result_
3940 _IRQL_requires_max_(PASSIVE_LEVEL)
3941 WDFAPI
3942 NTSTATUS
3943 STDCALL
3944 WDFEXPORT(WdfIoTargetSendIoctlSynchronously)(
3945     _In_
3946     PWDF_DRIVER_GLOBALS DriverGlobals,
3947     _In_
3948     WDFIOTARGET IoTarget,
3949     _In_opt_
3950     WDFREQUEST Request,
3951     _In_
3952     ULONG IoctlCode,
3953     _In_opt_
3954     PWDF_MEMORY_DESCRIPTOR InputBuffer,
3955     _In_opt_
3956     PWDF_MEMORY_DESCRIPTOR OutputBuffer,
3957     _In_opt_
3958     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
3959     _Out_opt_
3960     PULONG_PTR BytesReturned
3961     );
3962 
3963 _Must_inspect_result_
3964 _IRQL_requires_max_(DISPATCH_LEVEL)
3965 WDFAPI
3966 NTSTATUS
3967 STDCALL
3968 WDFEXPORT(WdfIoTargetFormatRequestForIoctl)(
3969     _In_
3970     PWDF_DRIVER_GLOBALS DriverGlobals,
3971     _In_
3972     WDFIOTARGET IoTarget,
3973     _In_
3974     WDFREQUEST Request,
3975     _In_
3976     ULONG IoctlCode,
3977     _In_opt_
3978     WDFMEMORY InputBuffer,
3979     _In_opt_
3980     PWDFMEMORY_OFFSET InputBufferOffset,
3981     _In_opt_
3982     WDFMEMORY OutputBuffer,
3983     _In_opt_
3984     PWDFMEMORY_OFFSET OutputBufferOffset
3985     );
3986 
3987 _Must_inspect_result_
3988 _IRQL_requires_max_(PASSIVE_LEVEL)
3989 WDFAPI
3990 NTSTATUS
3991 STDCALL
3992 WDFEXPORT(WdfIoTargetSendInternalIoctlSynchronously)(
3993     _In_
3994     PWDF_DRIVER_GLOBALS DriverGlobals,
3995     _In_
3996     WDFIOTARGET IoTarget,
3997     _In_opt_
3998     WDFREQUEST Request,
3999     _In_
4000     ULONG IoctlCode,
4001     _In_opt_
4002     PWDF_MEMORY_DESCRIPTOR InputBuffer,
4003     _In_opt_
4004     PWDF_MEMORY_DESCRIPTOR OutputBuffer,
4005     _In_opt_
4006     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
4007     _Out_opt_
4008     PULONG_PTR BytesReturned
4009     );
4010 
4011 _Must_inspect_result_
4012 _IRQL_requires_max_(DISPATCH_LEVEL)
4013 WDFAPI
4014 NTSTATUS
4015 STDCALL
4016 WDFEXPORT(WdfIoTargetFormatRequestForInternalIoctl)(
4017     _In_
4018     PWDF_DRIVER_GLOBALS DriverGlobals,
4019     _In_
4020     WDFIOTARGET IoTarget,
4021     _In_
4022     WDFREQUEST Request,
4023     _In_
4024     ULONG IoctlCode,
4025     _In_opt_
4026     WDFMEMORY InputBuffer,
4027     _In_opt_
4028     PWDFMEMORY_OFFSET InputBufferOffset,
4029     _In_opt_
4030     WDFMEMORY OutputBuffer,
4031     _In_opt_
4032     PWDFMEMORY_OFFSET OutputBufferOffset
4033     );
4034 
4035 _Must_inspect_result_
4036 _IRQL_requires_max_(PASSIVE_LEVEL)
4037 WDFAPI
4038 NTSTATUS
4039 STDCALL
4040 WDFEXPORT(WdfIoTargetSendInternalIoctlOthersSynchronously)(
4041     _In_
4042     PWDF_DRIVER_GLOBALS DriverGlobals,
4043     _In_
4044     WDFIOTARGET IoTarget,
4045     _In_opt_
4046     WDFREQUEST Request,
4047     _In_
4048     ULONG IoctlCode,
4049     _In_opt_
4050     PWDF_MEMORY_DESCRIPTOR OtherArg1,
4051     _In_opt_
4052     PWDF_MEMORY_DESCRIPTOR OtherArg2,
4053     _In_opt_
4054     PWDF_MEMORY_DESCRIPTOR OtherArg4,
4055     _In_opt_
4056     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
4057     _Out_opt_
4058     PULONG_PTR BytesReturned
4059     );
4060 
4061 _Must_inspect_result_
4062 _IRQL_requires_max_(DISPATCH_LEVEL)
4063 WDFAPI
4064 NTSTATUS
4065 STDCALL
4066 WDFEXPORT(WdfIoTargetFormatRequestForInternalIoctlOthers)(
4067     _In_
4068     PWDF_DRIVER_GLOBALS DriverGlobals,
4069     _In_
4070     WDFIOTARGET IoTarget,
4071     _In_
4072     WDFREQUEST Request,
4073     _In_
4074     ULONG IoctlCode,
4075     _In_opt_
4076     WDFMEMORY OtherArg1,
4077     _In_opt_
4078     PWDFMEMORY_OFFSET OtherArg1Offset,
4079     _In_opt_
4080     WDFMEMORY OtherArg2,
4081     _In_opt_
4082     PWDFMEMORY_OFFSET OtherArg2Offset,
4083     _In_opt_
4084     WDFMEMORY OtherArg4,
4085     _In_opt_
4086     PWDFMEMORY_OFFSET OtherArg4Offset
4087     );
4088 
4089 _IRQL_requires_max_(DISPATCH_LEVEL)
4090 WDFAPI
4091 NTSTATUS
4092 STDCALL
4093 WDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue)(
4094     _In_
4095     PWDF_DRIVER_GLOBALS DriverGlobals,
4096     _In_
4097     WDFIOTARGET IoTarget,
4098     _In_
4099     WDFQUEUE Queue
4100     );
4101 
4102 _Must_inspect_result_
4103 _When_(PoolType == 1 || PoolType == 257, _IRQL_requires_max_(APC_LEVEL))
4104 _When_(PoolType == 0 || PoolType == 256, _IRQL_requires_max_(DISPATCH_LEVEL))
4105 WDFAPI
4106 NTSTATUS
4107 STDCALL
4108 WDFEXPORT(WdfMemoryCreate)(
4109     _In_
4110     PWDF_DRIVER_GLOBALS DriverGlobals,
4111     _In_opt_
4112     PWDF_OBJECT_ATTRIBUTES Attributes,
4113     _In_
4114     _Strict_type_match_
4115     POOL_TYPE PoolType,
4116     _In_opt_
4117     ULONG PoolTag,
4118     _In_
4119     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
4120     size_t BufferSize,
4121     _Out_
4122     WDFMEMORY* Memory,
4123     _Outptr_opt_result_bytebuffer_(BufferSize)
4124     PVOID* Buffer
4125     );
4126 
4127 _Must_inspect_result_
4128 _IRQL_requires_max_(DISPATCH_LEVEL)
4129 WDFAPI
4130 NTSTATUS
4131 STDCALL
4132 WDFEXPORT(WdfMemoryCreatePreallocated)(
4133     _In_
4134     PWDF_DRIVER_GLOBALS DriverGlobals,
4135     _In_opt_
4136     PWDF_OBJECT_ATTRIBUTES Attributes,
4137     _In_ __drv_aliasesMem
4138     PVOID Buffer,
4139     _In_
4140     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
4141     size_t BufferSize,
4142     _Out_
4143     WDFMEMORY* Memory
4144     );
4145 
4146 _IRQL_requires_max_(DISPATCH_LEVEL)
4147 WDFAPI
4148 PVOID
4149 STDCALL
4150 WDFEXPORT(WdfMemoryGetBuffer)(
4151     _In_
4152     PWDF_DRIVER_GLOBALS DriverGlobals,
4153     _In_
4154     WDFMEMORY Memory,
4155     _Out_opt_
4156     size_t* BufferSize
4157     );
4158 
4159 _Must_inspect_result_
4160 _IRQL_requires_max_(DISPATCH_LEVEL)
4161 WDFAPI
4162 NTSTATUS
4163 STDCALL
4164 WDFEXPORT(WdfMemoryAssignBuffer)(
4165     _In_
4166     PWDF_DRIVER_GLOBALS DriverGlobals,
4167     _In_
4168     WDFMEMORY Memory,
4169     _Pre_notnull_ _Pre_writable_byte_size_(BufferSize)
4170     PVOID Buffer,
4171     _In_
4172     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
4173     size_t BufferSize
4174     );
4175 
4176 _Must_inspect_result_
4177 _IRQL_requires_max_(DISPATCH_LEVEL)
4178 WDFAPI
4179 NTSTATUS
4180 STDCALL
4181 WDFEXPORT(WdfMemoryCopyToBuffer)(
4182     _In_
4183     PWDF_DRIVER_GLOBALS DriverGlobals,
4184     _In_
4185     WDFMEMORY SourceMemory,
4186     _In_
4187     size_t SourceOffset,
4188     _Out_writes_bytes_( NumBytesToCopyTo )
4189     PVOID Buffer,
4190     _In_
4191     _When_(NumBytesToCopyTo == 0, __drv_reportError(NumBytesToCopyTo cannot be zero))
4192     size_t NumBytesToCopyTo
4193     );
4194 
4195 _Must_inspect_result_
4196 _IRQL_requires_max_(DISPATCH_LEVEL)
4197 WDFAPI
4198 NTSTATUS
4199 STDCALL
4200 WDFEXPORT(WdfMemoryCopyFromBuffer)(
4201     _In_
4202     PWDF_DRIVER_GLOBALS DriverGlobals,
4203     _In_
4204     WDFMEMORY DestinationMemory,
4205     _In_
4206     size_t DestinationOffset,
4207     _In_
4208     PVOID Buffer,
4209     _In_
4210     _When_(NumBytesToCopyFrom == 0, __drv_reportError(NumBytesToCopyFrom cannot be zero))
4211     size_t NumBytesToCopyFrom
4212     );
4213 
4214 _Must_inspect_result_
4215 _When_(PoolType == 1 || PoolType == 257, _IRQL_requires_max_(APC_LEVEL))
4216 _When_(PoolType == 0 || PoolType == 256, _IRQL_requires_max_(DISPATCH_LEVEL))
4217 WDFAPI
4218 NTSTATUS
4219 STDCALL
4220 WDFEXPORT(WdfLookasideListCreate)(
4221     _In_
4222     PWDF_DRIVER_GLOBALS DriverGlobals,
4223     _In_opt_
4224     PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
4225     _In_
4226     _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
4227     size_t BufferSize,
4228     _In_
4229     _Strict_type_match_
4230     POOL_TYPE PoolType,
4231     _In_opt_
4232     PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
4233     _In_opt_
4234     ULONG PoolTag,
4235     _Out_
4236     WDFLOOKASIDE* Lookaside
4237     );
4238 
4239 _Must_inspect_result_
4240 _IRQL_requires_max_(DISPATCH_LEVEL)
4241 WDFAPI
4242 NTSTATUS
4243 STDCALL
4244 WDFEXPORT(WdfMemoryCreateFromLookaside)(
4245     _In_
4246     PWDF_DRIVER_GLOBALS DriverGlobals,
4247     _In_
4248     WDFLOOKASIDE Lookaside,
4249     _Out_
4250     WDFMEMORY* Memory
4251     );
4252 
4253 _Must_inspect_result_
4254 _IRQL_requires_max_(PASSIVE_LEVEL)
4255 WDFAPI
4256 NTSTATUS
4257 STDCALL
4258 WDFEXPORT(WdfDeviceMiniportCreate)(
4259     _In_
4260     PWDF_DRIVER_GLOBALS DriverGlobals,
4261     _In_
4262     WDFDRIVER Driver,
4263     _In_opt_
4264     PWDF_OBJECT_ATTRIBUTES Attributes,
4265     _In_
4266     PDEVICE_OBJECT DeviceObject,
4267     _In_opt_
4268     PDEVICE_OBJECT AttachedDeviceObject,
4269     _In_opt_
4270     PDEVICE_OBJECT Pdo,
4271     _Out_
4272     WDFDEVICE* Device
4273     );
4274 
4275 WDFAPI
4276 VOID
4277 STDCALL
4278 WDFEXPORT(WdfDriverMiniportUnload)(
4279     _In_
4280     PWDF_DRIVER_GLOBALS DriverGlobals,
4281     _In_
4282     WDFDRIVER Driver
4283     );
4284 
4285 WDFAPI
4286 PVOID
4287 FASTCALL
4288 WDFEXPORT(WdfObjectGetTypedContextWorker)(
4289     _In_
4290     PWDF_DRIVER_GLOBALS DriverGlobals,
4291     _In_
4292     WDFOBJECT Handle,
4293     _In_
4294     PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
4295     );
4296 
4297 WDFAPI
4298 NTSTATUS
4299 STDCALL
4300 WDFEXPORT(WdfObjectAllocateContext)(
4301     _In_
4302     PWDF_DRIVER_GLOBALS DriverGlobals,
4303     _In_
4304     WDFOBJECT Handle,
4305     _In_
4306     PWDF_OBJECT_ATTRIBUTES ContextAttributes,
4307     _Outptr_opt_
4308     PVOID* Context
4309     );
4310 
4311 WDFAPI
4312 WDFOBJECT
4313 FASTCALL
4314 WDFEXPORT(WdfObjectContextGetObject)(
4315     _In_
4316     PWDF_DRIVER_GLOBALS DriverGlobals,
4317     _In_
4318     PVOID ContextPointer
4319     );
4320 
4321 WDFAPI
4322 VOID
4323 STDCALL
4324 WDFEXPORT(WdfObjectReferenceActual)(
4325     _In_
4326     PWDF_DRIVER_GLOBALS DriverGlobals,
4327     _In_
4328     WDFOBJECT Handle,
4329     _In_opt_
4330     PVOID Tag,
4331     _In_
4332     LONG Line,
4333     _In_z_
4334     PCHAR File
4335     );
4336 
4337 WDFAPI
4338 VOID
4339 STDCALL
4340 WDFEXPORT(WdfObjectDereferenceActual)(
4341     _In_
4342     PWDF_DRIVER_GLOBALS DriverGlobals,
4343     _In_
4344     WDFOBJECT Handle,
4345     _In_opt_
4346     PVOID Tag,
4347     _In_
4348     LONG Line,
4349     _In_z_
4350     PCHAR File
4351     );
4352 
4353 _Must_inspect_result_
4354 _IRQL_requires_max_(DISPATCH_LEVEL)
4355 WDFAPI
4356 NTSTATUS
4357 STDCALL
4358 WDFEXPORT(WdfObjectCreate)(
4359     _In_
4360     PWDF_DRIVER_GLOBALS DriverGlobals,
4361     _In_opt_
4362     PWDF_OBJECT_ATTRIBUTES Attributes,
4363     _Out_
4364     WDFOBJECT* Object
4365     );
4366 
4367 _IRQL_requires_max_(DISPATCH_LEVEL)
4368 WDFAPI
4369 VOID
4370 STDCALL
4371 WDFEXPORT(WdfObjectDelete)(
4372     _In_
4373     PWDF_DRIVER_GLOBALS DriverGlobals,
4374     _In_
4375     WDFOBJECT Object
4376     );
4377 
4378 _Must_inspect_result_
4379 _IRQL_requires_max_(DISPATCH_LEVEL)
4380 WDFAPI
4381 NTSTATUS
4382 STDCALL
4383 WDFEXPORT(WdfObjectQuery)(
4384     _In_
4385     PWDF_DRIVER_GLOBALS DriverGlobals,
4386     _In_
4387     WDFOBJECT Object,
4388     _In_
4389     CONST GUID* Guid,
4390     _In_
4391     ULONG QueryBufferLength,
4392     _Out_writes_bytes_(QueryBufferLength)
4393     PVOID QueryBuffer
4394     );
4395 
4396 _Must_inspect_result_
4397 _IRQL_requires_max_(PASSIVE_LEVEL)
4398 WDFAPI
4399 PWDFDEVICE_INIT
4400 STDCALL
4401 WDFEXPORT(WdfPdoInitAllocate)(
4402     _In_
4403     PWDF_DRIVER_GLOBALS DriverGlobals,
4404     _In_
4405     WDFDEVICE ParentDevice
4406     );
4407 
4408 _IRQL_requires_max_(PASSIVE_LEVEL)
4409 WDFAPI
4410 VOID
4411 STDCALL
4412 WDFEXPORT(WdfPdoInitSetEventCallbacks)(
4413     _In_
4414     PWDF_DRIVER_GLOBALS DriverGlobals,
4415     _In_
4416     PWDFDEVICE_INIT DeviceInit,
4417     _In_
4418     PWDF_PDO_EVENT_CALLBACKS DispatchTable
4419     );
4420 
4421 _Must_inspect_result_
4422 _IRQL_requires_max_(PASSIVE_LEVEL)
4423 WDFAPI
4424 NTSTATUS
4425 STDCALL
4426 WDFEXPORT(WdfPdoInitAssignDeviceID)(
4427     _In_
4428     PWDF_DRIVER_GLOBALS DriverGlobals,
4429     _In_
4430     PWDFDEVICE_INIT DeviceInit,
4431     _In_
4432     PCUNICODE_STRING DeviceID
4433     );
4434 
4435 _Must_inspect_result_
4436 _IRQL_requires_max_(PASSIVE_LEVEL)
4437 WDFAPI
4438 NTSTATUS
4439 STDCALL
4440 WDFEXPORT(WdfPdoInitAssignInstanceID)(
4441     _In_
4442     PWDF_DRIVER_GLOBALS DriverGlobals,
4443     _In_
4444     PWDFDEVICE_INIT DeviceInit,
4445     _In_
4446     PCUNICODE_STRING InstanceID
4447     );
4448 
4449 _Must_inspect_result_
4450 _IRQL_requires_max_(PASSIVE_LEVEL)
4451 WDFAPI
4452 NTSTATUS
4453 STDCALL
4454 WDFEXPORT(WdfPdoInitAddHardwareID)(
4455     _In_
4456     PWDF_DRIVER_GLOBALS DriverGlobals,
4457     _In_
4458     PWDFDEVICE_INIT DeviceInit,
4459     _In_
4460     PCUNICODE_STRING HardwareID
4461     );
4462 
4463 _Must_inspect_result_
4464 _IRQL_requires_max_(PASSIVE_LEVEL)
4465 WDFAPI
4466 NTSTATUS
4467 STDCALL
4468 WDFEXPORT(WdfPdoInitAddCompatibleID)(
4469     _In_
4470     PWDF_DRIVER_GLOBALS DriverGlobals,
4471     _In_
4472     PWDFDEVICE_INIT DeviceInit,
4473     _In_
4474     PCUNICODE_STRING CompatibleID
4475     );
4476 
4477 _Must_inspect_result_
4478 _IRQL_requires_max_(PASSIVE_LEVEL)
4479 WDFAPI
4480 NTSTATUS
4481 STDCALL
4482 WDFEXPORT(WdfPdoInitAssignContainerID)(
4483     _In_
4484     PWDF_DRIVER_GLOBALS DriverGlobals,
4485     _In_
4486     PWDFDEVICE_INIT DeviceInit,
4487     _In_
4488     PCUNICODE_STRING ContainerID
4489     );
4490 
4491 _Must_inspect_result_
4492 _IRQL_requires_max_(PASSIVE_LEVEL)
4493 WDFAPI
4494 NTSTATUS
4495 STDCALL
4496 WDFEXPORT(WdfPdoInitAddDeviceText)(
4497     _In_
4498     PWDF_DRIVER_GLOBALS DriverGlobals,
4499     _In_
4500     PWDFDEVICE_INIT DeviceInit,
4501     _In_
4502     PCUNICODE_STRING DeviceDescription,
4503     _In_
4504     PCUNICODE_STRING DeviceLocation,
4505     _In_
4506     LCID LocaleId
4507     );
4508 
4509 _IRQL_requires_max_(PASSIVE_LEVEL)
4510 WDFAPI
4511 VOID
4512 STDCALL
4513 WDFEXPORT(WdfPdoInitSetDefaultLocale)(
4514     _In_
4515     PWDF_DRIVER_GLOBALS DriverGlobals,
4516     _In_
4517     PWDFDEVICE_INIT DeviceInit,
4518     _In_
4519     LCID LocaleId
4520     );
4521 
4522 _Must_inspect_result_
4523 _IRQL_requires_max_(PASSIVE_LEVEL)
4524 WDFAPI
4525 NTSTATUS
4526 STDCALL
4527 WDFEXPORT(WdfPdoInitAssignRawDevice)(
4528     _In_
4529     PWDF_DRIVER_GLOBALS DriverGlobals,
4530     _In_
4531     PWDFDEVICE_INIT DeviceInit,
4532     _In_
4533     CONST GUID* DeviceClassGuid
4534     );
4535 
4536 _IRQL_requires_max_(PASSIVE_LEVEL)
4537 WDFAPI
4538 VOID
4539 STDCALL
4540 WDFEXPORT(WdfPdoInitAllowForwardingRequestToParent)(
4541     _In_
4542     PWDF_DRIVER_GLOBALS DriverGlobals,
4543     _In_
4544     PWDFDEVICE_INIT DeviceInit
4545     );
4546 
4547 _Must_inspect_result_
4548 _IRQL_requires_max_(DISPATCH_LEVEL)
4549 WDFAPI
4550 NTSTATUS
4551 STDCALL
4552 WDFEXPORT(WdfPdoMarkMissing)(
4553     _In_
4554     PWDF_DRIVER_GLOBALS DriverGlobals,
4555     _In_
4556     WDFDEVICE Device
4557     );
4558 
4559 _IRQL_requires_max_(DISPATCH_LEVEL)
4560 WDFAPI
4561 VOID
4562 STDCALL
4563 WDFEXPORT(WdfPdoRequestEject)(
4564     _In_
4565     PWDF_DRIVER_GLOBALS DriverGlobals,
4566     _In_
4567     WDFDEVICE Device
4568     );
4569 
4570 _IRQL_requires_max_(DISPATCH_LEVEL)
4571 WDFAPI
4572 WDFDEVICE
4573 STDCALL
4574 WDFEXPORT(WdfPdoGetParent)(
4575     _In_
4576     PWDF_DRIVER_GLOBALS DriverGlobals,
4577     _In_
4578     WDFDEVICE Device
4579     );
4580 
4581 _Must_inspect_result_
4582 _IRQL_requires_max_(DISPATCH_LEVEL)
4583 WDFAPI
4584 NTSTATUS
4585 STDCALL
4586 WDFEXPORT(WdfPdoRetrieveIdentificationDescription)(
4587     _In_
4588     PWDF_DRIVER_GLOBALS DriverGlobals,
4589     _In_
4590     WDFDEVICE Device,
4591     _Inout_
4592     PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
4593     );
4594 
4595 _Must_inspect_result_
4596 _IRQL_requires_max_(DISPATCH_LEVEL)
4597 WDFAPI
4598 NTSTATUS
4599 STDCALL
4600 WDFEXPORT(WdfPdoRetrieveAddressDescription)(
4601     _In_
4602     PWDF_DRIVER_GLOBALS DriverGlobals,
4603     _In_
4604     WDFDEVICE Device,
4605     _Inout_
4606     PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
4607     );
4608 
4609 _Must_inspect_result_
4610 _IRQL_requires_max_(DISPATCH_LEVEL)
4611 WDFAPI
4612 NTSTATUS
4613 STDCALL
4614 WDFEXPORT(WdfPdoUpdateAddressDescription)(
4615     _In_
4616     PWDF_DRIVER_GLOBALS DriverGlobals,
4617     _In_
4618     WDFDEVICE Device,
4619     _Inout_
4620     PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
4621     );
4622 
4623 _Must_inspect_result_
4624 _IRQL_requires_max_(DISPATCH_LEVEL)
4625 WDFAPI
4626 NTSTATUS
4627 STDCALL
4628 WDFEXPORT(WdfPdoAddEjectionRelationsPhysicalDevice)(
4629     _In_
4630     PWDF_DRIVER_GLOBALS DriverGlobals,
4631     _In_
4632     WDFDEVICE Device,
4633     _In_
4634     PDEVICE_OBJECT PhysicalDevice
4635     );
4636 
4637 _IRQL_requires_max_(DISPATCH_LEVEL)
4638 WDFAPI
4639 VOID
4640 STDCALL
4641 WDFEXPORT(WdfPdoRemoveEjectionRelationsPhysicalDevice)(
4642     _In_
4643     PWDF_DRIVER_GLOBALS DriverGlobals,
4644     _In_
4645     WDFDEVICE Device,
4646     _In_
4647     PDEVICE_OBJECT PhysicalDevice
4648     );
4649 
4650 _IRQL_requires_max_(DISPATCH_LEVEL)
4651 WDFAPI
4652 VOID
4653 STDCALL
4654 WDFEXPORT(WdfPdoClearEjectionRelationsDevices)(
4655     _In_
4656     PWDF_DRIVER_GLOBALS DriverGlobals,
4657     _In_
4658     WDFDEVICE Device
4659     );
4660 
4661 _Must_inspect_result_
4662 _IRQL_requires_max_(PASSIVE_LEVEL)
4663 WDFAPI
4664 NTSTATUS
4665 STDCALL
4666 WDFEXPORT(WdfDeviceAddQueryInterface)(
4667     _In_
4668     PWDF_DRIVER_GLOBALS DriverGlobals,
4669     _In_
4670     WDFDEVICE Device,
4671     _In_
4672     PWDF_QUERY_INTERFACE_CONFIG InterfaceConfig
4673     );
4674 
4675 _Must_inspect_result_
4676 _IRQL_requires_max_(PASSIVE_LEVEL)
4677 WDFAPI
4678 NTSTATUS
4679 STDCALL
4680 WDFEXPORT(WdfRegistryOpenKey)(
4681     _In_
4682     PWDF_DRIVER_GLOBALS DriverGlobals,
4683     _In_opt_
4684     WDFKEY ParentKey,
4685     _In_
4686     PCUNICODE_STRING KeyName,
4687     _In_
4688     ACCESS_MASK DesiredAccess,
4689     _In_opt_
4690     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
4691     _Out_
4692     WDFKEY* Key
4693     );
4694 
4695 _Must_inspect_result_
4696 _IRQL_requires_max_(PASSIVE_LEVEL)
4697 WDFAPI
4698 NTSTATUS
4699 STDCALL
4700 WDFEXPORT(WdfRegistryCreateKey)(
4701     _In_
4702     PWDF_DRIVER_GLOBALS DriverGlobals,
4703     _In_opt_
4704     WDFKEY ParentKey,
4705     _In_
4706     PCUNICODE_STRING KeyName,
4707     _In_
4708     ACCESS_MASK DesiredAccess,
4709     _In_
4710     ULONG CreateOptions,
4711     _Out_opt_
4712     PULONG CreateDisposition,
4713     _In_opt_
4714     PWDF_OBJECT_ATTRIBUTES KeyAttributes,
4715     _Out_
4716     WDFKEY* Key
4717     );
4718 
4719 _IRQL_requires_max_(PASSIVE_LEVEL)
4720 WDFAPI
4721 VOID
4722 STDCALL
4723 WDFEXPORT(WdfRegistryClose)(
4724     _In_
4725     PWDF_DRIVER_GLOBALS DriverGlobals,
4726     _In_
4727     WDFKEY Key
4728     );
4729 
4730 _IRQL_requires_max_(PASSIVE_LEVEL)
4731 WDFAPI
4732 HANDLE
4733 STDCALL
4734 WDFEXPORT(WdfRegistryWdmGetHandle)(
4735     _In_
4736     PWDF_DRIVER_GLOBALS DriverGlobals,
4737     _In_
4738     WDFKEY Key
4739     );
4740 
4741 _Must_inspect_result_
4742 _IRQL_requires_max_(PASSIVE_LEVEL)
4743 WDFAPI
4744 NTSTATUS
4745 STDCALL
4746 WDFEXPORT(WdfRegistryRemoveKey)(
4747     _In_
4748     PWDF_DRIVER_GLOBALS DriverGlobals,
4749     _In_
4750     WDFKEY Key
4751     );
4752 
4753 _Must_inspect_result_
4754 _IRQL_requires_max_(PASSIVE_LEVEL)
4755 WDFAPI
4756 NTSTATUS
4757 STDCALL
4758 WDFEXPORT(WdfRegistryRemoveValue)(
4759     _In_
4760     PWDF_DRIVER_GLOBALS DriverGlobals,
4761     _In_
4762     WDFKEY Key,
4763     _In_
4764     PCUNICODE_STRING ValueName
4765     );
4766 
4767 _Must_inspect_result_
4768 _IRQL_requires_max_(PASSIVE_LEVEL)
4769 WDFAPI
4770 NTSTATUS
4771 STDCALL
4772 WDFEXPORT(WdfRegistryQueryValue)(
4773     _In_
4774     PWDF_DRIVER_GLOBALS DriverGlobals,
4775     _In_
4776     WDFKEY Key,
4777     _In_
4778     PCUNICODE_STRING ValueName,
4779     _In_
4780     ULONG ValueLength,
4781     _Out_writes_bytes_opt_( ValueLength)
4782     PVOID Value,
4783     _Out_opt_
4784     PULONG ValueLengthQueried,
4785     _Out_opt_
4786     PULONG ValueType
4787     );
4788 
4789 _Must_inspect_result_
4790 _IRQL_requires_max_(PASSIVE_LEVEL)
4791 WDFAPI
4792 NTSTATUS
4793 STDCALL
4794 WDFEXPORT(WdfRegistryQueryMemory)(
4795     _In_
4796     PWDF_DRIVER_GLOBALS DriverGlobals,
4797     _In_
4798     WDFKEY Key,
4799     _In_
4800     PCUNICODE_STRING ValueName,
4801     _In_
4802     _Strict_type_match_
4803     POOL_TYPE PoolType,
4804     _In_opt_
4805     PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
4806     _Out_
4807     WDFMEMORY* Memory,
4808     _Out_opt_
4809     PULONG ValueType
4810     );
4811 
4812 _Must_inspect_result_
4813 _IRQL_requires_max_(PASSIVE_LEVEL)
4814 WDFAPI
4815 NTSTATUS
4816 STDCALL
4817 WDFEXPORT(WdfRegistryQueryMultiString)(
4818     _In_
4819     PWDF_DRIVER_GLOBALS DriverGlobals,
4820     _In_
4821     WDFKEY Key,
4822     _In_
4823     PCUNICODE_STRING ValueName,
4824     _In_opt_
4825     PWDF_OBJECT_ATTRIBUTES StringsAttributes,
4826     _In_
4827     WDFCOLLECTION Collection
4828     );
4829 
4830 _Must_inspect_result_
4831 _IRQL_requires_max_(PASSIVE_LEVEL)
4832 WDFAPI
4833 NTSTATUS
4834 STDCALL
4835 WDFEXPORT(WdfRegistryQueryUnicodeString)(
4836     _In_
4837     PWDF_DRIVER_GLOBALS DriverGlobals,
4838     _In_
4839     WDFKEY Key,
4840     _In_
4841     PCUNICODE_STRING ValueName,
4842     _Out_opt_
4843     PUSHORT ValueByteLength,
4844     _Inout_opt_
4845     PUNICODE_STRING Value
4846     );
4847 
4848 _Must_inspect_result_
4849 _IRQL_requires_max_(PASSIVE_LEVEL)
4850 WDFAPI
4851 NTSTATUS
4852 STDCALL
4853 WDFEXPORT(WdfRegistryQueryString)(
4854     _In_
4855     PWDF_DRIVER_GLOBALS DriverGlobals,
4856     _In_
4857     WDFKEY Key,
4858     _In_
4859     PCUNICODE_STRING ValueName,
4860     _In_
4861     WDFSTRING String
4862     );
4863 
4864 _Must_inspect_result_
4865 _IRQL_requires_max_(PASSIVE_LEVEL)
4866 WDFAPI
4867 NTSTATUS
4868 STDCALL
4869 WDFEXPORT(WdfRegistryQueryULong)(
4870     _In_
4871     PWDF_DRIVER_GLOBALS DriverGlobals,
4872     _In_
4873     WDFKEY Key,
4874     _In_
4875     PCUNICODE_STRING ValueName,
4876     _Out_
4877     PULONG Value
4878     );
4879 
4880 _Must_inspect_result_
4881 _IRQL_requires_max_(PASSIVE_LEVEL)
4882 WDFAPI
4883 NTSTATUS
4884 STDCALL
4885 WDFEXPORT(WdfRegistryAssignValue)(
4886     _In_
4887     PWDF_DRIVER_GLOBALS DriverGlobals,
4888     _In_
4889     WDFKEY Key,
4890     _In_
4891     PCUNICODE_STRING ValueName,
4892     _In_
4893     ULONG ValueType,
4894     _In_
4895     ULONG ValueLength,
4896     _In_reads_( ValueLength)
4897     PVOID Value
4898     );
4899 
4900 _Must_inspect_result_
4901 _IRQL_requires_max_(PASSIVE_LEVEL)
4902 WDFAPI
4903 NTSTATUS
4904 STDCALL
4905 WDFEXPORT(WdfRegistryAssignMemory)(
4906     _In_
4907     PWDF_DRIVER_GLOBALS DriverGlobals,
4908     _In_
4909     WDFKEY Key,
4910     _In_
4911     PCUNICODE_STRING ValueName,
4912     _In_
4913     ULONG ValueType,
4914     _In_
4915     WDFMEMORY Memory,
4916     _In_opt_
4917     PWDFMEMORY_OFFSET MemoryOffsets
4918     );
4919 
4920 _Must_inspect_result_
4921 _IRQL_requires_max_(PASSIVE_LEVEL)
4922 WDFAPI
4923 NTSTATUS
4924 STDCALL
4925 WDFEXPORT(WdfRegistryAssignMultiString)(
4926     _In_
4927     PWDF_DRIVER_GLOBALS DriverGlobals,
4928     _In_
4929     WDFKEY Key,
4930     _In_
4931     PCUNICODE_STRING ValueName,
4932     _In_
4933     WDFCOLLECTION StringsCollection
4934     );
4935 
4936 _Must_inspect_result_
4937 _IRQL_requires_max_(PASSIVE_LEVEL)
4938 WDFAPI
4939 NTSTATUS
4940 STDCALL
4941 WDFEXPORT(WdfRegistryAssignUnicodeString)(
4942     _In_
4943     PWDF_DRIVER_GLOBALS DriverGlobals,
4944     _In_
4945     WDFKEY Key,
4946     _In_
4947     PCUNICODE_STRING ValueName,
4948     _In_
4949     PCUNICODE_STRING Value
4950     );
4951 
4952 _Must_inspect_result_
4953 _IRQL_requires_max_(PASSIVE_LEVEL)
4954 WDFAPI
4955 NTSTATUS
4956 STDCALL
4957 WDFEXPORT(WdfRegistryAssignString)(
4958     _In_
4959     PWDF_DRIVER_GLOBALS DriverGlobals,
4960     _In_
4961     WDFKEY Key,
4962     _In_
4963     PCUNICODE_STRING ValueName,
4964     _In_
4965     WDFSTRING String
4966     );
4967 
4968 _Must_inspect_result_
4969 _IRQL_requires_max_(PASSIVE_LEVEL)
4970 WDFAPI
4971 NTSTATUS
4972 STDCALL
4973 WDFEXPORT(WdfRegistryAssignULong)(
4974     _In_
4975     PWDF_DRIVER_GLOBALS DriverGlobals,
4976     _In_
4977     WDFKEY Key,
4978     _In_
4979     PCUNICODE_STRING ValueName,
4980     _In_
4981     ULONG Value
4982     );
4983 
4984 _Must_inspect_result_
4985 _IRQL_requires_max_(DISPATCH_LEVEL)
4986 WDFAPI
4987 NTSTATUS
4988 STDCALL
4989 WDFEXPORT(WdfRequestCreate)(
4990     _In_
4991     PWDF_DRIVER_GLOBALS DriverGlobals,
4992     _In_opt_
4993     PWDF_OBJECT_ATTRIBUTES RequestAttributes,
4994     _In_opt_
4995     WDFIOTARGET IoTarget,
4996     _Out_
4997     WDFREQUEST* Request
4998     );
4999 
5000 _Must_inspect_result_
5001 _IRQL_requires_max_(DISPATCH_LEVEL)
5002 WDFAPI
5003 NTSTATUS
5004 STDCALL
5005 WDFEXPORT(WdfRequestCreateFromIrp)(
5006     _In_
5007     PWDF_DRIVER_GLOBALS DriverGlobals,
5008     _In_opt_
5009     PWDF_OBJECT_ATTRIBUTES RequestAttributes,
5010     _In_
5011     PIRP Irp,
5012     _In_
5013     BOOLEAN RequestFreesIrp,
5014     _Out_
5015     WDFREQUEST* Request
5016     );
5017 
5018 _IRQL_requires_max_(DISPATCH_LEVEL)
5019 WDFAPI
5020 NTSTATUS
5021 STDCALL
5022 WDFEXPORT(WdfRequestReuse)(
5023     _In_
5024     PWDF_DRIVER_GLOBALS DriverGlobals,
5025     _In_
5026     WDFREQUEST Request,
5027     _In_
5028     PWDF_REQUEST_REUSE_PARAMS ReuseParams
5029     );
5030 
5031 _Must_inspect_result_
5032 _IRQL_requires_max_(DISPATCH_LEVEL)
5033 WDFAPI
5034 NTSTATUS
5035 STDCALL
5036 WDFEXPORT(WdfRequestChangeTarget)(
5037     _In_
5038     PWDF_DRIVER_GLOBALS DriverGlobals,
5039     _In_
5040     WDFREQUEST Request,
5041     _In_
5042     WDFIOTARGET IoTarget
5043     );
5044 
5045 _IRQL_requires_max_(DISPATCH_LEVEL)
5046 WDFAPI
5047 VOID
5048 STDCALL
5049 WDFEXPORT(WdfRequestFormatRequestUsingCurrentType)(
5050     _In_
5051     PWDF_DRIVER_GLOBALS DriverGlobals,
5052     _In_
5053     WDFREQUEST Request
5054     );
5055 
5056 _IRQL_requires_max_(DISPATCH_LEVEL)
5057 WDFAPI
5058 VOID
5059 STDCALL
5060 WDFEXPORT(WdfRequestWdmFormatUsingStackLocation)(
5061     _In_
5062     PWDF_DRIVER_GLOBALS DriverGlobals,
5063     _In_
5064     WDFREQUEST Request,
5065     _In_
5066     PIO_STACK_LOCATION Stack
5067     );
5068 
5069 _IRQL_requires_max_(DISPATCH_LEVEL)
5070 _When_(Options->Flags & WDF_REQUEST_SEND_OPTION_SYNCHRONOUS == 0, _Must_inspect_result_)
5071 WDFAPI
5072 BOOLEAN
5073 STDCALL
5074 WDFEXPORT(WdfRequestSend)(
5075     _In_
5076     PWDF_DRIVER_GLOBALS DriverGlobals,
5077     _In_
5078     WDFREQUEST Request,
5079     _In_
5080     WDFIOTARGET Target,
5081     _In_opt_
5082     PWDF_REQUEST_SEND_OPTIONS Options
5083     );
5084 
5085 _Must_inspect_result_
5086 _IRQL_requires_max_(DISPATCH_LEVEL)
5087 WDFAPI
5088 NTSTATUS
5089 STDCALL
5090 WDFEXPORT(WdfRequestGetStatus)(
5091     _In_
5092     PWDF_DRIVER_GLOBALS DriverGlobals,
5093     _In_
5094     WDFREQUEST Request
5095     );
5096 
5097 _IRQL_requires_max_(DISPATCH_LEVEL)
5098 WDFAPI
5099 VOID
5100 STDCALL
5101 WDFEXPORT(WdfRequestMarkCancelable)(
5102     _In_
5103     PWDF_DRIVER_GLOBALS DriverGlobals,
5104     _In_
5105     WDFREQUEST Request,
5106     _In_
5107     PFN_WDF_REQUEST_CANCEL EvtRequestCancel
5108     );
5109 
5110 _Must_inspect_result_
5111 _IRQL_requires_max_(DISPATCH_LEVEL)
5112 WDFAPI
5113 NTSTATUS
5114 STDCALL
5115 WDFEXPORT(WdfRequestMarkCancelableEx)(
5116     _In_
5117     PWDF_DRIVER_GLOBALS DriverGlobals,
5118     _In_
5119     WDFREQUEST Request,
5120     _In_
5121     PFN_WDF_REQUEST_CANCEL EvtRequestCancel
5122     );
5123 
5124 _Must_inspect_result_
5125 _IRQL_requires_max_(DISPATCH_LEVEL)
5126 WDFAPI
5127 NTSTATUS
5128 STDCALL
5129 WDFEXPORT(WdfRequestUnmarkCancelable)(
5130     _In_
5131     PWDF_DRIVER_GLOBALS DriverGlobals,
5132     _In_
5133     WDFREQUEST Request
5134     );
5135 
5136 _Must_inspect_result_
5137 _IRQL_requires_max_(DISPATCH_LEVEL)
5138 WDFAPI
5139 BOOLEAN
5140 STDCALL
5141 WDFEXPORT(WdfRequestIsCanceled)(
5142     _In_
5143     PWDF_DRIVER_GLOBALS DriverGlobals,
5144     _In_
5145     WDFREQUEST Request
5146     );
5147 
5148 _IRQL_requires_max_(DISPATCH_LEVEL)
5149 WDFAPI
5150 BOOLEAN
5151 STDCALL
5152 WDFEXPORT(WdfRequestCancelSentRequest)(
5153     _In_
5154     PWDF_DRIVER_GLOBALS DriverGlobals,
5155     _In_
5156     WDFREQUEST Request
5157     );
5158 
5159 _Must_inspect_result_
5160 _IRQL_requires_max_(APC_LEVEL)
5161 WDFAPI
5162 BOOLEAN
5163 STDCALL
5164 WDFEXPORT(WdfRequestIsFrom32BitProcess)(
5165     _In_
5166     PWDF_DRIVER_GLOBALS DriverGlobals,
5167     _In_
5168     WDFREQUEST Request
5169     );
5170 
5171 _IRQL_requires_max_(DISPATCH_LEVEL)
5172 WDFAPI
5173 VOID
5174 STDCALL
5175 WDFEXPORT(WdfRequestSetCompletionRoutine)(
5176     _In_
5177     PWDF_DRIVER_GLOBALS DriverGlobals,
5178     _In_
5179     WDFREQUEST Request,
5180     _In_opt_
5181     PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine,
5182     _In_opt_ __drv_aliasesMem
5183     WDFCONTEXT CompletionContext
5184     );
5185 
5186 _IRQL_requires_max_(DISPATCH_LEVEL)
5187 WDFAPI
5188 VOID
5189 STDCALL
5190 WDFEXPORT(WdfRequestGetCompletionParams)(
5191     _In_
5192     PWDF_DRIVER_GLOBALS DriverGlobals,
5193     _In_
5194     WDFREQUEST Request,
5195     _Out_
5196     PWDF_REQUEST_COMPLETION_PARAMS Params
5197     );
5198 
5199 _Must_inspect_result_
5200 _IRQL_requires_max_(DISPATCH_LEVEL)
5201 WDFAPI
5202 NTSTATUS
5203 STDCALL
5204 WDFEXPORT(WdfRequestAllocateTimer)(
5205     _In_
5206     PWDF_DRIVER_GLOBALS DriverGlobals,
5207     _In_
5208     WDFREQUEST Request
5209     );
5210 
5211 _IRQL_requires_max_(DISPATCH_LEVEL)
5212 WDFAPI
5213 VOID
5214 STDCALL
5215 WDFEXPORT(WdfRequestComplete)(
5216     _In_
5217     PWDF_DRIVER_GLOBALS DriverGlobals,
5218     _In_
5219     WDFREQUEST Request,
5220     _In_
5221     NTSTATUS Status
5222     );
5223 
5224 _IRQL_requires_max_(DISPATCH_LEVEL)
5225 WDFAPI
5226 VOID
5227 STDCALL
5228 WDFEXPORT(WdfRequestCompleteWithPriorityBoost)(
5229     _In_
5230     PWDF_DRIVER_GLOBALS DriverGlobals,
5231     _In_
5232     WDFREQUEST Request,
5233     _In_
5234     NTSTATUS Status,
5235     _In_
5236     CCHAR PriorityBoost
5237     );
5238 
5239 _IRQL_requires_max_(DISPATCH_LEVEL)
5240 WDFAPI
5241 VOID
5242 STDCALL
5243 WDFEXPORT(WdfRequestCompleteWithInformation)(
5244     _In_
5245     PWDF_DRIVER_GLOBALS DriverGlobals,
5246     _In_
5247     WDFREQUEST Request,
5248     _In_
5249     NTSTATUS Status,
5250     _In_
5251     ULONG_PTR Information
5252     );
5253 
5254 _IRQL_requires_max_(DISPATCH_LEVEL)
5255 WDFAPI
5256 VOID
5257 STDCALL
5258 WDFEXPORT(WdfRequestGetParameters)(
5259     _In_
5260     PWDF_DRIVER_GLOBALS DriverGlobals,
5261     _In_
5262     WDFREQUEST Request,
5263     _Out_
5264     PWDF_REQUEST_PARAMETERS Parameters
5265     );
5266 
5267 _Must_inspect_result_
5268 _IRQL_requires_max_(DISPATCH_LEVEL)
5269 WDFAPI
5270 NTSTATUS
5271 STDCALL
5272 WDFEXPORT(WdfRequestRetrieveInputMemory)(
5273     _In_
5274     PWDF_DRIVER_GLOBALS DriverGlobals,
5275     _In_
5276     WDFREQUEST Request,
5277     _Out_
5278     WDFMEMORY* Memory
5279     );
5280 
5281 _Must_inspect_result_
5282 _IRQL_requires_max_(DISPATCH_LEVEL)
5283 WDFAPI
5284 NTSTATUS
5285 STDCALL
5286 WDFEXPORT(WdfRequestRetrieveOutputMemory)(
5287     _In_
5288     PWDF_DRIVER_GLOBALS DriverGlobals,
5289     _In_
5290     WDFREQUEST Request,
5291     _Out_
5292     WDFMEMORY* Memory
5293     );
5294 
5295 _Must_inspect_result_
5296 _IRQL_requires_max_(DISPATCH_LEVEL)
5297 WDFAPI
5298 NTSTATUS
5299 STDCALL
5300 WDFEXPORT(WdfRequestRetrieveInputBuffer)(
5301     _In_
5302     PWDF_DRIVER_GLOBALS DriverGlobals,
5303     _In_
5304     WDFREQUEST Request,
5305     _In_
5306     size_t MinimumRequiredLength,
5307     _Outptr_result_bytebuffer_(*Length)
5308     PVOID* Buffer,
5309     _Out_opt_
5310     size_t* Length
5311     );
5312 
5313 _Must_inspect_result_
5314 _IRQL_requires_max_(DISPATCH_LEVEL)
5315 WDFAPI
5316 NTSTATUS
5317 STDCALL
5318 WDFEXPORT(WdfRequestRetrieveOutputBuffer)(
5319     _In_
5320     PWDF_DRIVER_GLOBALS DriverGlobals,
5321     _In_
5322     WDFREQUEST Request,
5323     _In_
5324     size_t MinimumRequiredSize,
5325     _Outptr_result_bytebuffer_(*Length)
5326     PVOID* Buffer,
5327     _Out_opt_
5328     size_t* Length
5329     );
5330 
5331 _Must_inspect_result_
5332 _IRQL_requires_max_(DISPATCH_LEVEL)
5333 WDFAPI
5334 NTSTATUS
5335 STDCALL
5336 WDFEXPORT(WdfRequestRetrieveInputWdmMdl)(
5337     _In_
5338     PWDF_DRIVER_GLOBALS DriverGlobals,
5339     _In_
5340     WDFREQUEST Request,
5341     _Outptr_
5342     PMDL* Mdl
5343     );
5344 
5345 _Must_inspect_result_
5346 _IRQL_requires_max_(DISPATCH_LEVEL)
5347 WDFAPI
5348 NTSTATUS
5349 STDCALL
5350 WDFEXPORT(WdfRequestRetrieveOutputWdmMdl)(
5351     _In_
5352     PWDF_DRIVER_GLOBALS DriverGlobals,
5353     _In_
5354     WDFREQUEST Request,
5355     _Outptr_
5356     PMDL* Mdl
5357     );
5358 
5359 _Must_inspect_result_
5360 _IRQL_requires_max_(PASSIVE_LEVEL)
5361 WDFAPI
5362 NTSTATUS
5363 STDCALL
5364 WDFEXPORT(WdfRequestRetrieveUnsafeUserInputBuffer)(
5365     _In_
5366     PWDF_DRIVER_GLOBALS DriverGlobals,
5367     _In_
5368     WDFREQUEST Request,
5369     _In_
5370     size_t MinimumRequiredLength,
5371     _Outptr_result_bytebuffer_maybenull_(*Length)
5372     PVOID* InputBuffer,
5373     _Out_opt_
5374     size_t* Length
5375     );
5376 
5377 _Must_inspect_result_
5378 _IRQL_requires_max_(PASSIVE_LEVEL)
5379 WDFAPI
5380 NTSTATUS
5381 STDCALL
5382 WDFEXPORT(WdfRequestRetrieveUnsafeUserOutputBuffer)(
5383     _In_
5384     PWDF_DRIVER_GLOBALS DriverGlobals,
5385     _In_
5386     WDFREQUEST Request,
5387     _In_
5388     size_t MinimumRequiredLength,
5389     _Outptr_result_bytebuffer_maybenull_(*Length)
5390     PVOID* OutputBuffer,
5391     _Out_opt_
5392     size_t* Length
5393     );
5394 
5395 _IRQL_requires_max_(DISPATCH_LEVEL)
5396 WDFAPI
5397 VOID
5398 STDCALL
5399 WDFEXPORT(WdfRequestSetInformation)(
5400     _In_
5401     PWDF_DRIVER_GLOBALS DriverGlobals,
5402     _In_
5403     WDFREQUEST Request,
5404     _In_
5405     ULONG_PTR Information
5406     );
5407 
5408 _IRQL_requires_max_(DISPATCH_LEVEL)
5409 WDFAPI
5410 ULONG_PTR
5411 STDCALL
5412 WDFEXPORT(WdfRequestGetInformation)(
5413     _In_
5414     PWDF_DRIVER_GLOBALS DriverGlobals,
5415     _In_
5416     WDFREQUEST Request
5417     );
5418 
5419 _IRQL_requires_max_(DISPATCH_LEVEL)
5420 WDFAPI
5421 WDFFILEOBJECT
5422 STDCALL
5423 WDFEXPORT(WdfRequestGetFileObject)(
5424     _In_
5425     PWDF_DRIVER_GLOBALS DriverGlobals,
5426     _In_
5427     WDFREQUEST Request
5428     );
5429 
5430 _Must_inspect_result_
5431 _IRQL_requires_max_(PASSIVE_LEVEL)
5432 WDFAPI
5433 NTSTATUS
5434 STDCALL
5435 WDFEXPORT(WdfRequestProbeAndLockUserBufferForRead)(
5436     _In_
5437     PWDF_DRIVER_GLOBALS DriverGlobals,
5438     _In_
5439     WDFREQUEST Request,
5440     _In_reads_bytes_(Length)
5441     PVOID Buffer,
5442     _In_
5443     size_t Length,
5444     _Out_
5445     WDFMEMORY* MemoryObject
5446     );
5447 
5448 _Must_inspect_result_
5449 _IRQL_requires_max_(PASSIVE_LEVEL)
5450 WDFAPI
5451 NTSTATUS
5452 STDCALL
5453 WDFEXPORT(WdfRequestProbeAndLockUserBufferForWrite)(
5454     _In_
5455     PWDF_DRIVER_GLOBALS DriverGlobals,
5456     _In_
5457     WDFREQUEST Request,
5458     _In_reads_bytes_(Length)
5459     PVOID Buffer,
5460     _In_
5461     size_t Length,
5462     _Out_
5463     WDFMEMORY* MemoryObject
5464     );
5465 
5466 _IRQL_requires_max_(DISPATCH_LEVEL)
5467 WDFAPI
5468 KPROCESSOR_MODE
5469 STDCALL
5470 WDFEXPORT(WdfRequestGetRequestorMode)(
5471     _In_
5472     PWDF_DRIVER_GLOBALS DriverGlobals,
5473     _In_
5474     WDFREQUEST Request
5475     );
5476 
5477 _Must_inspect_result_
5478 _IRQL_requires_max_(DISPATCH_LEVEL)
5479 WDFAPI
5480 NTSTATUS
5481 STDCALL
5482 WDFEXPORT(WdfRequestForwardToIoQueue)(
5483     _In_
5484     PWDF_DRIVER_GLOBALS DriverGlobals,
5485     _In_
5486     WDFREQUEST Request,
5487     _In_
5488     WDFQUEUE DestinationQueue
5489     );
5490 
5491 _IRQL_requires_max_(DISPATCH_LEVEL)
5492 WDFAPI
5493 WDFQUEUE
5494 STDCALL
5495 WDFEXPORT(WdfRequestGetIoQueue)(
5496     _In_
5497     PWDF_DRIVER_GLOBALS DriverGlobals,
5498     _In_
5499     WDFREQUEST Request
5500     );
5501 
5502 _Must_inspect_result_
5503 _IRQL_requires_max_(DISPATCH_LEVEL)
5504 WDFAPI
5505 NTSTATUS
5506 STDCALL
5507 WDFEXPORT(WdfRequestRequeue)(
5508     _In_
5509     PWDF_DRIVER_GLOBALS DriverGlobals,
5510     _In_
5511     WDFREQUEST Request
5512     );
5513 
5514 _IRQL_requires_max_(DISPATCH_LEVEL)
5515 WDFAPI
5516 VOID
5517 STDCALL
5518 WDFEXPORT(WdfRequestStopAcknowledge)(
5519     _In_
5520     PWDF_DRIVER_GLOBALS DriverGlobals,
5521     _In_
5522     WDFREQUEST Request,
5523     _In_
5524     BOOLEAN Requeue
5525     );
5526 
5527 _IRQL_requires_max_(DISPATCH_LEVEL)
5528 WDFAPI
5529 PIRP
5530 STDCALL
5531 WDFEXPORT(WdfRequestWdmGetIrp)(
5532     _In_
5533     PWDF_DRIVER_GLOBALS DriverGlobals,
5534     _In_
5535     WDFREQUEST Request
5536     );
5537 
5538 _IRQL_requires_max_(DISPATCH_LEVEL)
5539 WDFAPI
5540 BOOLEAN
5541 STDCALL
5542 WDFEXPORT(WdfRequestIsReserved)(
5543     _In_
5544     PWDF_DRIVER_GLOBALS DriverGlobals,
5545     _In_
5546     WDFREQUEST Request
5547     );
5548 
5549 _Must_inspect_result_
5550 _IRQL_requires_max_(DISPATCH_LEVEL)
5551 WDFAPI
5552 NTSTATUS
5553 STDCALL
5554 WDFEXPORT(WdfRequestForwardToParentDeviceIoQueue)(
5555     _In_
5556     PWDF_DRIVER_GLOBALS DriverGlobals,
5557     _In_
5558     WDFREQUEST Request,
5559     _In_
5560     WDFQUEUE ParentDeviceQueue,
5561     _In_
5562     PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions
5563     );
5564 
5565 _IRQL_requires_max_(DISPATCH_LEVEL)
5566 WDFAPI
5567 VOID
5568 STDCALL
5569 WDFEXPORT(WdfIoResourceRequirementsListSetSlotNumber)(
5570     _In_
5571     PWDF_DRIVER_GLOBALS DriverGlobals,
5572     _In_
5573     WDFIORESREQLIST RequirementsList,
5574     _In_
5575     ULONG SlotNumber
5576     );
5577 
5578 _IRQL_requires_max_(DISPATCH_LEVEL)
5579 WDFAPI
5580 VOID
5581 STDCALL
5582 WDFEXPORT(WdfIoResourceRequirementsListSetInterfaceType)(
5583     _In_
5584     PWDF_DRIVER_GLOBALS DriverGlobals,
5585     _In_
5586     WDFIORESREQLIST RequirementsList,
5587     _In_
5588     _Strict_type_match_
5589     INTERFACE_TYPE InterfaceType
5590     );
5591 
5592 _Must_inspect_result_
5593 _IRQL_requires_max_(DISPATCH_LEVEL)
5594 WDFAPI
5595 NTSTATUS
5596 STDCALL
5597 WDFEXPORT(WdfIoResourceRequirementsListAppendIoResList)(
5598     _In_
5599     PWDF_DRIVER_GLOBALS DriverGlobals,
5600     _In_
5601     WDFIORESREQLIST RequirementsList,
5602     _In_
5603     WDFIORESLIST IoResList
5604     );
5605 
5606 _Must_inspect_result_
5607 _IRQL_requires_max_(DISPATCH_LEVEL)
5608 WDFAPI
5609 NTSTATUS
5610 STDCALL
5611 WDFEXPORT(WdfIoResourceRequirementsListInsertIoResList)(
5612     _In_
5613     PWDF_DRIVER_GLOBALS DriverGlobals,
5614     _In_
5615     WDFIORESREQLIST RequirementsList,
5616     _In_
5617     WDFIORESLIST IoResList,
5618     _In_
5619     ULONG Index
5620     );
5621 
5622 _IRQL_requires_max_(DISPATCH_LEVEL)
5623 WDFAPI
5624 ULONG
5625 STDCALL
5626 WDFEXPORT(WdfIoResourceRequirementsListGetCount)(
5627     _In_
5628     PWDF_DRIVER_GLOBALS DriverGlobals,
5629     _In_
5630     WDFIORESREQLIST RequirementsList
5631     );
5632 
5633 _IRQL_requires_max_(DISPATCH_LEVEL)
5634 WDFAPI
5635 WDFIORESLIST
5636 STDCALL
5637 WDFEXPORT(WdfIoResourceRequirementsListGetIoResList)(
5638     _In_
5639     PWDF_DRIVER_GLOBALS DriverGlobals,
5640     _In_
5641     WDFIORESREQLIST RequirementsList,
5642     _In_
5643     ULONG Index
5644     );
5645 
5646 _IRQL_requires_max_(DISPATCH_LEVEL)
5647 WDFAPI
5648 VOID
5649 STDCALL
5650 WDFEXPORT(WdfIoResourceRequirementsListRemove)(
5651     _In_
5652     PWDF_DRIVER_GLOBALS DriverGlobals,
5653     _In_
5654     WDFIORESREQLIST RequirementsList,
5655     _In_
5656     ULONG Index
5657     );
5658 
5659 _IRQL_requires_max_(DISPATCH_LEVEL)
5660 WDFAPI
5661 VOID
5662 STDCALL
5663 WDFEXPORT(WdfIoResourceRequirementsListRemoveByIoResList)(
5664     _In_
5665     PWDF_DRIVER_GLOBALS DriverGlobals,
5666     _In_
5667     WDFIORESREQLIST RequirementsList,
5668     _In_
5669     WDFIORESLIST IoResList
5670     );
5671 
5672 _Must_inspect_result_
5673 _IRQL_requires_max_(DISPATCH_LEVEL)
5674 WDFAPI
5675 NTSTATUS
5676 STDCALL
5677 WDFEXPORT(WdfIoResourceListCreate)(
5678     _In_
5679     PWDF_DRIVER_GLOBALS DriverGlobals,
5680     _In_
5681     WDFIORESREQLIST RequirementsList,
5682     _In_opt_
5683     PWDF_OBJECT_ATTRIBUTES Attributes,
5684     _Out_
5685     WDFIORESLIST* ResourceList
5686     );
5687 
5688 _Must_inspect_result_
5689 _IRQL_requires_max_(DISPATCH_LEVEL)
5690 WDFAPI
5691 NTSTATUS
5692 STDCALL
5693 WDFEXPORT(WdfIoResourceListAppendDescriptor)(
5694     _In_
5695     PWDF_DRIVER_GLOBALS DriverGlobals,
5696     _In_
5697     WDFIORESLIST ResourceList,
5698     _In_
5699     PIO_RESOURCE_DESCRIPTOR Descriptor
5700     );
5701 
5702 _Must_inspect_result_
5703 _IRQL_requires_max_(DISPATCH_LEVEL)
5704 WDFAPI
5705 NTSTATUS
5706 STDCALL
5707 WDFEXPORT(WdfIoResourceListInsertDescriptor)(
5708     _In_
5709     PWDF_DRIVER_GLOBALS DriverGlobals,
5710     _In_
5711     WDFIORESLIST ResourceList,
5712     _In_
5713     PIO_RESOURCE_DESCRIPTOR Descriptor,
5714     _In_
5715     ULONG Index
5716     );
5717 
5718 _IRQL_requires_max_(DISPATCH_LEVEL)
5719 WDFAPI
5720 VOID
5721 STDCALL
5722 WDFEXPORT(WdfIoResourceListUpdateDescriptor)(
5723     _In_
5724     PWDF_DRIVER_GLOBALS DriverGlobals,
5725     _In_
5726     WDFIORESLIST ResourceList,
5727     _In_
5728     PIO_RESOURCE_DESCRIPTOR Descriptor,
5729     _In_
5730     ULONG Index
5731     );
5732 
5733 _IRQL_requires_max_(DISPATCH_LEVEL)
5734 WDFAPI
5735 ULONG
5736 STDCALL
5737 WDFEXPORT(WdfIoResourceListGetCount)(
5738     _In_
5739     PWDF_DRIVER_GLOBALS DriverGlobals,
5740     _In_
5741     WDFIORESLIST ResourceList
5742     );
5743 
5744 _IRQL_requires_max_(DISPATCH_LEVEL)
5745 WDFAPI
5746 PIO_RESOURCE_DESCRIPTOR
5747 STDCALL
5748 WDFEXPORT(WdfIoResourceListGetDescriptor)(
5749     _In_
5750     PWDF_DRIVER_GLOBALS DriverGlobals,
5751     _In_
5752     WDFIORESLIST ResourceList,
5753     _In_
5754     ULONG Index
5755     );
5756 
5757 _IRQL_requires_max_(DISPATCH_LEVEL)
5758 WDFAPI
5759 VOID
5760 STDCALL
5761 WDFEXPORT(WdfIoResourceListRemove)(
5762     _In_
5763     PWDF_DRIVER_GLOBALS DriverGlobals,
5764     _In_
5765     WDFIORESLIST ResourceList,
5766     _In_
5767     ULONG Index
5768     );
5769 
5770 _IRQL_requires_max_(DISPATCH_LEVEL)
5771 WDFAPI
5772 VOID
5773 STDCALL
5774 WDFEXPORT(WdfIoResourceListRemoveByDescriptor)(
5775     _In_
5776     PWDF_DRIVER_GLOBALS DriverGlobals,
5777     _In_
5778     WDFIORESLIST ResourceList,
5779     _In_
5780     PIO_RESOURCE_DESCRIPTOR Descriptor
5781     );
5782 
5783 _Must_inspect_result_
5784 _IRQL_requires_max_(DISPATCH_LEVEL)
5785 WDFAPI
5786 NTSTATUS
5787 STDCALL
5788 WDFEXPORT(WdfCmResourceListAppendDescriptor)(
5789     _In_
5790     PWDF_DRIVER_GLOBALS DriverGlobals,
5791     _In_
5792     WDFCMRESLIST List,
5793     _In_
5794     PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
5795     );
5796 
5797 _Must_inspect_result_
5798 _IRQL_requires_max_(DISPATCH_LEVEL)
5799 WDFAPI
5800 NTSTATUS
5801 STDCALL
5802 WDFEXPORT(WdfCmResourceListInsertDescriptor)(
5803     _In_
5804     PWDF_DRIVER_GLOBALS DriverGlobals,
5805     _In_
5806     WDFCMRESLIST List,
5807     _In_
5808     PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
5809     _In_
5810     ULONG Index
5811     );
5812 
5813 _IRQL_requires_max_(DISPATCH_LEVEL)
5814 WDFAPI
5815 ULONG
5816 STDCALL
5817 WDFEXPORT(WdfCmResourceListGetCount)(
5818     _In_
5819     PWDF_DRIVER_GLOBALS DriverGlobals,
5820     _In_
5821     WDFCMRESLIST List
5822     );
5823 
5824 _IRQL_requires_max_(DISPATCH_LEVEL)
5825 WDFAPI
5826 PCM_PARTIAL_RESOURCE_DESCRIPTOR
5827 STDCALL
5828 WDFEXPORT(WdfCmResourceListGetDescriptor)(
5829     _In_
5830     PWDF_DRIVER_GLOBALS DriverGlobals,
5831     _In_
5832     WDFCMRESLIST List,
5833     _In_
5834     ULONG Index
5835     );
5836 
5837 _IRQL_requires_max_(DISPATCH_LEVEL)
5838 WDFAPI
5839 VOID
5840 STDCALL
5841 WDFEXPORT(WdfCmResourceListRemove)(
5842     _In_
5843     PWDF_DRIVER_GLOBALS DriverGlobals,
5844     _In_
5845     WDFCMRESLIST List,
5846     _In_
5847     ULONG Index
5848     );
5849 
5850 _IRQL_requires_max_(DISPATCH_LEVEL)
5851 WDFAPI
5852 VOID
5853 STDCALL
5854 WDFEXPORT(WdfCmResourceListRemoveByDescriptor)(
5855     _In_
5856     PWDF_DRIVER_GLOBALS DriverGlobals,
5857     _In_
5858     WDFCMRESLIST List,
5859     _In_
5860     PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
5861     );
5862 
5863 _Must_inspect_result_
5864 _IRQL_requires_max_(PASSIVE_LEVEL)
5865 WDFAPI
5866 NTSTATUS
5867 STDCALL
5868 WDFEXPORT(WdfStringCreate)(
5869     _In_
5870     PWDF_DRIVER_GLOBALS DriverGlobals,
5871     _In_opt_
5872     PCUNICODE_STRING UnicodeString,
5873     _In_opt_
5874     PWDF_OBJECT_ATTRIBUTES StringAttributes,
5875     _Out_
5876     WDFSTRING* String
5877     );
5878 
5879 _IRQL_requires_max_(PASSIVE_LEVEL)
5880 WDFAPI
5881 VOID
5882 STDCALL
5883 WDFEXPORT(WdfStringGetUnicodeString)(
5884     _In_
5885     PWDF_DRIVER_GLOBALS DriverGlobals,
5886     _In_
5887     WDFSTRING String,
5888     _Out_
5889     PUNICODE_STRING UnicodeString
5890     );
5891 
5892 _IRQL_requires_max_(DISPATCH_LEVEL)
5893 WDFAPI
5894 VOID
5895 STDCALL
5896 WDFEXPORT(WdfObjectAcquireLock)(
5897     _In_
5898     PWDF_DRIVER_GLOBALS DriverGlobals,
5899     _In_
5900     _Requires_lock_not_held_(_Curr_)
5901     _Acquires_lock_(_Curr_)
5902     WDFOBJECT Object
5903     );
5904 
5905 _IRQL_requires_max_(DISPATCH_LEVEL)
5906 WDFAPI
5907 VOID
5908 STDCALL
5909 WDFEXPORT(WdfObjectReleaseLock)(
5910     _In_
5911     PWDF_DRIVER_GLOBALS DriverGlobals,
5912     _In_
5913     _Requires_lock_held_(_Curr_)
5914     _Releases_lock_(_Curr_)
5915     WDFOBJECT Object
5916     );
5917 
5918 _Must_inspect_result_
5919 _IRQL_requires_max_(DISPATCH_LEVEL)
5920 WDFAPI
5921 NTSTATUS
5922 STDCALL
5923 WDFEXPORT(WdfWaitLockCreate)(
5924     _In_
5925     PWDF_DRIVER_GLOBALS DriverGlobals,
5926     _In_opt_
5927     PWDF_OBJECT_ATTRIBUTES LockAttributes,
5928     _Out_
5929     WDFWAITLOCK* Lock
5930     );
5931 
5932 _When_(Timeout == NULL, _IRQL_requires_max_(PASSIVE_LEVEL))
5933 _When_(Timeout != NULL && *Timeout == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
5934 _When_(Timeout != NULL && *Timeout != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
5935 _Always_(_When_(Timeout == NULL, _Acquires_lock_(Lock)))
5936 _When_(Timeout != NULL && return == STATUS_SUCCESS, _Acquires_lock_(Lock))
5937 _When_(Timeout != NULL, _Must_inspect_result_)
5938 WDFAPI
5939 NTSTATUS
5940 STDCALL
5941 WDFEXPORT(WdfWaitLockAcquire)(
5942     _In_
5943     PWDF_DRIVER_GLOBALS DriverGlobals,
5944     _In_
5945     _Requires_lock_not_held_(_Curr_)
5946     WDFWAITLOCK Lock,
5947     _In_opt_
5948     PLONGLONG Timeout
5949     );
5950 
5951 _IRQL_requires_max_(DISPATCH_LEVEL)
5952 WDFAPI
5953 VOID
5954 STDCALL
5955 WDFEXPORT(WdfWaitLockRelease)(
5956     _In_
5957     PWDF_DRIVER_GLOBALS DriverGlobals,
5958     _In_
5959     _Requires_lock_held_(_Curr_)
5960     _Releases_lock_(_Curr_)
5961     WDFWAITLOCK Lock
5962     );
5963 
5964 _Must_inspect_result_
5965 _IRQL_requires_max_(DISPATCH_LEVEL)
5966 WDFAPI
5967 NTSTATUS
5968 STDCALL
5969 WDFEXPORT(WdfSpinLockCreate)(
5970     _In_
5971     PWDF_DRIVER_GLOBALS DriverGlobals,
5972     _In_opt_
5973     PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
5974     _Out_
5975     WDFSPINLOCK* SpinLock
5976     );
5977 
5978 _IRQL_requires_max_(DISPATCH_LEVEL)
5979 _IRQL_raises_(DISPATCH_LEVEL)
5980 WDFAPI
5981 VOID
5982 STDCALL
5983 WDFEXPORT(WdfSpinLockAcquire)(
5984     _In_
5985     PWDF_DRIVER_GLOBALS DriverGlobals,
5986     _In_
5987     _Requires_lock_not_held_(_Curr_)
5988     _Acquires_lock_(_Curr_)
5989     _IRQL_saves_
5990     WDFSPINLOCK SpinLock
5991     );
5992 
5993 _IRQL_requires_max_(DISPATCH_LEVEL)
5994 _IRQL_requires_min_(DISPATCH_LEVEL)
5995 WDFAPI
5996 VOID
5997 STDCALL
5998 WDFEXPORT(WdfSpinLockRelease)(
5999     _In_
6000     PWDF_DRIVER_GLOBALS DriverGlobals,
6001     _In_
6002     _Requires_lock_held_(_Curr_)
6003     _Releases_lock_(_Curr_)
6004     _IRQL_restores_
6005     WDFSPINLOCK SpinLock
6006     );
6007 
6008 _Must_inspect_result_
6009 _IRQL_requires_max_(DISPATCH_LEVEL)
6010 WDFAPI
6011 NTSTATUS
6012 STDCALL
6013 WDFEXPORT(WdfTimerCreate)(
6014     _In_
6015     PWDF_DRIVER_GLOBALS DriverGlobals,
6016     _In_
6017     PWDF_TIMER_CONFIG Config,
6018     _In_
6019     PWDF_OBJECT_ATTRIBUTES Attributes,
6020     _Out_
6021     WDFTIMER* Timer
6022     );
6023 
6024 _IRQL_requires_max_(DISPATCH_LEVEL)
6025 WDFAPI
6026 BOOLEAN
6027 STDCALL
6028 WDFEXPORT(WdfTimerStart)(
6029     _In_
6030     PWDF_DRIVER_GLOBALS DriverGlobals,
6031     _In_
6032     WDFTIMER Timer,
6033     _In_
6034     LONGLONG DueTime
6035     );
6036 
6037 _When_(Wait == __true, _IRQL_requires_max_(PASSIVE_LEVEL))
6038 _When_(Wait == __false, _IRQL_requires_max_(DISPATCH_LEVEL))
6039 WDFAPI
6040 BOOLEAN
6041 STDCALL
6042 WDFEXPORT(WdfTimerStop)(
6043     _In_
6044     PWDF_DRIVER_GLOBALS DriverGlobals,
6045     _In_
6046     WDFTIMER Timer,
6047     _In_
6048     BOOLEAN Wait
6049     );
6050 
6051 _IRQL_requires_max_(DISPATCH_LEVEL)
6052 WDFAPI
6053 WDFOBJECT
6054 STDCALL
6055 WDFEXPORT(WdfTimerGetParentObject)(
6056     _In_
6057     PWDF_DRIVER_GLOBALS DriverGlobals,
6058     _In_
6059     WDFTIMER Timer
6060     );
6061 
6062 _Must_inspect_result_
6063 _IRQL_requires_max_(PASSIVE_LEVEL)
6064 WDFAPI
6065 NTSTATUS
6066 STDCALL
6067 WDFEXPORT(WdfUsbTargetDeviceCreate)(
6068     _In_
6069     PWDF_DRIVER_GLOBALS DriverGlobals,
6070     _In_
6071     WDFDEVICE Device,
6072     _In_opt_
6073     PWDF_OBJECT_ATTRIBUTES Attributes,
6074     _Out_
6075     WDFUSBDEVICE* UsbDevice
6076     );
6077 
6078 _Must_inspect_result_
6079 _IRQL_requires_max_(PASSIVE_LEVEL)
6080 WDFAPI
6081 NTSTATUS
6082 STDCALL
6083 WDFEXPORT(WdfUsbTargetDeviceCreateWithParameters)(
6084     _In_
6085     PWDF_DRIVER_GLOBALS DriverGlobals,
6086     _In_
6087     WDFDEVICE Device,
6088     _In_
6089     PWDF_USB_DEVICE_CREATE_CONFIG Config,
6090     _In_opt_
6091     PWDF_OBJECT_ATTRIBUTES Attributes,
6092     _Out_
6093     WDFUSBDEVICE* UsbDevice
6094     );
6095 
6096 _Must_inspect_result_
6097 _IRQL_requires_max_(DISPATCH_LEVEL)
6098 WDFAPI
6099 NTSTATUS
6100 STDCALL
6101 WDFEXPORT(WdfUsbTargetDeviceRetrieveInformation)(
6102     _In_
6103     PWDF_DRIVER_GLOBALS DriverGlobals,
6104     _In_
6105     WDFUSBDEVICE UsbDevice,
6106     _Out_
6107     PWDF_USB_DEVICE_INFORMATION Information
6108     );
6109 
6110 _IRQL_requires_max_(PASSIVE_LEVEL)
6111 WDFAPI
6112 VOID
6113 STDCALL
6114 WDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor)(
6115     _In_
6116     PWDF_DRIVER_GLOBALS DriverGlobals,
6117     _In_
6118     WDFUSBDEVICE UsbDevice,
6119     _Out_
6120     PUSB_DEVICE_DESCRIPTOR UsbDeviceDescriptor
6121     );
6122 
6123 _Must_inspect_result_
6124 _IRQL_requires_max_(PASSIVE_LEVEL)
6125 WDFAPI
6126 NTSTATUS
6127 STDCALL
6128 WDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor)(
6129     _In_
6130     PWDF_DRIVER_GLOBALS DriverGlobals,
6131     _In_
6132     WDFUSBDEVICE UsbDevice,
6133     _Out_writes_bytes_to_opt_(*ConfigDescriptorLength,*ConfigDescriptorLength)
6134     PVOID ConfigDescriptor,
6135     _Inout_
6136     PUSHORT ConfigDescriptorLength
6137     );
6138 
6139 _Must_inspect_result_
6140 _IRQL_requires_max_(PASSIVE_LEVEL)
6141 WDFAPI
6142 NTSTATUS
6143 STDCALL
6144 WDFEXPORT(WdfUsbTargetDeviceQueryString)(
6145     _In_
6146     PWDF_DRIVER_GLOBALS DriverGlobals,
6147     _In_
6148     WDFUSBDEVICE UsbDevice,
6149     _In_opt_
6150     WDFREQUEST Request,
6151     _In_opt_
6152     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
6153     _Out_writes_opt_(*NumCharacters)
6154     PUSHORT String,
6155     _Inout_
6156     PUSHORT NumCharacters,
6157     _In_
6158     UCHAR StringIndex,
6159     _In_opt_
6160     USHORT LangID
6161     );
6162 
6163 _Must_inspect_result_
6164 _IRQL_requires_max_(PASSIVE_LEVEL)
6165 WDFAPI
6166 NTSTATUS
6167 STDCALL
6168 WDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString)(
6169     _In_
6170     PWDF_DRIVER_GLOBALS DriverGlobals,
6171     _In_
6172     WDFUSBDEVICE UsbDevice,
6173     _In_opt_
6174     PWDF_OBJECT_ATTRIBUTES StringMemoryAttributes,
6175     _Out_
6176     WDFMEMORY* StringMemory,
6177     _Out_opt_
6178     PUSHORT NumCharacters,
6179     _In_
6180     UCHAR StringIndex,
6181     _In_opt_
6182     USHORT LangID
6183     );
6184 
6185 _Must_inspect_result_
6186 _IRQL_requires_max_(DISPATCH_LEVEL)
6187 WDFAPI
6188 NTSTATUS
6189 STDCALL
6190 WDFEXPORT(WdfUsbTargetDeviceFormatRequestForString)(
6191     _In_
6192     PWDF_DRIVER_GLOBALS DriverGlobals,
6193     _In_
6194     WDFUSBDEVICE UsbDevice,
6195     _In_
6196     WDFREQUEST Request,
6197     _In_
6198     WDFMEMORY Memory,
6199     _In_opt_
6200     PWDFMEMORY_OFFSET Offset,
6201     _In_
6202     UCHAR StringIndex,
6203     _In_opt_
6204     USHORT LangID
6205     );
6206 
6207 _IRQL_requires_max_(DISPATCH_LEVEL)
6208 WDFAPI
6209 UCHAR
6210 STDCALL
6211 WDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces)(
6212     _In_
6213     PWDF_DRIVER_GLOBALS DriverGlobals,
6214     _In_
6215     WDFUSBDEVICE UsbDevice
6216     );
6217 
6218 _Must_inspect_result_
6219 _IRQL_requires_max_(PASSIVE_LEVEL)
6220 WDFAPI
6221 NTSTATUS
6222 STDCALL
6223 WDFEXPORT(WdfUsbTargetDeviceSelectConfig)(
6224     _In_
6225     PWDF_DRIVER_GLOBALS DriverGlobals,
6226     _In_
6227     WDFUSBDEVICE UsbDevice,
6228     _In_opt_
6229     PWDF_OBJECT_ATTRIBUTES PipeAttributes,
6230     _Inout_
6231     PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params
6232     );
6233 
6234 _IRQL_requires_max_(DISPATCH_LEVEL)
6235 WDFAPI
6236 USBD_CONFIGURATION_HANDLE
6237 STDCALL
6238 WDFEXPORT(WdfUsbTargetDeviceWdmGetConfigurationHandle)(
6239     _In_
6240     PWDF_DRIVER_GLOBALS DriverGlobals,
6241     _In_
6242     WDFUSBDEVICE UsbDevice
6243     );
6244 
6245 _Must_inspect_result_
6246 _IRQL_requires_max_(DISPATCH_LEVEL)
6247 WDFAPI
6248 NTSTATUS
6249 STDCALL
6250 WDFEXPORT(WdfUsbTargetDeviceRetrieveCurrentFrameNumber)(
6251     _In_
6252     PWDF_DRIVER_GLOBALS DriverGlobals,
6253     _In_
6254     WDFUSBDEVICE UsbDevice,
6255     _Out_
6256     PULONG CurrentFrameNumber
6257     );
6258 
6259 _Must_inspect_result_
6260 _IRQL_requires_max_(PASSIVE_LEVEL)
6261 WDFAPI
6262 NTSTATUS
6263 STDCALL
6264 WDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously)(
6265     _In_
6266     PWDF_DRIVER_GLOBALS DriverGlobals,
6267     _In_
6268     WDFUSBDEVICE UsbDevice,
6269     _In_opt_
6270     WDFREQUEST Request,
6271     _In_opt_
6272     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
6273     _In_
6274     PWDF_USB_CONTROL_SETUP_PACKET SetupPacket,
6275     _In_opt_
6276     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
6277     _Out_opt_
6278     PULONG BytesTransferred
6279     );
6280 
6281 _Must_inspect_result_
6282 _IRQL_requires_max_(DISPATCH_LEVEL)
6283 WDFAPI
6284 NTSTATUS
6285 STDCALL
6286 WDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer)(
6287     _In_
6288     PWDF_DRIVER_GLOBALS DriverGlobals,
6289     _In_
6290     WDFUSBDEVICE UsbDevice,
6291     _In_
6292     WDFREQUEST Request,
6293     _In_
6294     PWDF_USB_CONTROL_SETUP_PACKET SetupPacket,
6295     _In_opt_
6296     WDFMEMORY TransferMemory,
6297     _In_opt_
6298     PWDFMEMORY_OFFSET TransferOffset
6299     );
6300 
6301 _Must_inspect_result_
6302 _IRQL_requires_max_(PASSIVE_LEVEL)
6303 WDFAPI
6304 NTSTATUS
6305 STDCALL
6306 WDFEXPORT(WdfUsbTargetDeviceIsConnectedSynchronous)(
6307     _In_
6308     PWDF_DRIVER_GLOBALS DriverGlobals,
6309     _In_
6310     WDFUSBDEVICE UsbDevice
6311     );
6312 
6313 _Must_inspect_result_
6314 _IRQL_requires_max_(PASSIVE_LEVEL)
6315 WDFAPI
6316 NTSTATUS
6317 STDCALL
6318 WDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously)(
6319     _In_
6320     PWDF_DRIVER_GLOBALS DriverGlobals,
6321     _In_
6322     WDFUSBDEVICE UsbDevice
6323     );
6324 
6325 _Must_inspect_result_
6326 _IRQL_requires_max_(PASSIVE_LEVEL)
6327 WDFAPI
6328 NTSTATUS
6329 STDCALL
6330 WDFEXPORT(WdfUsbTargetDeviceCyclePortSynchronously)(
6331     _In_
6332     PWDF_DRIVER_GLOBALS DriverGlobals,
6333     _In_
6334     WDFUSBDEVICE UsbDevice
6335     );
6336 
6337 _Must_inspect_result_
6338 _IRQL_requires_max_(DISPATCH_LEVEL)
6339 WDFAPI
6340 NTSTATUS
6341 STDCALL
6342 WDFEXPORT(WdfUsbTargetDeviceFormatRequestForCyclePort)(
6343     _In_
6344     PWDF_DRIVER_GLOBALS DriverGlobals,
6345     _In_
6346     WDFUSBDEVICE UsbDevice,
6347     _In_
6348     WDFREQUEST Request
6349     );
6350 
6351 _Must_inspect_result_
6352 _IRQL_requires_max_(PASSIVE_LEVEL)
6353 WDFAPI
6354 NTSTATUS
6355 STDCALL
6356 WDFEXPORT(WdfUsbTargetDeviceSendUrbSynchronously)(
6357     _In_
6358     PWDF_DRIVER_GLOBALS DriverGlobals,
6359     _In_
6360     WDFUSBDEVICE UsbDevice,
6361     _In_opt_
6362     WDFREQUEST Request,
6363     _In_opt_
6364     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
6365     _In_reads_(_Inexpressible_("union bug in SAL"))
6366     PURB Urb
6367     );
6368 
6369 _Must_inspect_result_
6370 _IRQL_requires_max_(DISPATCH_LEVEL)
6371 WDFAPI
6372 NTSTATUS
6373 STDCALL
6374 WDFEXPORT(WdfUsbTargetDeviceFormatRequestForUrb)(
6375     _In_
6376     PWDF_DRIVER_GLOBALS DriverGlobals,
6377     _In_
6378     WDFUSBDEVICE UsbDevice,
6379     _In_
6380     WDFREQUEST Request,
6381     _In_
6382     WDFMEMORY UrbMemory,
6383     _In_opt_
6384     PWDFMEMORY_OFFSET UrbMemoryOffset
6385     );
6386 
6387 _Must_inspect_result_
6388 _IRQL_requires_max_(PASSIVE_LEVEL)
6389 WDFAPI
6390 NTSTATUS
6391 STDCALL
6392 WDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability)(
6393     _In_
6394     PWDF_DRIVER_GLOBALS DriverGlobals,
6395     _In_
6396     WDFUSBDEVICE UsbDevice,
6397     _In_
6398     CONST GUID* CapabilityType,
6399     _In_
6400     ULONG CapabilityBufferLength,
6401     _When_(CapabilityBufferLength == 0, _Out_opt_)
6402     _When_(CapabilityBufferLength != 0 && ResultLength == NULL, _Out_writes_bytes_(CapabilityBufferLength))
6403     _When_(CapabilityBufferLength != 0 && ResultLength != NULL, _Out_writes_bytes_to_opt_(CapabilityBufferLength, *ResultLength))
6404     PVOID CapabilityBuffer,
6405     _Out_opt_
6406     _When_(ResultLength != NULL,_Deref_out_range_(<=,CapabilityBufferLength))
6407     PULONG ResultLength
6408     );
6409 
6410 _Must_inspect_result_
6411 _IRQL_requires_max_(DISPATCH_LEVEL)
6412 WDFAPI
6413 NTSTATUS
6414 STDCALL
6415 WDFEXPORT(WdfUsbTargetDeviceCreateUrb)(
6416     _In_
6417     PWDF_DRIVER_GLOBALS DriverGlobals,
6418     _In_
6419     WDFUSBDEVICE UsbDevice,
6420     _In_opt_
6421     PWDF_OBJECT_ATTRIBUTES Attributes,
6422     _Out_
6423     WDFMEMORY* UrbMemory,
6424     _Outptr_opt_result_bytebuffer_(sizeof(URB))
6425     PURB* Urb
6426     );
6427 
6428 _Must_inspect_result_
6429 _IRQL_requires_max_(DISPATCH_LEVEL)
6430 WDFAPI
6431 NTSTATUS
6432 STDCALL
6433 WDFEXPORT(WdfUsbTargetDeviceCreateIsochUrb)(
6434     _In_
6435     PWDF_DRIVER_GLOBALS DriverGlobals,
6436     _In_
6437     WDFUSBDEVICE UsbDevice,
6438     _In_opt_
6439     PWDF_OBJECT_ATTRIBUTES Attributes,
6440     _In_
6441     ULONG NumberOfIsochPackets,
6442     _Out_
6443     WDFMEMORY* UrbMemory,
6444     _Outptr_opt_result_bytebuffer_(GET_ISO_URB_SIZE(NumberOfIsochPackets))
6445     PURB* Urb
6446     );
6447 
6448 _IRQL_requires_max_(DISPATCH_LEVEL)
6449 WDFAPI
6450 VOID
6451 STDCALL
6452 WDFEXPORT(WdfUsbTargetPipeGetInformation)(
6453     _In_
6454     PWDF_DRIVER_GLOBALS DriverGlobals,
6455     _In_
6456     WDFUSBPIPE Pipe,
6457     _Out_
6458     PWDF_USB_PIPE_INFORMATION PipeInformation
6459     );
6460 
6461 _IRQL_requires_max_(DISPATCH_LEVEL)
6462 WDFAPI
6463 BOOLEAN
6464 STDCALL
6465 WDFEXPORT(WdfUsbTargetPipeIsInEndpoint)(
6466     _In_
6467     PWDF_DRIVER_GLOBALS DriverGlobals,
6468     _In_
6469     WDFUSBPIPE Pipe
6470     );
6471 
6472 _IRQL_requires_max_(DISPATCH_LEVEL)
6473 WDFAPI
6474 BOOLEAN
6475 STDCALL
6476 WDFEXPORT(WdfUsbTargetPipeIsOutEndpoint)(
6477     _In_
6478     PWDF_DRIVER_GLOBALS DriverGlobals,
6479     _In_
6480     WDFUSBPIPE Pipe
6481     );
6482 
6483 _IRQL_requires_max_(DISPATCH_LEVEL)
6484 WDFAPI
6485 WDF_USB_PIPE_TYPE
6486 STDCALL
6487 WDFEXPORT(WdfUsbTargetPipeGetType)(
6488     _In_
6489     PWDF_DRIVER_GLOBALS DriverGlobals,
6490     _In_
6491     WDFUSBPIPE Pipe
6492     );
6493 
6494 _IRQL_requires_max_(DISPATCH_LEVEL)
6495 WDFAPI
6496 VOID
6497 STDCALL
6498 WDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck)(
6499     _In_
6500     PWDF_DRIVER_GLOBALS DriverGlobals,
6501     _In_
6502     WDFUSBPIPE Pipe
6503     );
6504 
6505 _Must_inspect_result_
6506 _IRQL_requires_max_(PASSIVE_LEVEL)
6507 WDFAPI
6508 NTSTATUS
6509 STDCALL
6510 WDFEXPORT(WdfUsbTargetPipeWriteSynchronously)(
6511     _In_
6512     PWDF_DRIVER_GLOBALS DriverGlobals,
6513     _In_
6514     WDFUSBPIPE Pipe,
6515     _In_opt_
6516     WDFREQUEST Request,
6517     _In_opt_
6518     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
6519     _In_opt_
6520     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
6521     _Out_opt_
6522     PULONG BytesWritten
6523     );
6524 
6525 _Must_inspect_result_
6526 _IRQL_requires_max_(DISPATCH_LEVEL)
6527 WDFAPI
6528 NTSTATUS
6529 STDCALL
6530 WDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite)(
6531     _In_
6532     PWDF_DRIVER_GLOBALS DriverGlobals,
6533     _In_
6534     WDFUSBPIPE Pipe,
6535     _In_
6536     WDFREQUEST Request,
6537     _In_opt_
6538     WDFMEMORY WriteMemory,
6539     _In_opt_
6540     PWDFMEMORY_OFFSET WriteOffset
6541     );
6542 
6543 _Must_inspect_result_
6544 _IRQL_requires_max_(PASSIVE_LEVEL)
6545 WDFAPI
6546 NTSTATUS
6547 STDCALL
6548 WDFEXPORT(WdfUsbTargetPipeReadSynchronously)(
6549     _In_
6550     PWDF_DRIVER_GLOBALS DriverGlobals,
6551     _In_
6552     WDFUSBPIPE Pipe,
6553     _In_opt_
6554     WDFREQUEST Request,
6555     _In_opt_
6556     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
6557     _In_opt_
6558     PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
6559     _Out_opt_
6560     PULONG BytesRead
6561     );
6562 
6563 _Must_inspect_result_
6564 _IRQL_requires_max_(DISPATCH_LEVEL)
6565 WDFAPI
6566 NTSTATUS
6567 STDCALL
6568 WDFEXPORT(WdfUsbTargetPipeFormatRequestForRead)(
6569     _In_
6570     PWDF_DRIVER_GLOBALS DriverGlobals,
6571     _In_
6572     WDFUSBPIPE Pipe,
6573     _In_
6574     WDFREQUEST Request,
6575     _In_opt_
6576     WDFMEMORY ReadMemory,
6577     _In_opt_
6578     PWDFMEMORY_OFFSET ReadOffset
6579     );
6580 
6581 _Must_inspect_result_
6582 _IRQL_requires_max_(DISPATCH_LEVEL)
6583 WDFAPI
6584 NTSTATUS
6585 STDCALL
6586 WDFEXPORT(WdfUsbTargetPipeConfigContinuousReader)(
6587     _In_
6588     PWDF_DRIVER_GLOBALS DriverGlobals,
6589     _In_
6590     WDFUSBPIPE Pipe,
6591     _In_
6592     PWDF_USB_CONTINUOUS_READER_CONFIG Config
6593     );
6594 
6595 _Must_inspect_result_
6596 _IRQL_requires_max_(PASSIVE_LEVEL)
6597 WDFAPI
6598 NTSTATUS
6599 STDCALL
6600 WDFEXPORT(WdfUsbTargetPipeAbortSynchronously)(
6601     _In_
6602     PWDF_DRIVER_GLOBALS DriverGlobals,
6603     _In_
6604     WDFUSBPIPE Pipe,
6605     _In_opt_
6606     WDFREQUEST Request,
6607     _In_opt_
6608     PWDF_REQUEST_SEND_OPTIONS RequestOptions
6609     );
6610 
6611 _Must_inspect_result_
6612 _IRQL_requires_max_(DISPATCH_LEVEL)
6613 WDFAPI
6614 NTSTATUS
6615 STDCALL
6616 WDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort)(
6617     _In_
6618     PWDF_DRIVER_GLOBALS DriverGlobals,
6619     _In_
6620     WDFUSBPIPE Pipe,
6621     _In_
6622     WDFREQUEST Request
6623     );
6624 
6625 _Must_inspect_result_
6626 _IRQL_requires_max_(PASSIVE_LEVEL)
6627 WDFAPI
6628 NTSTATUS
6629 STDCALL
6630 WDFEXPORT(WdfUsbTargetPipeResetSynchronously)(
6631     _In_
6632     PWDF_DRIVER_GLOBALS DriverGlobals,
6633     _In_
6634     WDFUSBPIPE Pipe,
6635     _In_opt_
6636     WDFREQUEST Request,
6637     _In_opt_
6638     PWDF_REQUEST_SEND_OPTIONS RequestOptions
6639     );
6640 
6641 _Must_inspect_result_
6642 _IRQL_requires_max_(DISPATCH_LEVEL)
6643 WDFAPI
6644 NTSTATUS
6645 STDCALL
6646 WDFEXPORT(WdfUsbTargetPipeFormatRequestForReset)(
6647     _In_
6648     PWDF_DRIVER_GLOBALS DriverGlobals,
6649     _In_
6650     WDFUSBPIPE Pipe,
6651     _In_
6652     WDFREQUEST Request
6653     );
6654 
6655 _Must_inspect_result_
6656 _IRQL_requires_max_(PASSIVE_LEVEL)
6657 WDFAPI
6658 NTSTATUS
6659 STDCALL
6660 WDFEXPORT(WdfUsbTargetPipeSendUrbSynchronously)(
6661     _In_
6662     PWDF_DRIVER_GLOBALS DriverGlobals,
6663     _In_
6664     WDFUSBPIPE Pipe,
6665     _In_opt_
6666     WDFREQUEST Request,
6667     _In_opt_
6668     PWDF_REQUEST_SEND_OPTIONS RequestOptions,
6669     _In_reads_(_Inexpressible_("union bug in SAL"))
6670     PURB Urb
6671     );
6672 
6673 _Must_inspect_result_
6674 _IRQL_requires_max_(DISPATCH_LEVEL)
6675 WDFAPI
6676 NTSTATUS
6677 STDCALL
6678 WDFEXPORT(WdfUsbTargetPipeFormatRequestForUrb)(
6679     _In_
6680     PWDF_DRIVER_GLOBALS DriverGlobals,
6681     _In_
6682     WDFUSBPIPE PIPE,
6683     _In_
6684     WDFREQUEST Request,
6685     _In_
6686     WDFMEMORY UrbMemory,
6687     _In_opt_
6688     PWDFMEMORY_OFFSET UrbMemoryOffset
6689     );
6690 
6691 _IRQL_requires_max_(DISPATCH_LEVEL)
6692 WDFAPI
6693 BYTE
6694 STDCALL
6695 WDFEXPORT(WdfUsbInterfaceGetInterfaceNumber)(
6696     _In_
6697     PWDF_DRIVER_GLOBALS DriverGlobals,
6698     _In_
6699     WDFUSBINTERFACE UsbInterface
6700     );
6701 
6702 _IRQL_requires_max_(DISPATCH_LEVEL)
6703 WDFAPI
6704 BYTE
6705 STDCALL
6706 WDFEXPORT(WdfUsbInterfaceGetNumEndpoints)(
6707     _In_
6708     PWDF_DRIVER_GLOBALS DriverGlobals,
6709     _In_
6710     WDFUSBINTERFACE UsbInterface,
6711     _In_
6712     UCHAR SettingIndex
6713     );
6714 
6715 _IRQL_requires_max_(DISPATCH_LEVEL)
6716 WDFAPI
6717 VOID
6718 STDCALL
6719 WDFEXPORT(WdfUsbInterfaceGetDescriptor)(
6720     _In_
6721     PWDF_DRIVER_GLOBALS DriverGlobals,
6722     _In_
6723     WDFUSBINTERFACE UsbInterface,
6724     _In_
6725     UCHAR SettingIndex,
6726     _Out_
6727     PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
6728     );
6729 
6730 _IRQL_requires_max_(DISPATCH_LEVEL)
6731 WDFAPI
6732 BYTE
6733 STDCALL
6734 WDFEXPORT(WdfUsbInterfaceGetNumSettings)(
6735     _In_
6736     PWDF_DRIVER_GLOBALS DriverGlobals,
6737     _In_
6738     WDFUSBINTERFACE UsbInterface
6739     );
6740 
6741 _Must_inspect_result_
6742 _IRQL_requires_max_(PASSIVE_LEVEL)
6743 WDFAPI
6744 NTSTATUS
6745 STDCALL
6746 WDFEXPORT(WdfUsbInterfaceSelectSetting)(
6747     _In_
6748     PWDF_DRIVER_GLOBALS DriverGlobals,
6749     _In_
6750     WDFUSBINTERFACE UsbInterface,
6751     _In_opt_
6752     PWDF_OBJECT_ATTRIBUTES PipesAttributes,
6753     _In_
6754     PWDF_USB_INTERFACE_SELECT_SETTING_PARAMS Params
6755     );
6756 
6757 _IRQL_requires_max_(DISPATCH_LEVEL)
6758 WDFAPI
6759 VOID
6760 STDCALL
6761 WDFEXPORT(WdfUsbInterfaceGetEndpointInformation)(
6762     _In_
6763     PWDF_DRIVER_GLOBALS DriverGlobals,
6764     _In_
6765     WDFUSBINTERFACE UsbInterface,
6766     _In_
6767     UCHAR SettingIndex,
6768     _In_
6769     UCHAR EndpointIndex,
6770     _Out_
6771     PWDF_USB_PIPE_INFORMATION EndpointInfo
6772     );
6773 
6774 _IRQL_requires_max_(DISPATCH_LEVEL)
6775 WDFAPI
6776 WDFUSBINTERFACE
6777 STDCALL
6778 WDFEXPORT(WdfUsbTargetDeviceGetInterface)(
6779     _In_
6780     PWDF_DRIVER_GLOBALS DriverGlobals,
6781     _In_
6782     WDFUSBDEVICE UsbDevice,
6783     _In_
6784     UCHAR InterfaceIndex
6785     );
6786 
6787 _IRQL_requires_max_(DISPATCH_LEVEL)
6788 WDFAPI
6789 BYTE
6790 STDCALL
6791 WDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex)(
6792     _In_
6793     PWDF_DRIVER_GLOBALS DriverGlobals,
6794     _In_
6795     WDFUSBINTERFACE Interface
6796     );
6797 
6798 _IRQL_requires_max_(DISPATCH_LEVEL)
6799 WDFAPI
6800 BYTE
6801 STDCALL
6802 WDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes)(
6803     _In_
6804     PWDF_DRIVER_GLOBALS DriverGlobals,
6805     _In_
6806     WDFUSBINTERFACE UsbInterface
6807     );
6808 
6809 _IRQL_requires_max_(DISPATCH_LEVEL)
6810 WDFAPI
6811 WDFUSBPIPE
6812 STDCALL
6813 WDFEXPORT(WdfUsbInterfaceGetConfiguredPipe)(
6814     _In_
6815     PWDF_DRIVER_GLOBALS DriverGlobals,
6816     _In_
6817     WDFUSBINTERFACE UsbInterface,
6818     _In_
6819     UCHAR PipeIndex,
6820     _Out_opt_
6821     PWDF_USB_PIPE_INFORMATION PipeInfo
6822     );
6823 
6824 _IRQL_requires_max_(DISPATCH_LEVEL)
6825 WDFAPI
6826 USBD_PIPE_HANDLE
6827 STDCALL
6828 WDFEXPORT(WdfUsbTargetPipeWdmGetPipeHandle)(
6829     _In_
6830     PWDF_DRIVER_GLOBALS DriverGlobals,
6831     _In_
6832     WDFUSBPIPE UsbPipe
6833     );
6834 
6835 WDFAPI
6836 VOID
6837 STDCALL
6838 WDFEXPORT(WdfVerifierDbgBreakPoint)(
6839     _In_
6840     PWDF_DRIVER_GLOBALS DriverGlobals
6841     );
6842 
6843 WDFAPI
6844 VOID
6845 STDCALL
6846 WDFEXPORT(WdfVerifierKeBugCheck)(
6847     _In_
6848     PWDF_DRIVER_GLOBALS DriverGlobals,
6849     _In_
6850     ULONG BugCheckCode,
6851     _In_
6852     ULONG_PTR BugCheckParameter1,
6853     _In_
6854     ULONG_PTR BugCheckParameter2,
6855     _In_
6856     ULONG_PTR BugCheckParameter3,
6857     _In_
6858     ULONG_PTR BugCheckParameter4
6859     );
6860 
6861 WDFAPI
6862 PVOID
6863 STDCALL
6864 WDFEXPORT(WdfGetTriageInfo)(
6865     _In_
6866     PWDF_DRIVER_GLOBALS DriverGlobals
6867     );
6868 
6869 _Must_inspect_result_
6870 _IRQL_requires_max_(DISPATCH_LEVEL)
6871 WDFAPI
6872 NTSTATUS
6873 STDCALL
6874 WDFEXPORT(WdfWmiProviderCreate)(
6875     _In_
6876     PWDF_DRIVER_GLOBALS DriverGlobals,
6877     _In_
6878     WDFDEVICE Device,
6879     _In_
6880     PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
6881     _In_opt_
6882     PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
6883     _Out_
6884     WDFWMIPROVIDER* WmiProvider
6885     );
6886 
6887 _IRQL_requires_max_(DISPATCH_LEVEL)
6888 WDFAPI
6889 WDFDEVICE
6890 STDCALL
6891 WDFEXPORT(WdfWmiProviderGetDevice)(
6892     _In_
6893     PWDF_DRIVER_GLOBALS DriverGlobals,
6894     _In_
6895     WDFWMIPROVIDER WmiProvider
6896     );
6897 
6898 _IRQL_requires_max_(DISPATCH_LEVEL)
6899 WDFAPI
6900 BOOLEAN
6901 STDCALL
6902 WDFEXPORT(WdfWmiProviderIsEnabled)(
6903     _In_
6904     PWDF_DRIVER_GLOBALS DriverGlobals,
6905     _In_
6906     WDFWMIPROVIDER WmiProvider,
6907     _In_
6908     WDF_WMI_PROVIDER_CONTROL ProviderControl
6909     );
6910 
6911 _IRQL_requires_max_(DISPATCH_LEVEL)
6912 WDFAPI
6913 ULONGLONG
6914 STDCALL
6915 WDFEXPORT(WdfWmiProviderGetTracingHandle)(
6916     _In_
6917     PWDF_DRIVER_GLOBALS DriverGlobals,
6918     _In_
6919     WDFWMIPROVIDER WmiProvider
6920     );
6921 
6922 _Must_inspect_result_
6923 _IRQL_requires_max_(DISPATCH_LEVEL)
6924 WDFAPI
6925 NTSTATUS
6926 STDCALL
6927 WDFEXPORT(WdfWmiInstanceCreate)(
6928     _In_
6929     PWDF_DRIVER_GLOBALS DriverGlobals,
6930     _In_
6931     WDFDEVICE Device,
6932     _In_
6933     PWDF_WMI_INSTANCE_CONFIG InstanceConfig,
6934     _In_opt_
6935     PWDF_OBJECT_ATTRIBUTES InstanceAttributes,
6936     _Out_opt_
6937     WDFWMIINSTANCE* Instance
6938     );
6939 
6940 _Must_inspect_result_
6941 _IRQL_requires_max_(PASSIVE_LEVEL)
6942 WDFAPI
6943 NTSTATUS
6944 STDCALL
6945 WDFEXPORT(WdfWmiInstanceRegister)(
6946     _In_
6947     PWDF_DRIVER_GLOBALS DriverGlobals,
6948     _In_
6949     WDFWMIINSTANCE WmiInstance
6950     );
6951 
6952 _IRQL_requires_max_(PASSIVE_LEVEL)
6953 WDFAPI
6954 VOID
6955 STDCALL
6956 WDFEXPORT(WdfWmiInstanceDeregister)(
6957     _In_
6958     PWDF_DRIVER_GLOBALS DriverGlobals,
6959     _In_
6960     WDFWMIINSTANCE WmiInstance
6961     );
6962 
6963 _IRQL_requires_max_(DISPATCH_LEVEL)
6964 WDFAPI
6965 WDFDEVICE
6966 STDCALL
6967 WDFEXPORT(WdfWmiInstanceGetDevice)(
6968     _In_
6969     PWDF_DRIVER_GLOBALS DriverGlobals,
6970     _In_
6971     WDFWMIINSTANCE WmiInstance
6972     );
6973 
6974 _IRQL_requires_max_(DISPATCH_LEVEL)
6975 WDFAPI
6976 WDFWMIPROVIDER
6977 STDCALL
6978 WDFEXPORT(WdfWmiInstanceGetProvider)(
6979     _In_
6980     PWDF_DRIVER_GLOBALS DriverGlobals,
6981     _In_
6982     WDFWMIINSTANCE WmiInstance
6983     );
6984 
6985 _Must_inspect_result_
6986 _IRQL_requires_max_(APC_LEVEL)
6987 WDFAPI
6988 NTSTATUS
6989 STDCALL
6990 WDFEXPORT(WdfWmiInstanceFireEvent)(
6991     _In_
6992     PWDF_DRIVER_GLOBALS DriverGlobals,
6993     _In_
6994     WDFWMIINSTANCE WmiInstance,
6995     _In_opt_
6996     ULONG EventDataSize,
6997     _In_reads_bytes_opt_(EventDataSize)
6998     PVOID EventData
6999     );
7000 
7001 _Must_inspect_result_
7002 _IRQL_requires_max_(DISPATCH_LEVEL)
7003 WDFAPI
7004 NTSTATUS
7005 STDCALL
7006 WDFEXPORT(WdfWorkItemCreate)(
7007     _In_
7008     PWDF_DRIVER_GLOBALS DriverGlobals,
7009     _In_
7010     PWDF_WORKITEM_CONFIG Config,
7011     _In_
7012     PWDF_OBJECT_ATTRIBUTES Attributes,
7013     _Out_
7014     WDFWORKITEM* WorkItem
7015     );
7016 
7017 _IRQL_requires_max_(DISPATCH_LEVEL)
7018 WDFAPI
7019 VOID
7020 STDCALL
7021 WDFEXPORT(WdfWorkItemEnqueue)(
7022     _In_
7023     PWDF_DRIVER_GLOBALS DriverGlobals,
7024     _In_
7025     WDFWORKITEM WorkItem
7026     );
7027 
7028 _IRQL_requires_max_(DISPATCH_LEVEL)
7029 WDFAPI
7030 WDFOBJECT
7031 STDCALL
7032 WDFEXPORT(WdfWorkItemGetParentObject)(
7033     _In_
7034     PWDF_DRIVER_GLOBALS DriverGlobals,
7035     _In_
7036     WDFWORKITEM WorkItem
7037     );
7038 
7039 _IRQL_requires_max_(PASSIVE_LEVEL)
7040 WDFAPI
7041 VOID
7042 STDCALL
7043 WDFEXPORT(WdfWorkItemFlush)(
7044     _In_
7045     PWDF_DRIVER_GLOBALS DriverGlobals,
7046     _In_
7047     WDFWORKITEM WorkItem
7048     );
7049 
7050 
7051 #ifdef FX_DYNAMICS_GENERATE_TABLE
7052 
7053 WDFVERSION WdfVersion = {
7054     sizeof(WDFVERSION),
7055     sizeof(WDFFUNCTIONS)/sizeof(PVOID),
7056     {
7057         WDFEXPORT(WdfChildListCreate),
7058         WDFEXPORT(WdfChildListGetDevice),
7059         WDFEXPORT(WdfChildListRetrievePdo),
7060         WDFEXPORT(WdfChildListRetrieveAddressDescription),
7061         WDFEXPORT(WdfChildListBeginScan),
7062         WDFEXPORT(WdfChildListEndScan),
7063         WDFEXPORT(WdfChildListBeginIteration),
7064         WDFEXPORT(WdfChildListRetrieveNextDevice),
7065         WDFEXPORT(WdfChildListEndIteration),
7066         WDFEXPORT(WdfChildListAddOrUpdateChildDescriptionAsPresent),
7067         WDFEXPORT(WdfChildListUpdateChildDescriptionAsMissing),
7068         WDFEXPORT(WdfChildListUpdateAllChildDescriptionsAsPresent),
7069         WDFEXPORT(WdfChildListRequestChildEject),
7070         WDFEXPORT(WdfCollectionCreate),
7071         WDFEXPORT(WdfCollectionGetCount),
7072         WDFEXPORT(WdfCollectionAdd),
7073         WDFEXPORT(WdfCollectionRemove),
7074         WDFEXPORT(WdfCollectionRemoveItem),
7075         WDFEXPORT(WdfCollectionGetItem),
7076         WDFEXPORT(WdfCollectionGetFirstItem),
7077         WDFEXPORT(WdfCollectionGetLastItem),
7078         // WDFEXPORT(WdfCommonBufferCreate),
7079         // WDFEXPORT(WdfCommonBufferGetAlignedVirtualAddress),
7080         // WDFEXPORT(WdfCommonBufferGetAlignedLogicalAddress),
7081         // WDFEXPORT(WdfCommonBufferGetLength),
7082         WdfApiNotImplemented,
7083         WdfApiNotImplemented,
7084         WdfApiNotImplemented,
7085         WdfApiNotImplemented,
7086 
7087         WDFEXPORT(WdfControlDeviceInitAllocate),
7088         WDFEXPORT(WdfControlDeviceInitSetShutdownNotification),
7089         WDFEXPORT(WdfControlFinishInitializing),
7090         WDFEXPORT(WdfDeviceGetDeviceState),
7091         WDFEXPORT(WdfDeviceSetDeviceState),
7092         WDFEXPORT(WdfWdmDeviceGetWdfDeviceHandle),
7093         WDFEXPORT(WdfDeviceWdmGetDeviceObject),
7094         WDFEXPORT(WdfDeviceWdmGetAttachedDevice),
7095         WDFEXPORT(WdfDeviceWdmGetPhysicalDevice),
7096         WDFEXPORT(WdfDeviceWdmDispatchPreprocessedIrp),
7097         WDFEXPORT(WdfDeviceAddDependentUsageDeviceObject),
7098         WDFEXPORT(WdfDeviceAddRemovalRelationsPhysicalDevice),
7099         WDFEXPORT(WdfDeviceRemoveRemovalRelationsPhysicalDevice),
7100         WDFEXPORT(WdfDeviceClearRemovalRelationsDevices),
7101         WDFEXPORT(WdfDeviceGetDriver),
7102         WDFEXPORT(WdfDeviceRetrieveDeviceName),
7103         WDFEXPORT(WdfDeviceAssignMofResourceName),
7104         WDFEXPORT(WdfDeviceGetIoTarget),
7105         WDFEXPORT(WdfDeviceGetDevicePnpState),
7106         WDFEXPORT(WdfDeviceGetDevicePowerState),
7107         WDFEXPORT(WdfDeviceGetDevicePowerPolicyState),
7108         WDFEXPORT(WdfDeviceAssignS0IdleSettings),
7109         WDFEXPORT(WdfDeviceAssignSxWakeSettings),
7110         WDFEXPORT(WdfDeviceOpenRegistryKey),
7111         WDFEXPORT(WdfDeviceSetSpecialFileSupport),
7112         WDFEXPORT(WdfDeviceSetCharacteristics),
7113         WDFEXPORT(WdfDeviceGetCharacteristics),
7114         WDFEXPORT(WdfDeviceGetAlignmentRequirement),
7115         WDFEXPORT(WdfDeviceSetAlignmentRequirement),
7116         WDFEXPORT(WdfDeviceInitFree),
7117         WDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks),
7118         WDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks),
7119         WDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership),
7120         WDFEXPORT(WdfDeviceInitRegisterPnpStateChangeCallback),
7121         WDFEXPORT(WdfDeviceInitRegisterPowerStateChangeCallback),
7122         WDFEXPORT(WdfDeviceInitRegisterPowerPolicyStateChangeCallback),
7123         WDFEXPORT(WdfDeviceInitSetIoType),
7124         WDFEXPORT(WdfDeviceInitSetExclusive),
7125         WDFEXPORT(WdfDeviceInitSetPowerNotPageable),
7126         WDFEXPORT(WdfDeviceInitSetPowerPageable),
7127         WDFEXPORT(WdfDeviceInitSetPowerInrush),
7128         WDFEXPORT(WdfDeviceInitSetDeviceType),
7129         WDFEXPORT(WdfDeviceInitAssignName),
7130         WDFEXPORT(WdfDeviceInitAssignSDDLString),
7131         WDFEXPORT(WdfDeviceInitSetDeviceClass),
7132         WDFEXPORT(WdfDeviceInitSetCharacteristics),
7133         WDFEXPORT(WdfDeviceInitSetFileObjectConfig),
7134         WDFEXPORT(WdfDeviceInitSetRequestAttributes),
7135         WDFEXPORT(WdfDeviceInitAssignWdmIrpPreprocessCallback),
7136         WDFEXPORT(WdfDeviceInitSetIoInCallerContextCallback),
7137         WDFEXPORT(WdfDeviceCreate),
7138         WDFEXPORT(WdfDeviceSetStaticStopRemove),
7139         WDFEXPORT(WdfDeviceCreateDeviceInterface),
7140         WDFEXPORT(WdfDeviceSetDeviceInterfaceState),
7141         WDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString),
7142         WDFEXPORT(WdfDeviceCreateSymbolicLink),
7143         WDFEXPORT(WdfDeviceQueryProperty),
7144         WDFEXPORT(WdfDeviceAllocAndQueryProperty),
7145         WDFEXPORT(WdfDeviceSetPnpCapabilities),
7146         WDFEXPORT(WdfDeviceSetPowerCapabilities),
7147         WDFEXPORT(WdfDeviceSetBusInformationForChildren),
7148         WDFEXPORT(WdfDeviceIndicateWakeStatus),
7149         WDFEXPORT(WdfDeviceSetFailed),
7150         WDFEXPORT(WdfDeviceStopIdleNoTrack),
7151         WDFEXPORT(WdfDeviceResumeIdleNoTrack),
7152         WDFEXPORT(WdfDeviceGetFileObject),
7153         WDFEXPORT(WdfDeviceEnqueueRequest),
7154         WDFEXPORT(WdfDeviceGetDefaultQueue),
7155         WDFEXPORT(WdfDeviceConfigureRequestDispatching),
7156         // WDFEXPORT(WdfDmaEnablerCreate),
7157         // WDFEXPORT(WdfDmaEnablerGetMaximumLength),
7158         // WDFEXPORT(WdfDmaEnablerGetMaximumScatterGatherElements),
7159         // WDFEXPORT(WdfDmaEnablerSetMaximumScatterGatherElements),
7160         // WDFEXPORT(WdfDmaTransactionCreate),
7161         // WDFEXPORT(WdfDmaTransactionInitialize),
7162         // WDFEXPORT(WdfDmaTransactionInitializeUsingRequest),
7163         // WDFEXPORT(WdfDmaTransactionExecute),
7164         // WDFEXPORT(WdfDmaTransactionRelease),
7165         // WDFEXPORT(WdfDmaTransactionDmaCompleted),
7166         // WDFEXPORT(WdfDmaTransactionDmaCompletedWithLength),
7167         // WDFEXPORT(WdfDmaTransactionDmaCompletedFinal),
7168         // WDFEXPORT(WdfDmaTransactionGetBytesTransferred),
7169         // WDFEXPORT(WdfDmaTransactionSetMaximumLength),
7170         // WDFEXPORT(WdfDmaTransactionGetRequest),
7171         // WDFEXPORT(WdfDmaTransactionGetCurrentDmaTransferLength),
7172         // WDFEXPORT(WdfDmaTransactionGetDevice),
7173         WdfApiNotImplemented,
7174         WdfApiNotImplemented,
7175         WdfApiNotImplemented,
7176         WdfApiNotImplemented,
7177         WdfApiNotImplemented,
7178         WdfApiNotImplemented,
7179         WdfApiNotImplemented,
7180         WdfApiNotImplemented,
7181         WdfApiNotImplemented,
7182         WdfApiNotImplemented,
7183         WdfApiNotImplemented,
7184         WdfApiNotImplemented,
7185         WdfApiNotImplemented,
7186         WdfApiNotImplemented,
7187         WdfApiNotImplemented,
7188         WdfApiNotImplemented,
7189         WdfApiNotImplemented,
7190 
7191         WDFEXPORT(WdfDpcCreate),
7192         WDFEXPORT(WdfDpcEnqueue),
7193         WDFEXPORT(WdfDpcCancel),
7194         WDFEXPORT(WdfDpcGetParentObject),
7195         WDFEXPORT(WdfDpcWdmGetDpc),
7196         WDFEXPORT(WdfDriverCreate),
7197         WDFEXPORT(WdfDriverGetRegistryPath),
7198         WDFEXPORT(WdfDriverWdmGetDriverObject),
7199         WDFEXPORT(WdfDriverOpenParametersRegistryKey),
7200         WDFEXPORT(WdfWdmDriverGetWdfDriverHandle),
7201         WDFEXPORT(WdfDriverRegisterTraceInfo),
7202         WDFEXPORT(WdfDriverRetrieveVersionString),
7203         WDFEXPORT(WdfDriverIsVersionAvailable),
7204         WDFEXPORT(WdfFdoInitWdmGetPhysicalDevice),
7205         WDFEXPORT(WdfFdoInitOpenRegistryKey),
7206         WDFEXPORT(WdfFdoInitQueryProperty),
7207         WDFEXPORT(WdfFdoInitAllocAndQueryProperty),
7208         WDFEXPORT(WdfFdoInitSetEventCallbacks),
7209         WDFEXPORT(WdfFdoInitSetFilter),
7210         WDFEXPORT(WdfFdoInitSetDefaultChildListConfig),
7211         WDFEXPORT(WdfFdoQueryForInterface),
7212         WDFEXPORT(WdfFdoGetDefaultChildList),
7213         WDFEXPORT(WdfFdoAddStaticChild),
7214         WDFEXPORT(WdfFdoLockStaticChildListForIteration),
7215         WDFEXPORT(WdfFdoRetrieveNextStaticChild),
7216         WDFEXPORT(WdfFdoUnlockStaticChildListFromIteration),
7217         WDFEXPORT(WdfFileObjectGetFileName),
7218         WDFEXPORT(WdfFileObjectGetFlags),
7219         WDFEXPORT(WdfFileObjectGetDevice),
7220         WDFEXPORT(WdfFileObjectWdmGetFileObject),
7221         WDFEXPORT(WdfInterruptCreate),
7222         WDFEXPORT(WdfInterruptQueueDpcForIsr),
7223         WDFEXPORT(WdfInterruptSynchronize),
7224         WDFEXPORT(WdfInterruptAcquireLock),
7225         WDFEXPORT(WdfInterruptReleaseLock),
7226         WDFEXPORT(WdfInterruptEnable),
7227         WDFEXPORT(WdfInterruptDisable),
7228         WDFEXPORT(WdfInterruptWdmGetInterrupt),
7229         WDFEXPORT(WdfInterruptGetInfo),
7230         WDFEXPORT(WdfInterruptSetPolicy),
7231         WDFEXPORT(WdfInterruptGetDevice),
7232         WDFEXPORT(WdfIoQueueCreate),
7233         WDFEXPORT(WdfIoQueueGetState),
7234         WDFEXPORT(WdfIoQueueStart),
7235         WDFEXPORT(WdfIoQueueStop),
7236         WDFEXPORT(WdfIoQueueStopSynchronously),
7237         WDFEXPORT(WdfIoQueueGetDevice),
7238         WDFEXPORT(WdfIoQueueRetrieveNextRequest),
7239         WDFEXPORT(WdfIoQueueRetrieveRequestByFileObject),
7240         WDFEXPORT(WdfIoQueueFindRequest),
7241         WDFEXPORT(WdfIoQueueRetrieveFoundRequest),
7242         WDFEXPORT(WdfIoQueueDrainSynchronously),
7243         WDFEXPORT(WdfIoQueueDrain),
7244         WDFEXPORT(WdfIoQueuePurgeSynchronously),
7245         WDFEXPORT(WdfIoQueuePurge),
7246         WDFEXPORT(WdfIoQueueReadyNotify),
7247         WDFEXPORT(WdfIoTargetCreate),
7248         WDFEXPORT(WdfIoTargetOpen),
7249         WDFEXPORT(WdfIoTargetCloseForQueryRemove),
7250         WDFEXPORT(WdfIoTargetClose),
7251         WDFEXPORT(WdfIoTargetStart),
7252         WDFEXPORT(WdfIoTargetStop),
7253         WDFEXPORT(WdfIoTargetGetState),
7254         WDFEXPORT(WdfIoTargetGetDevice),
7255         WDFEXPORT(WdfIoTargetQueryTargetProperty),
7256         WDFEXPORT(WdfIoTargetAllocAndQueryTargetProperty),
7257         WDFEXPORT(WdfIoTargetQueryForInterface),
7258         WDFEXPORT(WdfIoTargetWdmGetTargetDeviceObject),
7259         WDFEXPORT(WdfIoTargetWdmGetTargetPhysicalDevice),
7260         WDFEXPORT(WdfIoTargetWdmGetTargetFileObject),
7261         WDFEXPORT(WdfIoTargetWdmGetTargetFileHandle),
7262         WDFEXPORT(WdfIoTargetSendReadSynchronously),
7263         WDFEXPORT(WdfIoTargetFormatRequestForRead),
7264         WDFEXPORT(WdfIoTargetSendWriteSynchronously),
7265         WDFEXPORT(WdfIoTargetFormatRequestForWrite),
7266         WDFEXPORT(WdfIoTargetSendIoctlSynchronously),
7267         WDFEXPORT(WdfIoTargetFormatRequestForIoctl),
7268         WDFEXPORT(WdfIoTargetSendInternalIoctlSynchronously),
7269         WDFEXPORT(WdfIoTargetFormatRequestForInternalIoctl),
7270         WDFEXPORT(WdfIoTargetSendInternalIoctlOthersSynchronously),
7271         WDFEXPORT(WdfIoTargetFormatRequestForInternalIoctlOthers),
7272         WDFEXPORT(WdfMemoryCreate),
7273         WDFEXPORT(WdfMemoryCreatePreallocated),
7274         WDFEXPORT(WdfMemoryGetBuffer),
7275         WDFEXPORT(WdfMemoryAssignBuffer),
7276         WDFEXPORT(WdfMemoryCopyToBuffer),
7277         WDFEXPORT(WdfMemoryCopyFromBuffer),
7278         WDFEXPORT(WdfLookasideListCreate),
7279         WDFEXPORT(WdfMemoryCreateFromLookaside),
7280         WDFEXPORT(WdfDeviceMiniportCreate),
7281         WDFEXPORT(WdfDriverMiniportUnload),
7282         WDFEXPORT(WdfObjectGetTypedContextWorker),
7283         WDFEXPORT(WdfObjectAllocateContext),
7284         WDFEXPORT(WdfObjectContextGetObject),
7285         WDFEXPORT(WdfObjectReferenceActual),
7286         WDFEXPORT(WdfObjectDereferenceActual),
7287         WDFEXPORT(WdfObjectCreate),
7288         WDFEXPORT(WdfObjectDelete),
7289         WDFEXPORT(WdfObjectQuery),
7290         WDFEXPORT(WdfPdoInitAllocate),
7291         WDFEXPORT(WdfPdoInitSetEventCallbacks),
7292         WDFEXPORT(WdfPdoInitAssignDeviceID),
7293         WDFEXPORT(WdfPdoInitAssignInstanceID),
7294         WDFEXPORT(WdfPdoInitAddHardwareID),
7295         WDFEXPORT(WdfPdoInitAddCompatibleID),
7296         WDFEXPORT(WdfPdoInitAddDeviceText),
7297         WDFEXPORT(WdfPdoInitSetDefaultLocale),
7298         WDFEXPORT(WdfPdoInitAssignRawDevice),
7299         WDFEXPORT(WdfPdoMarkMissing),
7300         WDFEXPORT(WdfPdoRequestEject),
7301         WDFEXPORT(WdfPdoGetParent),
7302         WDFEXPORT(WdfPdoRetrieveIdentificationDescription),
7303         WDFEXPORT(WdfPdoRetrieveAddressDescription),
7304         WDFEXPORT(WdfPdoUpdateAddressDescription),
7305         WDFEXPORT(WdfPdoAddEjectionRelationsPhysicalDevice),
7306         WDFEXPORT(WdfPdoRemoveEjectionRelationsPhysicalDevice),
7307         WDFEXPORT(WdfPdoClearEjectionRelationsDevices),
7308         WDFEXPORT(WdfDeviceAddQueryInterface),
7309         WDFEXPORT(WdfRegistryOpenKey),
7310         WDFEXPORT(WdfRegistryCreateKey),
7311         WDFEXPORT(WdfRegistryClose),
7312         WDFEXPORT(WdfRegistryWdmGetHandle),
7313         WDFEXPORT(WdfRegistryRemoveKey),
7314         WDFEXPORT(WdfRegistryRemoveValue),
7315         WDFEXPORT(WdfRegistryQueryValue),
7316         WDFEXPORT(WdfRegistryQueryMemory),
7317         WDFEXPORT(WdfRegistryQueryMultiString),
7318         WDFEXPORT(WdfRegistryQueryUnicodeString),
7319         WDFEXPORT(WdfRegistryQueryString),
7320         WDFEXPORT(WdfRegistryQueryULong),
7321         WDFEXPORT(WdfRegistryAssignValue),
7322         WDFEXPORT(WdfRegistryAssignMemory),
7323         WDFEXPORT(WdfRegistryAssignMultiString),
7324         WDFEXPORT(WdfRegistryAssignUnicodeString),
7325         WDFEXPORT(WdfRegistryAssignString),
7326         WDFEXPORT(WdfRegistryAssignULong),
7327         WDFEXPORT(WdfRequestCreate),
7328         WDFEXPORT(WdfRequestCreateFromIrp),
7329         WDFEXPORT(WdfRequestReuse),
7330         WDFEXPORT(WdfRequestChangeTarget),
7331         WDFEXPORT(WdfRequestFormatRequestUsingCurrentType),
7332         WDFEXPORT(WdfRequestWdmFormatUsingStackLocation),
7333         WDFEXPORT(WdfRequestSend),
7334         WDFEXPORT(WdfRequestGetStatus),
7335         WDFEXPORT(WdfRequestMarkCancelable),
7336         WDFEXPORT(WdfRequestUnmarkCancelable),
7337         WDFEXPORT(WdfRequestIsCanceled),
7338         WDFEXPORT(WdfRequestCancelSentRequest),
7339         WDFEXPORT(WdfRequestIsFrom32BitProcess),
7340         WDFEXPORT(WdfRequestSetCompletionRoutine),
7341         WDFEXPORT(WdfRequestGetCompletionParams),
7342         WDFEXPORT(WdfRequestAllocateTimer),
7343         WDFEXPORT(WdfRequestComplete),
7344         WDFEXPORT(WdfRequestCompleteWithPriorityBoost),
7345         WDFEXPORT(WdfRequestCompleteWithInformation),
7346         WDFEXPORT(WdfRequestGetParameters),
7347         WDFEXPORT(WdfRequestRetrieveInputMemory),
7348         WDFEXPORT(WdfRequestRetrieveOutputMemory),
7349         WDFEXPORT(WdfRequestRetrieveInputBuffer),
7350         WDFEXPORT(WdfRequestRetrieveOutputBuffer),
7351         WDFEXPORT(WdfRequestRetrieveInputWdmMdl),
7352         WDFEXPORT(WdfRequestRetrieveOutputWdmMdl),
7353         WDFEXPORT(WdfRequestRetrieveUnsafeUserInputBuffer),
7354         WDFEXPORT(WdfRequestRetrieveUnsafeUserOutputBuffer),
7355         WDFEXPORT(WdfRequestSetInformation),
7356         WDFEXPORT(WdfRequestGetInformation),
7357         WDFEXPORT(WdfRequestGetFileObject),
7358         WDFEXPORT(WdfRequestProbeAndLockUserBufferForRead),
7359         WDFEXPORT(WdfRequestProbeAndLockUserBufferForWrite),
7360         WDFEXPORT(WdfRequestGetRequestorMode),
7361         WDFEXPORT(WdfRequestForwardToIoQueue),
7362         WDFEXPORT(WdfRequestGetIoQueue),
7363         WDFEXPORT(WdfRequestRequeue),
7364         WDFEXPORT(WdfRequestStopAcknowledge),
7365         WDFEXPORT(WdfRequestWdmGetIrp),
7366         WDFEXPORT(WdfIoResourceRequirementsListSetSlotNumber),
7367         WDFEXPORT(WdfIoResourceRequirementsListSetInterfaceType),
7368         WDFEXPORT(WdfIoResourceRequirementsListAppendIoResList),
7369         WDFEXPORT(WdfIoResourceRequirementsListInsertIoResList),
7370         WDFEXPORT(WdfIoResourceRequirementsListGetCount),
7371         WDFEXPORT(WdfIoResourceRequirementsListGetIoResList),
7372         WDFEXPORT(WdfIoResourceRequirementsListRemove),
7373         WDFEXPORT(WdfIoResourceRequirementsListRemoveByIoResList),
7374         WDFEXPORT(WdfIoResourceListCreate),
7375         WDFEXPORT(WdfIoResourceListAppendDescriptor),
7376         WDFEXPORT(WdfIoResourceListInsertDescriptor),
7377         WDFEXPORT(WdfIoResourceListUpdateDescriptor),
7378         WDFEXPORT(WdfIoResourceListGetCount),
7379         WDFEXPORT(WdfIoResourceListGetDescriptor),
7380         WDFEXPORT(WdfIoResourceListRemove),
7381         WDFEXPORT(WdfIoResourceListRemoveByDescriptor),
7382         WDFEXPORT(WdfCmResourceListAppendDescriptor),
7383         WDFEXPORT(WdfCmResourceListInsertDescriptor),
7384         WDFEXPORT(WdfCmResourceListGetCount),
7385         WDFEXPORT(WdfCmResourceListGetDescriptor),
7386         WDFEXPORT(WdfCmResourceListRemove),
7387         WDFEXPORT(WdfCmResourceListRemoveByDescriptor),
7388         WDFEXPORT(WdfStringCreate),
7389         WDFEXPORT(WdfStringGetUnicodeString),
7390         WDFEXPORT(WdfObjectAcquireLock),
7391         WDFEXPORT(WdfObjectReleaseLock),
7392         WDFEXPORT(WdfWaitLockCreate),
7393         WDFEXPORT(WdfWaitLockAcquire),
7394         WDFEXPORT(WdfWaitLockRelease),
7395         WDFEXPORT(WdfSpinLockCreate),
7396         WDFEXPORT(WdfSpinLockAcquire),
7397         WDFEXPORT(WdfSpinLockRelease),
7398         WDFEXPORT(WdfTimerCreate),
7399         WDFEXPORT(WdfTimerStart),
7400         WDFEXPORT(WdfTimerStop),
7401         WDFEXPORT(WdfTimerGetParentObject),
7402         // WDFEXPORT(WdfUsbTargetDeviceCreate),
7403         // WDFEXPORT(WdfUsbTargetDeviceRetrieveInformation),
7404         // WDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor),
7405         // WDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor),
7406         // WDFEXPORT(WdfUsbTargetDeviceQueryString),
7407         // WDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString),
7408         // WDFEXPORT(WdfUsbTargetDeviceFormatRequestForString),
7409         // WDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces),
7410         // WDFEXPORT(WdfUsbTargetDeviceSelectConfig),
7411         // WDFEXPORT(WdfUsbTargetDeviceWdmGetConfigurationHandle),
7412         // WDFEXPORT(WdfUsbTargetDeviceRetrieveCurrentFrameNumber),
7413         // WDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously),
7414         // WDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer),
7415         // WDFEXPORT(WdfUsbTargetDeviceIsConnectedSynchronous),
7416         // WDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously),
7417         // WDFEXPORT(WdfUsbTargetDeviceCyclePortSynchronously),
7418         // WDFEXPORT(WdfUsbTargetDeviceFormatRequestForCyclePort),
7419         // WDFEXPORT(WdfUsbTargetDeviceSendUrbSynchronously),
7420         // WDFEXPORT(WdfUsbTargetDeviceFormatRequestForUrb),
7421         // WDFEXPORT(WdfUsbTargetPipeGetInformation),
7422         // WDFEXPORT(WdfUsbTargetPipeIsInEndpoint),
7423         // WDFEXPORT(WdfUsbTargetPipeIsOutEndpoint),
7424         // WDFEXPORT(WdfUsbTargetPipeGetType),
7425         // WDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck),
7426         // WDFEXPORT(WdfUsbTargetPipeWriteSynchronously),
7427         // WDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite),
7428         // WDFEXPORT(WdfUsbTargetPipeReadSynchronously),
7429         // WDFEXPORT(WdfUsbTargetPipeFormatRequestForRead),
7430         // WDFEXPORT(WdfUsbTargetPipeConfigContinuousReader),
7431         // WDFEXPORT(WdfUsbTargetPipeAbortSynchronously),
7432         // WDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort),
7433         // WDFEXPORT(WdfUsbTargetPipeResetSynchronously),
7434         // WDFEXPORT(WdfUsbTargetPipeFormatRequestForReset),
7435         // WDFEXPORT(WdfUsbTargetPipeSendUrbSynchronously),
7436         // WDFEXPORT(WdfUsbTargetPipeFormatRequestForUrb),
7437         // WDFEXPORT(WdfUsbInterfaceGetInterfaceNumber),
7438         // WDFEXPORT(WdfUsbInterfaceGetNumEndpoints),
7439         // WDFEXPORT(WdfUsbInterfaceGetDescriptor),
7440         // WDFEXPORT(WdfUsbInterfaceSelectSetting),
7441         // WDFEXPORT(WdfUsbInterfaceGetEndpointInformation),
7442         // WDFEXPORT(WdfUsbTargetDeviceGetInterface),
7443         // WDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex),
7444         // WDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes),
7445         // WDFEXPORT(WdfUsbInterfaceGetConfiguredPipe),
7446         // WDFEXPORT(WdfUsbTargetPipeWdmGetPipeHandle),
7447         // WDFEXPORT(WdfVerifierDbgBreakPoint),
7448         // WDFEXPORT(WdfVerifierKeBugCheck),
7449         // WDFEXPORT(WdfWmiProviderCreate),
7450         // WDFEXPORT(WdfWmiProviderGetDevice),
7451         // WDFEXPORT(WdfWmiProviderIsEnabled),
7452         // WDFEXPORT(WdfWmiProviderGetTracingHandle),
7453         // WDFEXPORT(WdfWmiInstanceCreate),
7454         // WDFEXPORT(WdfWmiInstanceRegister),
7455         // WDFEXPORT(WdfWmiInstanceDeregister),
7456         // WDFEXPORT(WdfWmiInstanceGetDevice),
7457         // WDFEXPORT(WdfWmiInstanceGetProvider),
7458         // WDFEXPORT(WdfWmiInstanceFireEvent),
7459         WdfApiNotImplemented,
7460         WdfApiNotImplemented,
7461         WdfApiNotImplemented,
7462         WdfApiNotImplemented,
7463         WdfApiNotImplemented,
7464         WdfApiNotImplemented,
7465         WdfApiNotImplemented,
7466         WdfApiNotImplemented,
7467         WdfApiNotImplemented,
7468         WdfApiNotImplemented,
7469         WdfApiNotImplemented,
7470         WdfApiNotImplemented,
7471         WdfApiNotImplemented,
7472         WdfApiNotImplemented,
7473         WdfApiNotImplemented,
7474         WdfApiNotImplemented,
7475         WdfApiNotImplemented,
7476         WdfApiNotImplemented,
7477         WdfApiNotImplemented,
7478         WdfApiNotImplemented,
7479         WdfApiNotImplemented,
7480         WdfApiNotImplemented,
7481         WdfApiNotImplemented,
7482         WdfApiNotImplemented,
7483         WdfApiNotImplemented,
7484         WdfApiNotImplemented,
7485         WdfApiNotImplemented,
7486         WdfApiNotImplemented,
7487         WdfApiNotImplemented,
7488         WdfApiNotImplemented,
7489         WdfApiNotImplemented,
7490         WdfApiNotImplemented,
7491         WdfApiNotImplemented,
7492         WdfApiNotImplemented,
7493         WdfApiNotImplemented,
7494         WdfApiNotImplemented,
7495         WdfApiNotImplemented,
7496         WdfApiNotImplemented,
7497         WdfApiNotImplemented,
7498         WdfApiNotImplemented,
7499         WdfApiNotImplemented,
7500         WdfApiNotImplemented,
7501         WdfApiNotImplemented,
7502         WdfApiNotImplemented,
7503         WdfApiNotImplemented,
7504         WdfApiNotImplemented,
7505         WdfApiNotImplemented,
7506         WdfApiNotImplemented,
7507         WdfApiNotImplemented,
7508         WdfApiNotImplemented,
7509         WdfApiNotImplemented,
7510         WdfApiNotImplemented,
7511         WdfApiNotImplemented,
7512         WdfApiNotImplemented,
7513         WdfApiNotImplemented,
7514         WdfApiNotImplemented,
7515         WdfApiNotImplemented,
7516 
7517         WDFEXPORT(WdfWorkItemCreate),
7518         WDFEXPORT(WdfWorkItemEnqueue),
7519         WDFEXPORT(WdfWorkItemGetParentObject),
7520         WDFEXPORT(WdfWorkItemFlush),
7521         // WDFEXPORT(WdfCommonBufferCreateWithConfig),
7522         // WDFEXPORT(WdfDmaEnablerGetFragmentLength),
7523         // WDFEXPORT(WdfDmaEnablerWdmGetDmaAdapter),
7524         // WDFEXPORT(WdfUsbInterfaceGetNumSettings),
7525         WdfApiNotImplemented,
7526         WdfApiNotImplemented,
7527         WdfApiNotImplemented,
7528         WdfApiNotImplemented,
7529 
7530         WDFEXPORT(WdfDeviceRemoveDependentUsageDeviceObject),
7531         WDFEXPORT(WdfDeviceGetSystemPowerAction),
7532         WDFEXPORT(WdfInterruptSetExtendedPolicy),
7533         WDFEXPORT(WdfIoQueueAssignForwardProgressPolicy),
7534         WDFEXPORT(WdfPdoInitAssignContainerID),
7535         WDFEXPORT(WdfPdoInitAllowForwardingRequestToParent),
7536         WDFEXPORT(WdfRequestMarkCancelableEx),
7537         WDFEXPORT(WdfRequestIsReserved),
7538         WDFEXPORT(WdfRequestForwardToParentDeviceIoQueue),
7539         // WDFEXPORT(WdfCxDeviceInitAllocate),
7540         // WDFEXPORT(WdfCxDeviceInitAssignWdmIrpPreprocessCallback),
7541         // WDFEXPORT(WdfCxDeviceInitSetIoInCallerContextCallback),
7542         // WDFEXPORT(WdfCxDeviceInitSetRequestAttributes),
7543         // WDFEXPORT(WdfCxDeviceInitSetFileObjectConfig),
7544         WdfApiNotImplemented,
7545         WdfApiNotImplemented,
7546         WdfApiNotImplemented,
7547         WdfApiNotImplemented,
7548         WdfApiNotImplemented,
7549 
7550         WDFEXPORT(WdfDeviceWdmDispatchIrp),
7551         WDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue),
7552         WDFEXPORT(WdfDeviceInitSetRemoveLockOptions),
7553         WDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback),
7554         // WDFEXPORT(WdfDmaEnablerConfigureSystemProfile),
7555         // WDFEXPORT(WdfDmaTransactionInitializeUsingOffset),
7556         // WDFEXPORT(WdfDmaTransactionGetTransferInfo),
7557         // WDFEXPORT(WdfDmaTransactionSetChannelConfigurationCallback),
7558         // WDFEXPORT(WdfDmaTransactionSetTransferCompleteCallback),
7559         // WDFEXPORT(WdfDmaTransactionSetImmediateExecution),
7560         // WDFEXPORT(WdfDmaTransactionAllocateResources),
7561         // WDFEXPORT(WdfDmaTransactionSetDeviceAddressOffset),
7562         // WDFEXPORT(WdfDmaTransactionFreeResources),
7563         // WDFEXPORT(WdfDmaTransactionCancel),
7564         // WDFEXPORT(WdfDmaTransactionWdmGetTransferContext),
7565         WdfApiNotImplemented,
7566         WdfApiNotImplemented,
7567         WdfApiNotImplemented,
7568         WdfApiNotImplemented,
7569         WdfApiNotImplemented,
7570         WdfApiNotImplemented,
7571         WdfApiNotImplemented,
7572         WdfApiNotImplemented,
7573         WdfApiNotImplemented,
7574         WdfApiNotImplemented,
7575         WdfApiNotImplemented,
7576 
7577         WDFEXPORT(WdfInterruptQueueWorkItemForIsr),
7578         WDFEXPORT(WdfInterruptTryToAcquireLock),
7579         WDFEXPORT(WdfIoQueueStopAndPurge),
7580         WDFEXPORT(WdfIoQueueStopAndPurgeSynchronously),
7581         WDFEXPORT(WdfIoTargetPurge),
7582         // WDFEXPORT(WdfUsbTargetDeviceCreateWithParameters),
7583         // WDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability),
7584         // WDFEXPORT(WdfUsbTargetDeviceCreateUrb),
7585         // WDFEXPORT(WdfUsbTargetDeviceCreateIsochUrb),
7586         WdfApiNotImplemented,
7587         WdfApiNotImplemented,
7588         WdfApiNotImplemented,
7589         WdfApiNotImplemented,
7590 
7591         WDFEXPORT(WdfDeviceWdmAssignPowerFrameworkSettings),
7592         // WDFEXPORT(WdfDmaTransactionStopSystemTransfer),
7593         // WDFEXPORT(WdfCxVerifierKeBugCheck),
7594         WdfApiNotImplemented,
7595         WdfApiNotImplemented,
7596 
7597         WDFEXPORT(WdfInterruptReportActive),
7598         WDFEXPORT(WdfInterruptReportInactive),
7599         WDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure),
7600         // WDFEXPORT(WdfGetTriageInfo),
7601         WdfApiNotImplemented,
7602 
7603         WDFEXPORT(WdfDeviceInitSetIoTypeEx),
7604         WDFEXPORT(WdfDeviceQueryPropertyEx),
7605         WDFEXPORT(WdfDeviceAllocAndQueryPropertyEx),
7606         WDFEXPORT(WdfDeviceAssignProperty),
7607         WDFEXPORT(WdfFdoInitQueryPropertyEx),
7608         WDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx),
7609         WDFEXPORT(WdfDeviceStopIdleActual),
7610         WDFEXPORT(WdfDeviceResumeIdleActual),
7611         WDFEXPORT(WdfDeviceGetSelfIoTarget),
7612         WDFEXPORT(WdfDeviceInitAllowSelfIoTarget),
7613         WDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue),
7614         WDFEXPORT(WdfDeviceOpenDevicemapKey),
7615     }
7616 };
7617 
7618 #endif // FX_DYNAMICS_GENERATE_TABLE
7619 
7620 #endif // _FXDYNAMICS_H_
7621 
7622