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