text: /*++
  
  Copyright (c) Microsoft. All rights reserved.
  
  Module Name: VfFxDynamics.h
  
  Abstract:
      Generated header for WDF API Verifier hooks
  
  Environment:
      kernel mode only
  
      Warning: manual changes to this file will be lost.
  --*/
  
  #ifndef _VFFXDYNAMICS_H_
  #define _VFFXDYNAMICS_H_
  
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfChildListCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_CHILD_LIST_CONFIG Config,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES ChildListAttributes,
      _Out_
      WDFCHILDLIST* ChildList
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfChildListGetDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfChildListRetrievePdo)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList,
      _Inout_
      PWDF_CHILD_RETRIEVE_INFO RetrieveInfo
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfChildListRetrieveAddressDescription)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList,
      _In_
      PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
      _Inout_
      PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfChildListBeginScan)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfChildListEndScan)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfChildListBeginIteration)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList,
      _In_
      PWDF_CHILD_LIST_ITERATOR Iterator
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfChildListRetrieveNextDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList,
      _In_
      PWDF_CHILD_LIST_ITERATOR Iterator,
      _Out_
      WDFDEVICE* Device,
      _Inout_opt_
      PWDF_CHILD_RETRIEVE_INFO Info
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfChildListEndIteration)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList,
      _In_
      PWDF_CHILD_LIST_ITERATOR Iterator
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfChildListAddOrUpdateChildDescriptionAsPresent)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList,
      _In_
      PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription,
      _In_opt_
      PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfChildListUpdateChildDescriptionAsMissing)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList,
      _In_
      PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfChildListUpdateAllChildDescriptionsAsPresent)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfChildListRequestChildEject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCHILDLIST ChildList,
      _In_
      PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCollectionCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES CollectionAttributes,
      _Out_
      WDFCOLLECTION* Collection
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfCollectionGetCount)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOLLECTION Collection
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCollectionAdd)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOLLECTION Collection,
      _In_
      WDFOBJECT Object
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCollectionRemove)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOLLECTION Collection,
      _In_
      WDFOBJECT Item
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCollectionRemoveItem)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOLLECTION Collection,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFOBJECT
  NTAPI
  VFWDFEXPORT(WdfCollectionGetItem)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOLLECTION Collection,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFOBJECT
  NTAPI
  VFWDFEXPORT(WdfCollectionGetFirstItem)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOLLECTION Collection
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFOBJECT
  NTAPI
  VFWDFEXPORT(WdfCollectionGetLastItem)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOLLECTION Collection
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCommonBufferCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler,
      _In_
      _When_(Length == 0, __drv_reportError(Length cannot be zero))
      size_t Length,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFCOMMONBUFFER* CommonBuffer
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCommonBufferCreateWithConfig)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler,
      _In_
      _When_(Length == 0, __drv_reportError(Length cannot be zero))
      size_t Length,
      _In_
      PWDF_COMMON_BUFFER_CONFIG Config,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFCOMMONBUFFER* CommonBuffer
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PVOID
  NTAPI
  VFWDFEXPORT(WdfCommonBufferGetAlignedVirtualAddress)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOMMONBUFFER CommonBuffer
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PHYSICAL_ADDRESS
  NTAPI
  VFWDFEXPORT(WdfCommonBufferGetAlignedLogicalAddress)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOMMONBUFFER CommonBuffer
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  size_t
  NTAPI
  VFWDFEXPORT(WdfCommonBufferGetLength)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOMMONBUFFER CommonBuffer
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCompanionTargetSendTaskSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOMPANIONTARGET CompanionTarget,
      _In_
      USHORT TaskQueueIdentifier,
      _In_
      ULONG TaskOperationCode,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR InputBuffer,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR OutputBuffer,
      _In_opt_
      PWDF_TASK_SEND_OPTIONS TaskOptions,
      _Out_
      PULONG_PTR BytesReturned
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PEPROCESS
  NTAPI
  VFWDFEXPORT(WdfCompanionTargetWdmGetCompanionProcess)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCOMPANIONTARGET CompanionTarget
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  PWDFDEVICE_INIT
  NTAPI
  VFWDFEXPORT(WdfControlDeviceInitAllocate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver,
      _In_
      CONST UNICODE_STRING* SDDLString
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfControlDeviceInitSetShutdownNotification)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PFN_WDF_DEVICE_SHUTDOWN_NOTIFICATION Notification,
      _In_
      UCHAR Flags
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfControlFinishInitializing)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  PWDFCXDEVICE_INIT
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitAllocate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitAssignWdmIrpPreprocessCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFCXDEVICE_INIT CxDeviceInit,
      _In_
      PFN_WDFCXDEVICE_WDM_IRP_PREPROCESS EvtCxDeviceWdmIrpPreprocess,
      _In_
      UCHAR MajorFunction,
      _When_(NumMinorFunctions > 0, _In_reads_bytes_(NumMinorFunctions))
      _When_(NumMinorFunctions == 0, _In_opt_)
      PUCHAR MinorFunctions,
      _In_
      ULONG NumMinorFunctions
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitSetIoInCallerContextCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFCXDEVICE_INIT CxDeviceInit,
      _In_
      PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitSetRequestAttributes)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFCXDEVICE_INIT CxDeviceInit,
      _In_
      PWDF_OBJECT_ATTRIBUTES RequestAttributes
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitSetFileObjectConfig)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFCXDEVICE_INIT CxDeviceInit,
      _In_
      PWDFCX_FILEOBJECT_CONFIG CxFileObjectConfig,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitSetPnpPowerEventCallbacks)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFCXDEVICE_INIT CxDeviceInit,
      _In_
      PWDFCX_PNPPOWER_EVENT_CALLBACKS CxPnpPowerCallbacks
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitSetPowerPolicyEventCallbacks)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFCXDEVICE_INIT CxDeviceInit,
      _In_
      PWDFCX_POWER_POLICY_EVENT_CALLBACKS CxPowerPolicyCallbacks
      );
  
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCxVerifierKeBugCheck)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      WDFOBJECT Object,
      _In_
      ULONG BugCheckCode,
      _In_
      ULONG_PTR BugCheckParameter1,
      _In_
      ULONG_PTR BugCheckParameter2,
      _In_
      ULONG_PTR BugCheckParameter3,
      _In_
      ULONG_PTR BugCheckParameter4
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitAllocateContext)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_OBJECT_ATTRIBUTES ContextAttributes,
      _Outptr_opt_
      PVOID* Context
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL+1)
  WDFAPI
  PVOID
  NTAPI
  VFWDFEXPORT(WdfCxDeviceInitGetTypedContextWorker)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceGetDeviceState)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _Out_
      PWDF_DEVICE_STATE DeviceState
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetDeviceState)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DEVICE_STATE DeviceState
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfWdmDeviceGetWdfDeviceHandle)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PDEVICE_OBJECT DeviceObject
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PDEVICE_OBJECT
  NTAPI
  VFWDFEXPORT(WdfDeviceWdmGetDeviceObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PDEVICE_OBJECT
  NTAPI
  VFWDFEXPORT(WdfDeviceWdmGetAttachedDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PDEVICE_OBJECT
  NTAPI
  VFWDFEXPORT(WdfDeviceWdmGetPhysicalDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceWdmDispatchPreprocessedIrp)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PIRP Irp
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceWdmDispatchIrp)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PIRP Irp,
      _In_
      WDFCONTEXT DispatchContext
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PIRP Irp,
      _In_
      WDFQUEUE Queue,
      _In_
      ULONG Flags
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAddDependentUsageDeviceObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PDEVICE_OBJECT DependentDevice
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceRemoveDependentUsageDeviceObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PDEVICE_OBJECT DependentDevice
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAddRemovalRelationsPhysicalDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PDEVICE_OBJECT PhysicalDevice
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceRemoveRemovalRelationsPhysicalDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PDEVICE_OBJECT PhysicalDevice
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceClearRemovalRelationsDevices)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDRIVER
  NTAPI
  VFWDFEXPORT(WdfDeviceGetDriver)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceRetrieveDeviceName)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      WDFSTRING String
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAssignMofResourceName)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PCUNICODE_STRING MofResourceName
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFIOTARGET
  NTAPI
  VFWDFEXPORT(WdfDeviceGetIoTarget)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDF_DEVICE_PNP_STATE
  NTAPI
  VFWDFEXPORT(WdfDeviceGetDevicePnpState)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDF_DEVICE_POWER_STATE
  NTAPI
  VFWDFEXPORT(WdfDeviceGetDevicePowerState)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDF_DEVICE_POWER_POLICY_STATE
  NTAPI
  VFWDFEXPORT(WdfDeviceGetDevicePowerPolicyState)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAssignS0IdleSettings)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS Settings
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAssignSxWakeSettings)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS Settings
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceOpenRegistryKey)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      ULONG DeviceInstanceKeyType,
      _In_
      ACCESS_MASK DesiredAccess,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES KeyAttributes,
      _Out_
      WDFKEY* Key
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceOpenDevicemapKey)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PCUNICODE_STRING KeyName,
      _In_
      ACCESS_MASK DesiredAccess,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES KeyAttributes,
      _Out_
      WDFKEY* Key
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetSpecialFileSupport)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      WDF_SPECIAL_FILE_TYPE FileType,
      _In_
      BOOLEAN FileTypeIsSupported
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetCharacteristics)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      ULONG DeviceCharacteristics
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfDeviceGetCharacteristics)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfDeviceGetAlignmentRequirement)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetAlignmentRequirement)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      ULONG AlignmentRequirement
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitFree)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_PNPPOWER_EVENT_CALLBACKS PnpPowerEventCallbacks
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_POWER_POLICY_EVENT_CALLBACKS PowerPolicyEventCallbacks
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      BOOLEAN IsPowerPolicyOwner
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceInitRegisterPnpStateChangeCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      WDF_DEVICE_PNP_STATE PnpState,
      _In_
      PFN_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION EvtDevicePnpStateChange,
      _In_
      ULONG CallbackTypes
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceInitRegisterPowerStateChangeCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      WDF_DEVICE_POWER_STATE PowerState,
      _In_
      PFN_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION EvtDevicePowerStateChange,
      _In_
      ULONG CallbackTypes
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceInitRegisterPowerPolicyStateChangeCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      WDF_DEVICE_POWER_POLICY_STATE PowerPolicyState,
      _In_
      PFN_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION EvtDevicePowerPolicyStateChange,
      _In_
      ULONG CallbackTypes
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetExclusive)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      BOOLEAN IsExclusive
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetIoType)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      WDF_DEVICE_IO_TYPE IoType
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetPowerNotPageable)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetPowerPageable)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetPowerInrush)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetDeviceType)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      DEVICE_TYPE DeviceType
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceInitAssignName)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_opt_
      PCUNICODE_STRING DeviceName
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceInitAssignSDDLString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_opt_
      PCUNICODE_STRING SDDLString
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetDeviceClass)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      CONST GUID* DeviceClassGuid
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetCharacteristics)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      ULONG DeviceCharacteristics,
      _In_
      BOOLEAN OrInValues
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetFileObjectConfig)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_FILEOBJECT_CONFIG FileObjectConfig,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES FileObjectAttributes
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetRequestAttributes)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_OBJECT_ATTRIBUTES RequestAttributes
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceInitAssignWdmIrpPreprocessCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PFN_WDFDEVICE_WDM_IRP_PREPROCESS EvtDeviceWdmIrpPreprocess,
      _In_
      UCHAR MajorFunction,
      _When_(NumMinorFunctions > 0, _In_reads_bytes_(NumMinorFunctions))
      _When_(NumMinorFunctions == 0, _In_opt_)
      PUCHAR MinorFunctions,
      _In_
      ULONG NumMinorFunctions
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetIoInCallerContextCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetRemoveLockOptions)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_REMOVE_LOCK_OPTIONS Options
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _Inout_
      PWDFDEVICE_INIT* DeviceInit,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES DeviceAttributes,
      _Out_
      WDFDEVICE* Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetStaticStopRemove)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      BOOLEAN Stoppable
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceCreateDeviceInterface)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      CONST GUID* InterfaceClassGUID,
      _In_opt_
      PCUNICODE_STRING ReferenceString
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetDeviceInterfaceState)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      CONST GUID* InterfaceClassGUID,
      _In_opt_
      PCUNICODE_STRING ReferenceString,
      _In_
      BOOLEAN IsInterfaceEnabled
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetDeviceInterfaceStateEx)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      CONST GUID* InterfaceClassGUID,
      _In_opt_
      PCUNICODE_STRING ReferenceString,
      _In_
      BOOLEAN IsInterfaceEnabled
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      CONST GUID* InterfaceClassGUID,
      _In_opt_
      PCUNICODE_STRING ReferenceString,
      _In_
      WDFSTRING String
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceCreateSymbolicLink)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PCUNICODE_STRING SymbolicLinkName
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceQueryProperty)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      DEVICE_REGISTRY_PROPERTY DeviceProperty,
      _In_
      ULONG BufferLength,
      _Out_writes_bytes_all_(BufferLength)
      PVOID PropertyBuffer,
      _Out_
      PULONG ResultLength
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAllocAndQueryProperty)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      DEVICE_REGISTRY_PROPERTY DeviceProperty,
      _In_
      _Strict_type_match_
      POOL_TYPE PoolType,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
      _Out_
      WDFMEMORY* PropertyMemory
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetPnpCapabilities)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DEVICE_PNP_CAPABILITIES PnpCapabilities
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetPowerCapabilities)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetBusInformationForChildren)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PPNP_BUS_INFORMATION BusInformation
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceIndicateWakeStatus)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      NTSTATUS WaitWakeStatus
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceSetFailed)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      WDF_DEVICE_FAILED_ACTION FailedAction
      );
  
  _Must_inspect_result_
  _When_(WaitForD0 == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
  _When_(WaitForD0 != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceStopIdleNoTrack)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      BOOLEAN WaitForD0
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceResumeIdleNoTrack)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _Must_inspect_result_
  _When_(WaitForD0 == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
  _When_(WaitForD0 != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceStopIdleActual)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      BOOLEAN WaitForD0,
      _In_opt_
      PVOID Tag,
      _In_
      LONG Line,
      _In_z_
      PCCH File
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceResumeIdleActual)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_opt_
      PVOID Tag,
      _In_
      LONG Line,
      _In_z_
      PCCH File
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFFILEOBJECT
  NTAPI
  VFWDFEXPORT(WdfDeviceGetFileObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PFILE_OBJECT FileObject
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceEnqueueRequest)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFQUEUE
  NTAPI
  VFWDFEXPORT(WdfDeviceGetDefaultQueue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceConfigureRequestDispatching)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      WDFQUEUE Queue,
      _In_
      _Strict_type_match_
      WDF_REQUEST_TYPE RequestType
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_opt_
      WDFDRIVER Driver,
      _In_
      UCHAR MajorFunction,
      _In_
      PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDispatch,
      _In_opt_
      WDFCONTEXT DriverContext
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  POWER_ACTION
  NTAPI
  VFWDFEXPORT(WdfDeviceGetSystemPowerAction)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceWdmAssignPowerFrameworkSettings)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_POWER_FRAMEWORK_SETTINGS PowerFrameworkSettings
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      WDF_RELEASE_HARDWARE_ORDER_ON_FAILURE ReleaseHardwareOrderOnFailure
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitSetIoTypeEx)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_IO_TYPE_CONFIG IoTypeConfig
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(APC_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceQueryPropertyEx)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
      _In_
      ULONG BufferLength,
      _Out_
      PVOID PropertyBuffer,
      _Out_
      PULONG RequiredSize,
      _Out_
      PDEVPROPTYPE Type
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(APC_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAllocAndQueryPropertyEx)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
      _In_
      _Strict_type_match_
      POOL_TYPE PoolType,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
      _Out_
      WDFMEMORY* PropertyMemory,
      _Out_
      PDEVPROPTYPE Type
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(APC_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAssignProperty)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
      _In_
      DEVPROPTYPE Type,
      _In_
      ULONG Size,
      _In_opt_
      PVOID Data
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceRetrieveCompanionTarget)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _Out_
      WDFCOMPANIONTARGET* CompanionTarget
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFIOTARGET
  NTAPI
  VFWDFEXPORT(WdfDeviceGetSelfIoTarget)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDeviceInitAllowSelfIoTarget)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaEnablerCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_DMA_ENABLER_CONFIG Config,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFDMAENABLER* DmaEnablerHandle
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaEnablerConfigureSystemProfile)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler,
      _In_
      PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig,
      _In_
      WDF_DMA_DIRECTION ConfigDirection
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  size_t
  NTAPI
  VFWDFEXPORT(WdfDmaEnablerGetMaximumLength)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  size_t
  NTAPI
  VFWDFEXPORT(WdfDmaEnablerGetMaximumScatterGatherElements)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaEnablerSetMaximumScatterGatherElements)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler,
      _In_
      _When_(MaximumFragments == 0, __drv_reportError(MaximumFragments cannot be zero))
      size_t MaximumFragments
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  size_t
  NTAPI
  VFWDFEXPORT(WdfDmaEnablerGetFragmentLength)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler,
      _In_
      WDF_DMA_DIRECTION DmaDirection
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PDMA_ADAPTER
  NTAPI
  VFWDFEXPORT(WdfDmaEnablerWdmGetDmaAdapter)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler,
      _In_
      WDF_DMA_DIRECTION DmaDirection
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMAENABLER DmaEnabler,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFDMATRANSACTION* DmaTransaction
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionInitialize)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
      _In_
      WDF_DMA_DIRECTION DmaDirection,
      _In_
      PMDL Mdl,
      _In_
      PVOID VirtualAddress,
      _In_
      _When_(Length == 0, __drv_reportError(Length cannot be zero))
      size_t Length
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionInitializeUsingOffset)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
      _In_
      WDF_DMA_DIRECTION DmaDirection,
      _In_
      PMDL Mdl,
      _In_
      size_t Offset,
      _In_
      _When_(Length == 0, __drv_reportError(Length cannot be zero))
      size_t Length
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionInitializeUsingRequest)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      WDFREQUEST Request,
      _In_
      PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
      _In_
      WDF_DMA_DIRECTION DmaDirection
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionExecute)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_opt_
      WDFCONTEXT Context
      );
  
  _Success_(TRUE)
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionRelease)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionDmaCompleted)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _Out_
      NTSTATUS* Status
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionDmaCompletedWithLength)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      size_t TransferredLength,
      _Out_
      NTSTATUS* Status
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionDmaCompletedFinal)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      size_t FinalTransferredLength,
      _Out_
      NTSTATUS* Status
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  size_t
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionGetBytesTransferred)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionSetMaximumLength)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      size_t MaximumLength
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionSetSingleTransferRequirement)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      BOOLEAN RequireSingleTransfer
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFREQUEST
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionGetRequest)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  size_t
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionGetCurrentDmaTransferLength)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionGetDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionGetTransferInfo)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _Out_opt_
      ULONG* MapRegisterCount,
      _Out_opt_
      ULONG* ScatterGatherElementCount
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionSetChannelConfigurationCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_opt_
      PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL ConfigureRoutine,
      _In_opt_
      PVOID ConfigureContext
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionSetTransferCompleteCallback)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_opt_
      PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
      _In_opt_
      PVOID DmaCompletionContext
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionSetImmediateExecution)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      BOOLEAN UseImmediateExecution
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionAllocateResources)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      WDF_DMA_DIRECTION DmaDirection,
      _In_
      ULONG RequiredMapRegisters,
      _In_
      PFN_WDF_RESERVE_DMA EvtReserveDmaFunction,
      _In_
      PVOID EvtReserveDmaContext
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionSetDeviceAddressOffset)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction,
      _In_
      ULONG Offset
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionFreeResources)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionCancel)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PVOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionWdmGetTransferContext)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDmaTransactionStopSystemTransfer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDMATRANSACTION DmaTransaction
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDpcCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDF_DPC_CONFIG Config,
      _In_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFDPC* Dpc
      );
  
  _IRQL_requires_max_(HIGH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfDpcEnqueue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDPC Dpc
      );
  
  _When_(Wait == __true, _IRQL_requires_max_(PASSIVE_LEVEL))
  _When_(Wait == __false, _IRQL_requires_max_(HIGH_LEVEL))
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfDpcCancel)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDPC Dpc,
      _In_
      BOOLEAN Wait
      );
  
  _IRQL_requires_max_(HIGH_LEVEL)
  WDFAPI
  WDFOBJECT
  NTAPI
  VFWDFEXPORT(WdfDpcGetParentObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDPC Dpc
      );
  
  _IRQL_requires_max_(HIGH_LEVEL)
  WDFAPI
  PKDPC
  NTAPI
  VFWDFEXPORT(WdfDpcWdmGetDpc)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDPC Dpc
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDriverCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PDRIVER_OBJECT DriverObject,
      _In_
      PCUNICODE_STRING RegistryPath,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES DriverAttributes,
      _In_
      PWDF_DRIVER_CONFIG DriverConfig,
      _Out_opt_
      WDFDRIVER* Driver
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  PWSTR
  NTAPI
  VFWDFEXPORT(WdfDriverGetRegistryPath)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PDRIVER_OBJECT
  NTAPI
  VFWDFEXPORT(WdfDriverWdmGetDriverObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDriverOpenParametersRegistryKey)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver,
      _In_
      ACCESS_MASK DesiredAccess,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES KeyAttributes,
      _Out_
      WDFKEY* Key
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDRIVER
  NTAPI
  VFWDFEXPORT(WdfWdmDriverGetWdfDriverHandle)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PDRIVER_OBJECT DriverObject
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDriverRegisterTraceInfo)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PDRIVER_OBJECT DriverObject,
      _In_
      PFN_WDF_TRACE_CALLBACK EvtTraceCallback,
      _In_
      PVOID ControlBlock
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDriverRetrieveVersionString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver,
      _In_
      WDFSTRING String
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfDriverIsVersionAvailable)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver,
      _In_
      PWDF_DRIVER_VERSION_AVAILABLE_PARAMS VersionAvailableParams
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL + 1)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDriverErrorReportApiMissing)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver,
      _In_opt_
      PCWSTR FrameworkExtensionName,
      _In_
      ULONG ApiIndex,
      _In_
      BOOLEAN DoesApiReturnNtstatus
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDriverOpenPersistentStateRegistryKey)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver,
      _In_
      ACCESS_MASK DesiredAccess,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES KeyAttributes,
      _Out_
      WDFKEY* Key
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PDEVICE_OBJECT
  NTAPI
  VFWDFEXPORT(WdfFdoInitWdmGetPhysicalDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfFdoInitOpenRegistryKey)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      ULONG DeviceInstanceKeyType,
      _In_
      ACCESS_MASK DesiredAccess,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES KeyAttributes,
      _Out_
      WDFKEY* Key
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfFdoInitQueryProperty)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      DEVICE_REGISTRY_PROPERTY DeviceProperty,
      _In_
      ULONG BufferLength,
      _Out_writes_bytes_all_opt_(BufferLength)
      PVOID PropertyBuffer,
      _Out_
      PULONG ResultLength
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfFdoInitAllocAndQueryProperty)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      DEVICE_REGISTRY_PROPERTY DeviceProperty,
      _In_
      _Strict_type_match_
      POOL_TYPE PoolType,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
      _Out_
      WDFMEMORY* PropertyMemory
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfFdoInitQueryPropertyEx)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
      _In_
      ULONG BufferLength,
      _Out_
      PVOID PropertyBuffer,
      _Out_
      PULONG ResultLength,
      _Out_
      PDEVPROPTYPE Type
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_DEVICE_PROPERTY_DATA DeviceProperty,
      _In_
      _Strict_type_match_
      POOL_TYPE PoolType,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
      _Out_
      WDFMEMORY* PropertyMemory,
      _Out_
      PDEVPROPTYPE Type
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfFdoInitSetEventCallbacks)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_FDO_EVENT_CALLBACKS FdoEventCallbacks
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfFdoInitSetFilter)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfFdoInitSetDefaultChildListConfig)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _Inout_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_CHILD_LIST_CONFIG Config,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES DefaultChildListAttributes
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfFdoQueryForInterface)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Fdo,
      _In_
      LPCGUID InterfaceType,
      _Out_
      PINTERFACE Interface,
      _In_
      USHORT Size,
      _In_
      USHORT Version,
      _In_opt_
      PVOID InterfaceSpecificData
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFCHILDLIST
  NTAPI
  VFWDFEXPORT(WdfFdoGetDefaultChildList)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Fdo
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfFdoAddStaticChild)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Fdo,
      _In_
      WDFDEVICE Child
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfFdoLockStaticChildListForIteration)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Fdo
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfFdoRetrieveNextStaticChild)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Fdo,
      _In_opt_
      WDFDEVICE PreviousChild,
      _In_
      ULONG Flags
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfFdoUnlockStaticChildListFromIteration)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Fdo
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  PUNICODE_STRING
  NTAPI
  VFWDFEXPORT(WdfFileObjectGetFileName)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFFILEOBJECT FileObject
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfFileObjectGetFlags)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFFILEOBJECT FileObject
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfFileObjectGetDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFFILEOBJECT FileObject
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfFileObjectGetInitiatorProcessId)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFFILEOBJECT FileObject
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PFILE_OBJECT
  NTAPI
  VFWDFEXPORT(WdfFileObjectWdmGetFileObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFFILEOBJECT FileObject
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfInterruptCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_INTERRUPT_CONFIG Configuration,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFINTERRUPT* Interrupt
      );
  
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfInterruptQueueDpcForIsr)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt
      );
  
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfInterruptQueueWorkItemForIsr)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfInterruptSynchronize)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt,
      _In_
      PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
      _In_
      WDFCONTEXT Context
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL + 1)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptAcquireLock)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_not_held_(_Curr_)
      _Acquires_lock_(_Curr_)
      WDFINTERRUPT Interrupt
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL + 1)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptReleaseLock)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_held_(_Curr_)
      _Releases_lock_(_Curr_)
      WDFINTERRUPT Interrupt
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptEnable)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptDisable)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt
      );
  
  _Must_inspect_result_
  WDFAPI
  PKINTERRUPT
  NTAPI
  VFWDFEXPORT(WdfInterruptWdmGetInterrupt)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptGetInfo)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt,
      _Out_
      PWDF_INTERRUPT_INFO Info
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptSetPolicy)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt,
      _In_
      WDF_INTERRUPT_POLICY Policy,
      _In_
      WDF_INTERRUPT_PRIORITY Priority,
      _In_
      KAFFINITY TargetProcessorSet
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptSetExtendedPolicy)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt,
      _In_
      PWDF_INTERRUPT_EXTENDED_POLICY PolicyAndGroup
      );
  
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfInterruptGetDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt
      );
  
  _Must_inspect_result_
  _Post_satisfies_(return == 1 || return == 0)
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfInterruptTryToAcquireLock)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_not_held_(_Curr_)
      _When_(return!=0, _Acquires_lock_(_Curr_))
      WDFINTERRUPT Interrupt
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptReportActive)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfInterruptReportInactive)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFINTERRUPT Interrupt
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoQueueCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_IO_QUEUE_CONFIG Config,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES QueueAttributes,
      _Out_opt_
      WDFQUEUE* Queue
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDF_IO_QUEUE_STATE
  NTAPI
  VFWDFEXPORT(WdfIoQueueGetState)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _Out_opt_
      PULONG QueueRequests,
      _Out_opt_
      PULONG DriverRequests
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueueStart)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueueStop)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _When_(Context != 0, _In_)
      _When_(Context == 0, _In_opt_)
      PFN_WDF_IO_QUEUE_STATE StopComplete,
      _When_(StopComplete != 0, _In_)
      _When_(StopComplete == 0, _In_opt_)
      WDFCONTEXT Context
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueueStopSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfIoQueueGetDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoQueueRetrieveNextRequest)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _Out_
      WDFREQUEST* OutRequest
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoQueueRetrieveRequestByFileObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _In_
      WDFFILEOBJECT FileObject,
      _Out_
      WDFREQUEST* OutRequest
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoQueueFindRequest)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _In_opt_
      WDFREQUEST FoundRequest,
      _In_opt_
      WDFFILEOBJECT FileObject,
      _Inout_opt_
      PWDF_REQUEST_PARAMETERS Parameters,
      _Out_
      WDFREQUEST* OutRequest
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoQueueRetrieveFoundRequest)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _In_
      WDFREQUEST FoundRequest,
      _Out_
      WDFREQUEST* OutRequest
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueueDrainSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueueDrain)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _When_(Context != 0, _In_)
      _When_(Context == 0, _In_opt_)
      PFN_WDF_IO_QUEUE_STATE DrainComplete,
      _When_(DrainComplete != 0, _In_)
      _When_(DrainComplete == 0, _In_opt_)
      WDFCONTEXT Context
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueuePurgeSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueuePurge)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _When_(Context != 0, _In_)
      _When_(Context == 0, _In_opt_)
      PFN_WDF_IO_QUEUE_STATE PurgeComplete,
      _When_(PurgeComplete != 0, _In_)
      _When_(PurgeComplete == 0, _In_opt_)
      WDFCONTEXT Context
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoQueueReadyNotify)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _In_opt_
      PFN_WDF_IO_QUEUE_STATE QueueReady,
      _In_opt_
      WDFCONTEXT Context
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoQueueAssignForwardProgressPolicy)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _In_
      PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY ForwardProgressPolicy
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueueStopAndPurge)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue,
      _When_(Context != 0, _In_)
      _When_(Context == 0, _In_opt_)
      PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
      _When_(StopAndPurgeComplete != 0, _In_)
      _When_(StopAndPurgeComplete == 0, _In_opt_)
      WDFCONTEXT Context
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoQueueStopAndPurgeSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFQUEUE Queue
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES IoTargetAttributes,
      _Out_
      WDFIOTARGET* IoTarget
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetOpen)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      PWDF_IO_TARGET_OPEN_PARAMS OpenParams
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoTargetCloseForQueryRemove)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoTargetClose)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetStart)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _When_(Action == 3, _IRQL_requires_max_(DISPATCH_LEVEL))
  _When_(Action == 0 || Action == 1 || Action == 2, _IRQL_requires_max_(PASSIVE_LEVEL))
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoTargetStop)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      _Strict_type_match_
      WDF_IO_TARGET_SENT_IO_ACTION Action
      );
  
  _When_(Action == 2, _IRQL_requires_max_(DISPATCH_LEVEL))
  _When_(Action == 0 || Action == 1, _IRQL_requires_max_(PASSIVE_LEVEL))
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoTargetPurge)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      _Strict_type_match_
      WDF_IO_TARGET_PURGE_IO_ACTION Action
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDF_IO_TARGET_STATE
  NTAPI
  VFWDFEXPORT(WdfIoTargetGetState)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfIoTargetGetDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetQueryTargetProperty)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      DEVICE_REGISTRY_PROPERTY DeviceProperty,
      _In_
      ULONG BufferLength,
      _When_(BufferLength != 0, _Out_writes_bytes_to_opt_(BufferLength, *ResultLength))
      _When_(BufferLength == 0, _Out_opt_)
      PVOID PropertyBuffer,
      _Deref_out_range_(<=,BufferLength)
      PULONG ResultLength
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetAllocAndQueryTargetProperty)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      DEVICE_REGISTRY_PROPERTY DeviceProperty,
      _In_
      _Strict_type_match_
      POOL_TYPE PoolType,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
      _Out_
      WDFMEMORY* PropertyMemory
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetQueryForInterface)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      LPCGUID InterfaceType,
      _Out_
      PINTERFACE Interface,
      _In_
      USHORT Size,
      _In_
      USHORT Version,
      _In_opt_
      PVOID InterfaceSpecificData
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PDEVICE_OBJECT
  NTAPI
  VFWDFEXPORT(WdfIoTargetWdmGetTargetDeviceObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PDEVICE_OBJECT
  NTAPI
  VFWDFEXPORT(WdfIoTargetWdmGetTargetPhysicalDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PFILE_OBJECT
  NTAPI
  VFWDFEXPORT(WdfIoTargetWdmGetTargetFileObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  HANDLE
  NTAPI
  VFWDFEXPORT(WdfIoTargetWdmGetTargetFileHandle)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetSendReadSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR OutputBuffer,
      _In_opt_
      PLONGLONG DeviceOffset,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _Out_opt_
      PULONG_PTR BytesRead
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetFormatRequestForRead)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      WDFREQUEST Request,
      _In_opt_
      WDFMEMORY OutputBuffer,
      _In_opt_
      PWDFMEMORY_OFFSET OutputBufferOffset,
      _In_opt_
      PLONGLONG DeviceOffset
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetSendWriteSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR InputBuffer,
      _In_opt_
      PLONGLONG DeviceOffset,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _Out_opt_
      PULONG_PTR BytesWritten
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetFormatRequestForWrite)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      WDFREQUEST Request,
      _In_opt_
      WDFMEMORY InputBuffer,
      _In_opt_
      PWDFMEMORY_OFFSET InputBufferOffset,
      _In_opt_
      PLONGLONG DeviceOffset
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetSendIoctlSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_opt_
      WDFREQUEST Request,
      _In_
      ULONG IoctlCode,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR InputBuffer,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR OutputBuffer,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _Out_opt_
      PULONG_PTR BytesReturned
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetFormatRequestForIoctl)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      WDFREQUEST Request,
      _In_
      ULONG IoctlCode,
      _In_opt_
      WDFMEMORY InputBuffer,
      _In_opt_
      PWDFMEMORY_OFFSET InputBufferOffset,
      _In_opt_
      WDFMEMORY OutputBuffer,
      _In_opt_
      PWDFMEMORY_OFFSET OutputBufferOffset
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetSendInternalIoctlSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_opt_
      WDFREQUEST Request,
      _In_
      ULONG IoctlCode,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR InputBuffer,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR OutputBuffer,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _Out_opt_
      PULONG_PTR BytesReturned
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetFormatRequestForInternalIoctl)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      WDFREQUEST Request,
      _In_
      ULONG IoctlCode,
      _In_opt_
      WDFMEMORY InputBuffer,
      _In_opt_
      PWDFMEMORY_OFFSET InputBufferOffset,
      _In_opt_
      WDFMEMORY OutputBuffer,
      _In_opt_
      PWDFMEMORY_OFFSET OutputBufferOffset
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetSendInternalIoctlOthersSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_opt_
      WDFREQUEST Request,
      _In_
      ULONG IoctlCode,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR OtherArg1,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR OtherArg2,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR OtherArg4,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _Out_opt_
      PULONG_PTR BytesReturned
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetFormatRequestForInternalIoctlOthers)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      WDFREQUEST Request,
      _In_
      ULONG IoctlCode,
      _In_opt_
      WDFMEMORY OtherArg1,
      _In_opt_
      PWDFMEMORY_OFFSET OtherArg1Offset,
      _In_opt_
      WDFMEMORY OtherArg2,
      _In_opt_
      PWDFMEMORY_OFFSET OtherArg2Offset,
      _In_opt_
      WDFMEMORY OtherArg4,
      _In_opt_
      PWDFMEMORY_OFFSET OtherArg4Offset
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIOTARGET IoTarget,
      _In_
      WDFQUEUE Queue
      );
  
  _Must_inspect_result_
  _When_(PoolType == 1 || PoolType == 257, _IRQL_requires_max_(APC_LEVEL))
  _When_(PoolType == 0 || PoolType == 256 || PoolType == 512, _IRQL_requires_max_(DISPATCH_LEVEL))
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfMemoryCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _In_
      _Strict_type_match_
      POOL_TYPE PoolType,
      _In_opt_
      ULONG PoolTag,
      _In_
      _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
      size_t BufferSize,
      _Out_
      WDFMEMORY* Memory,
      _Outptr_opt_result_bytebuffer_(BufferSize)
      PVOID* Buffer
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfMemoryCreatePreallocated)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _In_ __drv_aliasesMem
      PVOID Buffer,
      _In_
      _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
      size_t BufferSize,
      _Out_
      WDFMEMORY* Memory
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PVOID
  NTAPI
  VFWDFEXPORT(WdfMemoryGetBuffer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFMEMORY Memory,
      _Out_opt_
      size_t* BufferSize
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfMemoryAssignBuffer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFMEMORY Memory,
      _Pre_notnull_ _Pre_writable_byte_size_(BufferSize)
      PVOID Buffer,
      _In_
      _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
      size_t BufferSize
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfMemoryCopyToBuffer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFMEMORY SourceMemory,
      _In_
      size_t SourceOffset,
      _Out_writes_bytes_( NumBytesToCopyTo )
      PVOID Buffer,
      _In_
      _When_(NumBytesToCopyTo == 0, __drv_reportError(NumBytesToCopyTo cannot be zero))
      size_t NumBytesToCopyTo
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfMemoryCopyFromBuffer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFMEMORY DestinationMemory,
      _In_
      size_t DestinationOffset,
      _In_
      PVOID Buffer,
      _In_
      _When_(NumBytesToCopyFrom == 0, __drv_reportError(NumBytesToCopyFrom cannot be zero))
      size_t NumBytesToCopyFrom
      );
  
  _Must_inspect_result_
  _When_(PoolType == 1 || PoolType == 257, _IRQL_requires_max_(APC_LEVEL))
  _When_(PoolType == 0 || PoolType == 256, _IRQL_requires_max_(DISPATCH_LEVEL))
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfLookasideListCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
      _In_
      _When_(BufferSize == 0, __drv_reportError(BufferSize cannot be zero))
      size_t BufferSize,
      _In_
      _Strict_type_match_
      POOL_TYPE PoolType,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
      _In_opt_
      ULONG PoolTag,
      _Out_
      WDFLOOKASIDE* Lookaside
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfMemoryCreateFromLookaside)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFLOOKASIDE Lookaside,
      _Out_
      WDFMEMORY* Memory
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceMiniportCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _In_
      PDEVICE_OBJECT DeviceObject,
      _In_opt_
      PDEVICE_OBJECT AttachedDeviceObject,
      _In_opt_
      PDEVICE_OBJECT Pdo,
      _Out_
      WDFDEVICE* Device
      );
  
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfDriverMiniportUnload)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDRIVER Driver
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL+1)
  WDFAPI
  PVOID
  FASTCALL
  VFWDFEXPORT(WdfObjectGetTypedContextWorker)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFOBJECT Handle,
      _In_
      PCWDF_OBJECT_CONTEXT_TYPE_INFO TypeInfo
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfObjectAllocateContext)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFOBJECT Handle,
      _In_
      PWDF_OBJECT_ATTRIBUTES ContextAttributes,
      _Outptr_opt_
      PVOID* Context
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL+1)
  WDFAPI
  WDFOBJECT
  FASTCALL
  VFWDFEXPORT(WdfObjectContextGetObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PVOID ContextPointer
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfObjectReferenceActual)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFOBJECT Handle,
      _In_opt_
      PVOID Tag,
      _In_
      LONG Line,
      _In_z_
      PCCH File
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfObjectDereferenceActual)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFOBJECT Handle,
      _In_opt_
      PVOID Tag,
      _In_
      LONG Line,
      _In_z_
      PCCH File
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfObjectCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFOBJECT* Object
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfObjectDelete)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFOBJECT Object
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfObjectQuery)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFOBJECT Object,
      _In_
      CONST GUID* Guid,
      _In_
      ULONG QueryBufferLength,
      _Out_writes_bytes_(QueryBufferLength)
      PVOID QueryBuffer
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  PWDFDEVICE_INIT
  NTAPI
  VFWDFEXPORT(WdfPdoInitAllocate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE ParentDevice
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfPdoInitSetEventCallbacks)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PWDF_PDO_EVENT_CALLBACKS DispatchTable
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoInitAssignDeviceID)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PCUNICODE_STRING DeviceID
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoInitAssignInstanceID)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PCUNICODE_STRING InstanceID
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoInitAddHardwareID)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PCUNICODE_STRING HardwareID
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoInitAddCompatibleID)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PCUNICODE_STRING CompatibleID
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoInitAssignContainerID)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PCUNICODE_STRING ContainerID
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoInitAddDeviceText)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      PCUNICODE_STRING DeviceDescription,
      _In_
      PCUNICODE_STRING DeviceLocation,
      _In_
      LCID LocaleId
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfPdoInitSetDefaultLocale)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      LCID LocaleId
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoInitAssignRawDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit,
      _In_
      CONST GUID* DeviceClassGuid
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfPdoInitAllowForwardingRequestToParent)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoMarkMissing)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfPdoRequestEject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfPdoGetParent)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoRetrieveIdentificationDescription)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _Inout_
      PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER IdentificationDescription
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoRetrieveAddressDescription)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _Inout_
      PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoUpdateAddressDescription)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _Inout_
      PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER AddressDescription
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfPdoAddEjectionRelationsPhysicalDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PDEVICE_OBJECT PhysicalDevice
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfPdoRemoveEjectionRelationsPhysicalDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PDEVICE_OBJECT PhysicalDevice
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfPdoClearEjectionRelationsDevices)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfPdoInitRemovePowerDependencyOnParent)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDFDEVICE_INIT DeviceInit
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfDeviceAddQueryInterface)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_QUERY_INTERFACE_CONFIG InterfaceConfig
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryOpenKey)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      WDFKEY ParentKey,
      _In_
      PCUNICODE_STRING KeyName,
      _In_
      ACCESS_MASK DesiredAccess,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES KeyAttributes,
      _Out_
      WDFKEY* Key
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryCreateKey)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      WDFKEY ParentKey,
      _In_
      PCUNICODE_STRING KeyName,
      _In_
      ACCESS_MASK DesiredAccess,
      _In_
      ULONG CreateOptions,
      _Out_opt_
      PULONG CreateDisposition,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES KeyAttributes,
      _Out_
      WDFKEY* Key
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRegistryClose)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  HANDLE
  NTAPI
  VFWDFEXPORT(WdfRegistryWdmGetHandle)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryRemoveKey)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryRemoveValue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryQueryValue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      ULONG ValueLength,
      _Out_writes_bytes_opt_( ValueLength)
      PVOID Value,
      _Out_opt_
      PULONG ValueLengthQueried,
      _Out_opt_
      PULONG ValueType
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryQueryMemory)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      _Strict_type_match_
      POOL_TYPE PoolType,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
      _Out_
      WDFMEMORY* Memory,
      _Out_opt_
      PULONG ValueType
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryQueryMultiString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES StringsAttributes,
      _In_
      WDFCOLLECTION Collection
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryQueryUnicodeString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _Out_opt_
      PUSHORT ValueByteLength,
      _Inout_opt_
      PUNICODE_STRING Value
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryQueryString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      WDFSTRING String
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryQueryULong)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _Out_
      PULONG Value
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryAssignValue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      ULONG ValueType,
      _In_
      ULONG ValueLength,
      _In_reads_( ValueLength)
      PVOID Value
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryAssignMemory)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      ULONG ValueType,
      _In_
      WDFMEMORY Memory,
      _In_opt_
      PWDFMEMORY_OFFSET MemoryOffsets
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryAssignMultiString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      WDFCOLLECTION StringsCollection
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryAssignUnicodeString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      PCUNICODE_STRING Value
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryAssignString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      WDFSTRING String
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRegistryAssignULong)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFKEY Key,
      _In_
      PCUNICODE_STRING ValueName,
      _In_
      ULONG Value
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES RequestAttributes,
      _In_opt_
      WDFIOTARGET IoTarget,
      _Out_
      WDFREQUEST* Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfRequestGetRequestorProcessId)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestCreateFromIrp)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES RequestAttributes,
      _In_
      PIRP Irp,
      _In_
      BOOLEAN RequestFreesIrp,
      _Out_
      WDFREQUEST* Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestReuse)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      PWDF_REQUEST_REUSE_PARAMS ReuseParams
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestChangeTarget)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      WDFIOTARGET IoTarget
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestFormatRequestUsingCurrentType)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestWdmFormatUsingStackLocation)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      PIO_STACK_LOCATION Stack
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  _When_(Options->Flags & WDF_REQUEST_SEND_OPTION_SYNCHRONOUS == 0, _Must_inspect_result_)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfRequestSend)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      WDFIOTARGET Target,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS Options
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestGetStatus)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestMarkCancelable)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      PFN_WDF_REQUEST_CANCEL EvtRequestCancel
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestMarkCancelableEx)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      PFN_WDF_REQUEST_CANCEL EvtRequestCancel
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestUnmarkCancelable)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfRequestIsCanceled)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfRequestCancelSentRequest)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(APC_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfRequestIsFrom32BitProcess)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestSetCompletionRoutine)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_opt_
      PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine,
      _In_opt_ __drv_aliasesMem
      WDFCONTEXT CompletionContext
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestGetCompletionParams)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _Out_
      PWDF_REQUEST_COMPLETION_PARAMS Params
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestAllocateTimer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestComplete)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      NTSTATUS Status
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestCompleteWithPriorityBoost)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      NTSTATUS Status,
      _In_
      CCHAR PriorityBoost
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestCompleteWithInformation)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      NTSTATUS Status,
      _In_
      ULONG_PTR Information
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestGetParameters)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _Out_
      PWDF_REQUEST_PARAMETERS Parameters
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRetrieveInputMemory)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _Out_
      WDFMEMORY* Memory
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRetrieveOutputMemory)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _Out_
      WDFMEMORY* Memory
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRetrieveInputBuffer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      size_t MinimumRequiredLength,
      _Outptr_result_bytebuffer_(*Length)
      PVOID* Buffer,
      _Out_opt_
      size_t* Length
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRetrieveOutputBuffer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      size_t MinimumRequiredSize,
      _Outptr_result_bytebuffer_(*Length)
      PVOID* Buffer,
      _Out_opt_
      size_t* Length
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRetrieveInputWdmMdl)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _Outptr_
      PMDL* Mdl
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRetrieveOutputWdmMdl)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _Outptr_
      PMDL* Mdl
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRetrieveUnsafeUserInputBuffer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      size_t MinimumRequiredLength,
      _Outptr_result_bytebuffer_maybenull_(*Length)
      PVOID* InputBuffer,
      _Out_opt_
      size_t* Length
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRetrieveUnsafeUserOutputBuffer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      size_t MinimumRequiredLength,
      _Outptr_result_bytebuffer_maybenull_(*Length)
      PVOID* OutputBuffer,
      _Out_opt_
      size_t* Length
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestSetInformation)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      ULONG_PTR Information
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG_PTR
  NTAPI
  VFWDFEXPORT(WdfRequestGetInformation)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFFILEOBJECT
  NTAPI
  VFWDFEXPORT(WdfRequestGetFileObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestProbeAndLockUserBufferForRead)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_reads_bytes_(Length)
      PVOID Buffer,
      _In_
      size_t Length,
      _Out_
      WDFMEMORY* MemoryObject
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestProbeAndLockUserBufferForWrite)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_reads_bytes_(Length)
      PVOID Buffer,
      _In_
      size_t Length,
      _Out_
      WDFMEMORY* MemoryObject
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  KPROCESSOR_MODE
  NTAPI
  VFWDFEXPORT(WdfRequestGetRequestorMode)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestForwardToIoQueue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      WDFQUEUE DestinationQueue
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFQUEUE
  NTAPI
  VFWDFEXPORT(WdfRequestGetIoQueue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestRequeue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfRequestStopAcknowledge)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      BOOLEAN Requeue
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PIRP
  NTAPI
  VFWDFEXPORT(WdfRequestWdmGetIrp)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfRequestIsReserved)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfRequestForwardToParentDeviceIoQueue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFREQUEST Request,
      _In_
      WDFQUEUE ParentDeviceQueue,
      _In_
      PWDF_REQUEST_FORWARD_OPTIONS ForwardOptions
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoResourceRequirementsListSetSlotNumber)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList,
      _In_
      ULONG SlotNumber
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoResourceRequirementsListSetInterfaceType)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList,
      _In_
      _Strict_type_match_
      INTERFACE_TYPE InterfaceType
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoResourceRequirementsListAppendIoResList)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList,
      _In_
      WDFIORESLIST IoResList
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoResourceRequirementsListInsertIoResList)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList,
      _In_
      WDFIORESLIST IoResList,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfIoResourceRequirementsListGetCount)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFIORESLIST
  NTAPI
  VFWDFEXPORT(WdfIoResourceRequirementsListGetIoResList)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoResourceRequirementsListRemove)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoResourceRequirementsListRemoveByIoResList)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList,
      _In_
      WDFIORESLIST IoResList
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoResourceListCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESREQLIST RequirementsList,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFIORESLIST* ResourceList
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoResourceListAppendDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESLIST ResourceList,
      _In_
      PIO_RESOURCE_DESCRIPTOR Descriptor
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfIoResourceListInsertDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESLIST ResourceList,
      _In_
      PIO_RESOURCE_DESCRIPTOR Descriptor,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoResourceListUpdateDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESLIST ResourceList,
      _In_
      PIO_RESOURCE_DESCRIPTOR Descriptor,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfIoResourceListGetCount)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESLIST ResourceList
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PIO_RESOURCE_DESCRIPTOR
  NTAPI
  VFWDFEXPORT(WdfIoResourceListGetDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESLIST ResourceList,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoResourceListRemove)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESLIST ResourceList,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfIoResourceListRemoveByDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFIORESLIST ResourceList,
      _In_
      PIO_RESOURCE_DESCRIPTOR Descriptor
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCmResourceListAppendDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCMRESLIST List,
      _In_
      PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfCmResourceListInsertDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCMRESLIST List,
      _In_
      PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONG
  NTAPI
  VFWDFEXPORT(WdfCmResourceListGetCount)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCMRESLIST List
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  PCM_PARTIAL_RESOURCE_DESCRIPTOR
  NTAPI
  VFWDFEXPORT(WdfCmResourceListGetDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCMRESLIST List,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCmResourceListRemove)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCMRESLIST List,
      _In_
      ULONG Index
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfCmResourceListRemoveByDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFCMRESLIST List,
      _In_
      PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfStringCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PCUNICODE_STRING UnicodeString,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES StringAttributes,
      _Out_
      WDFSTRING* String
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfStringGetUnicodeString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFSTRING String,
      _Out_
      PUNICODE_STRING UnicodeString
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfObjectAcquireLock)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_not_held_(_Curr_)
      _Acquires_lock_(_Curr_)
      WDFOBJECT Object
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfObjectReleaseLock)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_held_(_Curr_)
      _Releases_lock_(_Curr_)
      WDFOBJECT Object
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfWaitLockCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES LockAttributes,
      _Out_
      WDFWAITLOCK* Lock
      );
  
  _When_(Timeout == NULL, _IRQL_requires_max_(PASSIVE_LEVEL))
  _When_(Timeout != NULL && *Timeout == 0, _IRQL_requires_max_(DISPATCH_LEVEL))
  _When_(Timeout != NULL && *Timeout != 0, _IRQL_requires_max_(PASSIVE_LEVEL))
  _Always_(_When_(Timeout == NULL, _Acquires_lock_(Lock)))
  _When_(Timeout != NULL && return == STATUS_SUCCESS, _Acquires_lock_(Lock))
  _When_(Timeout != NULL, _Must_inspect_result_)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfWaitLockAcquire)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_not_held_(_Curr_)
      WDFWAITLOCK Lock,
      _In_opt_
      PLONGLONG Timeout
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfWaitLockRelease)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_held_(_Curr_)
      _Releases_lock_(_Curr_)
      WDFWAITLOCK Lock
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfSpinLockCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
      _Out_
      WDFSPINLOCK* SpinLock
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  _IRQL_raises_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfSpinLockAcquire)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_not_held_(_Curr_)
      _Acquires_lock_(_Curr_)
      _IRQL_saves_
      WDFSPINLOCK SpinLock
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  _IRQL_requires_min_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfSpinLockRelease)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      _Requires_lock_held_(_Curr_)
      _Releases_lock_(_Curr_)
      _IRQL_restores_
      WDFSPINLOCK SpinLock
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfTimerCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDF_TIMER_CONFIG Config,
      _In_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFTIMER* Timer
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfTimerStart)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFTIMER Timer,
      _In_
      LONGLONG DueTime
      );
  
  _When_(Wait == __true, _IRQL_requires_max_(PASSIVE_LEVEL))
  _When_(Wait == __false, _IRQL_requires_max_(DISPATCH_LEVEL))
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfTimerStop)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFTIMER Timer,
      _In_
      BOOLEAN Wait
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFOBJECT
  NTAPI
  VFWDFEXPORT(WdfTimerGetParentObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFTIMER Timer
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFUSBDEVICE* UsbDevice
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceCreateWithParameters)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_USB_DEVICE_CREATE_CONFIG Config,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFUSBDEVICE* UsbDevice
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceRetrieveInformation)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _Out_
      PWDF_USB_DEVICE_INFORMATION Information
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _Out_
      PUSB_DEVICE_DESCRIPTOR UsbDeviceDescriptor
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _Out_writes_bytes_to_opt_(*ConfigDescriptorLength,*ConfigDescriptorLength)
      PVOID ConfigDescriptor,
      _Inout_
      PUSHORT ConfigDescriptorLength
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceQueryString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _Out_writes_opt_(*NumCharacters)
      PUSHORT String,
      _Inout_
      PUSHORT NumCharacters,
      _In_
      UCHAR StringIndex,
      _In_opt_
      USHORT LangID
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES StringMemoryAttributes,
      _Out_
      WDFMEMORY* StringMemory,
      _Out_opt_
      PUSHORT NumCharacters,
      _In_
      UCHAR StringIndex,
      _In_opt_
      USHORT LangID
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForString)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_
      WDFREQUEST Request,
      _In_
      WDFMEMORY Memory,
      _In_opt_
      PWDFMEMORY_OFFSET Offset,
      _In_
      UCHAR StringIndex,
      _In_opt_
      USHORT LangID
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  UCHAR
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceSelectConfig)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES PipeAttributes,
      _Inout_
      PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS Params
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  USBD_CONFIGURATION_HANDLE
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceWdmGetConfigurationHandle)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceRetrieveCurrentFrameNumber)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _Out_
      PULONG CurrentFrameNumber
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _In_
      PWDF_USB_CONTROL_SETUP_PACKET SetupPacket,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
      _Out_opt_
      PULONG BytesTransferred
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_
      WDFREQUEST Request,
      _In_
      PWDF_USB_CONTROL_SETUP_PACKET SetupPacket,
      _In_opt_
      WDFMEMORY TransferMemory,
      _In_opt_
      PWDFMEMORY_OFFSET TransferOffset
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceIsConnectedSynchronous)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceCyclePortSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForCyclePort)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceSendUrbSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _In_reads_(_Inexpressible_("union bug in SAL"))
      PURB Urb
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForUrb)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_
      WDFREQUEST Request,
      _In_
      WDFMEMORY UrbMemory,
      _In_opt_
      PWDFMEMORY_OFFSET UrbMemoryOffset
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_
      CONST GUID* CapabilityType,
      _In_
      ULONG CapabilityBufferLength,
      _When_(CapabilityBufferLength == 0, _Out_opt_)
      _When_(CapabilityBufferLength != 0 && ResultLength == NULL, _Out_writes_bytes_(CapabilityBufferLength))
      _When_(CapabilityBufferLength != 0 && ResultLength != NULL, _Out_writes_bytes_to_opt_(CapabilityBufferLength, *ResultLength))
      PVOID CapabilityBuffer,
      _Out_opt_
      _When_(ResultLength != NULL,_Deref_out_range_(<=,CapabilityBufferLength))
      PULONG ResultLength
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceCreateUrb)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFMEMORY* UrbMemory,
      _Outptr_opt_result_bytebuffer_(sizeof(URB))
      PURB* Urb
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceCreateIsochUrb)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _In_
      ULONG NumberOfIsochPackets,
      _Out_
      WDFMEMORY* UrbMemory,
      _Outptr_opt_result_bytebuffer_(GET_ISO_URB_SIZE(NumberOfIsochPackets))
      PURB* Urb
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeGetInformation)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _Out_
      PWDF_USB_PIPE_INFORMATION PipeInformation
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeIsInEndpoint)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeIsOutEndpoint)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDF_USB_PIPE_TYPE
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeGetType)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeWriteSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
      _Out_opt_
      PULONG BytesWritten
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_
      WDFREQUEST Request,
      _In_opt_
      WDFMEMORY WriteMemory,
      _In_opt_
      PWDFMEMORY_OFFSET WriteOffset
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeReadSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _In_opt_
      PWDF_MEMORY_DESCRIPTOR MemoryDescriptor,
      _Out_opt_
      PULONG BytesRead
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForRead)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_
      WDFREQUEST Request,
      _In_opt_
      WDFMEMORY ReadMemory,
      _In_opt_
      PWDFMEMORY_OFFSET ReadOffset
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeConfigContinuousReader)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_
      PWDF_USB_CONTINUOUS_READER_CONFIG Config
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeAbortSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeResetSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForReset)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_
      WDFREQUEST Request
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeSendUrbSynchronously)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE Pipe,
      _In_opt_
      WDFREQUEST Request,
      _In_opt_
      PWDF_REQUEST_SEND_OPTIONS RequestOptions,
      _In_reads_(_Inexpressible_("union bug in SAL"))
      PURB Urb
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForUrb)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE PIPE,
      _In_
      WDFREQUEST Request,
      _In_
      WDFMEMORY UrbMemory,
      _In_opt_
      PWDFMEMORY_OFFSET UrbMemoryOffset
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BYTE
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceGetInterfaceNumber)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE UsbInterface
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BYTE
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceGetNumEndpoints)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE UsbInterface,
      _In_
      UCHAR SettingIndex
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceGetDescriptor)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE UsbInterface,
      _In_
      UCHAR SettingIndex,
      _Out_
      PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BYTE
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceGetNumSettings)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE UsbInterface
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceSelectSetting)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE UsbInterface,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES PipesAttributes,
      _In_
      PWDF_USB_INTERFACE_SELECT_SETTING_PARAMS Params
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceGetEndpointInformation)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE UsbInterface,
      _In_
      UCHAR SettingIndex,
      _In_
      UCHAR EndpointIndex,
      _Out_
      PWDF_USB_PIPE_INFORMATION EndpointInfo
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFUSBINTERFACE
  NTAPI
  VFWDFEXPORT(WdfUsbTargetDeviceGetInterface)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBDEVICE UsbDevice,
      _In_
      UCHAR InterfaceIndex
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BYTE
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE Interface
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BYTE
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE UsbInterface
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFUSBPIPE
  NTAPI
  VFWDFEXPORT(WdfUsbInterfaceGetConfiguredPipe)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBINTERFACE UsbInterface,
      _In_
      UCHAR PipeIndex,
      _Out_opt_
      PWDF_USB_PIPE_INFORMATION PipeInfo
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  USBD_PIPE_HANDLE
  NTAPI
  VFWDFEXPORT(WdfUsbTargetPipeWdmGetPipeHandle)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFUSBPIPE UsbPipe
      );
  
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfVerifierDbgBreakPoint)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals
      );
  
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfVerifierKeBugCheck)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      ULONG BugCheckCode,
      _In_
      ULONG_PTR BugCheckParameter1,
      _In_
      ULONG_PTR BugCheckParameter2,
      _In_
      ULONG_PTR BugCheckParameter3,
      _In_
      ULONG_PTR BugCheckParameter4
      );
  
  WDFAPI
  PVOID
  NTAPI
  VFWDFEXPORT(WdfGetTriageInfo)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfWmiProviderCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_WMI_PROVIDER_CONFIG WmiProviderConfig,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES ProviderAttributes,
      _Out_
      WDFWMIPROVIDER* WmiProvider
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfWmiProviderGetDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWMIPROVIDER WmiProvider
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  BOOLEAN
  NTAPI
  VFWDFEXPORT(WdfWmiProviderIsEnabled)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWMIPROVIDER WmiProvider,
      _In_
      WDF_WMI_PROVIDER_CONTROL ProviderControl
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  ULONGLONG
  NTAPI
  VFWDFEXPORT(WdfWmiProviderGetTracingHandle)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWMIPROVIDER WmiProvider
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfWmiInstanceCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFDEVICE Device,
      _In_
      PWDF_WMI_INSTANCE_CONFIG InstanceConfig,
      _In_opt_
      PWDF_OBJECT_ATTRIBUTES InstanceAttributes,
      _Out_opt_
      WDFWMIINSTANCE* Instance
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfWmiInstanceRegister)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWMIINSTANCE WmiInstance
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfWmiInstanceDeregister)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWMIINSTANCE WmiInstance
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFDEVICE
  NTAPI
  VFWDFEXPORT(WdfWmiInstanceGetDevice)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWMIINSTANCE WmiInstance
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFWMIPROVIDER
  NTAPI
  VFWDFEXPORT(WdfWmiInstanceGetProvider)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWMIINSTANCE WmiInstance
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(APC_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfWmiInstanceFireEvent)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWMIINSTANCE WmiInstance,
      _In_opt_
      ULONG EventDataSize,
      _In_reads_bytes_opt_(EventDataSize)
      PVOID EventData
      );
  
  _Must_inspect_result_
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  NTSTATUS
  NTAPI
  VFWDFEXPORT(WdfWorkItemCreate)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      PWDF_WORKITEM_CONFIG Config,
      _In_
      PWDF_OBJECT_ATTRIBUTES Attributes,
      _Out_
      WDFWORKITEM* WorkItem
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfWorkItemEnqueue)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWORKITEM WorkItem
      );
  
  _IRQL_requires_max_(DISPATCH_LEVEL)
  WDFAPI
  WDFOBJECT
  NTAPI
  VFWDFEXPORT(WdfWorkItemGetParentObject)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWORKITEM WorkItem
      );
  
  _IRQL_requires_max_(PASSIVE_LEVEL)
  WDFAPI
  VOID
  NTAPI
  VFWDFEXPORT(WdfWorkItemFlush)(
      _In_
      PWDF_DRIVER_GLOBALS DriverGlobals,
      _In_
      WDFWORKITEM WorkItem
      );
  
  
  #ifdef VF_FX_DYNAMICS_GENERATE_TABLE
  
  WDFVERSION VfWdfVersion = {
      sizeof(WDFVERSION),
      sizeof(WDFFUNCTIONS)/sizeof(PVOID),
      {
          VFWDFEXPORT(WdfChildListCreate),
          VFWDFEXPORT(WdfChildListGetDevice),
          VFWDFEXPORT(WdfChildListRetrievePdo),
          VFWDFEXPORT(WdfChildListRetrieveAddressDescription),
          VFWDFEXPORT(WdfChildListBeginScan),
          VFWDFEXPORT(WdfChildListEndScan),
          VFWDFEXPORT(WdfChildListBeginIteration),
          VFWDFEXPORT(WdfChildListRetrieveNextDevice),
          VFWDFEXPORT(WdfChildListEndIteration),
          VFWDFEXPORT(WdfChildListAddOrUpdateChildDescriptionAsPresent),
          VFWDFEXPORT(WdfChildListUpdateChildDescriptionAsMissing),
          VFWDFEXPORT(WdfChildListUpdateAllChildDescriptionsAsPresent),
          VFWDFEXPORT(WdfChildListRequestChildEject),
          VFWDFEXPORT(WdfCollectionCreate),
          VFWDFEXPORT(WdfCollectionGetCount),
          VFWDFEXPORT(WdfCollectionAdd),
          VFWDFEXPORT(WdfCollectionRemove),
          VFWDFEXPORT(WdfCollectionRemoveItem),
          VFWDFEXPORT(WdfCollectionGetItem),
          VFWDFEXPORT(WdfCollectionGetFirstItem),
          VFWDFEXPORT(WdfCollectionGetLastItem),
          VFWDFEXPORT(WdfCommonBufferCreate),
          VFWDFEXPORT(WdfCommonBufferGetAlignedVirtualAddress),
          VFWDFEXPORT(WdfCommonBufferGetAlignedLogicalAddress),
          VFWDFEXPORT(WdfCommonBufferGetLength),
          VFWDFEXPORT(WdfControlDeviceInitAllocate),
          VFWDFEXPORT(WdfControlDeviceInitSetShutdownNotification),
          VFWDFEXPORT(WdfControlFinishInitializing),
          VFWDFEXPORT(WdfDeviceGetDeviceState),
          VFWDFEXPORT(WdfDeviceSetDeviceState),
          VFWDFEXPORT(WdfWdmDeviceGetWdfDeviceHandle),
          VFWDFEXPORT(WdfDeviceWdmGetDeviceObject),
          VFWDFEXPORT(WdfDeviceWdmGetAttachedDevice),
          VFWDFEXPORT(WdfDeviceWdmGetPhysicalDevice),
          VFWDFEXPORT(WdfDeviceWdmDispatchPreprocessedIrp),
          VFWDFEXPORT(WdfDeviceAddDependentUsageDeviceObject),
          VFWDFEXPORT(WdfDeviceAddRemovalRelationsPhysicalDevice),
          VFWDFEXPORT(WdfDeviceRemoveRemovalRelationsPhysicalDevice),
          VFWDFEXPORT(WdfDeviceClearRemovalRelationsDevices),
          VFWDFEXPORT(WdfDeviceGetDriver),
          VFWDFEXPORT(WdfDeviceRetrieveDeviceName),
          VFWDFEXPORT(WdfDeviceAssignMofResourceName),
          VFWDFEXPORT(WdfDeviceGetIoTarget),
          VFWDFEXPORT(WdfDeviceGetDevicePnpState),
          VFWDFEXPORT(WdfDeviceGetDevicePowerState),
          VFWDFEXPORT(WdfDeviceGetDevicePowerPolicyState),
          VFWDFEXPORT(WdfDeviceAssignS0IdleSettings),
          VFWDFEXPORT(WdfDeviceAssignSxWakeSettings),
          VFWDFEXPORT(WdfDeviceOpenRegistryKey),
          VFWDFEXPORT(WdfDeviceSetSpecialFileSupport),
          VFWDFEXPORT(WdfDeviceSetCharacteristics),
          VFWDFEXPORT(WdfDeviceGetCharacteristics),
          VFWDFEXPORT(WdfDeviceGetAlignmentRequirement),
          VFWDFEXPORT(WdfDeviceSetAlignmentRequirement),
          VFWDFEXPORT(WdfDeviceInitFree),
          VFWDFEXPORT(WdfDeviceInitSetPnpPowerEventCallbacks),
          VFWDFEXPORT(WdfDeviceInitSetPowerPolicyEventCallbacks),
          VFWDFEXPORT(WdfDeviceInitSetPowerPolicyOwnership),
          VFWDFEXPORT(WdfDeviceInitRegisterPnpStateChangeCallback),
          VFWDFEXPORT(WdfDeviceInitRegisterPowerStateChangeCallback),
          VFWDFEXPORT(WdfDeviceInitRegisterPowerPolicyStateChangeCallback),
          VFWDFEXPORT(WdfDeviceInitSetIoType),
          VFWDFEXPORT(WdfDeviceInitSetExclusive),
          VFWDFEXPORT(WdfDeviceInitSetPowerNotPageable),
          VFWDFEXPORT(WdfDeviceInitSetPowerPageable),
          VFWDFEXPORT(WdfDeviceInitSetPowerInrush),
          VFWDFEXPORT(WdfDeviceInitSetDeviceType),
          VFWDFEXPORT(WdfDeviceInitAssignName),
          VFWDFEXPORT(WdfDeviceInitAssignSDDLString),
          VFWDFEXPORT(WdfDeviceInitSetDeviceClass),
          VFWDFEXPORT(WdfDeviceInitSetCharacteristics),
          VFWDFEXPORT(WdfDeviceInitSetFileObjectConfig),
          VFWDFEXPORT(WdfDeviceInitSetRequestAttributes),
          VFWDFEXPORT(WdfDeviceInitAssignWdmIrpPreprocessCallback),
          VFWDFEXPORT(WdfDeviceInitSetIoInCallerContextCallback),
          VFWDFEXPORT(WdfDeviceCreate),
          VFWDFEXPORT(WdfDeviceSetStaticStopRemove),
          VFWDFEXPORT(WdfDeviceCreateDeviceInterface),
          VFWDFEXPORT(WdfDeviceSetDeviceInterfaceState),
          VFWDFEXPORT(WdfDeviceRetrieveDeviceInterfaceString),
          VFWDFEXPORT(WdfDeviceCreateSymbolicLink),
          VFWDFEXPORT(WdfDeviceQueryProperty),
          VFWDFEXPORT(WdfDeviceAllocAndQueryProperty),
          VFWDFEXPORT(WdfDeviceSetPnpCapabilities),
          VFWDFEXPORT(WdfDeviceSetPowerCapabilities),
          VFWDFEXPORT(WdfDeviceSetBusInformationForChildren),
          VFWDFEXPORT(WdfDeviceIndicateWakeStatus),
          VFWDFEXPORT(WdfDeviceSetFailed),
          VFWDFEXPORT(WdfDeviceStopIdleNoTrack),
          VFWDFEXPORT(WdfDeviceResumeIdleNoTrack),
          VFWDFEXPORT(WdfDeviceGetFileObject),
          VFWDFEXPORT(WdfDeviceEnqueueRequest),
          VFWDFEXPORT(WdfDeviceGetDefaultQueue),
          VFWDFEXPORT(WdfDeviceConfigureRequestDispatching),
          VFWDFEXPORT(WdfDmaEnablerCreate),
          VFWDFEXPORT(WdfDmaEnablerGetMaximumLength),
          VFWDFEXPORT(WdfDmaEnablerGetMaximumScatterGatherElements),
          VFWDFEXPORT(WdfDmaEnablerSetMaximumScatterGatherElements),
          VFWDFEXPORT(WdfDmaTransactionCreate),
          VFWDFEXPORT(WdfDmaTransactionInitialize),
          VFWDFEXPORT(WdfDmaTransactionInitializeUsingRequest),
          VFWDFEXPORT(WdfDmaTransactionExecute),
          VFWDFEXPORT(WdfDmaTransactionRelease),
          VFWDFEXPORT(WdfDmaTransactionDmaCompleted),
          VFWDFEXPORT(WdfDmaTransactionDmaCompletedWithLength),
          VFWDFEXPORT(WdfDmaTransactionDmaCompletedFinal),
          VFWDFEXPORT(WdfDmaTransactionGetBytesTransferred),
          VFWDFEXPORT(WdfDmaTransactionSetMaximumLength),
          VFWDFEXPORT(WdfDmaTransactionGetRequest),
          VFWDFEXPORT(WdfDmaTransactionGetCurrentDmaTransferLength),
          VFWDFEXPORT(WdfDmaTransactionGetDevice),
          VFWDFEXPORT(WdfDpcCreate),
          VFWDFEXPORT(WdfDpcEnqueue),
          VFWDFEXPORT(WdfDpcCancel),
          VFWDFEXPORT(WdfDpcGetParentObject),
          VFWDFEXPORT(WdfDpcWdmGetDpc),
          VFWDFEXPORT(WdfDriverCreate),
          VFWDFEXPORT(WdfDriverGetRegistryPath),
          VFWDFEXPORT(WdfDriverWdmGetDriverObject),
          VFWDFEXPORT(WdfDriverOpenParametersRegistryKey),
          VFWDFEXPORT(WdfWdmDriverGetWdfDriverHandle),
          VFWDFEXPORT(WdfDriverRegisterTraceInfo),
          VFWDFEXPORT(WdfDriverRetrieveVersionString),
          VFWDFEXPORT(WdfDriverIsVersionAvailable),
          VFWDFEXPORT(WdfFdoInitWdmGetPhysicalDevice),
          VFWDFEXPORT(WdfFdoInitOpenRegistryKey),
          VFWDFEXPORT(WdfFdoInitQueryProperty),
          VFWDFEXPORT(WdfFdoInitAllocAndQueryProperty),
          VFWDFEXPORT(WdfFdoInitSetEventCallbacks),
          VFWDFEXPORT(WdfFdoInitSetFilter),
          VFWDFEXPORT(WdfFdoInitSetDefaultChildListConfig),
          VFWDFEXPORT(WdfFdoQueryForInterface),
          VFWDFEXPORT(WdfFdoGetDefaultChildList),
          VFWDFEXPORT(WdfFdoAddStaticChild),
          VFWDFEXPORT(WdfFdoLockStaticChildListForIteration),
          VFWDFEXPORT(WdfFdoRetrieveNextStaticChild),
          VFWDFEXPORT(WdfFdoUnlockStaticChildListFromIteration),
          VFWDFEXPORT(WdfFileObjectGetFileName),
          VFWDFEXPORT(WdfFileObjectGetFlags),
          VFWDFEXPORT(WdfFileObjectGetDevice),
          VFWDFEXPORT(WdfFileObjectWdmGetFileObject),
          VFWDFEXPORT(WdfInterruptCreate),
          VFWDFEXPORT(WdfInterruptQueueDpcForIsr),
          VFWDFEXPORT(WdfInterruptSynchronize),
          VFWDFEXPORT(WdfInterruptAcquireLock),
          VFWDFEXPORT(WdfInterruptReleaseLock),
          VFWDFEXPORT(WdfInterruptEnable),
          VFWDFEXPORT(WdfInterruptDisable),
          VFWDFEXPORT(WdfInterruptWdmGetInterrupt),
          VFWDFEXPORT(WdfInterruptGetInfo),
          VFWDFEXPORT(WdfInterruptSetPolicy),
          VFWDFEXPORT(WdfInterruptGetDevice),
          VFWDFEXPORT(WdfIoQueueCreate),
          VFWDFEXPORT(WdfIoQueueGetState),
          VFWDFEXPORT(WdfIoQueueStart),
          VFWDFEXPORT(WdfIoQueueStop),
          VFWDFEXPORT(WdfIoQueueStopSynchronously),
          VFWDFEXPORT(WdfIoQueueGetDevice),
          VFWDFEXPORT(WdfIoQueueRetrieveNextRequest),
          VFWDFEXPORT(WdfIoQueueRetrieveRequestByFileObject),
          VFWDFEXPORT(WdfIoQueueFindRequest),
          VFWDFEXPORT(WdfIoQueueRetrieveFoundRequest),
          VFWDFEXPORT(WdfIoQueueDrainSynchronously),
          VFWDFEXPORT(WdfIoQueueDrain),
          VFWDFEXPORT(WdfIoQueuePurgeSynchronously),
          VFWDFEXPORT(WdfIoQueuePurge),
          VFWDFEXPORT(WdfIoQueueReadyNotify),
          VFWDFEXPORT(WdfIoTargetCreate),
          VFWDFEXPORT(WdfIoTargetOpen),
          VFWDFEXPORT(WdfIoTargetCloseForQueryRemove),
          VFWDFEXPORT(WdfIoTargetClose),
          VFWDFEXPORT(WdfIoTargetStart),
          VFWDFEXPORT(WdfIoTargetStop),
          VFWDFEXPORT(WdfIoTargetGetState),
          VFWDFEXPORT(WdfIoTargetGetDevice),
          VFWDFEXPORT(WdfIoTargetQueryTargetProperty),
          VFWDFEXPORT(WdfIoTargetAllocAndQueryTargetProperty),
          VFWDFEXPORT(WdfIoTargetQueryForInterface),
          VFWDFEXPORT(WdfIoTargetWdmGetTargetDeviceObject),
          VFWDFEXPORT(WdfIoTargetWdmGetTargetPhysicalDevice),
          VFWDFEXPORT(WdfIoTargetWdmGetTargetFileObject),
          VFWDFEXPORT(WdfIoTargetWdmGetTargetFileHandle),
          VFWDFEXPORT(WdfIoTargetSendReadSynchronously),
          VFWDFEXPORT(WdfIoTargetFormatRequestForRead),
          VFWDFEXPORT(WdfIoTargetSendWriteSynchronously),
          VFWDFEXPORT(WdfIoTargetFormatRequestForWrite),
          VFWDFEXPORT(WdfIoTargetSendIoctlSynchronously),
          VFWDFEXPORT(WdfIoTargetFormatRequestForIoctl),
          VFWDFEXPORT(WdfIoTargetSendInternalIoctlSynchronously),
          VFWDFEXPORT(WdfIoTargetFormatRequestForInternalIoctl),
          VFWDFEXPORT(WdfIoTargetSendInternalIoctlOthersSynchronously),
          VFWDFEXPORT(WdfIoTargetFormatRequestForInternalIoctlOthers),
          VFWDFEXPORT(WdfMemoryCreate),
          VFWDFEXPORT(WdfMemoryCreatePreallocated),
          VFWDFEXPORT(WdfMemoryGetBuffer),
          VFWDFEXPORT(WdfMemoryAssignBuffer),
          VFWDFEXPORT(WdfMemoryCopyToBuffer),
          VFWDFEXPORT(WdfMemoryCopyFromBuffer),
          VFWDFEXPORT(WdfLookasideListCreate),
          VFWDFEXPORT(WdfMemoryCreateFromLookaside),
          VFWDFEXPORT(WdfDeviceMiniportCreate),
          VFWDFEXPORT(WdfDriverMiniportUnload),
          VFWDFEXPORT(WdfObjectGetTypedContextWorker),
          VFWDFEXPORT(WdfObjectAllocateContext),
          VFWDFEXPORT(WdfObjectContextGetObject),
          VFWDFEXPORT(WdfObjectReferenceActual),
          VFWDFEXPORT(WdfObjectDereferenceActual),
          VFWDFEXPORT(WdfObjectCreate),
          VFWDFEXPORT(WdfObjectDelete),
          VFWDFEXPORT(WdfObjectQuery),
          VFWDFEXPORT(WdfPdoInitAllocate),
          VFWDFEXPORT(WdfPdoInitSetEventCallbacks),
          VFWDFEXPORT(WdfPdoInitAssignDeviceID),
          VFWDFEXPORT(WdfPdoInitAssignInstanceID),
          VFWDFEXPORT(WdfPdoInitAddHardwareID),
          VFWDFEXPORT(WdfPdoInitAddCompatibleID),
          VFWDFEXPORT(WdfPdoInitAddDeviceText),
          VFWDFEXPORT(WdfPdoInitSetDefaultLocale),
          VFWDFEXPORT(WdfPdoInitAssignRawDevice),
          VFWDFEXPORT(WdfPdoMarkMissing),
          VFWDFEXPORT(WdfPdoRequestEject),
          VFWDFEXPORT(WdfPdoGetParent),
          VFWDFEXPORT(WdfPdoRetrieveIdentificationDescription),
          VFWDFEXPORT(WdfPdoRetrieveAddressDescription),
          VFWDFEXPORT(WdfPdoUpdateAddressDescription),
          VFWDFEXPORT(WdfPdoAddEjectionRelationsPhysicalDevice),
          VFWDFEXPORT(WdfPdoRemoveEjectionRelationsPhysicalDevice),
          VFWDFEXPORT(WdfPdoClearEjectionRelationsDevices),
          VFWDFEXPORT(WdfDeviceAddQueryInterface),
          VFWDFEXPORT(WdfRegistryOpenKey),
          VFWDFEXPORT(WdfRegistryCreateKey),
          VFWDFEXPORT(WdfRegistryClose),
          VFWDFEXPORT(WdfRegistryWdmGetHandle),
          VFWDFEXPORT(WdfRegistryRemoveKey),
          VFWDFEXPORT(WdfRegistryRemoveValue),
          VFWDFEXPORT(WdfRegistryQueryValue),
          VFWDFEXPORT(WdfRegistryQueryMemory),
          VFWDFEXPORT(WdfRegistryQueryMultiString),
          VFWDFEXPORT(WdfRegistryQueryUnicodeString),
          VFWDFEXPORT(WdfRegistryQueryString),
          VFWDFEXPORT(WdfRegistryQueryULong),
          VFWDFEXPORT(WdfRegistryAssignValue),
          VFWDFEXPORT(WdfRegistryAssignMemory),
          VFWDFEXPORT(WdfRegistryAssignMultiString),
          VFWDFEXPORT(WdfRegistryAssignUnicodeString),
          VFWDFEXPORT(WdfRegistryAssignString),
          VFWDFEXPORT(WdfRegistryAssignULong),
          VFWDFEXPORT(WdfRequestCreate),
          VFWDFEXPORT(WdfRequestCreateFromIrp),
          VFWDFEXPORT(WdfRequestReuse),
          VFWDFEXPORT(WdfRequestChangeTarget),
          VFWDFEXPORT(WdfRequestFormatRequestUsingCurrentType),
          VFWDFEXPORT(WdfRequestWdmFormatUsingStackLocation),
          VFWDFEXPORT(WdfRequestSend),
          VFWDFEXPORT(WdfRequestGetStatus),
          VFWDFEXPORT(WdfRequestMarkCancelable),
          VFWDFEXPORT(WdfRequestUnmarkCancelable),
          VFWDFEXPORT(WdfRequestIsCanceled),
          VFWDFEXPORT(WdfRequestCancelSentRequest),
          VFWDFEXPORT(WdfRequestIsFrom32BitProcess),
          VFWDFEXPORT(WdfRequestSetCompletionRoutine),
          VFWDFEXPORT(WdfRequestGetCompletionParams),
          VFWDFEXPORT(WdfRequestAllocateTimer),
          VFWDFEXPORT(WdfRequestComplete),
          VFWDFEXPORT(WdfRequestCompleteWithPriorityBoost),
          VFWDFEXPORT(WdfRequestCompleteWithInformation),
          VFWDFEXPORT(WdfRequestGetParameters),
          VFWDFEXPORT(WdfRequestRetrieveInputMemory),
          VFWDFEXPORT(WdfRequestRetrieveOutputMemory),
          VFWDFEXPORT(WdfRequestRetrieveInputBuffer),
          VFWDFEXPORT(WdfRequestRetrieveOutputBuffer),
          VFWDFEXPORT(WdfRequestRetrieveInputWdmMdl),
          VFWDFEXPORT(WdfRequestRetrieveOutputWdmMdl),
          VFWDFEXPORT(WdfRequestRetrieveUnsafeUserInputBuffer),
          VFWDFEXPORT(WdfRequestRetrieveUnsafeUserOutputBuffer),
          VFWDFEXPORT(WdfRequestSetInformation),
          VFWDFEXPORT(WdfRequestGetInformation),
          VFWDFEXPORT(WdfRequestGetFileObject),
          VFWDFEXPORT(WdfRequestProbeAndLockUserBufferForRead),
          VFWDFEXPORT(WdfRequestProbeAndLockUserBufferForWrite),
          VFWDFEXPORT(WdfRequestGetRequestorMode),
          VFWDFEXPORT(WdfRequestForwardToIoQueue),
          VFWDFEXPORT(WdfRequestGetIoQueue),
          VFWDFEXPORT(WdfRequestRequeue),
          VFWDFEXPORT(WdfRequestStopAcknowledge),
          VFWDFEXPORT(WdfRequestWdmGetIrp),
          VFWDFEXPORT(WdfIoResourceRequirementsListSetSlotNumber),
          VFWDFEXPORT(WdfIoResourceRequirementsListSetInterfaceType),
          VFWDFEXPORT(WdfIoResourceRequirementsListAppendIoResList),
          VFWDFEXPORT(WdfIoResourceRequirementsListInsertIoResList),
          VFWDFEXPORT(WdfIoResourceRequirementsListGetCount),
          VFWDFEXPORT(WdfIoResourceRequirementsListGetIoResList),
          VFWDFEXPORT(WdfIoResourceRequirementsListRemove),
          VFWDFEXPORT(WdfIoResourceRequirementsListRemoveByIoResList),
          VFWDFEXPORT(WdfIoResourceListCreate),
          VFWDFEXPORT(WdfIoResourceListAppendDescriptor),
          VFWDFEXPORT(WdfIoResourceListInsertDescriptor),
          VFWDFEXPORT(WdfIoResourceListUpdateDescriptor),
          VFWDFEXPORT(WdfIoResourceListGetCount),
          VFWDFEXPORT(WdfIoResourceListGetDescriptor),
          VFWDFEXPORT(WdfIoResourceListRemove),
          VFWDFEXPORT(WdfIoResourceListRemoveByDescriptor),
          VFWDFEXPORT(WdfCmResourceListAppendDescriptor),
          VFWDFEXPORT(WdfCmResourceListInsertDescriptor),
          VFWDFEXPORT(WdfCmResourceListGetCount),
          VFWDFEXPORT(WdfCmResourceListGetDescriptor),
          VFWDFEXPORT(WdfCmResourceListRemove),
          VFWDFEXPORT(WdfCmResourceListRemoveByDescriptor),
          VFWDFEXPORT(WdfStringCreate),
          VFWDFEXPORT(WdfStringGetUnicodeString),
          VFWDFEXPORT(WdfObjectAcquireLock),
          VFWDFEXPORT(WdfObjectReleaseLock),
          VFWDFEXPORT(WdfWaitLockCreate),
          VFWDFEXPORT(WdfWaitLockAcquire),
          VFWDFEXPORT(WdfWaitLockRelease),
          VFWDFEXPORT(WdfSpinLockCreate),
          VFWDFEXPORT(WdfSpinLockAcquire),
          VFWDFEXPORT(WdfSpinLockRelease),
          VFWDFEXPORT(WdfTimerCreate),
          VFWDFEXPORT(WdfTimerStart),
          VFWDFEXPORT(WdfTimerStop),
          VFWDFEXPORT(WdfTimerGetParentObject),
          VFWDFEXPORT(WdfUsbTargetDeviceCreate),
          VFWDFEXPORT(WdfUsbTargetDeviceRetrieveInformation),
          VFWDFEXPORT(WdfUsbTargetDeviceGetDeviceDescriptor),
          VFWDFEXPORT(WdfUsbTargetDeviceRetrieveConfigDescriptor),
          VFWDFEXPORT(WdfUsbTargetDeviceQueryString),
          VFWDFEXPORT(WdfUsbTargetDeviceAllocAndQueryString),
          VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForString),
          VFWDFEXPORT(WdfUsbTargetDeviceGetNumInterfaces),
          VFWDFEXPORT(WdfUsbTargetDeviceSelectConfig),
          VFWDFEXPORT(WdfUsbTargetDeviceWdmGetConfigurationHandle),
          VFWDFEXPORT(WdfUsbTargetDeviceRetrieveCurrentFrameNumber),
          VFWDFEXPORT(WdfUsbTargetDeviceSendControlTransferSynchronously),
          VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForControlTransfer),
          VFWDFEXPORT(WdfUsbTargetDeviceIsConnectedSynchronous),
          VFWDFEXPORT(WdfUsbTargetDeviceResetPortSynchronously),
          VFWDFEXPORT(WdfUsbTargetDeviceCyclePortSynchronously),
          VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForCyclePort),
          VFWDFEXPORT(WdfUsbTargetDeviceSendUrbSynchronously),
          VFWDFEXPORT(WdfUsbTargetDeviceFormatRequestForUrb),
          VFWDFEXPORT(WdfUsbTargetPipeGetInformation),
          VFWDFEXPORT(WdfUsbTargetPipeIsInEndpoint),
          VFWDFEXPORT(WdfUsbTargetPipeIsOutEndpoint),
          VFWDFEXPORT(WdfUsbTargetPipeGetType),
          VFWDFEXPORT(WdfUsbTargetPipeSetNoMaximumPacketSizeCheck),
          VFWDFEXPORT(WdfUsbTargetPipeWriteSynchronously),
          VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForWrite),
          VFWDFEXPORT(WdfUsbTargetPipeReadSynchronously),
          VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForRead),
          VFWDFEXPORT(WdfUsbTargetPipeConfigContinuousReader),
          VFWDFEXPORT(WdfUsbTargetPipeAbortSynchronously),
          VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForAbort),
          VFWDFEXPORT(WdfUsbTargetPipeResetSynchronously),
          VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForReset),
          VFWDFEXPORT(WdfUsbTargetPipeSendUrbSynchronously),
          VFWDFEXPORT(WdfUsbTargetPipeFormatRequestForUrb),
          VFWDFEXPORT(WdfUsbInterfaceGetInterfaceNumber),
          VFWDFEXPORT(WdfUsbInterfaceGetNumEndpoints),
          VFWDFEXPORT(WdfUsbInterfaceGetDescriptor),
          VFWDFEXPORT(WdfUsbInterfaceSelectSetting),
          VFWDFEXPORT(WdfUsbInterfaceGetEndpointInformation),
          VFWDFEXPORT(WdfUsbTargetDeviceGetInterface),
          VFWDFEXPORT(WdfUsbInterfaceGetConfiguredSettingIndex),
          VFWDFEXPORT(WdfUsbInterfaceGetNumConfiguredPipes),
          VFWDFEXPORT(WdfUsbInterfaceGetConfiguredPipe),
          VFWDFEXPORT(WdfUsbTargetPipeWdmGetPipeHandle),
          VFWDFEXPORT(WdfVerifierDbgBreakPoint),
          VFWDFEXPORT(WdfVerifierKeBugCheck),
          VFWDFEXPORT(WdfWmiProviderCreate),
          VFWDFEXPORT(WdfWmiProviderGetDevice),
          VFWDFEXPORT(WdfWmiProviderIsEnabled),
          VFWDFEXPORT(WdfWmiProviderGetTracingHandle),
          VFWDFEXPORT(WdfWmiInstanceCreate),
          VFWDFEXPORT(WdfWmiInstanceRegister),
          VFWDFEXPORT(WdfWmiInstanceDeregister),
          VFWDFEXPORT(WdfWmiInstanceGetDevice),
          VFWDFEXPORT(WdfWmiInstanceGetProvider),
          VFWDFEXPORT(WdfWmiInstanceFireEvent),
          VFWDFEXPORT(WdfWorkItemCreate),
          VFWDFEXPORT(WdfWorkItemEnqueue),
          VFWDFEXPORT(WdfWorkItemGetParentObject),
          VFWDFEXPORT(WdfWorkItemFlush),
          VFWDFEXPORT(WdfCommonBufferCreateWithConfig),
          VFWDFEXPORT(WdfDmaEnablerGetFragmentLength),
          VFWDFEXPORT(WdfDmaEnablerWdmGetDmaAdapter),
          VFWDFEXPORT(WdfUsbInterfaceGetNumSettings),
          VFWDFEXPORT(WdfDeviceRemoveDependentUsageDeviceObject),
          VFWDFEXPORT(WdfDeviceGetSystemPowerAction),
          VFWDFEXPORT(WdfInterruptSetExtendedPolicy),
          VFWDFEXPORT(WdfIoQueueAssignForwardProgressPolicy),
          VFWDFEXPORT(WdfPdoInitAssignContainerID),
          VFWDFEXPORT(WdfPdoInitAllowForwardingRequestToParent),
          VFWDFEXPORT(WdfRequestMarkCancelableEx),
          VFWDFEXPORT(WdfRequestIsReserved),
          VFWDFEXPORT(WdfRequestForwardToParentDeviceIoQueue),
          VFWDFEXPORT(WdfCxDeviceInitAllocate),
          VFWDFEXPORT(WdfCxDeviceInitAssignWdmIrpPreprocessCallback),
          VFWDFEXPORT(WdfCxDeviceInitSetIoInCallerContextCallback),
          VFWDFEXPORT(WdfCxDeviceInitSetRequestAttributes),
          VFWDFEXPORT(WdfCxDeviceInitSetFileObjectConfig),
          VFWDFEXPORT(WdfDeviceWdmDispatchIrp),
          VFWDFEXPORT(WdfDeviceWdmDispatchIrpToIoQueue),
          VFWDFEXPORT(WdfDeviceInitSetRemoveLockOptions),
          VFWDFEXPORT(WdfDeviceConfigureWdmIrpDispatchCallback),
          VFWDFEXPORT(WdfDmaEnablerConfigureSystemProfile),
          VFWDFEXPORT(WdfDmaTransactionInitializeUsingOffset),
          VFWDFEXPORT(WdfDmaTransactionGetTransferInfo),
          VFWDFEXPORT(WdfDmaTransactionSetChannelConfigurationCallback),
          VFWDFEXPORT(WdfDmaTransactionSetTransferCompleteCallback),
          VFWDFEXPORT(WdfDmaTransactionSetImmediateExecution),
          VFWDFEXPORT(WdfDmaTransactionAllocateResources),
          VFWDFEXPORT(WdfDmaTransactionSetDeviceAddressOffset),
          VFWDFEXPORT(WdfDmaTransactionFreeResources),
          VFWDFEXPORT(WdfDmaTransactionCancel),
          VFWDFEXPORT(WdfDmaTransactionWdmGetTransferContext),
          VFWDFEXPORT(WdfInterruptQueueWorkItemForIsr),
          VFWDFEXPORT(WdfInterruptTryToAcquireLock),
          VFWDFEXPORT(WdfIoQueueStopAndPurge),
          VFWDFEXPORT(WdfIoQueueStopAndPurgeSynchronously),
          VFWDFEXPORT(WdfIoTargetPurge),
          VFWDFEXPORT(WdfUsbTargetDeviceCreateWithParameters),
          VFWDFEXPORT(WdfUsbTargetDeviceQueryUsbCapability),
          VFWDFEXPORT(WdfUsbTargetDeviceCreateUrb),
          VFWDFEXPORT(WdfUsbTargetDeviceCreateIsochUrb),
          VFWDFEXPORT(WdfDeviceWdmAssignPowerFrameworkSettings),
          VFWDFEXPORT(WdfDmaTransactionStopSystemTransfer),
          VFWDFEXPORT(WdfCxVerifierKeBugCheck),
          VFWDFEXPORT(WdfInterruptReportActive),
          VFWDFEXPORT(WdfInterruptReportInactive),
          VFWDFEXPORT(WdfDeviceInitSetReleaseHardwareOrderOnFailure),
          VFWDFEXPORT(WdfGetTriageInfo),
          VFWDFEXPORT(WdfDeviceInitSetIoTypeEx),
          VFWDFEXPORT(WdfDeviceQueryPropertyEx),
          VFWDFEXPORT(WdfDeviceAllocAndQueryPropertyEx),
          VFWDFEXPORT(WdfDeviceAssignProperty),
          VFWDFEXPORT(WdfFdoInitQueryPropertyEx),
          VFWDFEXPORT(WdfFdoInitAllocAndQueryPropertyEx),
          VFWDFEXPORT(WdfDeviceStopIdleActual),
          VFWDFEXPORT(WdfDeviceResumeIdleActual),
          VFWDFEXPORT(WdfDeviceGetSelfIoTarget),
          VFWDFEXPORT(WdfDeviceInitAllowSelfIoTarget),
          VFWDFEXPORT(WdfIoTargetSelfAssignDefaultIoQueue),
          VFWDFEXPORT(WdfDeviceOpenDevicemapKey),
          VFWDFEXPORT(WdfDmaTransactionSetSingleTransferRequirement),
          VFWDFEXPORT(WdfCxDeviceInitSetPnpPowerEventCallbacks),
          VFWDFEXPORT(WdfFileObjectGetInitiatorProcessId),
          VFWDFEXPORT(WdfRequestGetRequestorProcessId),
          VFWDFEXPORT(WdfDeviceRetrieveCompanionTarget),
          VFWDFEXPORT(WdfCompanionTargetSendTaskSynchronously),
          VFWDFEXPORT(WdfCompanionTargetWdmGetCompanionProcess),
          VFWDFEXPORT(WdfDriverOpenPersistentStateRegistryKey),
          VFWDFEXPORT(WdfDriverErrorReportApiMissing),
          VFWDFEXPORT(WdfPdoInitRemovePowerDependencyOnParent),
          VFWDFEXPORT(WdfCxDeviceInitAllocateContext),
          VFWDFEXPORT(WdfCxDeviceInitGetTypedContextWorker),
          VFWDFEXPORT(WdfCxDeviceInitSetPowerPolicyEventCallbacks),
          VFWDFEXPORT(WdfDeviceSetDeviceInterfaceStateEx),
      }
  };
  
  #endif // VF_FX_DYNAMICS_GENERATE_TABLE
  
  #endif // _VFFXDYNAMICS_H_
  
  