ReactOS  0.4.15-dev-2720-g5ee0925
vfwdfdynamics.cpp
Go to the documentation of this file.
1 /*++
2 
3 Module Name: VfWdfDynamics.cpp
4 
5 Abstract:
6  Generated implementation for WDF API Verifier hooks
7 
8 Environment:
9  user mode only
10 
11 --*/
12 
13 #include "fxmin.hpp"
14 #include "vfpriv.hpp"
15 
16 extern "C" {
17 #include "FxDynamics.h"
18 }
19 
20 
21 extern "C" {
22 extern WDFVERSION WdfVersion;
23 }
24 
25 #ifdef ALLOC_PRAGMA
26 #pragma alloc_text(FX_ENHANCED_VERIFIER_SECTION_NAME, \
27  VFWDFEXPORT(WdfCollectionCreate), \
28  VFWDFEXPORT(WdfCollectionGetCount), \
29  VFWDFEXPORT(WdfCollectionAdd), \
30  VFWDFEXPORT(WdfCollectionRemove), \
31  VFWDFEXPORT(WdfCollectionRemoveItem), \
32  VFWDFEXPORT(WdfCollectionGetItem), \
33  VFWDFEXPORT(WdfCollectionGetFirstItem), \
34  VFWDFEXPORT(WdfCollectionGetLastItem), \
35  VFWDFEXPORT(WdfCxDeviceInitAllocate), \
36  VFWDFEXPORT(WdfCxDeviceInitSetRequestAttributes), \
37  VFWDFEXPORT(WdfCxDeviceInitSetFileObjectConfig), \
38  VFWDFEXPORT(WdfCxVerifierKeBugCheck), \
39  VFWDFEXPORT(WdfDeviceGetDeviceState), \
40  VFWDFEXPORT(WdfDeviceSetDeviceState), \
41  VFWDFEXPORT(WdfDeviceWdmDispatchIrp), \
42  VFWDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue), \
43  VFWDFEXPORT(WdfDeviceGetDriver), \
44  VFWDFEXPORT(WdfDeviceGetIoTarget), \
45  VFWDFEXPORT(WdfDeviceAssignS0IdleSettings), \
46  VFWDFEXPORT(WdfDeviceAssignSxWakeSettings), \
47  VFWDFEXPORT(WdfDeviceOpenRegistryKey), \
48  VFWDFEXPORT(WdfDeviceOpenDevicemapKey), \
49  VFWDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks), \
50  VFWDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks), \
51  VFWDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership), \
52  VFWDFEXPORT(WdfDeviceInitSetIoType), \
53  VFWDFEXPORT(WdfDeviceInitSetFileObjectConfig), \
54  VFWDFEXPORT(WdfDeviceInitSetRequestAttributes), \
55  VFWDFEXPORT(WdfDeviceCreate), \
56  VFWDFEXPORT(WdfDeviceSetStaticStopRemove), \
57  VFWDFEXPORT(WdfDeviceCreateDeviceInterface), \
58  VFWDFEXPORT(WdfDeviceSetDeviceInterfaceState), \
59  VFWDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString), \
60  VFWDFEXPORT(WdfDeviceCreateSymbolicLink), \
61  VFWDFEXPORT(WdfDeviceQueryProperty), \
62  VFWDFEXPORT(WdfDeviceAllocAndQueryProperty), \
63  VFWDFEXPORT(WdfDeviceSetPnpCapabilities), \
64  VFWDFEXPORT(WdfDeviceSetPowerCapabilities), \
65  VFWDFEXPORT(WdfDeviceSetFailed), \
66  VFWDFEXPORT(WdfDeviceStopIdleNoTrack), \
67  VFWDFEXPORT(WdfDeviceResumeIdleNoTrack), \
68  VFWDFEXPORT(WdfDeviceStopIdleActual), \
69  VFWDFEXPORT(WdfDeviceResumeIdleActual), \
70  VFWDFEXPORT(WdfDeviceGetFileObject), \
71  VFWDFEXPORT(WdfDeviceGetDefaultQueue), \
72  VFWDFEXPORT(WdfDeviceConfigureRequestDispatching), \
73  VFWDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback), \
74  VFWDFEXPORT(WdfDeviceGetSystemPowerAction), \
75  VFWDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure), \
76  VFWDFEXPORT(WdfDeviceInitSetIoTypeEx), \
77  VFWDFEXPORT(WdfDevicePostEvent), \
78  VFWDFEXPORT(WdfDeviceMapIoSpace), \
79  VFWDFEXPORT(WdfDeviceUnmapIoSpace), \
80  VFWDFEXPORT(WdfDeviceGetHardwareRegisterMappedAddress), \
81  VFWDFEXPORT(WdfDeviceReadFromHardware), \
82  VFWDFEXPORT(WdfDeviceWriteToHardware), \
83  VFWDFEXPORT(WdfDeviceAssignInterfaceProperty), \
84  VFWDFEXPORT(WdfDeviceAllocAndQueryInterfaceProperty), \
85  VFWDFEXPORT(WdfDeviceQueryInterfaceProperty), \
86  VFWDFEXPORT(WdfDeviceGetDeviceStackIoType), \
87  VFWDFEXPORT(WdfDeviceQueryPropertyEx), \
88  VFWDFEXPORT(WdfDeviceAllocAndQueryPropertyEx), \
89  VFWDFEXPORT(WdfDeviceAssignProperty), \
90  VFWDFEXPORT(WdfDeviceGetSelfIoTarget), \
91  VFWDFEXPORT(WdfDeviceInitAllowSelfIoTarget), \
92  VFWDFEXPORT(WdfDriverCreate), \
93  VFWDFEXPORT(WdfDriverGetRegistryPath), \
94  VFWDFEXPORT(WdfDriverOpenParametersRegistryKey), \
95  VFWDFEXPORT(WdfDriverRetrieveVersionString), \
96  VFWDFEXPORT(WdfDriverIsVersionAvailable), \
97  VFWDFEXPORT(WdfFdoInitOpenRegistryKey), \
98  VFWDFEXPORT(WdfFdoInitQueryProperty), \
99  VFWDFEXPORT(WdfFdoInitAllocAndQueryProperty), \
100  VFWDFEXPORT(WdfFdoInitQueryPropertyEx), \
101  VFWDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx), \
102  VFWDFEXPORT(WdfFdoInitSetFilter), \
103  VFWDFEXPORT(WdfFileObjectGetFileName), \
104  VFWDFEXPORT(WdfFileObjectGetDevice), \
105  VFWDFEXPORT(WdfFileObjectGetInitiatorProcessId), \
106  VFWDFEXPORT(WdfFileObjectGetRelatedFileObject), \
107  VFWDFEXPORT(WdfDeviceInitEnableHidInterface), \
108  VFWDFEXPORT(WdfDeviceHidNotifyPresence), \
109  VFWDFEXPORT(WdfInterruptCreate), \
110  VFWDFEXPORT(WdfInterruptQueueDpcForIsr), \
111  VFWDFEXPORT(WdfInterruptQueueWorkItemForIsr), \
112  VFWDFEXPORT(WdfInterruptSynchronize), \
113  VFWDFEXPORT(WdfInterruptAcquireLock), \
114  VFWDFEXPORT(WdfInterruptReleaseLock), \
115  VFWDFEXPORT(WdfInterruptEnable), \
116  VFWDFEXPORT(WdfInterruptDisable), \
117  VFWDFEXPORT(WdfInterruptGetInfo), \
118  VFWDFEXPORT(WdfInterruptSetPolicy), \
119  VFWDFEXPORT(WdfInterruptSetExtendedPolicy), \
120  VFWDFEXPORT(WdfInterruptGetDevice), \
121  VFWDFEXPORT(WdfInterruptTryToAcquireLock), \
122  VFWDFEXPORT(WdfIoQueueCreate), \
123  VFWDFEXPORT(WdfIoQueueGetState), \
124  VFWDFEXPORT(WdfIoQueueStart), \
125  VFWDFEXPORT(WdfIoQueueStop), \
126  VFWDFEXPORT(WdfIoQueueStopSynchronously), \
127  VFWDFEXPORT(WdfIoQueueGetDevice), \
128  VFWDFEXPORT(WdfIoQueueRetrieveNextRequest), \
129  VFWDFEXPORT(WdfIoQueueRetrieveRequestByFileObject), \
130  VFWDFEXPORT(WdfIoQueueFindRequest), \
131  VFWDFEXPORT(WdfIoQueueRetrieveFoundRequest), \
132  VFWDFEXPORT(WdfIoQueueDrainSynchronously), \
133  VFWDFEXPORT(WdfIoQueueDrain), \
134  VFWDFEXPORT(WdfIoQueuePurgeSynchronously), \
135  VFWDFEXPORT(WdfIoQueuePurge), \
136  VFWDFEXPORT(WdfIoQueueReadyNotify), \
137  VFWDFEXPORT(WdfIoQueueStopAndPurge), \
138  VFWDFEXPORT(WdfIoQueueStopAndPurgeSynchronously), \
139  VFWDFEXPORT(WdfIoTargetCreate), \
140  VFWDFEXPORT(WdfIoTargetOpen), \
141  VFWDFEXPORT(WdfIoTargetCloseForQueryRemove), \
142  VFWDFEXPORT(WdfIoTargetClose), \
143  VFWDFEXPORT(WdfIoTargetStart), \
144  VFWDFEXPORT(WdfIoTargetStop), \
145  VFWDFEXPORT(WdfIoTargetPurge), \
146  VFWDFEXPORT(WdfIoTargetGetState), \
147  VFWDFEXPORT(WdfIoTargetGetDevice), \
148  VFWDFEXPORT(WdfIoTargetWdmGetTargetFileHandle), \
149  VFWDFEXPORT(WdfIoTargetSendReadSynchronously), \
150  VFWDFEXPORT(WdfIoTargetFormatRequestForRead), \
151  VFWDFEXPORT(WdfIoTargetSendWriteSynchronously), \
152  VFWDFEXPORT(WdfIoTargetFormatRequestForWrite), \
153  VFWDFEXPORT(WdfIoTargetSendIoctlSynchronously), \
154  VFWDFEXPORT(WdfIoTargetFormatRequestForIoctl), \
155  VFWDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue), \
156  VFWDFEXPORT(WdfMemoryCreate), \
157  VFWDFEXPORT(WdfMemoryCreatePreallocated), \
158  VFWDFEXPORT(WdfMemoryGetBuffer), \
159  VFWDFEXPORT(WdfMemoryAssignBuffer), \
160  VFWDFEXPORT(WdfMemoryCopyToBuffer), \
161  VFWDFEXPORT(WdfMemoryCopyFromBuffer), \
162  VFWDFEXPORT(WdfObjectGetTypedContextWorker), \
163  VFWDFEXPORT(WdfObjectAllocateContext), \
164  VFWDFEXPORT(WdfObjectContextGetObject), \
165  VFWDFEXPORT(WdfObjectReferenceActual), \
166  VFWDFEXPORT(WdfObjectDereferenceActual), \
167  VFWDFEXPORT(WdfObjectCreate), \
168  VFWDFEXPORT(WdfObjectDelete), \
169  VFWDFEXPORT(WdfObjectQuery), \
170  VFWDFEXPORT(WdfRegistryOpenKey), \
171  VFWDFEXPORT(WdfRegistryCreateKey), \
172  VFWDFEXPORT(WdfRegistryClose), \
173  VFWDFEXPORT(WdfRegistryWdmGetHandle), \
174  VFWDFEXPORT(WdfRegistryRemoveKey), \
175  VFWDFEXPORT(WdfRegistryRemoveValue), \
176  VFWDFEXPORT(WdfRegistryQueryValue), \
177  VFWDFEXPORT(WdfRegistryQueryMemory), \
178  VFWDFEXPORT(WdfRegistryQueryMultiString), \
179  VFWDFEXPORT(WdfRegistryQueryUnicodeString), \
180  VFWDFEXPORT(WdfRegistryQueryString), \
181  VFWDFEXPORT(WdfRegistryQueryULong), \
182  VFWDFEXPORT(WdfRegistryAssignValue), \
183  VFWDFEXPORT(WdfRegistryAssignMemory), \
184  VFWDFEXPORT(WdfRegistryAssignMultiString), \
185  VFWDFEXPORT(WdfRegistryAssignUnicodeString), \
186  VFWDFEXPORT(WdfRegistryAssignString), \
187  VFWDFEXPORT(WdfRegistryAssignULong), \
188  VFWDFEXPORT(WdfRequestCreate), \
189  VFWDFEXPORT(WdfRequestReuse), \
190  VFWDFEXPORT(WdfRequestChangeTarget), \
191  VFWDFEXPORT(WdfRequestFormatRequestUsingCurrentType), \
192  VFWDFEXPORT(WdfRequestSend), \
193  VFWDFEXPORT(WdfRequestGetStatus), \
194  VFWDFEXPORT(WdfRequestMarkCancelable), \
195  VFWDFEXPORT(WdfRequestMarkCancelableEx), \
196  VFWDFEXPORT(WdfRequestUnmarkCancelable), \
197  VFWDFEXPORT(WdfRequestIsCanceled), \
198  VFWDFEXPORT(WdfRequestCancelSentRequest), \
199  VFWDFEXPORT(WdfRequestIsFrom32BitProcess), \
200  VFWDFEXPORT(WdfRequestSetCompletionRoutine), \
201  VFWDFEXPORT(WdfRequestGetCompletionParams), \
202  VFWDFEXPORT(WdfRequestAllocateTimer), \
203  VFWDFEXPORT(WdfRequestComplete), \
204  VFWDFEXPORT(WdfRequestCompleteWithInformation), \
205  VFWDFEXPORT(WdfRequestGetParameters), \
206  VFWDFEXPORT(WdfRequestRetrieveInputMemory), \
207  VFWDFEXPORT(WdfRequestRetrieveOutputMemory), \
208  VFWDFEXPORT(WdfRequestRetrieveInputBuffer), \
209  VFWDFEXPORT(WdfRequestRetrieveOutputBuffer), \
210  VFWDFEXPORT(WdfRequestSetInformation), \
211  VFWDFEXPORT(WdfRequestGetInformation), \
212  VFWDFEXPORT(WdfRequestGetFileObject), \
213  VFWDFEXPORT(WdfRequestGetRequestorMode), \
214  VFWDFEXPORT(WdfRequestForwardToIoQueue), \
215  VFWDFEXPORT(WdfRequestGetIoQueue), \
216  VFWDFEXPORT(WdfRequestRequeue), \
217  VFWDFEXPORT(WdfRequestStopAcknowledge), \
218  VFWDFEXPORT(WdfRequestImpersonate), \
219  VFWDFEXPORT(WdfRequestGetRequestorProcessId), \
220  VFWDFEXPORT(WdfRequestIsFromUserModeDriver), \
221  VFWDFEXPORT(WdfRequestSetUserModeDriverInitiatedIo), \
222  VFWDFEXPORT(WdfRequestGetUserModeDriverInitiatedIo), \
223  VFWDFEXPORT(WdfRequestSetActivityId), \
224  VFWDFEXPORT(WdfRequestRetrieveActivityId), \
225  VFWDFEXPORT(WdfRequestGetEffectiveIoType), \
226  VFWDFEXPORT(WdfCmResourceListGetCount), \
227  VFWDFEXPORT(WdfCmResourceListGetDescriptor), \
228  VFWDFEXPORT(WdfStringCreate), \
229  VFWDFEXPORT(WdfStringGetUnicodeString), \
230  VFWDFEXPORT(WdfObjectAcquireLock), \
231  VFWDFEXPORT(WdfObjectReleaseLock), \
232  VFWDFEXPORT(WdfWaitLockCreate), \
233  VFWDFEXPORT(WdfWaitLockAcquire), \
234  VFWDFEXPORT(WdfWaitLockRelease), \
235  VFWDFEXPORT(WdfSpinLockCreate), \
236  VFWDFEXPORT(WdfSpinLockAcquire), \
237  VFWDFEXPORT(WdfSpinLockRelease), \
238  VFWDFEXPORT(WdfTimerCreate), \
239  VFWDFEXPORT(WdfTimerStart), \
240  VFWDFEXPORT(WdfTimerStop), \
241  VFWDFEXPORT(WdfTimerGetParentObject), \
242  VFWDFEXPORT(WdfUsbTargetDeviceCreate), \
243  VFWDFEXPORT(WdfUsbTargetDeviceCreateWithParameters), \
244  VFWDFEXPORT(WdfUsbTargetDeviceRetrieveInformation), \
245  VFWDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor), \
246  VFWDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor), \
247  VFWDFEXPORT(WdfUsbTargetDeviceQueryString), \
248  VFWDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString), \
249  VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForString), \
250  VFWDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces), \
251  VFWDFEXPORT(WdfUsbTargetDeviceSelectConfig), \
252  VFWDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously), \
253  VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer), \
254  VFWDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously), \
255  VFWDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability), \
256  VFWDFEXPORT(WdfUsbTargetPipeGetInformation), \
257  VFWDFEXPORT(WdfUsbTargetPipeIsInEndpoint), \
258  VFWDFEXPORT(WdfUsbTargetPipeIsOutEndpoint), \
259  VFWDFEXPORT(WdfUsbTargetPipeGetType), \
260  VFWDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck), \
261  VFWDFEXPORT(WdfUsbTargetPipeWriteSynchronously), \
262  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite), \
263  VFWDFEXPORT(WdfUsbTargetPipeReadSynchronously), \
264  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForRead), \
265  VFWDFEXPORT(WdfUsbTargetPipeConfigContinuousReader), \
266  VFWDFEXPORT(WdfUsbTargetPipeAbortSynchronously), \
267  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort), \
268  VFWDFEXPORT(WdfUsbTargetPipeResetSynchronously), \
269  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForReset), \
270  VFWDFEXPORT(WdfUsbInterfaceGetInterfaceNumber), \
271  VFWDFEXPORT(WdfUsbInterfaceGetNumEndpoints), \
272  VFWDFEXPORT(WdfUsbInterfaceGetDescriptor), \
273  VFWDFEXPORT(WdfUsbInterfaceGetNumSettings), \
274  VFWDFEXPORT(WdfUsbInterfaceSelectSetting), \
275  VFWDFEXPORT(WdfUsbInterfaceGetEndpointInformation), \
276  VFWDFEXPORT(WdfUsbTargetDeviceGetInterface), \
277  VFWDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex), \
278  VFWDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes), \
279  VFWDFEXPORT(WdfUsbInterfaceGetConfiguredPipe), \
280  VFWDFEXPORT(WdfVerifierDbgBreakPoint), \
281  VFWDFEXPORT(WdfVerifierKeBugCheck), \
282  VFWDFEXPORT(WdfGetTriageInfo), \
283  VFWDFEXPORT(WdfWorkItemCreate), \
284  VFWDFEXPORT(WdfWorkItemEnqueue), \
285  VFWDFEXPORT(WdfWorkItemGetParentObject), \
286  VFWDFEXPORT(WdfWorkItemFlush), \
287  )
288 #endif // #pragma alloc_text
289 
292 WDFAPI
293 NTSTATUS
294 VFWDFEXPORT(WdfCollectionCreate)(
295  _In_
297  _In_opt_
299  _Out_
300  WDFCOLLECTION* Collection
301  )
302 {
305 }
306 
308 WDFAPI
309 ULONG
310 VFWDFEXPORT(WdfCollectionGetCount)(
311  _In_
313  _In_
314  WDFCOLLECTION Collection
315  )
316 {
318  return ((PFN_WDFCOLLECTIONGETCOUNT) WdfVersion.Functions.pfnWdfCollectionGetCount)(DriverGlobals, Collection);
319 }
320 
323 WDFAPI
324 NTSTATUS
325 VFWDFEXPORT(WdfCollectionAdd)(
326  _In_
328  _In_
329  WDFCOLLECTION Collection,
330  _In_
332  )
333 {
335  return ((PFN_WDFCOLLECTIONADD) WdfVersion.Functions.pfnWdfCollectionAdd)(DriverGlobals, Collection, Object);
336 }
337 
339 WDFAPI
340 VOID
341 VFWDFEXPORT(WdfCollectionRemove)(
342  _In_
344  _In_
345  WDFCOLLECTION Collection,
346  _In_
348  )
349 {
352 }
353 
355 WDFAPI
356 VOID
357 VFWDFEXPORT(WdfCollectionRemoveItem)(
358  _In_
360  _In_
361  WDFCOLLECTION Collection,
362  _In_
363  ULONG Index
364  )
365 {
368 }
369 
371 WDFAPI
372 WDFOBJECT
373 VFWDFEXPORT(WdfCollectionGetItem)(
374  _In_
376  _In_
377  WDFCOLLECTION Collection,
378  _In_
379  ULONG Index
380  )
381 {
383  return ((PFN_WDFCOLLECTIONGETITEM) WdfVersion.Functions.pfnWdfCollectionGetItem)(DriverGlobals, Collection, Index);
384 }
385 
387 WDFAPI
388 WDFOBJECT
389 VFWDFEXPORT(WdfCollectionGetFirstItem)(
390  _In_
392  _In_
393  WDFCOLLECTION Collection
394  )
395 {
397  return ((PFN_WDFCOLLECTIONGETFIRSTITEM) WdfVersion.Functions.pfnWdfCollectionGetFirstItem)(DriverGlobals, Collection);
398 }
399 
401 WDFAPI
402 WDFOBJECT
403 VFWDFEXPORT(WdfCollectionGetLastItem)(
404  _In_
406  _In_
407  WDFCOLLECTION Collection
408  )
409 {
411  return ((PFN_WDFCOLLECTIONGETLASTITEM) WdfVersion.Functions.pfnWdfCollectionGetLastItem)(DriverGlobals, Collection);
412 }
413 
416 WDFAPI
418 VFWDFEXPORT(WdfCxDeviceInitAllocate)(
419  _In_
421  _In_
423  )
424 {
427 }
428 
430 WDFAPI
431 VOID
432 VFWDFEXPORT(WdfCxDeviceInitSetRequestAttributes)(
433  _In_
435  _In_
437  _In_
439  )
440 {
443 }
444 
446 WDFAPI
447 VOID
448 VFWDFEXPORT(WdfCxDeviceInitSetFileObjectConfig)(
449  _In_
451  _In_
453  _In_
455  _In_opt_
457  )
458 {
461 }
462 
463 WDFAPI
464 VOID
466  _In_
468  _In_opt_
470  _In_
471  ULONG BugCheckCode,
472  _In_
473  ULONG_PTR BugCheckParameter1,
474  _In_
475  ULONG_PTR BugCheckParameter2,
476  _In_
477  ULONG_PTR BugCheckParameter3,
478  _In_
479  ULONG_PTR BugCheckParameter4
480  )
481 {
483  ((PFN_WDFCXVERIFIERKEBUGCHECK) WdfVersion.Functions.pfnWdfCxVerifierKeBugCheck)(DriverGlobals, Object, BugCheckCode, BugCheckParameter1, BugCheckParameter2, BugCheckParameter3, BugCheckParameter4);
484 }
485 
487 WDFAPI
488 VOID
489 VFWDFEXPORT(WdfDeviceGetDeviceState)(
490  _In_
492  _In_
493  WDFDEVICE Device,
494  _Out_
496  )
497 {
500 }
501 
503 WDFAPI
504 VOID
505 VFWDFEXPORT(WdfDeviceSetDeviceState)(
506  _In_
508  _In_
509  WDFDEVICE Device,
510  _In_
512  )
513 {
516 }
517 
520 WDFAPI
521 NTSTATUS
522 VFWDFEXPORT(WdfDeviceWdmDispatchIrp)(
523  _In_
525  _In_
526  WDFDEVICE Device,
527  _In_
528  PIRP Irp,
529  _In_
531  )
532 {
534  return ((PFN_WDFDEVICEWDMDISPATCHIRP) WdfVersion.Functions.pfnWdfDeviceWdmDispatchIrp)(DriverGlobals, Device, Irp, DispatchContext);
535 }
536 
539 WDFAPI
540 NTSTATUS
541 VFWDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue)(
542  _In_
544  _In_
545  WDFDEVICE Device,
546  _In_
547  PIRP Irp,
548  _In_
549  WDFQUEUE Queue,
550  _In_
551  ULONG Flags
552  )
553 {
555  return ((PFN_WDFDEVICEWDMDISPATCHIRPTOIOQUEUE) WdfVersion.Functions.pfnWdfDeviceWdmDispatchIrpToIoQueue)(DriverGlobals, Device, Irp, Queue, Flags);
556 }
557 
559 WDFAPI
560 WDFDRIVER
561 VFWDFEXPORT(WdfDeviceGetDriver)(
562  _In_
564  _In_
565  WDFDEVICE Device
566  )
567 {
569  return ((PFN_WDFDEVICEGETDRIVER) WdfVersion.Functions.pfnWdfDeviceGetDriver)(DriverGlobals, Device);
570 }
571 
573 WDFAPI
574 WDFIOTARGET
575 VFWDFEXPORT(WdfDeviceGetIoTarget)(
576  _In_
578  _In_
579  WDFDEVICE Device
580  )
581 {
583  return ((PFN_WDFDEVICEGETIOTARGET) WdfVersion.Functions.pfnWdfDeviceGetIoTarget)(DriverGlobals, Device);
584 }
585 
588 WDFAPI
589 NTSTATUS
590 VFWDFEXPORT(WdfDeviceAssignS0IdleSettings)(
591  _In_
593  _In_
594  WDFDEVICE Device,
595  _In_
597  )
598 {
600  return ((PFN_WDFDEVICEASSIGNS0IDLESETTINGS) WdfVersion.Functions.pfnWdfDeviceAssignS0IdleSettings)(DriverGlobals, Device, Settings);
601 }
602 
605 WDFAPI
606 NTSTATUS
607 VFWDFEXPORT(WdfDeviceAssignSxWakeSettings)(
608  _In_
610  _In_
611  WDFDEVICE Device,
612  _In_
614  )
615 {
617  return ((PFN_WDFDEVICEASSIGNSXWAKESETTINGS) WdfVersion.Functions.pfnWdfDeviceAssignSxWakeSettings)(DriverGlobals, Device, Settings);
618 }
619 
622 WDFAPI
623 NTSTATUS
624 VFWDFEXPORT(WdfDeviceOpenRegistryKey)(
625  _In_
627  _In_
628  WDFDEVICE Device,
629  _In_
631  _In_
633  _In_opt_
635  _Out_
636  WDFKEY* Key
637  )
638 {
641 }
642 
645 WDFAPI
646 NTSTATUS
647 VFWDFEXPORT(WdfDeviceOpenDevicemapKey)(
648  _In_
650  _In_
651  WDFDEVICE Device,
652  _In_
654  _In_
656  _In_opt_
658  _Out_
659  WDFKEY* Key
660  )
661 {
664 }
665 
667 WDFAPI
668 VOID
669 VFWDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks)(
670  _In_
672  _In_
674  _In_
676  )
677 {
680 }
681 
683 WDFAPI
684 VOID
685 VFWDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks)(
686  _In_
688  _In_
690  _In_
692  )
693 {
696 }
697 
699 WDFAPI
700 VOID
701 VFWDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership)(
702  _In_
704  _In_
706  _In_
708  )
709 {
712 }
713 
715 WDFAPI
716 VOID
717 VFWDFEXPORT(WdfDeviceInitSetIoType)(
718  _In_
720  _In_
722  _In_
724  )
725 {
728 }
729 
731 WDFAPI
732 VOID
733 VFWDFEXPORT(WdfDeviceInitSetFileObjectConfig)(
734  _In_
736  _In_
738  _In_
740  _In_opt_
742  )
743 {
746 }
747 
749 WDFAPI
750 VOID
751 VFWDFEXPORT(WdfDeviceInitSetRequestAttributes)(
752  _In_
754  _In_
756  _In_
758  )
759 {
762 }
763 
766 WDFAPI
767 NTSTATUS
768 VFWDFEXPORT(WdfDeviceCreate)(
769  _In_
771  _Inout_
773  _In_opt_
775  _Out_
776  WDFDEVICE* Device
777  )
778 {
781 
784 
786  &hookInfo,
788  DeviceInit,
790  Device);
791 
793 
794  if (hookInfo.DonotCallKmdfLib) {
795  return hookInfo.DdiCallStatus;
796  }
797 
799 }
800 
802 WDFAPI
803 VOID
804 VFWDFEXPORT(WdfDeviceSetStaticStopRemove)(
805  _In_
807  _In_
808  WDFDEVICE Device,
809  _In_
811  )
812 {
814  ((PFN_WDFDEVICESETSTATICSTOPREMOVE) WdfVersion.Functions.pfnWdfDeviceSetStaticStopRemove)(DriverGlobals, Device, Stoppable);
815 }
816 
819 WDFAPI
820 NTSTATUS
821 VFWDFEXPORT(WdfDeviceCreateDeviceInterface)(
822  _In_
824  _In_
825  WDFDEVICE Device,
826  _In_
828  _In_opt_
830  )
831 {
834 }
835 
837 WDFAPI
838 VOID
839 VFWDFEXPORT(WdfDeviceSetDeviceInterfaceState)(
840  _In_
842  _In_
843  WDFDEVICE Device,
844  _In_
846  _In_opt_
848  _In_
850  )
851 {
854 }
855 
858 WDFAPI
859 NTSTATUS
860 VFWDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString)(
861  _In_
863  _In_
864  WDFDEVICE Device,
865  _In_
867  _In_opt_
869  _In_
870  WDFSTRING String
871  )
872 {
875 }
876 
879 WDFAPI
880 NTSTATUS
881 VFWDFEXPORT(WdfDeviceCreateSymbolicLink)(
882  _In_
884  _In_
885  WDFDEVICE Device,
886  _In_
888  )
889 {
891  return ((PFN_WDFDEVICECREATESYMBOLICLINK) WdfVersion.Functions.pfnWdfDeviceCreateSymbolicLink)(DriverGlobals, Device, SymbolicLinkName);
892 }
893 
896 WDFAPI
897 NTSTATUS
898 VFWDFEXPORT(WdfDeviceQueryProperty)(
899  _In_
901  _In_
902  WDFDEVICE Device,
903  _In_
905  _In_
909  _Out_
911  )
912 {
915 }
916 
919 WDFAPI
920 NTSTATUS
921 VFWDFEXPORT(WdfDeviceAllocAndQueryProperty)(
922  _In_
924  _In_
925  WDFDEVICE Device,
926  _In_
928  _In_
931  _In_opt_
933  _Out_
934  WDFMEMORY* PropertyMemory
935  )
936 {
939 }
940 
942 WDFAPI
943 VOID
944 VFWDFEXPORT(WdfDeviceSetPnpCapabilities)(
945  _In_
947  _In_
948  WDFDEVICE Device,
949  _In_
951  )
952 {
955 }
956 
958 WDFAPI
959 VOID
960 VFWDFEXPORT(WdfDeviceSetPowerCapabilities)(
961  _In_
963  _In_
964  WDFDEVICE Device,
965  _In_
967  )
968 {
971 }
972 
974 WDFAPI
975 VOID
976 VFWDFEXPORT(WdfDeviceSetFailed)(
977  _In_
979  _In_
980  WDFDEVICE Device,
981  _In_
983  )
984 {
987 }
988 
992 WDFAPI
993 NTSTATUS
994 VFWDFEXPORT(WdfDeviceStopIdleNoTrack)(
995  _In_
997  _In_
998  WDFDEVICE Device,
999  _In_
1001  )
1004  return ((PFN_WDFDEVICESTOPIDLENOTRACK) WdfVersion.Functions.pfnWdfDeviceStopIdleNoTrack)(DriverGlobals, Device, WaitForD0);
1005 }
1006 
1008 WDFAPI
1009 VOID
1010 VFWDFEXPORT(WdfDeviceResumeIdleNoTrack)(
1011  _In_
1013  _In_
1014  WDFDEVICE Device
1015  )
1016 {
1018  ((PFN_WDFDEVICERESUMEIDLENOTRACK) WdfVersion.Functions.pfnWdfDeviceResumeIdleNoTrack)(DriverGlobals, Device);
1019 }
1020 
1024 WDFAPI
1025 NTSTATUS
1026 VFWDFEXPORT(WdfDeviceStopIdleActual)(
1027  _In_
1029  _In_
1030  WDFDEVICE Device,
1031  _In_
1033  _In_opt_
1034  PVOID Tag,
1035  _In_
1036  LONG Line,
1037  _In_z_
1038  PCHAR File
1039  )
1042  return ((PFN_WDFDEVICESTOPIDLEACTUAL) WdfVersion.Functions.pfnWdfDeviceStopIdleActual)(DriverGlobals, Device, WaitForD0, Tag, Line, File);
1043 }
1044 
1046 WDFAPI
1047 VOID
1048 VFWDFEXPORT(WdfDeviceResumeIdleActual)(
1049  _In_
1051  _In_
1052  WDFDEVICE Device,
1053  _In_opt_
1054  PVOID Tag,
1055  _In_
1056  LONG Line,
1057  _In_z_
1058  PCHAR File
1059  )
1060 {
1062  ((PFN_WDFDEVICERESUMEIDLEACTUAL) WdfVersion.Functions.pfnWdfDeviceResumeIdleActual)(DriverGlobals, Device, Tag, Line, File);
1063 }
1064 
1066 WDFAPI
1067 WDFFILEOBJECT
1068 VFWDFEXPORT(WdfDeviceGetFileObject)(
1069  _In_
1071  _In_
1072  WDFDEVICE Device,
1073  _In_
1075  )
1078  return ((PFN_WDFDEVICEGETFILEOBJECT) WdfVersion.Functions.pfnWdfDeviceGetFileObject)(DriverGlobals, Device, FileObject);
1079 }
1080 
1082 WDFAPI
1083 WDFQUEUE
1084 VFWDFEXPORT(WdfDeviceGetDefaultQueue)(
1085  _In_
1087  _In_
1088  WDFDEVICE Device
1089  )
1090 {
1092  return ((PFN_WDFDEVICEGETDEFAULTQUEUE) WdfVersion.Functions.pfnWdfDeviceGetDefaultQueue)(DriverGlobals, Device);
1093 }
1094 
1097 WDFAPI
1098 NTSTATUS
1099 VFWDFEXPORT(WdfDeviceConfigureRequestDispatching)(
1100  _In_
1102  _In_
1103  WDFDEVICE Device,
1104  _In_
1105  WDFQUEUE Queue,
1106  _In_
1109  )
1112  return ((PFN_WDFDEVICECONFIGUREREQUESTDISPATCHING) WdfVersion.Functions.pfnWdfDeviceConfigureRequestDispatching)(DriverGlobals, Device, Queue, RequestType);
1113 }
1114 
1117 WDFAPI
1118 NTSTATUS
1119 VFWDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback)(
1120  _In_
1122  _In_
1123  WDFDEVICE Device,
1124  _In_opt_
1125  WDFDRIVER Driver,
1126  _In_
1128  _In_
1130  _In_opt_
1132  )
1136 }
1137 
1139 WDFAPI
1141 VFWDFEXPORT(WdfDeviceGetSystemPowerAction)(
1142  _In_
1144  _In_
1145  WDFDEVICE Device
1146  )
1147 {
1149  return ((PFN_WDFDEVICEGETSYSTEMPOWERACTION) WdfVersion.Functions.pfnWdfDeviceGetSystemPowerAction)(DriverGlobals, Device);
1150 }
1151 
1153 WDFAPI
1154 VOID
1155 VFWDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure)(
1156  _In_
1158  _In_
1160  _In_
1162  )
1166 }
1167 
1169 WDFAPI
1170 VOID
1171 VFWDFEXPORT(WdfDeviceInitSetIoTypeEx)(
1172  _In_
1174  _In_
1176  _In_
1178  )
1182 }
1183 
1185 WDFAPI
1186 NTSTATUS
1187 VFWDFEXPORT(WdfDevicePostEvent)(
1188  _In_
1190  _In_
1191  WDFDEVICE Device,
1192  _In_
1194  _In_
1197  BYTE* Data,
1198  _In_
1200  )
1204 }
1205 
1208 WDFAPI
1209 NTSTATUS
1210 VFWDFEXPORT(WdfDeviceMapIoSpace)(
1211  _In_
1213  _In_
1214  WDFDEVICE Device,
1215  _In_
1217  _In_
1219  _In_
1221  _Out_
1223  )
1227 }
1228 
1230 WDFAPI
1231 VOID
1232 VFWDFEXPORT(WdfDeviceUnmapIoSpace)(
1233  _In_
1235  _In_
1236  WDFDEVICE Device,
1237  _In_
1239  _In_
1241  )
1242 {
1245 }
1246 
1248 WDFAPI
1249 PVOID
1250 VFWDFEXPORT(WdfDeviceGetHardwareRegisterMappedAddress)(
1251  _In_
1253  _In_
1254  WDFDEVICE Device,
1255  _In_
1257  )
1258 {
1260  return ((PFN_WDFDEVICEGETHARDWAREREGISTERMAPPEDADDRESS) WdfVersion.Functions.pfnWdfDeviceGetHardwareRegisterMappedAddress)(DriverGlobals, Device, PseudoBaseAddress);
1261 }
1262 
1264 WDFAPI
1265 SIZE_T
1266 VFWDFEXPORT(WdfDeviceReadFromHardware)(
1267  _In_
1269  _In_
1270  WDFDEVICE Device,
1271  _In_
1272  WDF_DEVICE_HWACCESS_TARGET_TYPE Type,
1273  _In_
1274  WDF_DEVICE_HWACCESS_TARGET_SIZE Size,
1275  _In_
1278  PVOID Buffer,
1279  _In_opt_
1280  ULONG Count
1281  )
1285 }
1286 
1288 WDFAPI
1289 VOID
1290 VFWDFEXPORT(WdfDeviceWriteToHardware)(
1291  _In_
1293  _In_
1294  WDFDEVICE Device,
1295  _In_
1296  WDF_DEVICE_HWACCESS_TARGET_TYPE Type,
1297  _In_
1298  WDF_DEVICE_HWACCESS_TARGET_SIZE Size,
1299  _In_
1301  _In_
1302  SIZE_T Value,
1304  PVOID Buffer,
1305  _In_opt_
1306  ULONG Count
1307  )
1308 {
1311 }
1312 
1314 WDFAPI
1315 NTSTATUS
1316 VFWDFEXPORT(WdfDeviceAssignInterfaceProperty)(
1317  _In_
1319  _In_
1320  WDFDEVICE Device,
1321  _In_
1322  PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData,
1323  _In_
1324  DEVPROPTYPE Type,
1325  _In_
1329  )
1330 {
1333 }
1334 
1336 WDFAPI
1337 NTSTATUS
1338 VFWDFEXPORT(WdfDeviceAllocAndQueryInterfaceProperty)(
1339  _In_
1341  _In_
1342  WDFDEVICE Device,
1343  _In_
1344  PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData,
1345  _In_
1347  _In_opt_
1349  _Out_
1350  WDFMEMORY* PropertyMemory,
1351  _Out_
1353  )
1354 {
1357 }
1358 
1360 WDFAPI
1361 NTSTATUS
1362 VFWDFEXPORT(WdfDeviceQueryInterfaceProperty)(
1363  _In_
1365  _In_
1366  WDFDEVICE Device,
1367  _In_
1368  PWDF_DEVICE_INTERFACE_PROPERTY_DATA PropertyData,
1369  _In_
1373  _Out_
1375  _Out_
1377  )
1378 {
1381 }
1382 
1384 WDFAPI
1385 VOID
1386 VFWDFEXPORT(WdfDeviceGetDeviceStackIoType)(
1387  _In_
1389  _In_
1390  WDFDEVICE Device,
1391  _Out_
1393  _Out_
1395  )
1399 }
1400 
1403 WDFAPI
1404 NTSTATUS
1405 VFWDFEXPORT(WdfDeviceQueryPropertyEx)(
1406  _In_
1408  _In_
1409  WDFDEVICE Device,
1410  _In_
1412  _In_
1414  _Out_
1416  _Out_
1418  _Out_
1420  )
1421 {
1424 }
1425 
1428 WDFAPI
1429 NTSTATUS
1430 VFWDFEXPORT(WdfDeviceAllocAndQueryPropertyEx)(
1431  _In_
1433  _In_
1434  WDFDEVICE Device,
1435  _In_
1437  _In_
1440  _In_opt_
1442  _Out_
1443  WDFMEMORY* PropertyMemory,
1444  _Out_
1446  )
1447 {
1450 }
1451 
1454 WDFAPI
1455 NTSTATUS
1456 VFWDFEXPORT(WdfDeviceAssignProperty)(
1457  _In_
1459  _In_
1460  WDFDEVICE Device,
1461  _In_
1463  _In_
1464  DEVPROPTYPE Type,
1465  _In_
1466  ULONG Size,
1467  _In_opt_
1468  PVOID Data
1469  )
1470 {
1472  return ((PFN_WDFDEVICEASSIGNPROPERTY) WdfVersion.Functions.pfnWdfDeviceAssignProperty)(DriverGlobals, Device, DeviceProperty, Type, Size, Data);
1473 }
1474 
1476 WDFAPI
1477 WDFIOTARGET
1478 VFWDFEXPORT(WdfDeviceGetSelfIoTarget)(
1479  _In_
1481  _In_
1482  WDFDEVICE Device
1483  )
1484 {
1487 }
1488 
1490 WDFAPI
1491 VOID
1492 VFWDFEXPORT(WdfDeviceInitAllowSelfIoTarget)(
1493  _In_
1495  _In_
1497  )
1498 {
1501 }
1502 
1505 WDFAPI
1506 NTSTATUS
1507 VFWDFEXPORT(WdfDriverCreate)(
1508  _In_
1510  _In_
1512  _In_
1514  _In_opt_
1516  _In_
1518  _Out_opt_
1519  WDFDRIVER* Driver
1520  )
1521 {
1524 }
1525 
1527 WDFAPI
1528 PWSTR
1529 VFWDFEXPORT(WdfDriverGetRegistryPath)(
1530  _In_
1532  _In_
1533  WDFDRIVER Driver
1534  )
1535 {
1537  return ((PFN_WDFDRIVERGETREGISTRYPATH) WdfVersion.Functions.pfnWdfDriverGetRegistryPath)(DriverGlobals, Driver);
1538 }
1539 
1542 WDFAPI
1543 NTSTATUS
1544 VFWDFEXPORT(WdfDriverOpenParametersRegistryKey)(
1545  _In_
1547  _In_
1548  WDFDRIVER Driver,
1549  _In_
1551  _In_opt_
1553  _Out_
1554  WDFKEY* Key
1555  )
1556 {
1558  return ((PFN_WDFDRIVEROPENPARAMETERSREGISTRYKEY) WdfVersion.Functions.pfnWdfDriverOpenParametersRegistryKey)(DriverGlobals, Driver, DesiredAccess, KeyAttributes, Key);
1559 }
1560 
1563 WDFAPI
1564 NTSTATUS
1565 VFWDFEXPORT(WdfDriverRetrieveVersionString)(
1566  _In_
1568  _In_
1569  WDFDRIVER Driver,
1570  _In_
1571  WDFSTRING String
1572  )
1573 {
1575  return ((PFN_WDFDRIVERRETRIEVEVERSIONSTRING) WdfVersion.Functions.pfnWdfDriverRetrieveVersionString)(DriverGlobals, Driver, String);
1576 }
1577 
1580 WDFAPI
1581 BOOLEAN
1582 VFWDFEXPORT(WdfDriverIsVersionAvailable)(
1583  _In_
1585  _In_
1586  WDFDRIVER Driver,
1587  _In_
1589  )
1592  return ((PFN_WDFDRIVERISVERSIONAVAILABLE) WdfVersion.Functions.pfnWdfDriverIsVersionAvailable)(DriverGlobals, Driver, VersionAvailableParams);
1593 }
1594 
1597 WDFAPI
1598 NTSTATUS
1599 VFWDFEXPORT(WdfFdoInitOpenRegistryKey)(
1600  _In_
1602  _In_
1604  _In_
1606  _In_
1608  _In_opt_
1610  _Out_
1611  WDFKEY* Key
1612  )
1613 {
1616 }
1617 
1620 WDFAPI
1621 NTSTATUS
1622 VFWDFEXPORT(WdfFdoInitQueryProperty)(
1623  _In_
1625  _In_
1627  _In_
1629  _In_
1633  _Out_
1635  )
1636 {
1639 }
1640 
1643 WDFAPI
1644 NTSTATUS
1645 VFWDFEXPORT(WdfFdoInitAllocAndQueryProperty)(
1646  _In_
1648  _In_
1650  _In_
1652  _In_
1655  _In_opt_
1657  _Out_
1658  WDFMEMORY* PropertyMemory
1659  )
1660 {
1663 }
1664 
1667 WDFAPI
1668 NTSTATUS
1669 VFWDFEXPORT(WdfFdoInitQueryPropertyEx)(
1670  _In_
1672  _In_
1674  _In_
1676  _In_
1678  _Out_
1680  _Out_
1682  _Out_
1684  )
1685 {
1688 }
1689 
1692 WDFAPI
1693 NTSTATUS
1694 VFWDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx)(
1695  _In_
1697  _In_
1699  _In_
1701  _In_
1704  _In_opt_
1706  _Out_
1707  WDFMEMORY* PropertyMemory,
1708  _Out_
1710  )
1711 {
1714 }
1715 
1717 WDFAPI
1718 VOID
1719 VFWDFEXPORT(WdfFdoInitSetFilter)(
1720  _In_
1722  _In_
1724  )
1725 {
1727  ((PFN_WDFFDOINITSETFILTER) WdfVersion.Functions.pfnWdfFdoInitSetFilter)(DriverGlobals, DeviceInit);
1728 }
1729 
1731 WDFAPI
1733 VFWDFEXPORT(WdfFileObjectGetFileName)(
1734  _In_
1736  _In_
1737  WDFFILEOBJECT FileObject
1738  )
1739 {
1741  return ((PFN_WDFFILEOBJECTGETFILENAME) WdfVersion.Functions.pfnWdfFileObjectGetFileName)(DriverGlobals, FileObject);
1742 }
1743 
1745 WDFAPI
1746 WDFDEVICE
1747 VFWDFEXPORT(WdfFileObjectGetDevice)(
1748  _In_
1750  _In_
1751  WDFFILEOBJECT FileObject
1752  )
1753 {
1755  return ((PFN_WDFFILEOBJECTGETDEVICE) WdfVersion.Functions.pfnWdfFileObjectGetDevice)(DriverGlobals, FileObject);
1756 }
1757 
1759 WDFAPI
1760 ULONG
1761 VFWDFEXPORT(WdfFileObjectGetInitiatorProcessId)(
1762  _In_
1764  _In_
1765  WDFFILEOBJECT FileObject
1766  )
1767 {
1769  return ((PFN_WDFFILEOBJECTGETINITIATORPROCESSID) WdfVersion.Functions.pfnWdfFileObjectGetInitiatorProcessId)(DriverGlobals, FileObject);
1770 }
1771 
1773 WDFAPI
1774 WDFFILEOBJECT
1775 VFWDFEXPORT(WdfFileObjectGetRelatedFileObject)(
1776  _In_
1778  _In_
1779  WDFFILEOBJECT FileObject
1780  )
1781 {
1783  return ((PFN_WDFFILEOBJECTGETRELATEDFILEOBJECT) WdfVersion.Functions.pfnWdfFileObjectGetRelatedFileObject)(DriverGlobals, FileObject);
1784 }
1785 
1787 WDFAPI
1788 VOID
1789 VFWDFEXPORT(WdfDeviceInitEnableHidInterface)(
1790  _In_
1792  _In_
1794  )
1795 {
1797  ((PFN_WDFDEVICEINITENABLEHIDINTERFACE) WdfVersion.Functions.pfnWdfDeviceInitEnableHidInterface)(DriverGlobals, DeviceInit);
1798 }
1799 
1802 WDFAPI
1803 NTSTATUS
1804 VFWDFEXPORT(WdfDeviceHidNotifyPresence)(
1805  _In_
1807  _In_
1808  WDFDEVICE Device,
1809  _In_
1811  )
1814  return ((PFN_WDFDEVICEHIDNOTIFYPRESENCE) WdfVersion.Functions.pfnWdfDeviceHidNotifyPresence)(DriverGlobals, Device, IsPresent);
1815 }
1816 
1819 WDFAPI
1820 NTSTATUS
1821 VFWDFEXPORT(WdfInterruptCreate)(
1822  _In_
1824  _In_
1825  WDFDEVICE Device,
1826  _In_
1828  _In_opt_
1830  _Out_
1831  WDFINTERRUPT* Interrupt
1832  )
1836 }
1837 
1838 WDFAPI
1839 BOOLEAN
1841  _In_
1843  _In_
1844  WDFINTERRUPT Interrupt
1845  )
1846 {
1849 }
1850 
1851 WDFAPI
1852 BOOLEAN
1854  _In_
1856  _In_
1857  WDFINTERRUPT Interrupt
1858  )
1859 {
1862 }
1863 
1865 WDFAPI
1866 BOOLEAN
1867 VFWDFEXPORT(WdfInterruptSynchronize)(
1868  _In_
1870  _In_
1871  WDFINTERRUPT Interrupt,
1872  _In_
1874  _In_
1876  )
1879  return ((PFN_WDFINTERRUPTSYNCHRONIZE) WdfVersion.Functions.pfnWdfInterruptSynchronize)(DriverGlobals, Interrupt, Callback, Context);
1880 }
1881 
1883 WDFAPI
1884 VOID
1885 VFWDFEXPORT(WdfInterruptAcquireLock)(
1886  _In_
1888  _In_
1890  _Acquires_lock_(_Curr_)
1891  WDFINTERRUPT Interrupt
1892  )
1893 {
1895  ((PFN_WDFINTERRUPTACQUIRELOCK) WdfVersion.Functions.pfnWdfInterruptAcquireLock)(DriverGlobals, Interrupt);
1896 }
1897 
1899 WDFAPI
1900 VOID
1901 VFWDFEXPORT(WdfInterruptReleaseLock)(
1902  _In_
1904  _In_
1906  _Releases_lock_(_Curr_)
1907  WDFINTERRUPT Interrupt
1908  )
1909 {
1911  ((PFN_WDFINTERRUPTRELEASELOCK) WdfVersion.Functions.pfnWdfInterruptReleaseLock)(DriverGlobals, Interrupt);
1912 }
1913 
1915 WDFAPI
1916 VOID
1917 VFWDFEXPORT(WdfInterruptEnable)(
1918  _In_
1920  _In_
1921  WDFINTERRUPT Interrupt
1922  )
1923 {
1925  ((PFN_WDFINTERRUPTENABLE) WdfVersion.Functions.pfnWdfInterruptEnable)(DriverGlobals, Interrupt);
1926 }
1927 
1929 WDFAPI
1930 VOID
1931 VFWDFEXPORT(WdfInterruptDisable)(
1932  _In_
1934  _In_
1935  WDFINTERRUPT Interrupt
1936  )
1937 {
1939  ((PFN_WDFINTERRUPTDISABLE) WdfVersion.Functions.pfnWdfInterruptDisable)(DriverGlobals, Interrupt);
1940 }
1941 
1943 WDFAPI
1944 VOID
1945 VFWDFEXPORT(WdfInterruptGetInfo)(
1946  _In_
1948  _In_
1949  WDFINTERRUPT Interrupt,
1950  _Out_
1952  )
1955  ((PFN_WDFINTERRUPTGETINFO) WdfVersion.Functions.pfnWdfInterruptGetInfo)(DriverGlobals, Interrupt, Info);
1956 }
1957 
1959 WDFAPI
1960 VOID
1961 VFWDFEXPORT(WdfInterruptSetPolicy)(
1962  _In_
1964  _In_
1965  WDFINTERRUPT Interrupt,
1966  _In_
1968  _In_
1970  _In_
1972  )
1976 }
1977 
1979 WDFAPI
1980 VOID
1981 VFWDFEXPORT(WdfInterruptSetExtendedPolicy)(
1982  _In_
1984  _In_
1985  WDFINTERRUPT Interrupt,
1986  _In_
1988  )
1992 }
1993 
1994 WDFAPI
1995 WDFDEVICE
1997  _In_
1999  _In_
2000  WDFINTERRUPT Interrupt
2001  )
2002 {
2005 }
2006 
2008 _Post_satisfies_(return == 1 || return == 0)
2010 WDFAPI
2011 BOOLEAN
2012 VFWDFEXPORT(WdfInterruptTryToAcquireLock)(
2013  _In_
2015  _In_
2016  _Requires_lock_not_held_(_Curr_)
2018  WDFINTERRUPT Interrupt
2019  )
2020 {
2022  return ((PFN_WDFINTERRUPTTRYTOACQUIRELOCK) WdfVersion.Functions.pfnWdfInterruptTryToAcquireLock)(DriverGlobals, Interrupt);
2023 }
2024 
2027 WDFAPI
2028 NTSTATUS
2029 VFWDFEXPORT(WdfIoQueueCreate)(
2030  _In_
2032  _In_
2033  WDFDEVICE Device,
2034  _In_
2036  _In_opt_
2038  _Out_opt_
2039  WDFQUEUE* Queue
2040  )
2041 {
2043  NTSTATUS status;
2044 
2047 
2049  &hookInfo,
2050  DriverGlobals,
2051  Device,
2052  Config,
2054  Queue);
2055 
2057 
2058  if (hookInfo.DonotCallKmdfLib) {
2059  return hookInfo.DdiCallStatus;
2060  }
2061 
2063 }
2064 
2066 WDFAPI
2068 VFWDFEXPORT(WdfIoQueueGetState)(
2069  _In_
2071  _In_
2072  WDFQUEUE Queue,
2073  _Out_opt_
2075  _Out_opt_
2077  )
2081 }
2082 
2084 WDFAPI
2085 VOID
2086 VFWDFEXPORT(WdfIoQueueStart)(
2087  _In_
2089  _In_
2090  WDFQUEUE Queue
2091  )
2092 {
2094  ((PFN_WDFIOQUEUESTART) WdfVersion.Functions.pfnWdfIoQueueStart)(DriverGlobals, Queue);
2095 }
2096 
2098 WDFAPI
2099 VOID
2100 VFWDFEXPORT(WdfIoQueueStop)(
2101  _In_
2103  _In_
2104  WDFQUEUE Queue,
2105  _When_(Context != 0, _In_)
2106  _When_(Context == 0, _In_opt_)
2108  _When_(StopComplete != 0, _In_)
2111  )
2112 {
2115 }
2116 
2118 WDFAPI
2119 VOID
2120 VFWDFEXPORT(WdfIoQueueStopSynchronously)(
2121  _In_
2123  _In_
2124  WDFQUEUE Queue
2125  )
2126 {
2128  ((PFN_WDFIOQUEUESTOPSYNCHRONOUSLY) WdfVersion.Functions.pfnWdfIoQueueStopSynchronously)(DriverGlobals, Queue);
2129 }
2130 
2132 WDFAPI
2133 WDFDEVICE
2134 VFWDFEXPORT(WdfIoQueueGetDevice)(
2135  _In_
2137  _In_
2138  WDFQUEUE Queue
2139  )
2140 {
2142  return ((PFN_WDFIOQUEUEGETDEVICE) WdfVersion.Functions.pfnWdfIoQueueGetDevice)(DriverGlobals, Queue);
2143 }
2144 
2147 WDFAPI
2148 NTSTATUS
2149 VFWDFEXPORT(WdfIoQueueRetrieveNextRequest)(
2150  _In_
2152  _In_
2153  WDFQUEUE Queue,
2154  _Out_
2155  WDFREQUEST* OutRequest
2156  )
2162  }
2163  return rtn;
2164 }
2165 
2168 WDFAPI
2169 NTSTATUS
2170 VFWDFEXPORT(WdfIoQueueRetrieveRequestByFileObject)(
2171  _In_
2173  _In_
2174  WDFQUEUE Queue,
2175  _In_
2176  WDFFILEOBJECT FileObject,
2177  _Out_
2178  WDFREQUEST* OutRequest
2179  )
2180 {
2183  if (rtn == STATUS_SUCCESS) {
2185  }
2186  return rtn;
2187 }
2188 
2191 WDFAPI
2192 NTSTATUS
2193 VFWDFEXPORT(WdfIoQueueFindRequest)(
2194  _In_
2196  _In_
2197  WDFQUEUE Queue,
2198  _In_opt_
2199  WDFREQUEST FoundRequest,
2200  _In_opt_
2201  WDFFILEOBJECT FileObject,
2202  _Inout_opt_
2204  _Out_
2205  WDFREQUEST* OutRequest
2206  )
2207 {
2210 }
2211 
2214 WDFAPI
2215 NTSTATUS
2216 VFWDFEXPORT(WdfIoQueueRetrieveFoundRequest)(
2217  _In_
2219  _In_
2220  WDFQUEUE Queue,
2221  _In_
2222  WDFREQUEST FoundRequest,
2223  _Out_
2224  WDFREQUEST* OutRequest
2225  )
2226 {
2229  if (rtn == STATUS_SUCCESS) {
2231  }
2232  return rtn;
2233 }
2234 
2236 WDFAPI
2237 VOID
2238 VFWDFEXPORT(WdfIoQueueDrainSynchronously)(
2239  _In_
2241  _In_
2242  WDFQUEUE Queue
2243  )
2244 {
2246  ((PFN_WDFIOQUEUEDRAINSYNCHRONOUSLY) WdfVersion.Functions.pfnWdfIoQueueDrainSynchronously)(DriverGlobals, Queue);
2247 }
2248 
2250 WDFAPI
2251 VOID
2252 VFWDFEXPORT(WdfIoQueueDrain)(
2253  _In_
2255  _In_
2256  WDFQUEUE Queue,
2257  _When_(Context != 0, _In_)
2258  _When_(Context == 0, _In_opt_)
2260  _When_(DrainComplete != 0, _In_)
2263  )
2264 {
2267 }
2268 
2270 WDFAPI
2271 VOID
2272 VFWDFEXPORT(WdfIoQueuePurgeSynchronously)(
2273  _In_
2275  _In_
2276  WDFQUEUE Queue
2277  )
2278 {
2280  ((PFN_WDFIOQUEUEPURGESYNCHRONOUSLY) WdfVersion.Functions.pfnWdfIoQueuePurgeSynchronously)(DriverGlobals, Queue);
2281 }
2282 
2284 WDFAPI
2285 VOID
2286 VFWDFEXPORT(WdfIoQueuePurge)(
2287  _In_
2289  _In_
2290  WDFQUEUE Queue,
2291  _When_(Context != 0, _In_)
2292  _When_(Context == 0, _In_opt_)
2294  _When_(PurgeComplete != 0, _In_)
2297  )
2298 {
2301 }
2302 
2305 WDFAPI
2306 NTSTATUS
2307 VFWDFEXPORT(WdfIoQueueReadyNotify)(
2308  _In_
2310  _In_
2311  WDFQUEUE Queue,
2312  _In_opt_
2314  _In_opt_
2316  )
2317 {
2319  return ((PFN_WDFIOQUEUEREADYNOTIFY) WdfVersion.Functions.pfnWdfIoQueueReadyNotify)(DriverGlobals, Queue, QueueReady, Context);
2320 }
2321 
2323 WDFAPI
2324 VOID
2325 VFWDFEXPORT(WdfIoQueueStopAndPurge)(
2326  _In_
2328  _In_
2329  WDFQUEUE Queue,
2330  _When_(Context != 0, _In_)
2331  _When_(Context == 0, _In_opt_)
2336  )
2337 {
2340 }
2341 
2343 WDFAPI
2344 VOID
2345 VFWDFEXPORT(WdfIoQueueStopAndPurgeSynchronously)(
2346  _In_
2348  _In_
2349  WDFQUEUE Queue
2350  )
2351 {
2353  ((PFN_WDFIOQUEUESTOPANDPURGESYNCHRONOUSLY) WdfVersion.Functions.pfnWdfIoQueueStopAndPurgeSynchronously)(DriverGlobals, Queue);
2354 }
2355 
2358 WDFAPI
2359 NTSTATUS
2360 VFWDFEXPORT(WdfIoTargetCreate)(
2361  _In_
2363  _In_
2364  WDFDEVICE Device,
2365  _In_opt_
2367  _Out_
2368  WDFIOTARGET* IoTarget
2369  )
2373 }
2374 
2377 WDFAPI
2378 NTSTATUS
2379 VFWDFEXPORT(WdfIoTargetOpen)(
2380  _In_
2382  _In_
2383  WDFIOTARGET IoTarget,
2384  _In_
2386  )
2389  return ((PFN_WDFIOTARGETOPEN) WdfVersion.Functions.pfnWdfIoTargetOpen)(DriverGlobals, IoTarget, OpenParams);
2390 }
2391 
2393 WDFAPI
2394 VOID
2395 VFWDFEXPORT(WdfIoTargetCloseForQueryRemove)(
2396  _In_
2398  _In_
2399  WDFIOTARGET IoTarget
2400  )
2401 {
2403  ((PFN_WDFIOTARGETCLOSEFORQUERYREMOVE) WdfVersion.Functions.pfnWdfIoTargetCloseForQueryRemove)(DriverGlobals, IoTarget);
2404 }
2405 
2407 WDFAPI
2408 VOID
2409 VFWDFEXPORT(WdfIoTargetClose)(
2410  _In_
2412  _In_
2413  WDFIOTARGET IoTarget
2414  )
2415 {
2417  ((PFN_WDFIOTARGETCLOSE) WdfVersion.Functions.pfnWdfIoTargetClose)(DriverGlobals, IoTarget);
2418 }
2419 
2422 WDFAPI
2423 NTSTATUS
2424 VFWDFEXPORT(WdfIoTargetStart)(
2425  _In_
2427  _In_
2428  WDFIOTARGET IoTarget
2429  )
2430 {
2432  return ((PFN_WDFIOTARGETSTART) WdfVersion.Functions.pfnWdfIoTargetStart)(DriverGlobals, IoTarget);
2433 }
2434 
2437 WDFAPI
2438 VOID
2439 VFWDFEXPORT(WdfIoTargetStop)(
2440  _In_
2442  _In_
2443  WDFIOTARGET IoTarget,
2444  _In_
2447  )
2451 }
2452 
2455 WDFAPI
2456 VOID
2457 VFWDFEXPORT(WdfIoTargetPurge)(
2458  _In_
2460  _In_
2461  WDFIOTARGET IoTarget,
2462  _In_
2465  )
2466 {
2469 }
2470 
2472 WDFAPI
2474 VFWDFEXPORT(WdfIoTargetGetState)(
2475  _In_
2477  _In_
2478  WDFIOTARGET IoTarget
2479  )
2480 {
2482  return ((PFN_WDFIOTARGETGETSTATE) WdfVersion.Functions.pfnWdfIoTargetGetState)(DriverGlobals, IoTarget);
2483 }
2484 
2486 WDFAPI
2487 WDFDEVICE
2488 VFWDFEXPORT(WdfIoTargetGetDevice)(
2489  _In_
2491  _In_
2492  WDFIOTARGET IoTarget
2493  )
2494 {
2496  return ((PFN_WDFIOTARGETGETDEVICE) WdfVersion.Functions.pfnWdfIoTargetGetDevice)(DriverGlobals, IoTarget);
2497 }
2498 
2500 WDFAPI
2501 HANDLE
2502 VFWDFEXPORT(WdfIoTargetWdmGetTargetFileHandle)(
2503  _In_
2505  _In_
2506  WDFIOTARGET IoTarget
2507  )
2508 {
2510  return ((PFN_WDFIOTARGETWDMGETTARGETFILEHANDLE) WdfVersion.Functions.pfnWdfIoTargetWdmGetTargetFileHandle)(DriverGlobals, IoTarget);
2511 }
2512 
2515 WDFAPI
2516 NTSTATUS
2517 VFWDFEXPORT(WdfIoTargetSendReadSynchronously)(
2518  _In_
2520  _In_
2521  WDFIOTARGET IoTarget,
2522  _In_opt_
2523  WDFREQUEST Request,
2524  _In_opt_
2526  _In_opt_
2528  _In_opt_
2530  _Out_opt_
2532  )
2536 }
2537 
2540 WDFAPI
2541 NTSTATUS
2542 VFWDFEXPORT(WdfIoTargetFormatRequestForRead)(
2543  _In_
2545  _In_
2546  WDFIOTARGET IoTarget,
2547  _In_
2548  WDFREQUEST Request,
2549  _In_opt_
2550  WDFMEMORY OutputBuffer,
2551  _In_opt_
2553  _In_opt_
2555  )
2556 {
2559 }
2560 
2563 WDFAPI
2564 NTSTATUS
2565 VFWDFEXPORT(WdfIoTargetSendWriteSynchronously)(
2566  _In_
2568  _In_
2569  WDFIOTARGET IoTarget,
2570  _In_opt_
2571  WDFREQUEST Request,
2572  _In_opt_
2574  _In_opt_
2576  _In_opt_
2578  _Out_opt_
2580  )
2584 }
2585 
2588 WDFAPI
2589 NTSTATUS
2590 VFWDFEXPORT(WdfIoTargetFormatRequestForWrite)(
2591  _In_
2593  _In_
2594  WDFIOTARGET IoTarget,
2595  _In_
2596  WDFREQUEST Request,
2597  _In_opt_
2598  WDFMEMORY InputBuffer,
2599  _In_opt_
2601  _In_opt_
2603  )
2604 {
2607 }
2608 
2611 WDFAPI
2612 NTSTATUS
2613 VFWDFEXPORT(WdfIoTargetSendIoctlSynchronously)(
2614  _In_
2616  _In_
2617  WDFIOTARGET IoTarget,
2618  _In_opt_
2619  WDFREQUEST Request,
2620  _In_
2621  ULONG IoctlCode,
2622  _In_opt_
2624  _In_opt_
2626  _In_opt_
2628  _Out_opt_
2630  )
2634 }
2635 
2638 WDFAPI
2639 NTSTATUS
2640 VFWDFEXPORT(WdfIoTargetFormatRequestForIoctl)(
2641  _In_
2643  _In_
2644  WDFIOTARGET IoTarget,
2645  _In_
2646  WDFREQUEST Request,
2647  _In_
2648  ULONG IoctlCode,
2649  _In_opt_
2650  WDFMEMORY InputBuffer,
2651  _In_opt_
2653  _In_opt_
2654  WDFMEMORY OutputBuffer,
2655  _In_opt_
2657  )
2658 {
2661 }
2662 
2664 WDFAPI
2665 NTSTATUS
2666 VFWDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue)(
2667  _In_
2669  _In_
2670  WDFIOTARGET IoTarget,
2671  _In_
2672  WDFQUEUE Queue
2673  )
2674 {
2677 }
2678 
2682 WDFAPI
2683 NTSTATUS
2684 VFWDFEXPORT(WdfMemoryCreate)(
2685  _In_
2687  _In_opt_
2689  _In_
2692  _In_opt_
2693  ULONG PoolTag,
2694  _In_
2696  size_t BufferSize,
2697  _Out_
2698  WDFMEMORY* Memory,
2700  PVOID* Buffer
2701  )
2702 {
2705 }
2706 
2709 WDFAPI
2710 NTSTATUS
2711 VFWDFEXPORT(WdfMemoryCreatePreallocated)(
2712  _In_
2714  _In_opt_
2717  PVOID Buffer,
2718  _In_
2720  size_t BufferSize,
2721  _Out_
2722  WDFMEMORY* Memory
2723  )
2724 {
2727 }
2728 
2730 WDFAPI
2731 PVOID
2732 VFWDFEXPORT(WdfMemoryGetBuffer)(
2733  _In_
2735  _In_
2736  WDFMEMORY Memory,
2737  _Out_opt_
2738  size_t* BufferSize
2739  )
2740 {
2742  return ((PFN_WDFMEMORYGETBUFFER) WdfVersion.Functions.pfnWdfMemoryGetBuffer)(DriverGlobals, Memory, BufferSize);
2743 }
2744 
2747 WDFAPI
2748 NTSTATUS
2749 VFWDFEXPORT(WdfMemoryAssignBuffer)(
2750  _In_
2752  _In_
2753  WDFMEMORY Memory,
2755  PVOID Buffer,
2756  _In_
2758  size_t BufferSize
2759  )
2760 {
2762  return ((PFN_WDFMEMORYASSIGNBUFFER) WdfVersion.Functions.pfnWdfMemoryAssignBuffer)(DriverGlobals, Memory, Buffer, BufferSize);
2763 }
2764 
2767 WDFAPI
2768 NTSTATUS
2769 VFWDFEXPORT(WdfMemoryCopyToBuffer)(
2770  _In_
2772  _In_
2773  WDFMEMORY SourceMemory,
2774  _In_
2775  size_t SourceOffset,
2776  _Out_writes_bytes_( NumBytesToCopyTo )
2777  PVOID Buffer,
2778  _In_
2779  _When_(NumBytesToCopyTo == 0, __drv_reportError(NumBytesToCopyTo cannot be zero))
2780  size_t NumBytesToCopyTo
2781  )
2782 {
2784  return ((PFN_WDFMEMORYCOPYTOBUFFER) WdfVersion.Functions.pfnWdfMemoryCopyToBuffer)(DriverGlobals, SourceMemory, SourceOffset, Buffer, NumBytesToCopyTo);
2785 }
2786 
2789 WDFAPI
2790 NTSTATUS
2791 VFWDFEXPORT(WdfMemoryCopyFromBuffer)(
2792  _In_
2794  _In_
2796  _In_
2797  size_t DestinationOffset,
2798  _In_
2799  PVOID Buffer,
2800  _In_
2801  _When_(NumBytesToCopyFrom == 0, __drv_reportError(NumBytesToCopyFrom cannot be zero))
2802  size_t NumBytesToCopyFrom
2803  )
2804 {
2806  return ((PFN_WDFMEMORYCOPYFROMBUFFER) WdfVersion.Functions.pfnWdfMemoryCopyFromBuffer)(DriverGlobals, DestinationMemory, DestinationOffset, Buffer, NumBytesToCopyFrom);
2807 }
2808 
2809 WDFAPI
2810 PVOID
2811 FASTCALL
2813  _In_
2815  _In_
2816  WDFOBJECT Handle,
2817  _In_
2819  )
2820 {
2823 }
2824 
2825 WDFAPI
2826 NTSTATUS
2828  _In_
2830  _In_
2831  WDFOBJECT Handle,
2832  _In_
2833  PWDF_OBJECT_ATTRIBUTES ContextAttributes,
2834  _Outptr_opt_
2835  PVOID* Context
2836  )
2837 {
2840 }
2841 
2842 WDFAPI
2843 WDFOBJECT
2844 FASTCALL
2846  _In_
2848  _In_
2850  )
2851 {
2854 }
2855 
2856 WDFAPI
2857 VOID
2859  _In_
2861  _In_
2862  WDFOBJECT Handle,
2863  _In_opt_
2864  PVOID Tag,
2865  _In_
2866  LONG Line,
2867  _In_z_
2868  PCHAR File
2869  )
2870 {
2873 }
2874 
2875 WDFAPI
2876 VOID
2878  _In_
2880  _In_
2881  WDFOBJECT Handle,
2882  _In_opt_
2883  PVOID Tag,
2884  _In_
2885  LONG Line,
2886  _In_z_
2887  PCHAR File
2888  )
2889 {
2892 }
2893 
2896 WDFAPI
2897 NTSTATUS
2898 VFWDFEXPORT(WdfObjectCreate)(
2899  _In_
2901  _In_opt_
2903  _Out_
2904  WDFOBJECT* Object
2905  )
2906 {
2908  return ((PFN_WDFOBJECTCREATE) WdfVersion.Functions.pfnWdfObjectCreate)(DriverGlobals, Attributes, Object);
2909 }
2910 
2912 WDFAPI
2913 VOID
2914 VFWDFEXPORT(WdfObjectDelete)(
2915  _In_
2917  _In_
2919  )
2920 {
2922  ((PFN_WDFOBJECTDELETE) WdfVersion.Functions.pfnWdfObjectDelete)(DriverGlobals, Object);
2923 }
2924 
2927 WDFAPI
2928 NTSTATUS
2929 VFWDFEXPORT(WdfObjectQuery)(
2930  _In_
2932  _In_
2934  _In_
2935  CONST GUID* Guid,
2936  _In_
2939  PVOID QueryBuffer
2940  )
2941 {
2943  return ((PFN_WDFOBJECTQUERY) WdfVersion.Functions.pfnWdfObjectQuery)(DriverGlobals, Object, Guid, QueryBufferLength, QueryBuffer);
2944 }
2945 
2948 WDFAPI
2949 NTSTATUS
2950 VFWDFEXPORT(WdfRegistryOpenKey)(
2951  _In_
2953  _In_opt_
2954  WDFKEY ParentKey,
2955  _In_
2957  _In_
2959  _In_opt_
2961  _Out_
2962  WDFKEY* Key
2963  )
2964 {
2967 }
2968 
2971 WDFAPI
2972 NTSTATUS
2973 VFWDFEXPORT(WdfRegistryCreateKey)(
2974  _In_
2976  _In_opt_
2977  WDFKEY ParentKey,
2978  _In_
2980  _In_
2982  _In_
2984  _Out_opt_
2986  _In_opt_
2988  _Out_
2989  WDFKEY* Key
2990  )
2991 {
2994 }
2995 
2997 WDFAPI
2998 VOID
2999 VFWDFEXPORT(WdfRegistryClose)(
3000  _In_
3002  _In_
3003  WDFKEY Key
3004  )
3005 {
3007  ((PFN_WDFREGISTRYCLOSE) WdfVersion.Functions.pfnWdfRegistryClose)(DriverGlobals, Key);
3008 }
3009 
3011 WDFAPI
3012 HANDLE
3013 VFWDFEXPORT(WdfRegistryWdmGetHandle)(
3014  _In_
3016  _In_
3017  WDFKEY Key
3018  )
3019 {
3021  return ((PFN_WDFREGISTRYWDMGETHANDLE) WdfVersion.Functions.pfnWdfRegistryWdmGetHandle)(DriverGlobals, Key);
3022 }
3023 
3026 WDFAPI
3027 NTSTATUS
3028 VFWDFEXPORT(WdfRegistryRemoveKey)(
3029  _In_
3031  _In_
3032  WDFKEY Key
3033  )
3034 {
3036  return ((PFN_WDFREGISTRYREMOVEKEY) WdfVersion.Functions.pfnWdfRegistryRemoveKey)(DriverGlobals, Key);
3037 }
3038 
3041 WDFAPI
3042 NTSTATUS
3043 VFWDFEXPORT(WdfRegistryRemoveValue)(
3044  _In_
3046  _In_
3047  WDFKEY Key,
3048  _In_
3050  )
3053  return ((PFN_WDFREGISTRYREMOVEVALUE) WdfVersion.Functions.pfnWdfRegistryRemoveValue)(DriverGlobals, Key, ValueName);
3054 }
3055 
3058 WDFAPI
3059 NTSTATUS
3060 VFWDFEXPORT(WdfRegistryQueryValue)(
3061  _In_
3063  _In_
3064  WDFKEY Key,
3065  _In_
3067  _In_
3070  PVOID Value,
3071  _Out_opt_
3073  _Out_opt_
3075  )
3079 }
3080 
3083 WDFAPI
3084 NTSTATUS
3085 VFWDFEXPORT(WdfRegistryQueryMemory)(
3086  _In_
3088  _In_
3089  WDFKEY Key,
3090  _In_
3092  _In_
3095  _In_opt_
3097  _Out_
3098  WDFMEMORY* Memory,
3099  _Out_opt_
3101  )
3102 {
3105 }
3106 
3109 WDFAPI
3110 NTSTATUS
3111 VFWDFEXPORT(WdfRegistryQueryMultiString)(
3112  _In_
3114  _In_
3115  WDFKEY Key,
3116  _In_
3118  _In_opt_
3120  _In_
3121  WDFCOLLECTION Collection
3122  )
3123 {
3126 }
3127 
3130 WDFAPI
3131 NTSTATUS
3132 VFWDFEXPORT(WdfRegistryQueryUnicodeString)(
3133  _In_
3135  _In_
3136  WDFKEY Key,
3137  _In_
3139  _Out_opt_
3141  _Inout_opt_
3143  )
3144 {
3146  return ((PFN_WDFREGISTRYQUERYUNICODESTRING) WdfVersion.Functions.pfnWdfRegistryQueryUnicodeString)(DriverGlobals, Key, ValueName, ValueByteLength, Value);
3147 }
3148 
3151 WDFAPI
3152 NTSTATUS
3153 VFWDFEXPORT(WdfRegistryQueryString)(
3154  _In_
3156  _In_
3157  WDFKEY Key,
3158  _In_
3160  _In_
3161  WDFSTRING String
3162  )
3163 {
3165  return ((PFN_WDFREGISTRYQUERYSTRING) WdfVersion.Functions.pfnWdfRegistryQueryString)(DriverGlobals, Key, ValueName, String);
3166 }
3167 
3170 WDFAPI
3171 NTSTATUS
3172 VFWDFEXPORT(WdfRegistryQueryULong)(
3173  _In_
3175  _In_
3176  WDFKEY Key,
3177  _In_
3179  _Out_
3180  PULONG Value
3181  )
3182 {
3184  return ((PFN_WDFREGISTRYQUERYULONG) WdfVersion.Functions.pfnWdfRegistryQueryULong)(DriverGlobals, Key, ValueName, Value);
3185 }
3186 
3189 WDFAPI
3190 NTSTATUS
3191 VFWDFEXPORT(WdfRegistryAssignValue)(
3192  _In_
3194  _In_
3195  WDFKEY Key,
3196  _In_
3198  _In_
3199  ULONG ValueType,
3200  _In_
3203  PVOID Value
3204  )
3205 {
3208 }
3209 
3212 WDFAPI
3213 NTSTATUS
3214 VFWDFEXPORT(WdfRegistryAssignMemory)(
3215  _In_
3217  _In_
3218  WDFKEY Key,
3219  _In_
3221  _In_
3222  ULONG ValueType,
3223  _In_
3224  WDFMEMORY Memory,
3225  _In_opt_
3227  )
3231 }
3232 
3235 WDFAPI
3236 NTSTATUS
3237 VFWDFEXPORT(WdfRegistryAssignMultiString)(
3238  _In_
3240  _In_
3241  WDFKEY Key,
3242  _In_
3244  _In_
3245  WDFCOLLECTION StringsCollection
3246  )
3249  return ((PFN_WDFREGISTRYASSIGNMULTISTRING) WdfVersion.Functions.pfnWdfRegistryAssignMultiString)(DriverGlobals, Key, ValueName, StringsCollection);
3250 }
3251 
3254 WDFAPI
3255 NTSTATUS
3256 VFWDFEXPORT(WdfRegistryAssignUnicodeString)(
3257  _In_
3259  _In_
3260  WDFKEY Key,
3261  _In_
3263  _In_
3265  )
3266 {
3268  return ((PFN_WDFREGISTRYASSIGNUNICODESTRING) WdfVersion.Functions.pfnWdfRegistryAssignUnicodeString)(DriverGlobals, Key, ValueName, Value);
3269 }
3270 
3273 WDFAPI
3274 NTSTATUS
3275 VFWDFEXPORT(WdfRegistryAssignString)(
3276  _In_
3278  _In_
3279  WDFKEY Key,
3280  _In_
3282  _In_
3283  WDFSTRING String
3284  )
3285 {
3287  return ((PFN_WDFREGISTRYASSIGNSTRING) WdfVersion.Functions.pfnWdfRegistryAssignString)(DriverGlobals, Key, ValueName, String);
3288 }
3289 
3292 WDFAPI
3293 NTSTATUS
3294 VFWDFEXPORT(WdfRegistryAssignULong)(
3295  _In_
3297  _In_
3298  WDFKEY Key,
3299  _In_
3301  _In_
3302  ULONG Value
3303  )
3304 {
3306  return ((PFN_WDFREGISTRYASSIGNULONG) WdfVersion.Functions.pfnWdfRegistryAssignULong)(DriverGlobals, Key, ValueName, Value);
3307 }
3308 
3311 WDFAPI
3312 NTSTATUS
3313 VFWDFEXPORT(WdfRequestCreate)(
3314  _In_
3316  _In_opt_
3318  _In_opt_
3319  WDFIOTARGET IoTarget,
3320  _Out_
3321  WDFREQUEST* Request
3322  )
3323 {
3326 }
3327 
3329 WDFAPI
3330 NTSTATUS
3331 VFWDFEXPORT(WdfRequestReuse)(
3332  _In_
3334  _In_
3335  WDFREQUEST Request,
3336  _In_
3338  )
3341  return ((PFN_WDFREQUESTREUSE) WdfVersion.Functions.pfnWdfRequestReuse)(DriverGlobals, Request, ReuseParams);
3342 }
3343 
3346 WDFAPI
3347 NTSTATUS
3348 VFWDFEXPORT(WdfRequestChangeTarget)(
3349  _In_
3351  _In_
3352  WDFREQUEST Request,
3353  _In_
3354  WDFIOTARGET IoTarget
3355  )
3356 {
3358  return ((PFN_WDFREQUESTCHANGETARGET) WdfVersion.Functions.pfnWdfRequestChangeTarget)(DriverGlobals, Request, IoTarget);
3359 }
3360 
3362 WDFAPI
3363 VOID
3364 VFWDFEXPORT(WdfRequestFormatRequestUsingCurrentType)(
3365  _In_
3367  _In_
3368  WDFREQUEST Request
3369  )
3370 {
3372  ((PFN_WDFREQUESTFORMATREQUESTUSINGCURRENTTYPE) WdfVersion.Functions.pfnWdfRequestFormatRequestUsingCurrentType)(DriverGlobals, Request);
3373 }
3374 
3377 WDFAPI
3378 BOOLEAN
3380  _In_
3382  _In_
3383  WDFREQUEST Request,
3384  _In_
3385  WDFIOTARGET Target,
3386  _In_opt_
3388  )
3389 {
3392 }
3393 
3396 WDFAPI
3397 NTSTATUS
3398 VFWDFEXPORT(WdfRequestGetStatus)(
3399  _In_
3401  _In_
3402  WDFREQUEST Request
3403  )
3404 {
3406  return ((PFN_WDFREQUESTGETSTATUS) WdfVersion.Functions.pfnWdfRequestGetStatus)(DriverGlobals, Request);
3407 }
3408 
3410 WDFAPI
3411 VOID
3412 VFWDFEXPORT(WdfRequestMarkCancelable)(
3413  _In_
3415  _In_
3416  WDFREQUEST Request,
3417  _In_
3419  )
3423 }
3424 
3427 WDFAPI
3428 NTSTATUS
3429 VFWDFEXPORT(WdfRequestMarkCancelableEx)(
3430  _In_
3432  _In_
3433  WDFREQUEST Request,
3434  _In_
3436  )
3437 {
3439  return ((PFN_WDFREQUESTMARKCANCELABLEEX) WdfVersion.Functions.pfnWdfRequestMarkCancelableEx)(DriverGlobals, Request, EvtRequestCancel);
3440 }
3441 
3444 WDFAPI
3445 NTSTATUS
3446 VFWDFEXPORT(WdfRequestUnmarkCancelable)(
3447  _In_
3449  _In_
3450  WDFREQUEST Request
3451  )
3452 {
3454  return ((PFN_WDFREQUESTUNMARKCANCELABLE) WdfVersion.Functions.pfnWdfRequestUnmarkCancelable)(DriverGlobals, Request);
3455 }
3456 
3459 WDFAPI
3460 BOOLEAN
3461 VFWDFEXPORT(WdfRequestIsCanceled)(
3462  _In_
3464  _In_
3465  WDFREQUEST Request
3466  )
3467 {
3469  return ((PFN_WDFREQUESTISCANCELED) WdfVersion.Functions.pfnWdfRequestIsCanceled)(DriverGlobals, Request);
3470 }
3471 
3473 WDFAPI
3474 BOOLEAN
3475 VFWDFEXPORT(WdfRequestCancelSentRequest)(
3476  _In_
3478  _In_
3479  WDFREQUEST Request
3480  )
3481 {
3483  return ((PFN_WDFREQUESTCANCELSENTREQUEST) WdfVersion.Functions.pfnWdfRequestCancelSentRequest)(DriverGlobals, Request);
3484 }
3485 
3488 WDFAPI
3489 BOOLEAN
3490 VFWDFEXPORT(WdfRequestIsFrom32BitProcess)(
3491  _In_
3493  _In_
3494  WDFREQUEST Request
3495  )
3496 {
3498  return ((PFN_WDFREQUESTISFROM32BITPROCESS) WdfVersion.Functions.pfnWdfRequestIsFrom32BitProcess)(DriverGlobals, Request);
3499 }
3500 
3502 WDFAPI
3503 VOID
3504 VFWDFEXPORT(WdfRequestSetCompletionRoutine)(
3505  _In_
3507  _In_
3508  WDFREQUEST Request,
3509  _In_opt_
3513  )
3517 }
3518 
3520 WDFAPI
3521 VOID
3522 VFWDFEXPORT(WdfRequestGetCompletionParams)(
3523  _In_
3525  _In_
3526  WDFREQUEST Request,
3527  _Out_
3529  )
3532  ((PFN_WDFREQUESTGETCOMPLETIONPARAMS) WdfVersion.Functions.pfnWdfRequestGetCompletionParams)(DriverGlobals, Request, Params);
3533 }
3534 
3537 WDFAPI
3538 NTSTATUS
3539 VFWDFEXPORT(WdfRequestAllocateTimer)(
3540  _In_
3542  _In_
3543  WDFREQUEST Request
3544  )
3545 {
3547  return ((PFN_WDFREQUESTALLOCATETIMER) WdfVersion.Functions.pfnWdfRequestAllocateTimer)(DriverGlobals, Request);
3548 }
3549 
3551 WDFAPI
3552 VOID
3553 VFWDFEXPORT(WdfRequestComplete)(
3554  _In_
3556  _In_
3557  WDFREQUEST Request,
3558  _In_
3560  )
3564  ((PFN_WDFREQUESTCOMPLETE) WdfVersion.Functions.pfnWdfRequestComplete)(DriverGlobals, Request, Status);
3565 }
3566 
3568 WDFAPI
3569 VOID
3570 VFWDFEXPORT(WdfRequestCompleteWithInformation)(
3571  _In_
3573  _In_
3574  WDFREQUEST Request,
3575  _In_
3576  NTSTATUS Status,
3577  _In_
3579  )
3584 }
3585 
3587 WDFAPI
3588 VOID
3589 VFWDFEXPORT(WdfRequestGetParameters)(
3590  _In_
3592  _In_
3593  WDFREQUEST Request,
3594  _Out_
3596  )
3597 {
3600 }
3601 
3604 WDFAPI
3605 NTSTATUS
3606 VFWDFEXPORT(WdfRequestRetrieveInputMemory)(
3607  _In_
3609  _In_
3610  WDFREQUEST Request,
3611  _Out_
3612  WDFMEMORY* Memory
3613  )
3614 {
3616  return ((PFN_WDFREQUESTRETRIEVEINPUTMEMORY) WdfVersion.Functions.pfnWdfRequestRetrieveInputMemory)(DriverGlobals, Request, Memory);
3617 }
3618 
3621 WDFAPI
3622 NTSTATUS
3623 VFWDFEXPORT(WdfRequestRetrieveOutputMemory)(
3624  _In_
3626  _In_
3627  WDFREQUEST Request,
3628  _Out_
3629  WDFMEMORY* Memory
3630  )
3631 {
3633  return ((PFN_WDFREQUESTRETRIEVEOUTPUTMEMORY) WdfVersion.Functions.pfnWdfRequestRetrieveOutputMemory)(DriverGlobals, Request, Memory);
3634 }
3635 
3638 WDFAPI
3639 NTSTATUS
3640 VFWDFEXPORT(WdfRequestRetrieveInputBuffer)(
3641  _In_
3643  _In_
3644  WDFREQUEST Request,
3645  _In_
3646  size_t MinimumRequiredLength,
3648  PVOID* Buffer,
3649  _Out_opt_
3650  size_t* Length
3651  )
3655 }
3656 
3659 WDFAPI
3660 NTSTATUS
3661 VFWDFEXPORT(WdfRequestRetrieveOutputBuffer)(
3662  _In_
3664  _In_
3665  WDFREQUEST Request,
3666  _In_
3667  size_t MinimumRequiredSize,
3669  PVOID* Buffer,
3670  _Out_opt_
3671  size_t* Length
3672  )
3673 {
3676 }
3677 
3679 WDFAPI
3680 VOID
3681 VFWDFEXPORT(WdfRequestSetInformation)(
3682  _In_
3684  _In_
3685  WDFREQUEST Request,
3686  _In_
3688  )
3689 {
3692 }
3693 
3695 WDFAPI
3696 ULONG_PTR
3697 VFWDFEXPORT(WdfRequestGetInformation)(
3698  _In_
3700  _In_
3701  WDFREQUEST Request
3702  )
3703 {
3705  return ((PFN_WDFREQUESTGETINFORMATION) WdfVersion.Functions.pfnWdfRequestGetInformation)(DriverGlobals, Request);
3706 }
3707 
3709 WDFAPI
3710 WDFFILEOBJECT
3711 VFWDFEXPORT(WdfRequestGetFileObject)(
3712  _In_
3714  _In_
3715  WDFREQUEST Request
3716  )
3717 {
3719  return ((PFN_WDFREQUESTGETFILEOBJECT) WdfVersion.Functions.pfnWdfRequestGetFileObject)(DriverGlobals, Request);
3720 }
3721 
3723 WDFAPI
3725 VFWDFEXPORT(WdfRequestGetRequestorMode)(
3726  _In_
3728  _In_
3729  WDFREQUEST Request
3730  )
3731 {
3733  return ((PFN_WDFREQUESTGETREQUESTORMODE) WdfVersion.Functions.pfnWdfRequestGetRequestorMode)(DriverGlobals, Request);
3734 }
3735 
3738 WDFAPI
3739 NTSTATUS
3740 VFWDFEXPORT(WdfRequestForwardToIoQueue)(
3741  _In_
3743  _In_
3744  WDFREQUEST Request,
3745  _In_
3746  WDFQUEUE DestinationQueue
3747  )
3750  return ((PFN_WDFREQUESTFORWARDTOIOQUEUE) WdfVersion.Functions.pfnWdfRequestForwardToIoQueue)(DriverGlobals, Request, DestinationQueue);
3751 }
3752 
3754 WDFAPI
3755 WDFQUEUE
3756 VFWDFEXPORT(WdfRequestGetIoQueue)(
3757  _In_
3759  _In_
3760  WDFREQUEST Request
3761  )
3762 {
3764  return ((PFN_WDFREQUESTGETIOQUEUE) WdfVersion.Functions.pfnWdfRequestGetIoQueue)(DriverGlobals, Request);
3765 }
3766 
3769 WDFAPI
3770 NTSTATUS
3771 VFWDFEXPORT(WdfRequestRequeue)(
3772  _In_
3774  _In_
3775  WDFREQUEST Request
3776  )
3777 {
3779  return ((PFN_WDFREQUESTREQUEUE) WdfVersion.Functions.pfnWdfRequestRequeue)(DriverGlobals, Request);
3780 }
3781 
3783 WDFAPI
3784 VOID
3785 VFWDFEXPORT(WdfRequestStopAcknowledge)(
3786  _In_
3788  _In_
3789  WDFREQUEST Request,
3790  _In_
3792  )
3795  ((PFN_WDFREQUESTSTOPACKNOWLEDGE) WdfVersion.Functions.pfnWdfRequestStopAcknowledge)(DriverGlobals, Request, Requeue);
3796 }
3797 
3800 WDFAPI
3801 NTSTATUS
3802 VFWDFEXPORT(WdfRequestImpersonate)(
3803  _In_
3805  _In_
3806  WDFREQUEST Request,
3807  _In_
3809  _In_
3810  PFN_WDF_REQUEST_IMPERSONATE EvtRequestImpersonate,
3811  _In_opt_
3812  PVOID Context
3813  )
3814 {
3817 }
3818 
3820 WDFAPI
3821 ULONG
3822 VFWDFEXPORT(WdfRequestGetRequestorProcessId)(
3823  _In_
3825  _In_
3826  WDFREQUEST Request
3827  )
3828 {
3830  return ((PFN_WDFREQUESTGETREQUESTORPROCESSID) WdfVersion.Functions.pfnWdfRequestGetRequestorProcessId)(DriverGlobals, Request);
3831 }
3832 
3834 WDFAPI
3835 BOOLEAN
3836 VFWDFEXPORT(WdfRequestIsFromUserModeDriver)(
3837  _In_
3839  _In_
3840  WDFREQUEST Request
3841  )
3842 {
3844  return ((PFN_WDFREQUESTISFROMUSERMODEDRIVER) WdfVersion.Functions.pfnWdfRequestIsFromUserModeDriver)(DriverGlobals, Request);
3845 }
3846 
3848 WDFAPI
3849 VOID
3850 VFWDFEXPORT(WdfRequestSetUserModeDriverInitiatedIo)(
3851  _In_
3853  _In_
3854  WDFREQUEST Request,
3855  _In_
3857  )
3861 }
3862 
3864 WDFAPI
3865 BOOLEAN
3866 VFWDFEXPORT(WdfRequestGetUserModeDriverInitiatedIo)(
3867  _In_
3869  _In_
3870  WDFREQUEST Request
3871  )
3872 {
3874  return ((PFN_WDFREQUESTGETUSERMODEDRIVERINITIATEDIO) WdfVersion.Functions.pfnWdfRequestGetUserModeDriverInitiatedIo)(DriverGlobals, Request);
3875 }
3876 
3878 WDFAPI
3879 VOID
3880 VFWDFEXPORT(WdfRequestSetActivityId)(
3881  _In_
3883  _In_
3884  WDFREQUEST Request,
3885  _In_
3887  )
3891 }
3892 
3894 WDFAPI
3895 NTSTATUS
3896 VFWDFEXPORT(WdfRequestRetrieveActivityId)(
3897  _In_
3899  _In_
3900  WDFREQUEST Request,
3901  _Out_
3903  )
3904 {
3906  return ((PFN_WDFREQUESTRETRIEVEACTIVITYID) WdfVersion.Functions.pfnWdfRequestRetrieveActivityId)(DriverGlobals, Request, ActivityId);
3907 }
3908 
3910 WDFAPI
3912 VFWDFEXPORT(WdfRequestGetEffectiveIoType)(
3913  _In_
3915  _In_
3916  WDFREQUEST Request
3917  )
3918 {
3920  return ((PFN_WDFREQUESTGETEFFECTIVEIOTYPE) WdfVersion.Functions.pfnWdfRequestGetEffectiveIoType)(DriverGlobals, Request);
3921 }
3922 
3924 WDFAPI
3925 ULONG
3926 VFWDFEXPORT(WdfCmResourceListGetCount)(
3927  _In_
3929  _In_
3930  WDFCMRESLIST List
3931  )
3934  return ((PFN_WDFCMRESOURCELISTGETCOUNT) WdfVersion.Functions.pfnWdfCmResourceListGetCount)(DriverGlobals, List);
3935 }
3936 
3938 WDFAPI
3940 VFWDFEXPORT(WdfCmResourceListGetDescriptor)(
3941  _In_
3943  _In_
3944  WDFCMRESLIST List,
3945  _In_
3946  ULONG Index
3947  )
3948 {
3950  return ((PFN_WDFCMRESOURCELISTGETDESCRIPTOR) WdfVersion.Functions.pfnWdfCmResourceListGetDescriptor)(DriverGlobals, List, Index);
3951 }
3952 
3955 WDFAPI
3956 NTSTATUS
3957 VFWDFEXPORT(WdfStringCreate)(
3958  _In_
3960  _In_opt_
3962  _In_opt_
3964  _Out_
3965  WDFSTRING* String
3966  )
3967 {
3970 }
3971 
3973 WDFAPI
3974 VOID
3975 VFWDFEXPORT(WdfStringGetUnicodeString)(
3976  _In_
3978  _In_
3979  WDFSTRING String,
3980  _Out_
3982  )
3983 {
3986 }
3987 
3989 WDFAPI
3990 VOID
3991 VFWDFEXPORT(WdfObjectAcquireLock)(
3992  _In_
3994  _In_
3995  _Requires_lock_not_held_(_Curr_)
3996  _Acquires_lock_(_Curr_)
3998  )
3999 {
4001  ((PFN_WDFOBJECTACQUIRELOCK) WdfVersion.Functions.pfnWdfObjectAcquireLock)(DriverGlobals, Object);
4002 }
4003 
4005 WDFAPI
4006 VOID
4007 VFWDFEXPORT(WdfObjectReleaseLock)(
4008  _In_
4010  _In_
4011  _Requires_lock_held_(_Curr_)
4012  _Releases_lock_(_Curr_)
4014  )
4015 {
4017  ((PFN_WDFOBJECTRELEASELOCK) WdfVersion.Functions.pfnWdfObjectReleaseLock)(DriverGlobals, Object);
4018 }
4019 
4022 WDFAPI
4023 NTSTATUS
4024 VFWDFEXPORT(WdfWaitLockCreate)(
4025  _In_
4027  _In_opt_
4029  _Out_
4030  WDFWAITLOCK* Lock
4031  )
4034  return ((PFN_WDFWAITLOCKCREATE) WdfVersion.Functions.pfnWdfWaitLockCreate)(DriverGlobals, LockAttributes, Lock);
4035 }
4036 
4043 WDFAPI
4044 NTSTATUS
4046  _In_
4048  _In_
4049  _Requires_lock_not_held_(_Curr_)
4050  WDFWAITLOCK Lock,
4051  _In_opt_
4053  )
4054 {
4057 }
4058 
4060 WDFAPI
4061 VOID
4062 VFWDFEXPORT(WdfWaitLockRelease)(
4063  _In_
4065  _In_
4066  _Requires_lock_held_(_Curr_)
4067  _Releases_lock_(_Curr_)
4068  WDFWAITLOCK Lock
4069  )
4070 {
4072  ((PFN_WDFWAITLOCKRELEASE) WdfVersion.Functions.pfnWdfWaitLockRelease)(DriverGlobals, Lock);
4073 }
4074 
4077 WDFAPI
4078 NTSTATUS
4079 VFWDFEXPORT(WdfSpinLockCreate)(
4080  _In_
4082  _In_opt_
4084  _Out_
4085  WDFSPINLOCK* SpinLock
4086  )
4090 }
4091 
4094 WDFAPI
4095 VOID
4096 VFWDFEXPORT(WdfSpinLockAcquire)(
4097  _In_
4099  _In_
4100  _Requires_lock_not_held_(_Curr_)
4101  _Acquires_lock_(_Curr_)
4102  _IRQL_saves_
4103  WDFSPINLOCK SpinLock
4104  )
4105 {
4107  ((PFN_WDFSPINLOCKACQUIRE) WdfVersion.Functions.pfnWdfSpinLockAcquire)(DriverGlobals, SpinLock);
4108 }
4109 
4112 WDFAPI
4113 VOID
4114 VFWDFEXPORT(WdfSpinLockRelease)(
4115  _In_
4117  _In_
4118  _Requires_lock_held_(_Curr_)
4119  _Releases_lock_(_Curr_)
4121  WDFSPINLOCK SpinLock
4122  )
4123 {
4125  ((PFN_WDFSPINLOCKRELEASE) WdfVersion.Functions.pfnWdfSpinLockRelease)(DriverGlobals, SpinLock);
4126 }
4127 
4130 WDFAPI
4131 NTSTATUS
4132 VFWDFEXPORT(WdfTimerCreate)(
4133  _In_
4135  _In_
4137  _In_
4139  _Out_
4140  WDFTIMER* Timer
4141  )
4144  return ((PFN_WDFTIMERCREATE) WdfVersion.Functions.pfnWdfTimerCreate)(DriverGlobals, Config, Attributes, Timer);
4145 }
4146 
4148 WDFAPI
4149 BOOLEAN
4150 VFWDFEXPORT(WdfTimerStart)(
4151  _In_
4153  _In_
4154  WDFTIMER Timer,
4155  _In_
4157  )
4160  return ((PFN_WDFTIMERSTART) WdfVersion.Functions.pfnWdfTimerStart)(DriverGlobals, Timer, DueTime);
4161 }
4162 
4165 WDFAPI
4166 BOOLEAN
4167 VFWDFEXPORT(WdfTimerStop)(
4168  _In_
4170  _In_
4171  WDFTIMER Timer,
4172  _In_
4173  BOOLEAN Wait
4174  )
4177  return ((PFN_WDFTIMERSTOP) WdfVersion.Functions.pfnWdfTimerStop)(DriverGlobals, Timer, Wait);
4178 }
4179 
4181 WDFAPI
4182 WDFOBJECT
4183 VFWDFEXPORT(WdfTimerGetParentObject)(
4184  _In_
4186  _In_
4187  WDFTIMER Timer
4188  )
4189 {
4191  return ((PFN_WDFTIMERGETPARENTOBJECT) WdfVersion.Functions.pfnWdfTimerGetParentObject)(DriverGlobals, Timer);
4192 }
4193 
4196 WDFAPI
4197 NTSTATUS
4198 VFWDFEXPORT(WdfUsbTargetDeviceCreate)(
4199  _In_
4201  _In_
4202  WDFDEVICE Device,
4203  _In_opt_
4205  _Out_
4206  WDFUSBDEVICE* UsbDevice
4207  )
4210  return ((PFN_WDFUSBTARGETDEVICECREATE) WdfVersion.Functions.pfnWdfUsbTargetDeviceCreate)(DriverGlobals, Device, Attributes, UsbDevice);
4211 }
4212 
4215 WDFAPI
4216 NTSTATUS
4217 VFWDFEXPORT(WdfUsbTargetDeviceCreateWithParameters)(
4218  _In_
4220  _In_
4221  WDFDEVICE Device,
4222  _In_
4224  _In_opt_
4226  _Out_
4227  WDFUSBDEVICE* UsbDevice
4228  )
4229 {
4231  return ((PFN_WDFUSBTARGETDEVICECREATEWITHPARAMETERS) WdfVersion.Functions.pfnWdfUsbTargetDeviceCreateWithParameters)(DriverGlobals, Device, Config, Attributes, UsbDevice);
4232 }
4233 
4236 WDFAPI
4237 NTSTATUS
4238 VFWDFEXPORT(WdfUsbTargetDeviceRetrieveInformation)(
4239  _In_
4241  _In_
4242  WDFUSBDEVICE UsbDevice,
4243  _Out_
4245  )
4246 {
4248  return ((PFN_WDFUSBTARGETDEVICERETRIEVEINFORMATION) WdfVersion.Functions.pfnWdfUsbTargetDeviceRetrieveInformation)(DriverGlobals, UsbDevice, Information);
4249 }
4250 
4252 WDFAPI
4253 VOID
4254 VFWDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor)(
4255  _In_
4257  _In_
4258  WDFUSBDEVICE UsbDevice,
4259  _Out_
4261  )
4265 }
4266 
4269 WDFAPI
4270 NTSTATUS
4271 VFWDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor)(
4272  _In_
4274  _In_
4275  WDFUSBDEVICE UsbDevice,
4278  _Inout_
4280  )
4283 #pragma prefast(suppress: __WARNING_HIGH_PRIORITY_OVERFLOW_POSTCONDITION, "This is a verifier DDI hook routine and all it does is call original routine.")
4285 }
4286 
4289 WDFAPI
4290 NTSTATUS
4291 VFWDFEXPORT(WdfUsbTargetDeviceQueryString)(
4292  _In_
4294  _In_
4295  WDFUSBDEVICE UsbDevice,
4296  _In_opt_
4297  WDFREQUEST Request,
4298  _In_opt_
4301  PUSHORT String,
4302  _Inout_
4304  _In_
4306  _In_opt_
4307  USHORT LangID
4308  )
4312 }
4313 
4316 WDFAPI
4317 NTSTATUS
4318 VFWDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString)(
4319  _In_
4321  _In_
4322  WDFUSBDEVICE UsbDevice,
4323  _In_opt_
4325  _Out_
4326  WDFMEMORY* StringMemory,
4327  _Out_opt_
4329  _In_
4331  _In_opt_
4332  USHORT LangID
4333  )
4334 {
4337 }
4338 
4341 WDFAPI
4342 NTSTATUS
4343 VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForString)(
4344  _In_
4346  _In_
4347  WDFUSBDEVICE UsbDevice,
4348  _In_
4349  WDFREQUEST Request,
4350  _In_
4351  WDFMEMORY Memory,
4352  _In_opt_
4354  _In_
4356  _In_opt_
4357  USHORT LangID
4358  )
4359 {
4361  return ((PFN_WDFUSBTARGETDEVICEFORMATREQUESTFORSTRING) WdfVersion.Functions.pfnWdfUsbTargetDeviceFormatRequestForString)(DriverGlobals, UsbDevice, Request, Memory, Offset, StringIndex, LangID);
4362 }
4363 
4365 WDFAPI
4366 UCHAR
4367 VFWDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces)(
4368  _In_
4370  _In_
4371  WDFUSBDEVICE UsbDevice
4372  )
4373 {
4375  return ((PFN_WDFUSBTARGETDEVICEGETNUMINTERFACES) WdfVersion.Functions.pfnWdfUsbTargetDeviceGetNumInterfaces)(DriverGlobals, UsbDevice);
4376 }
4377 
4380 WDFAPI
4381 NTSTATUS
4382 VFWDFEXPORT(WdfUsbTargetDeviceSelectConfig)(
4383  _In_
4385  _In_
4386  WDFUSBDEVICE UsbDevice,
4387  _In_opt_
4389  _Inout_
4391  )
4392 {
4394  return ((PFN_WDFUSBTARGETDEVICESELECTCONFIG) WdfVersion.Functions.pfnWdfUsbTargetDeviceSelectConfig)(DriverGlobals, UsbDevice, PipeAttributes, Params);
4395 }
4396 
4399 WDFAPI
4400 NTSTATUS
4401 VFWDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously)(
4402  _In_
4404  _In_
4405  WDFUSBDEVICE UsbDevice,
4406  _In_opt_
4407  WDFREQUEST Request,
4408  _In_opt_
4410  _In_
4412  _In_opt_
4414  _Out_opt_
4416  )
4420 }
4421 
4424 WDFAPI
4425 NTSTATUS
4426 VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer)(
4427  _In_
4429  _In_
4430  WDFUSBDEVICE UsbDevice,
4431  _In_
4432  WDFREQUEST Request,
4433  _In_
4435  _In_opt_
4436  WDFMEMORY TransferMemory,
4437  _In_opt_
4439  )
4443 }
4444 
4447 WDFAPI
4448 NTSTATUS
4449 VFWDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously)(
4450  _In_
4452  _In_
4453  WDFUSBDEVICE UsbDevice
4454  )
4455 {
4457  return ((PFN_WDFUSBTARGETDEVICERESETPORTSYNCHRONOUSLY) WdfVersion.Functions.pfnWdfUsbTargetDeviceResetPortSynchronously)(DriverGlobals, UsbDevice);
4458 }
4459 
4462 WDFAPI
4463 NTSTATUS
4464 VFWDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability)(
4465  _In_
4467  _In_
4468  WDFUSBDEVICE UsbDevice,
4469  _In_
4471  _In_