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