[WDF] Add Windows Driver Framework files
[reactos.git] / sdk / lib / drivers / wdf / kmdf / inc / private / wdf111.h
diff --git a/sdk/lib/drivers/wdf/kmdf/inc/private/wdf111.h b/sdk/lib/drivers/wdf/kmdf/inc/private/wdf111.h
new file mode 100644 (file)
index 0000000..1763eaa
--- /dev/null
@@ -0,0 +1,2896 @@
+#ifndef _WDF_V1_11_TYPES_H_
+#define _WDF_V1_11_TYPES_H_
+
+
+typedef enum _WDFFUNCENUM_V1_11 {
+    WdfFunctionTableNumEntries_V1_11 = 432,
+} WDFFUNCENUM_V1_11;
+
+typedef struct _WDF_POWER_ROUTINE_TIMED_OUT_DATA_V1_11 *PWDF_POWER_ROUTINE_TIMED_OUT_DATA_V1_11;
+typedef const struct _WDF_POWER_ROUTINE_TIMED_OUT_DATA_V1_11 *PCWDF_POWER_ROUTINE_TIMED_OUT_DATA_V1_11;
+typedef struct _WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA_V1_11 *PWDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA_V1_11;
+typedef const struct _WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA_V1_11 *PCWDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA_V1_11;
+typedef struct _WDF_QUEUE_FATAL_ERROR_DATA_V1_11 *PWDF_QUEUE_FATAL_ERROR_DATA_V1_11;
+typedef const struct _WDF_QUEUE_FATAL_ERROR_DATA_V1_11 *PCWDF_QUEUE_FATAL_ERROR_DATA_V1_11;
+typedef struct _WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_V1_11 *PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_V1_11;
+typedef const struct _WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_V1_11 *PCWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_V1_11;
+typedef struct _WDF_CHILD_ADDRESS_DESCRIPTION_HEADER_V1_11 *PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER_V1_11;
+typedef const struct _WDF_CHILD_ADDRESS_DESCRIPTION_HEADER_V1_11 *PCWDF_CHILD_ADDRESS_DESCRIPTION_HEADER_V1_11;
+typedef struct _WDF_CHILD_RETRIEVE_INFO_V1_11 *PWDF_CHILD_RETRIEVE_INFO_V1_11;
+typedef const struct _WDF_CHILD_RETRIEVE_INFO_V1_11 *PCWDF_CHILD_RETRIEVE_INFO_V1_11;
+typedef struct _WDF_CHILD_LIST_CONFIG_V1_11 *PWDF_CHILD_LIST_CONFIG_V1_11;
+typedef const struct _WDF_CHILD_LIST_CONFIG_V1_11 *PCWDF_CHILD_LIST_CONFIG_V1_11;
+typedef struct _WDF_CHILD_LIST_ITERATOR_V1_11 *PWDF_CHILD_LIST_ITERATOR_V1_11;
+typedef const struct _WDF_CHILD_LIST_ITERATOR_V1_11 *PCWDF_CHILD_LIST_ITERATOR_V1_11;
+typedef struct _WDF_COMMON_BUFFER_CONFIG_V1_11 *PWDF_COMMON_BUFFER_CONFIG_V1_11;
+typedef const struct _WDF_COMMON_BUFFER_CONFIG_V1_11 *PCWDF_COMMON_BUFFER_CONFIG_V1_11;
+typedef struct _WDFCX_FILEOBJECT_CONFIG_V1_11 *PWDFCX_FILEOBJECT_CONFIG_V1_11;
+typedef const struct _WDFCX_FILEOBJECT_CONFIG_V1_11 *PCWDFCX_FILEOBJECT_CONFIG_V1_11;
+typedef struct _WDF_CLASS_EXTENSION_DESCRIPTOR_V1_11 *PWDF_CLASS_EXTENSION_DESCRIPTOR_V1_11;
+typedef const struct _WDF_CLASS_EXTENSION_DESCRIPTOR_V1_11 *PCWDF_CLASS_EXTENSION_DESCRIPTOR_V1_11;
+typedef struct _WDF_CLASS_VERSION_V1_11 *PWDF_CLASS_VERSION_V1_11;
+typedef const struct _WDF_CLASS_VERSION_V1_11 *PCWDF_CLASS_VERSION_V1_11;
+typedef struct _WDF_CLASS_BIND_INFO_V1_11 *PWDF_CLASS_BIND_INFO_V1_11;
+typedef const struct _WDF_CLASS_BIND_INFO_V1_11 *PCWDF_CLASS_BIND_INFO_V1_11;
+typedef struct _WDF_CLASS_LIBRARY_INFO_V1_11 *PWDF_CLASS_LIBRARY_INFO_V1_11;
+typedef const struct _WDF_CLASS_LIBRARY_INFO_V1_11 *PCWDF_CLASS_LIBRARY_INFO_V1_11;
+typedef struct _WDF_FILEOBJECT_CONFIG_V1_11 *PWDF_FILEOBJECT_CONFIG_V1_11;
+typedef const struct _WDF_FILEOBJECT_CONFIG_V1_11 *PCWDF_FILEOBJECT_CONFIG_V1_11;
+typedef struct _WDF_DEVICE_PNP_NOTIFICATION_DATA_V1_11 *PWDF_DEVICE_PNP_NOTIFICATION_DATA_V1_11;
+typedef const struct _WDF_DEVICE_PNP_NOTIFICATION_DATA_V1_11 *PCWDF_DEVICE_PNP_NOTIFICATION_DATA_V1_11;
+typedef struct _WDF_DEVICE_POWER_NOTIFICATION_DATA_V1_11 *PWDF_DEVICE_POWER_NOTIFICATION_DATA_V1_11;
+typedef const struct _WDF_DEVICE_POWER_NOTIFICATION_DATA_V1_11 *PCWDF_DEVICE_POWER_NOTIFICATION_DATA_V1_11;
+typedef struct _WDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA_V1_11 *PWDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA_V1_11;
+typedef const struct _WDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA_V1_11 *PCWDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA_V1_11;
+typedef struct _WDF_PNPPOWER_EVENT_CALLBACKS_V1_11 *PWDF_PNPPOWER_EVENT_CALLBACKS_V1_11;
+typedef const struct _WDF_PNPPOWER_EVENT_CALLBACKS_V1_11 *PCWDF_PNPPOWER_EVENT_CALLBACKS_V1_11;
+typedef struct _WDF_POWER_POLICY_EVENT_CALLBACKS_V1_11 *PWDF_POWER_POLICY_EVENT_CALLBACKS_V1_11;
+typedef const struct _WDF_POWER_POLICY_EVENT_CALLBACKS_V1_11 *PCWDF_POWER_POLICY_EVENT_CALLBACKS_V1_11;
+typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_11 *PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_11;
+typedef const struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_11 *PCWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_11;
+typedef struct _WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_V1_11 *PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_V1_11;
+typedef const struct _WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_V1_11 *PCWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_V1_11;
+typedef struct _WDF_DEVICE_STATE_V1_11 *PWDF_DEVICE_STATE_V1_11;
+typedef const struct _WDF_DEVICE_STATE_V1_11 *PCWDF_DEVICE_STATE_V1_11;
+typedef struct _WDF_DEVICE_PNP_CAPABILITIES_V1_11 *PWDF_DEVICE_PNP_CAPABILITIES_V1_11;
+typedef const struct _WDF_DEVICE_PNP_CAPABILITIES_V1_11 *PCWDF_DEVICE_PNP_CAPABILITIES_V1_11;
+typedef struct _WDF_DEVICE_POWER_CAPABILITIES_V1_11 *PWDF_DEVICE_POWER_CAPABILITIES_V1_11;
+typedef const struct _WDF_DEVICE_POWER_CAPABILITIES_V1_11 *PCWDF_DEVICE_POWER_CAPABILITIES_V1_11;
+typedef struct _WDF_REMOVE_LOCK_OPTIONS_V1_11 *PWDF_REMOVE_LOCK_OPTIONS_V1_11;
+typedef const struct _WDF_REMOVE_LOCK_OPTIONS_V1_11 *PCWDF_REMOVE_LOCK_OPTIONS_V1_11;
+typedef struct _WDF_POWER_FRAMEWORK_SETTINGS_V1_11 *PWDF_POWER_FRAMEWORK_SETTINGS_V1_11;
+typedef const struct _WDF_POWER_FRAMEWORK_SETTINGS_V1_11 *PCWDF_POWER_FRAMEWORK_SETTINGS_V1_11;
+typedef struct _WDF_DMA_ENABLER_CONFIG_V1_11 *PWDF_DMA_ENABLER_CONFIG_V1_11;
+typedef const struct _WDF_DMA_ENABLER_CONFIG_V1_11 *PCWDF_DMA_ENABLER_CONFIG_V1_11;
+typedef struct _WDF_DMA_SYSTEM_PROFILE_CONFIG_V1_11 *PWDF_DMA_SYSTEM_PROFILE_CONFIG_V1_11;
+typedef const struct _WDF_DMA_SYSTEM_PROFILE_CONFIG_V1_11 *PCWDF_DMA_SYSTEM_PROFILE_CONFIG_V1_11;
+typedef struct _WDF_DPC_CONFIG_V1_11 *PWDF_DPC_CONFIG_V1_11;
+typedef const struct _WDF_DPC_CONFIG_V1_11 *PCWDF_DPC_CONFIG_V1_11;
+typedef struct _WDF_DRIVER_CONFIG_V1_11 *PWDF_DRIVER_CONFIG_V1_11;
+typedef const struct _WDF_DRIVER_CONFIG_V1_11 *PCWDF_DRIVER_CONFIG_V1_11;
+typedef struct _WDF_DRIVER_VERSION_AVAILABLE_PARAMS_V1_11 *PWDF_DRIVER_VERSION_AVAILABLE_PARAMS_V1_11;
+typedef const struct _WDF_DRIVER_VERSION_AVAILABLE_PARAMS_V1_11 *PCWDF_DRIVER_VERSION_AVAILABLE_PARAMS_V1_11;
+typedef struct _WDF_FDO_EVENT_CALLBACKS_V1_11 *PWDF_FDO_EVENT_CALLBACKS_V1_11;
+typedef const struct _WDF_FDO_EVENT_CALLBACKS_V1_11 *PCWDF_FDO_EVENT_CALLBACKS_V1_11;
+typedef struct _WDF_DRIVER_GLOBALS_V1_11 *PWDF_DRIVER_GLOBALS_V1_11;
+typedef const struct _WDF_DRIVER_GLOBALS_V1_11 *PCWDF_DRIVER_GLOBALS_V1_11;
+typedef struct _WDF_INTERRUPT_CONFIG_V1_11 *PWDF_INTERRUPT_CONFIG_V1_11;
+typedef const struct _WDF_INTERRUPT_CONFIG_V1_11 *PCWDF_INTERRUPT_CONFIG_V1_11;
+typedef struct _WDF_INTERRUPT_INFO_V1_11 *PWDF_INTERRUPT_INFO_V1_11;
+typedef const struct _WDF_INTERRUPT_INFO_V1_11 *PCWDF_INTERRUPT_INFO_V1_11;
+typedef struct _WDF_INTERRUPT_EXTENDED_POLICY_V1_11 *PWDF_INTERRUPT_EXTENDED_POLICY_V1_11;
+typedef const struct _WDF_INTERRUPT_EXTENDED_POLICY_V1_11 *PCWDF_INTERRUPT_EXTENDED_POLICY_V1_11;
+typedef struct _WDF_IO_QUEUE_CONFIG_V1_11 *PWDF_IO_QUEUE_CONFIG_V1_11;
+typedef const struct _WDF_IO_QUEUE_CONFIG_V1_11 *PCWDF_IO_QUEUE_CONFIG_V1_11;
+typedef struct _WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_V1_11 *PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_V1_11;
+typedef const struct _WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_V1_11 *PCWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_V1_11;
+typedef struct _WDF_IO_TARGET_OPEN_PARAMS_V1_11 *PWDF_IO_TARGET_OPEN_PARAMS_V1_11;
+typedef const struct _WDF_IO_TARGET_OPEN_PARAMS_V1_11 *PCWDF_IO_TARGET_OPEN_PARAMS_V1_11;
+typedef struct _WDFMEMORY_OFFSET_V1_11 *PWDFMEMORY_OFFSET_V1_11;
+typedef const struct _WDFMEMORY_OFFSET_V1_11 *PCWDFMEMORY_OFFSET_V1_11;
+typedef struct _WDF_MEMORY_DESCRIPTOR_V1_11 *PWDF_MEMORY_DESCRIPTOR_V1_11;
+typedef const struct _WDF_MEMORY_DESCRIPTOR_V1_11 *PCWDF_MEMORY_DESCRIPTOR_V1_11;
+typedef struct _WDF_OBJECT_ATTRIBUTES_V1_11 *PWDF_OBJECT_ATTRIBUTES_V1_11;
+typedef const struct _WDF_OBJECT_ATTRIBUTES_V1_11 *PCWDF_OBJECT_ATTRIBUTES_V1_11;
+typedef struct _WDF_OBJECT_CONTEXT_TYPE_INFO_V1_11 *PWDF_OBJECT_CONTEXT_TYPE_INFO_V1_11;
+typedef const struct _WDF_OBJECT_CONTEXT_TYPE_INFO_V1_11 *PCWDF_OBJECT_CONTEXT_TYPE_INFO_V1_11;
+typedef struct _WDF_CUSTOM_TYPE_CONTEXT_V1_11 *PWDF_CUSTOM_TYPE_CONTEXT_V1_11;
+typedef const struct _WDF_CUSTOM_TYPE_CONTEXT_V1_11 *PCWDF_CUSTOM_TYPE_CONTEXT_V1_11;
+typedef struct _WDF_PDO_EVENT_CALLBACKS_V1_11 *PWDF_PDO_EVENT_CALLBACKS_V1_11;
+typedef const struct _WDF_PDO_EVENT_CALLBACKS_V1_11 *PCWDF_PDO_EVENT_CALLBACKS_V1_11;
+typedef struct _WDF_QUERY_INTERFACE_CONFIG_V1_11 *PWDF_QUERY_INTERFACE_CONFIG_V1_11;
+typedef const struct _WDF_QUERY_INTERFACE_CONFIG_V1_11 *PCWDF_QUERY_INTERFACE_CONFIG_V1_11;
+typedef struct _WDF_REQUEST_PARAMETERS_V1_11 *PWDF_REQUEST_PARAMETERS_V1_11;
+typedef const struct _WDF_REQUEST_PARAMETERS_V1_11 *PCWDF_REQUEST_PARAMETERS_V1_11;
+typedef struct _WDF_REQUEST_COMPLETION_PARAMS_V1_11 *PWDF_REQUEST_COMPLETION_PARAMS_V1_11;
+typedef const struct _WDF_REQUEST_COMPLETION_PARAMS_V1_11 *PCWDF_REQUEST_COMPLETION_PARAMS_V1_11;
+typedef struct _WDF_REQUEST_REUSE_PARAMS_V1_11 *PWDF_REQUEST_REUSE_PARAMS_V1_11;
+typedef const struct _WDF_REQUEST_REUSE_PARAMS_V1_11 *PCWDF_REQUEST_REUSE_PARAMS_V1_11;
+typedef struct _WDF_REQUEST_SEND_OPTIONS_V1_11 *PWDF_REQUEST_SEND_OPTIONS_V1_11;
+typedef const struct _WDF_REQUEST_SEND_OPTIONS_V1_11 *PCWDF_REQUEST_SEND_OPTIONS_V1_11;
+typedef struct _WDF_REQUEST_FORWARD_OPTIONS_V1_11 *PWDF_REQUEST_FORWARD_OPTIONS_V1_11;
+typedef const struct _WDF_REQUEST_FORWARD_OPTIONS_V1_11 *PCWDF_REQUEST_FORWARD_OPTIONS_V1_11;
+typedef struct _WDF_TIMER_CONFIG_V1_11 *PWDF_TIMER_CONFIG_V1_11;
+typedef const struct _WDF_TIMER_CONFIG_V1_11 *PCWDF_TIMER_CONFIG_V1_11;
+typedef struct _WDFOBJECT_TRIAGE_INFO_V1_11 *PWDFOBJECT_TRIAGE_INFO_V1_11;
+typedef const struct _WDFOBJECT_TRIAGE_INFO_V1_11 *PCWDFOBJECT_TRIAGE_INFO_V1_11;
+typedef struct _WDFCONTEXT_TRIAGE_INFO_V1_11 *PWDFCONTEXT_TRIAGE_INFO_V1_11;
+typedef const struct _WDFCONTEXT_TRIAGE_INFO_V1_11 *PCWDFCONTEXT_TRIAGE_INFO_V1_11;
+typedef struct _WDFCONTEXTTYPE_TRIAGE_INFO_V1_11 *PWDFCONTEXTTYPE_TRIAGE_INFO_V1_11;
+typedef const struct _WDFCONTEXTTYPE_TRIAGE_INFO_V1_11 *PCWDFCONTEXTTYPE_TRIAGE_INFO_V1_11;
+typedef struct _WDFQUEUE_TRIAGE_INFO_V1_11 *PWDFQUEUE_TRIAGE_INFO_V1_11;
+typedef const struct _WDFQUEUE_TRIAGE_INFO_V1_11 *PCWDFQUEUE_TRIAGE_INFO_V1_11;
+typedef struct _WDFFWDPROGRESS_TRIAGE_INFO_V1_11 *PWDFFWDPROGRESS_TRIAGE_INFO_V1_11;
+typedef const struct _WDFFWDPROGRESS_TRIAGE_INFO_V1_11 *PCWDFFWDPROGRESS_TRIAGE_INFO_V1_11;
+typedef struct _WDFIRPQUEUE_TRIAGE_INFO_V1_11 *PWDFIRPQUEUE_TRIAGE_INFO_V1_11;
+typedef const struct _WDFIRPQUEUE_TRIAGE_INFO_V1_11 *PCWDFIRPQUEUE_TRIAGE_INFO_V1_11;
+typedef struct _WDFREQUEST_TRIAGE_INFO_V1_11 *PWDFREQUEST_TRIAGE_INFO_V1_11;
+typedef const struct _WDFREQUEST_TRIAGE_INFO_V1_11 *PCWDFREQUEST_TRIAGE_INFO_V1_11;
+typedef struct _WDFDEVICE_TRIAGE_INFO_V1_11 *PWDFDEVICE_TRIAGE_INFO_V1_11;
+typedef const struct _WDFDEVICE_TRIAGE_INFO_V1_11 *PCWDFDEVICE_TRIAGE_INFO_V1_11;
+typedef struct _WDFIRP_TRIAGE_INFO_V1_11 *PWDFIRP_TRIAGE_INFO_V1_11;
+typedef const struct _WDFIRP_TRIAGE_INFO_V1_11 *PCWDFIRP_TRIAGE_INFO_V1_11;
+typedef struct _WDF_TRIAGE_INFO_V1_11 *PWDF_TRIAGE_INFO_V1_11;
+typedef const struct _WDF_TRIAGE_INFO_V1_11 *PCWDF_TRIAGE_INFO_V1_11;
+typedef struct _WDF_USB_REQUEST_COMPLETION_PARAMS_V1_11 *PWDF_USB_REQUEST_COMPLETION_PARAMS_V1_11;
+typedef const struct _WDF_USB_REQUEST_COMPLETION_PARAMS_V1_11 *PCWDF_USB_REQUEST_COMPLETION_PARAMS_V1_11;
+typedef struct _WDF_USB_CONTINUOUS_READER_CONFIG_V1_11 *PWDF_USB_CONTINUOUS_READER_CONFIG_V1_11;
+typedef const struct _WDF_USB_CONTINUOUS_READER_CONFIG_V1_11 *PCWDF_USB_CONTINUOUS_READER_CONFIG_V1_11;
+typedef struct _WDF_USB_DEVICE_INFORMATION_V1_11 *PWDF_USB_DEVICE_INFORMATION_V1_11;
+typedef const struct _WDF_USB_DEVICE_INFORMATION_V1_11 *PCWDF_USB_DEVICE_INFORMATION_V1_11;
+typedef struct _WDF_USB_INTERFACE_SETTING_PAIR_V1_11 *PWDF_USB_INTERFACE_SETTING_PAIR_V1_11;
+typedef const struct _WDF_USB_INTERFACE_SETTING_PAIR_V1_11 *PCWDF_USB_INTERFACE_SETTING_PAIR_V1_11;
+typedef struct _WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_V1_11 *PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS_V1_11;
+typedef const struct _WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_V1_11 *PCWDF_USB_DEVICE_SELECT_CONFIG_PARAMS_V1_11;
+typedef struct _WDF_USB_INTERFACE_SELECT_SETTING_PARAMS_V1_11 *PWDF_USB_INTERFACE_SELECT_SETTING_PARAMS_V1_11;
+typedef const struct _WDF_USB_INTERFACE_SELECT_SETTING_PARAMS_V1_11 *PCWDF_USB_INTERFACE_SELECT_SETTING_PARAMS_V1_11;
+typedef struct _WDF_USB_PIPE_INFORMATION_V1_11 *PWDF_USB_PIPE_INFORMATION_V1_11;
+typedef const struct _WDF_USB_PIPE_INFORMATION_V1_11 *PCWDF_USB_PIPE_INFORMATION_V1_11;
+typedef struct _WDF_USB_DEVICE_CREATE_CONFIG_V1_11 *PWDF_USB_DEVICE_CREATE_CONFIG_V1_11;
+typedef const struct _WDF_USB_DEVICE_CREATE_CONFIG_V1_11 *PCWDF_USB_DEVICE_CREATE_CONFIG_V1_11;
+typedef struct _WDF_WMI_PROVIDER_CONFIG_V1_11 *PWDF_WMI_PROVIDER_CONFIG_V1_11;
+typedef const struct _WDF_WMI_PROVIDER_CONFIG_V1_11 *PCWDF_WMI_PROVIDER_CONFIG_V1_11;
+typedef struct _WDF_WMI_INSTANCE_CONFIG_V1_11 *PWDF_WMI_INSTANCE_CONFIG_V1_11;
+typedef const struct _WDF_WMI_INSTANCE_CONFIG_V1_11 *PCWDF_WMI_INSTANCE_CONFIG_V1_11;
+typedef struct _WDF_WORKITEM_CONFIG_V1_11 *PWDF_WORKITEM_CONFIG_V1_11;
+typedef const struct _WDF_WORKITEM_CONFIG_V1_11 *PCWDF_WORKITEM_CONFIG_V1_11;
+
+//
+// Versioning of structures for wdf.h
+//
+// End of versioning of structures for wdf.h
+
+//
+// Versioning of structures for wdfassert.h
+//
+// End of versioning of structures for wdfassert.h
+
+//
+// Versioning of structures for wdfbugcodes.h
+//
+typedef struct _WDF_POWER_ROUTINE_TIMED_OUT_DATA_V1_11 {
+    //
+    // Current power state associated with the timed out device
+    //
+    WDF_DEVICE_POWER_STATE PowerState;
+
+    //
+    // Current power policy state associated with the timed out device
+    //
+    WDF_DEVICE_POWER_POLICY_STATE PowerPolicyState;
+
+    //
+    // The device object for the timed out device
+    //
+    PDEVICE_OBJECT DeviceObject;
+
+    //
+    // The handle for the timed out device
+    //
+    WDFDEVICE Device;
+
+    //
+    // The thread which is stuck
+    //
+    PKTHREAD TimedOutThread;
+
+} WDF_POWER_ROUTINE_TIMED_OUT_DATA_V1_11;
+
+typedef struct _WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA_V1_11 {
+    WDFREQUEST Request;
+
+    PIRP Irp;
+
+    ULONG OutputBufferLength;
+
+    ULONG_PTR Information;
+
+    UCHAR MajorFunction;
+
+} WDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA_V1_11, *PWDF_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA_V1_11;
+
+typedef struct _WDF_QUEUE_FATAL_ERROR_DATA_V1_11 {
+    WDFQUEUE Queue;
+
+    WDFREQUEST Request;
+
+    NTSTATUS Status;
+
+} WDF_QUEUE_FATAL_ERROR_DATA_V1_11, *PWDF_QUEUE_FATAL_ERROR_DATA_V1_11;
+
+// End of versioning of structures for wdfbugcodes.h
+
+//
+// Versioning of structures for wdfchildlist.h
+//
+typedef struct _WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_V1_11 {
+    //
+    // Size in bytes of the entire description, including this header.
+    //
+    // Same value as WDF_CHILD_LIST_CONFIG::IdentificationDescriptionSize
+    // Used as a sanity check.
+    //
+    ULONG IdentificationDescriptionSize;
+
+} WDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_V1_11, *PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_V1_11;
+
+typedef struct _WDF_CHILD_ADDRESS_DESCRIPTION_HEADER_V1_11 {
+    //
+    // Size in bytes of the entire description, including this header.
+    //
+    // Same value as WDF_CHILD_LIST_CONFIG::AddressDescriptionSize
+    // Used as a sanity check.
+    //
+    ULONG AddressDescriptionSize;
+
+} WDF_CHILD_ADDRESS_DESCRIPTION_HEADER_V1_11, *PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER_V1_11;
+
+typedef struct _WDF_CHILD_RETRIEVE_INFO_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Must be a valid pointer when passed in, copied into upon success
+    //
+    PWDF_CHILD_IDENTIFICATION_DESCRIPTION_HEADER_V1_11 IdentificationDescription;
+
+    //
+    // Optional pointer when passed in, copied into upon success
+    //
+    PWDF_CHILD_ADDRESS_DESCRIPTION_HEADER_V1_11 AddressDescription;
+
+    //
+    // Status of the returned device
+    //
+    WDF_CHILD_LIST_RETRIEVE_DEVICE_STATUS Status;
+
+    //
+    // If provided, will be used for searching through the list of devices
+    // instead of the default list ID compare function
+    //
+    PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE EvtChildListIdentificationDescriptionCompare;
+
+} WDF_CHILD_RETRIEVE_INFO_V1_11, *PWDF_CHILD_RETRIEVE_INFO_V1_11;
+
+typedef struct _WDF_CHILD_LIST_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // The size in bytes of an identificaiton description to be used with the
+    // created WDFCHILDLIST handle
+    //
+    ULONG IdentificationDescriptionSize;
+
+    //
+    // Optional size in bytes of an address description to be used with the
+    // created WDFCHILDLIST handle.
+    //
+    ULONG AddressDescriptionSize;
+
+    //
+    // Required callback to be invoked when a description on the device list
+    // needs to be converted into a real WDFDEVICE handle.
+    //
+    PFN_WDF_CHILD_LIST_CREATE_DEVICE EvtChildListCreateDevice;
+
+    //
+    // Optional callback to be invoked when the device list needs to be
+    // rescanned.  This function will be called after the device has entered D0
+    // and been fully initialized but before I/O has started.
+    //
+    PFN_WDF_CHILD_LIST_SCAN_FOR_CHILDREN EvtChildListScanForChildren;
+
+    //
+    // Optional callback to be invoked when an identification description needs
+    // to be copied from one location to another.
+    //
+    // If left NULL, RtlCopyMemory will be used to copy the description.
+    //
+    PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COPY EvtChildListIdentificationDescriptionCopy;
+
+    //
+    // Optional callback to be invoked when an identification description needs
+    // to be duplicated.  As opposed to EvtChildListIdentificationDescriptionCopy,
+    // EvtChildListIdentificationDescriptionDuplicate can fail.
+    //
+    PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_DUPLICATE EvtChildListIdentificationDescriptionDuplicate;
+
+    //
+    // Optional callback to be invoked when an identification description needs
+    // to be cleaned up.  This function should *NOT* free the description passed
+    // to it, just free any associated resources.
+    //
+    PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_CLEANUP EvtChildListIdentificationDescriptionCleanup;
+
+    //
+    // Optional callback to be invoked when an identification description needs
+    // to be compared with another identificaiton description.
+    //
+    // If left NULL, RtlCompareMemory will be used to compare the two
+    // descriptions.
+    //
+    PFN_WDF_CHILD_LIST_IDENTIFICATION_DESCRIPTION_COMPARE EvtChildListIdentificationDescriptionCompare;
+
+    //
+    // Optional callback to be invoked when an address description needs
+    // to be copied from one location to another.
+    //
+    // If left NULL, RtlCopyMemory will be used to copy the description.
+    //
+    PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_COPY EvtChildListAddressDescriptionCopy;
+
+    //
+    // Optional callback to be invoked when an address description needs to be
+    // duplicated.  As opposed to EvtChildListAddressDescriptionCopy,
+    // EvtChildListAddressDescriptionDuplicate can fail.
+    //
+    PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_DUPLICATE EvtChildListAddressDescriptionDuplicate;
+
+    //
+    // Optional callback to be invoked when an address description needs to be
+    // cleaned up.  This function should *NOT* free the description passed to
+    // it, just free any associated resources.
+    //
+    PFN_WDF_CHILD_LIST_ADDRESS_DESCRIPTION_CLEANUP EvtChildListAddressDescriptionCleanup;
+
+    //
+    // If provided, will be called when the child's stack requests that the
+    // child be reenumerated.  Returning TRUE allows for the reenumeration to
+    // proceed.  FALSE will no reenumerate the stack.
+    //
+    PFN_WDF_CHILD_LIST_DEVICE_REENUMERATED EvtChildListDeviceReenumerated;
+
+} WDF_CHILD_LIST_CONFIG_V1_11, *PWDF_CHILD_LIST_CONFIG_V1_11;
+
+typedef struct _WDF_CHILD_LIST_ITERATOR_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // What type of devices to return, see WDF_RETRIEVE_CHILD_FLAGS for
+    // flag values
+    //
+    //
+    ULONG Flags;
+
+    //
+    // For internal use, treat this field as opaque
+    //
+    PVOID Reserved[4];
+
+} WDF_CHILD_LIST_ITERATOR_V1_11, *PWDF_CHILD_LIST_ITERATOR_V1_11;
+
+// End of versioning of structures for wdfchildlist.h
+
+//
+// Versioning of structures for wdfcollection.h
+//
+// End of versioning of structures for wdfcollection.h
+
+//
+// Versioning of structures for wdfCommonBuffer.h
+//
+typedef struct _WDF_COMMON_BUFFER_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG   Size;
+
+    //
+    // Alignment requirement of the buffer address
+    //
+    ULONG   AlignmentRequirement;
+
+} WDF_COMMON_BUFFER_CONFIG_V1_11, *PWDF_COMMON_BUFFER_CONFIG_V1_11;
+
+// End of versioning of structures for wdfCommonBuffer.h
+
+//
+// Versioning of structures for wdfcontrol.h
+//
+// End of versioning of structures for wdfcontrol.h
+
+//
+// Versioning of structures for wdfcore.h
+//
+// End of versioning of structures for wdfcore.h
+
+//
+// Versioning of structures for wdfcx.h
+//
+typedef struct _WDFCX_FILEOBJECT_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Event callback for create requests
+    //
+    PFN_WDFCX_DEVICE_FILE_CREATE  EvtCxDeviceFileCreate;
+
+    //
+    // Event callback for close requests
+    //
+    PFN_WDF_FILE_CLOSE   EvtFileClose;
+
+    //
+    // Event callback for cleanup requests
+    //
+    PFN_WDF_FILE_CLEANUP EvtFileCleanup;
+
+    //
+    // If WdfTrue, create/cleanup/close file object related requests will be
+    // sent down the stack.
+    //
+    // If WdfFalse, create/cleanup/close will be completed at this location in
+    // the device stack.
+    //
+    // If WdfDefault, behavior depends on device type
+    // FDO, PDO, Control:  use the WdfFalse behavior
+    // Filter:  use the WdfTrue behavior
+    //
+    WDF_TRI_STATE AutoForwardCleanupClose;
+
+    //
+    // Specify whether framework should create WDFFILEOBJECT and also
+    // whether it can FsContexts fields in the WDM fileobject to store
+    // WDFFILEOBJECT so that it can avoid table look up and improve perf.
+    //
+    WDF_FILEOBJECT_CLASS FileObjectClass;
+
+} WDFCX_FILEOBJECT_CONFIG_V1_11, *PWDFCX_FILEOBJECT_CONFIG_V1_11;
+
+// End of versioning of structures for wdfcx.h
+
+//
+// Versioning of structures for wdfcxbase.h
+//
+typedef struct _WDF_CLASS_EXTENSION_DESCRIPTOR_V1_11 {
+    PCWDF_CLASS_EXTENSION_DESCRIPTOR_V1_11   Next;
+
+    ULONG                             Size;
+
+    PFN_WDF_CLASS_EXTENSIONIN_BIND    Bind;
+
+    PFN_WDF_CLASS_EXTENSIONIN_UNBIND  Unbind;
+
+} WDF_CLASS_EXTENSION_DESCRIPTOR_V1_11, *PWDF_CLASS_EXTENSION_DESCRIPTOR_V1_11;
+
+typedef struct _WDF_CLASS_VERSION_V1_11 {
+    WDF_MAJOR_VERSION  Major;
+
+    WDF_MINOR_VERSION  Minor;
+
+    WDF_BUILD_NUMBER   Build;
+
+} WDF_CLASS_VERSION_V1_11;
+
+typedef struct _WDF_CLASS_BIND_INFO_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Name of the class to bind to
+    //
+    PWSTR ClassName;
+
+    //
+    // Version information for the class
+    //
+    WDF_CLASS_VERSION_V1_11  Version;
+
+    //
+    // Function export table from the class driver to resolve on bind
+    //
+    PFN_WDF_CLASS_EXPORT * FunctionTable;
+
+    //
+    // Number of entries in FunctionTable
+    //
+    ULONG FunctionTableCount;
+
+    //
+    // Optional field where the client specify additional information
+    // for the class driver to resolve
+    //
+    PVOID ClassBindInfo;
+
+    //
+    // Optional bind callback.  If set, WdfVersionBindClass will not
+    // be called and it will be up to ClientClassBind to call this function
+    // if required.
+    //
+    PFN_WDF_CLIENT_BIND_CLASS ClientBindClass;
+
+    //
+    // Optional unbind callback.  If set, WdfVersionUnbindClass will not be
+    // called and it will be up to ClientClassUnbind to call this function
+    // if required.
+    //
+    PFN_WDF_CLIENT_UNBIND_CLASS ClientUnbindClass;
+
+    //
+    // Diagnostic cookie to use during debugging
+    //
+    PVOID ClassModule;
+
+} WDF_CLASS_BIND_INFO_V1_11, * PWDF_CLASS_BIND_INFO_V1_11;
+
+typedef struct _WDF_CLASS_LIBRARY_INFO_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Version of this class library
+    //
+    WDF_CLASS_VERSION_V1_11 Version;
+
+    //
+    // Callback to be called by the loader to initialize the class library
+    //
+    PFN_WDF_CLASS_LIBRARY_INITIALIZE ClassLibraryInitialize;
+
+    //
+    // Callback to be called by the loader to deinitialize the class library
+    // after succesful initialization (immediately before the class library will
+    // be unloaded).
+    //
+    PFN_WDF_CLASS_LIBRARY_DEINITIALIZE ClassLibraryDeinitialize;
+
+    //
+    // Callback to be called by the loader when a client driver has request to
+    // be bound to this class library.
+    //
+    PFN_WDF_CLASS_LIBRARY_BIND_CLIENT ClassLibraryBindClient;
+
+    //
+    // Callback to be called by the loader when a previously bound client driver
+    // is being unloaded.
+    //
+    PFN_WDF_CLASS_LIBRARY_UNBIND_CLIENT ClassLibraryUnbindClient;
+
+} WDF_CLASS_LIBRARY_INFO_V1_11, *PWDF_CLASS_LIBRARY_INFO_V1_11;
+
+// End of versioning of structures for wdfcxbase.h
+
+//
+// Versioning of structures for wdfDevice.h
+//
+typedef struct _WDF_FILEOBJECT_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Event callback for create requests
+    //
+    PFN_WDF_DEVICE_FILE_CREATE  EvtDeviceFileCreate;
+
+    //
+    // Event callback for close requests
+    //
+    PFN_WDF_FILE_CLOSE   EvtFileClose;
+
+    //
+    // Event callback for cleanup requests
+    //
+    PFN_WDF_FILE_CLEANUP EvtFileCleanup;
+
+    //
+    // If WdfTrue, create/cleanup/close file object related requests will be
+    // sent down the stack.
+    //
+    // If WdfFalse, create/cleanup/close will be completed at this location in
+    // the device stack.
+    //
+    // If WdfDefault, behavior depends on device type
+    // FDO, PDO, Control:  use the WdfFalse behavior
+    // Filter:  use the WdfTrue behavior
+    //
+    WDF_TRI_STATE AutoForwardCleanupClose;
+
+    //
+    // Specify whether framework should create WDFFILEOBJECT and also
+    // whether it can FsContexts fields in the WDM fileobject to store
+    // WDFFILEOBJECT so that it can avoid table look up and improve perf.
+    //
+    WDF_FILEOBJECT_CLASS FileObjectClass;
+
+} WDF_FILEOBJECT_CONFIG_V1_11, *PWDF_FILEOBJECT_CONFIG_V1_11;
+
+typedef struct _WDF_DEVICE_PNP_NOTIFICATION_DATA_V1_11 {
+    //
+    // Type of data
+    //
+    WDF_STATE_NOTIFICATION_TYPE Type;
+
+    union {
+        struct {
+            //
+            // The current state that is about to be exited
+            //
+            WDF_DEVICE_PNP_STATE CurrentState;
+
+            //
+            // The new state that is about to be entered
+            //
+            WDF_DEVICE_PNP_STATE NewState;
+
+        } EnterState;
+
+        struct {
+            //
+            // The current state
+            //
+            WDF_DEVICE_PNP_STATE CurrentState;
+
+        } PostProcessState;
+
+        struct {
+            //
+            // The current state that is about to be exitted
+            //
+            WDF_DEVICE_PNP_STATE CurrentState;
+
+            //
+            // The state that is about to be entered
+            //
+            WDF_DEVICE_PNP_STATE NewState;
+
+        } LeaveState;
+
+    } Data;
+
+} WDF_DEVICE_PNP_NOTIFICATION_DATA_V1_11;
+
+typedef struct _WDF_DEVICE_POWER_NOTIFICATION_DATA_V1_11 {
+    //
+    // Type of data
+    //
+    WDF_STATE_NOTIFICATION_TYPE Type;
+
+    union {
+        struct {
+            //
+            // The current state that is about to be exitted
+            //
+            WDF_DEVICE_POWER_STATE CurrentState;
+
+            //
+            // The new state that is about to be entered
+            //
+            WDF_DEVICE_POWER_STATE NewState;
+
+        } EnterState;
+
+        struct {
+            //
+            // The current state
+            //
+            WDF_DEVICE_POWER_STATE CurrentState;
+
+        } PostProcessState;
+
+        struct {
+            //
+            // The current state that is about to be exitted
+            //
+            WDF_DEVICE_POWER_STATE CurrentState;
+
+            //
+            // The state that is about to be entered
+            //
+            WDF_DEVICE_POWER_STATE NewState;
+
+        } LeaveState;
+
+    } Data;
+
+} WDF_DEVICE_POWER_NOTIFICATION_DATA_V1_11;
+
+typedef struct _WDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA_V1_11 {
+    //
+    // Type of data
+    //
+    WDF_STATE_NOTIFICATION_TYPE Type;
+
+    union {
+        struct {
+            //
+            // The current state that is about to be exitted
+            //
+            WDF_DEVICE_POWER_POLICY_STATE CurrentState;
+
+            //
+            // The new state that is about to be entered
+            //
+            WDF_DEVICE_POWER_POLICY_STATE NewState;
+
+        } EnterState;
+
+        struct {
+            //
+            // The current state
+            //
+            WDF_DEVICE_POWER_POLICY_STATE CurrentState;
+
+        } PostProcessState;
+
+        struct {
+            //
+            // The current state that is about to be exitted
+            //
+            WDF_DEVICE_POWER_POLICY_STATE CurrentState;
+
+            //
+            // The state that is about to be entered
+            //
+            WDF_DEVICE_POWER_POLICY_STATE NewState;
+
+        } LeaveState;
+
+    } Data;
+
+} WDF_DEVICE_POWER_POLICY_NOTIFICATION_DATA_V1_11;
+
+typedef struct _WDF_PNPPOWER_EVENT_CALLBACKS_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    PFN_WDF_DEVICE_D0_ENTRY                 EvtDeviceD0Entry;
+
+    PFN_WDF_DEVICE_D0_ENTRY_POST_INTERRUPTS_ENABLED EvtDeviceD0EntryPostInterruptsEnabled;
+
+    PFN_WDF_DEVICE_D0_EXIT                  EvtDeviceD0Exit;
+
+    PFN_WDF_DEVICE_D0_EXIT_PRE_INTERRUPTS_DISABLED EvtDeviceD0ExitPreInterruptsDisabled;
+
+    PFN_WDF_DEVICE_PREPARE_HARDWARE         EvtDevicePrepareHardware;
+
+    PFN_WDF_DEVICE_RELEASE_HARDWARE         EvtDeviceReleaseHardware;
+
+    PFN_WDF_DEVICE_SELF_MANAGED_IO_CLEANUP  EvtDeviceSelfManagedIoCleanup;
+
+    PFN_WDF_DEVICE_SELF_MANAGED_IO_FLUSH    EvtDeviceSelfManagedIoFlush;
+
+    PFN_WDF_DEVICE_SELF_MANAGED_IO_INIT     EvtDeviceSelfManagedIoInit;
+
+    PFN_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND  EvtDeviceSelfManagedIoSuspend;
+
+    PFN_WDF_DEVICE_SELF_MANAGED_IO_RESTART  EvtDeviceSelfManagedIoRestart;
+
+    PFN_WDF_DEVICE_SURPRISE_REMOVAL         EvtDeviceSurpriseRemoval;
+
+    PFN_WDF_DEVICE_QUERY_REMOVE             EvtDeviceQueryRemove;
+
+    PFN_WDF_DEVICE_QUERY_STOP               EvtDeviceQueryStop;
+
+    PFN_WDF_DEVICE_USAGE_NOTIFICATION       EvtDeviceUsageNotification;
+
+    PFN_WDF_DEVICE_RELATIONS_QUERY          EvtDeviceRelationsQuery;
+
+    PFN_WDF_DEVICE_USAGE_NOTIFICATION_EX    EvtDeviceUsageNotificationEx;
+
+} WDF_PNPPOWER_EVENT_CALLBACKS_V1_11, *PWDF_PNPPOWER_EVENT_CALLBACKS_V1_11;
+
+typedef struct _WDF_POWER_POLICY_EVENT_CALLBACKS_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    PFN_WDF_DEVICE_ARM_WAKE_FROM_S0         EvtDeviceArmWakeFromS0;
+
+    PFN_WDF_DEVICE_DISARM_WAKE_FROM_S0      EvtDeviceDisarmWakeFromS0;
+
+    PFN_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED   EvtDeviceWakeFromS0Triggered;
+
+    PFN_WDF_DEVICE_ARM_WAKE_FROM_SX         EvtDeviceArmWakeFromSx;
+
+    PFN_WDF_DEVICE_DISARM_WAKE_FROM_SX      EvtDeviceDisarmWakeFromSx;
+
+    PFN_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED   EvtDeviceWakeFromSxTriggered;
+
+    PFN_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON EvtDeviceArmWakeFromSxWithReason;
+
+} WDF_POWER_POLICY_EVENT_CALLBACKS_V1_11, *PWDF_POWER_POLICY_EVENT_CALLBACKS_V1_11;
+
+typedef struct _WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Indicates whether the device can wake itself up while the machine is in
+    // S0.
+    //
+    WDF_POWER_POLICY_S0_IDLE_CAPABILITIES IdleCaps;
+
+    //
+    // The low power state in which the device will be placed when it is idled
+    // out while the machine is in S0.
+    //
+    DEVICE_POWER_STATE DxState;
+
+    //
+    // Amount of time the device must be idle before idling out.  Timeout is in
+    // milliseconds.
+    //
+    ULONG IdleTimeout;
+
+    //
+    // Inidcates whether a user can control the idle policy of the device.
+    // By default, a user is allowed to change the policy.
+    //
+    WDF_POWER_POLICY_S0_IDLE_USER_CONTROL UserControlOfIdleSettings;
+
+    //
+    // If WdfTrue, idling out while the machine is in S0 will be enabled.
+    //
+    // If WdfFalse, idling out will be disabled.
+    //
+    // If WdfUseDefault, the idling out will be enabled.  If
+    // UserControlOfIdleSettings is set to IdleAllowUserControl, the user's
+    // settings will override the default.
+    //
+    WDF_TRI_STATE Enabled;
+
+    //
+    // This field is applicable only when IdleCaps == IdleCannotWakeFromS0
+    // If WdfTrue,device is powered up on System Wake even if device is idle
+    // If WdfFalse, device is not powered up on system wake if it is idle
+    // If WdfUseDefault, the behavior is same as WdfFalse
+    //
+    WDF_TRI_STATE PowerUpIdleDeviceOnSystemWake;
+
+    //
+    // This field determines how the IdleTimeout field is used.
+    //
+    // If the value is DriverManagedIdleTimeout, then the idle timeout value
+    // is determined by the IdleTimeout field of this structure.
+    //
+    // If the value is SystemManagedIdleTimeout, then the timeout value is
+    // determined by the power framework (PoFx) on operating systems where
+    // the PoFx is available (i.e. Windows 8 and later). The IdleTimeout field
+    // is ignored on these operating systems. On operating systems where the
+    // PoFx is not available, the behavior is same as DriverManagedIdleTimeout.
+    //
+    // If the value is SystemManagedIdleTimeoutWithHint, then the timeout value
+    // is determined by the power framework (PoFx) on operating systems where
+    // the PoFx is available (i.e. Windows 8 and later). In addition, the value
+    // specified in the IdleTimeout field is provided as a hint to the PoFx in
+    // determining when the device should be allowed to enter a low-power state.
+    // Since it is only a hint, the actual duration after which the PoFx allows
+    // the device to enter a low-power state might be greater than or less than
+    // the IdleTimeout value. On operating systems where the PoFx is not
+    // available, the behavior is same as DriverManagedIdleTimeout.
+    //
+    WDF_POWER_POLICY_IDLE_TIMEOUT_TYPE IdleTimeoutType;
+
+    //
+    // This field forces the device to avoid idling in the D3cold power state.
+    // WDF will ensure, with help from the bus drivers, that the device will
+    // idle in a D-state that can successfully generate a wake signal, if
+    // necessary.  If the client specifies that DxState == PowerDeviceD3, this
+    // setting allows the client to distinguish betwen D3hot and D3cold.  If
+    // the client sets DxState == PowerDeviceMaximum, then WDF will pick the
+    // deepest idle state identified by the bus driver.  If that deepest state
+    // is D3cold, this field allows the client to override that and choose
+    // D3hot.
+    //
+    // If WdfTrue, device will not use D3cold in S0.
+    // If WdfFalse, device will use D3cold in S0 if the ACPI firmware indicates
+    // that the device can enter that state, if DxState above does not
+    // specify some other D-state and, if the device is armed for
+    // wake, that it can generate its wake signal from D3cold.
+    // If WdfUseDefault, this setting will be derived from the driver's INF,
+    // specifically the presence or absence of the following two lines in
+    // the DDInstall.HW section:
+    // Include=machine.inf
+    // Needs=PciD3ColdSupported
+    //
+    WDF_TRI_STATE ExcludeD3Cold;
+
+} WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_11, *PWDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_V1_11;
+
+typedef struct _WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // The low power state in which the device will be placed when it is armed
+    // for wake from Sx.
+    //
+    DEVICE_POWER_STATE DxState;
+
+    //
+    // Inidcates whether a user can control the idle policy of the device.
+    // By default, a user is allowed to change the policy.
+    //
+    WDF_POWER_POLICY_SX_WAKE_USER_CONTROL UserControlOfWakeSettings;
+
+    //
+    // If WdfTrue, arming the device for wake while the machine is in Sx is
+    // enabled.
+    //
+    // If WdfFalse, arming the device for wake while the machine is in Sx is
+    // disabled.
+    //
+    // If WdfUseDefault, arming will be enabled.  If UserControlOfWakeSettings
+    // is set to WakeAllowUserControl, the user's settings will override the
+    // default.
+    //
+    WDF_TRI_STATE Enabled;
+
+    //
+    // If set to TRUE, arming the parent device can depend on whether there
+    // is atleast one child device armed for wake.
+    //
+    // If set to FALSE, arming of the parent device will be independent of
+    // whether any of the child devices are armed for wake.
+    //
+    BOOLEAN ArmForWakeIfChildrenAreArmedForWake;
+
+    //
+    // Indicates that whenever the parent device completes the wake irp
+    // successfully, the status needs to be also propagated to the child
+    // devices.  This helps in tracking which devices were responsible for
+    // waking the system.
+    //
+    BOOLEAN IndicateChildWakeOnParentWake;
+
+} WDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_V1_11, *PWDF_DEVICE_POWER_POLICY_WAKE_SETTINGS_V1_11;
+
+typedef struct _WDF_DEVICE_STATE_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // If set to WdfTrue, the device will be disabled
+    //
+    WDF_TRI_STATE Disabled;
+
+    //
+    // If set to WdfTrue, the device will not be displayed in device manager.
+    // Once hidden, the device cannot be unhidden.
+    //
+    WDF_TRI_STATE DontDisplayInUI;
+
+    //
+    // If set to WdfTrue, the device is reporting itself as failed.  If set
+    // in conjuction with ResourcesChanged to WdfTrue, the device will receive
+    // a PnP stop and then a new PnP start device.
+    //
+    WDF_TRI_STATE Failed;
+
+    //
+    // If set to WdfTrue, the device cannot be subsequently disabled.
+    //
+    WDF_TRI_STATE NotDisableable;
+
+
+
+
+    //
+    //
+    // If set to WdfTrue, the device stack will be torn down.
+    //
+    WDF_TRI_STATE Removed;
+
+    //
+    // If set to WdfTrue, the device will be sent another PnP start.  If the
+    // Failed field is set to WdfTrue as well, a PnP stop will be sent before
+    // the start.
+    //
+    WDF_TRI_STATE ResourcesChanged;
+
+} WDF_DEVICE_STATE_V1_11, *PWDF_DEVICE_STATE_V1_11;
+
+typedef struct _WDF_DEVICE_PNP_CAPABILITIES_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // NOTE: To mark a PDO as raw, call WdfPdoInitAssignRawDevice
+    //
+    //
+    WDF_TRI_STATE LockSupported;
+
+    WDF_TRI_STATE EjectSupported;
+
+    WDF_TRI_STATE Removable;
+
+    WDF_TRI_STATE DockDevice;
+
+    WDF_TRI_STATE UniqueID;
+
+    WDF_TRI_STATE SilentInstall;
+
+    WDF_TRI_STATE SurpriseRemovalOK;
+
+    WDF_TRI_STATE HardwareDisabled;
+
+    WDF_TRI_STATE NoDisplayInUI;
+
+    //
+    // Default values of -1 indicate not to set this value
+    //
+    ULONG Address;
+
+    ULONG UINumber;
+
+} WDF_DEVICE_PNP_CAPABILITIES_V1_11, *PWDF_DEVICE_PNP_CAPABILITIES_V1_11;
+
+typedef struct _WDF_DEVICE_POWER_CAPABILITIES_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    WDF_TRI_STATE DeviceD1;
+
+    WDF_TRI_STATE DeviceD2;
+
+    WDF_TRI_STATE WakeFromD0;
+
+    WDF_TRI_STATE WakeFromD1;
+
+    WDF_TRI_STATE WakeFromD2;
+
+    WDF_TRI_STATE WakeFromD3;
+
+    //
+    // Default value PowerDeviceMaximum indicates not to set this value
+    //
+    DEVICE_POWER_STATE DeviceState[PowerSystemMaximum];
+
+    //
+    // Default value PowerDeviceMaximum, PowerSystemMaximum indicates not to
+    // set this value.
+    //
+    DEVICE_POWER_STATE DeviceWake;
+
+    SYSTEM_POWER_STATE SystemWake;
+
+    //
+    // Default values of -1 indicate not to set this value
+    //
+    ULONG D1Latency;
+
+    ULONG D2Latency;
+
+    ULONG D3Latency;
+
+    //
+    // Ideal Dx state for the device to be put into when the machine moves into
+    // Sx and the device is not armed for wake.  By default, the default will be
+    // placed into D3.  If IdealDxStateForSx is lighter then
+    // DeviceState[Sx], then DeviceState[Sx] will be used as the Dx state.
+    //
+    DEVICE_POWER_STATE IdealDxStateForSx;
+
+} WDF_DEVICE_POWER_CAPABILITIES_V1_11, *PWDF_DEVICE_POWER_CAPABILITIES_V1_11;
+
+typedef struct _WDF_REMOVE_LOCK_OPTIONS_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Bit field combination of values from the WDF_REMOVE_LOCK_OPTIONS_FLAGS
+    // enumeration
+    //
+    ULONG Flags;
+
+} WDF_REMOVE_LOCK_OPTIONS_V1_11, *PWDF_REMOVE_LOCK_OPTIONS_V1_11;
+
+typedef struct _WDF_POWER_FRAMEWORK_SETTINGS_V1_11 {
+    //
+    // Size of the structure, in bytes.
+    //
+    ULONG Size;
+
+    //
+    // Client driver's callback function that is invoked after KMDF has
+    // registered with the power framework. This field can be NULL if the
+    // client driver does not wish to specify this callback.
+    //
+    PFN_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE EvtDeviceWdmPostPoFxRegisterDevice;
+
+    //
+    // Client driver's callback function that is invoked before KMDF
+    // unregisters with the power framework. This field can be NULL if the
+    // client driver does not wish to specify this callback.
+    //
+    PFN_WDFDEVICE_WDM_PRE_PO_FX_UNREGISTER_DEVICE EvtDeviceWdmPrePoFxUnregisterDevice;
+
+    //
+    // Pointer to a PO_FX_COMPONENT structure that describes the only component
+    // in the single-component device. This field can be NULL if the client
+    // driver wants KMDF to use the default specification for this component
+    // (i.e. support for F0 only).
+    //
+    PPO_FX_COMPONENT Component;
+
+    //
+    // Client driver's PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK callback
+    // function. This field can be NULL if the client driver does not wish to
+    // specify this callback.
+    //
+    PPO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK ComponentActiveConditionCallback;
+
+    //
+    // Client driver's PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK callback
+    // function. This field can be NULL if the client driver does not wish to
+    // specify this callback.
+    //
+    PPO_FX_COMPONENT_IDLE_CONDITION_CALLBACK ComponentIdleConditionCallback;
+
+    //
+    // Client driver's PO_FX_COMPONENT_IDLE_STATE_CALLBACK callback function.
+    // This field can be NULL if the client driver does not wish to specify
+    // this callback.
+    //
+    PPO_FX_COMPONENT_IDLE_STATE_CALLBACK ComponentIdleStateCallback;
+
+    //
+    // Client driver's PO_FX_POWER_CONTROL_CALLBACK callback function. This
+    // field can be NULL if the client driver does not wish to specify this
+    // callback.
+    //
+    PPO_FX_POWER_CONTROL_CALLBACK PowerControlCallback;
+
+    //
+    // Context value that is passed in to the ComponentIdleStateCallback and
+    // PowerControlCallback callback functions.
+    //
+    PVOID PoFxDeviceContext;
+
+} WDF_POWER_FRAMEWORK_SETTINGS_V1_11, *PWDF_POWER_FRAMEWORK_SETTINGS_V1_11;
+
+// End of versioning of structures for wdfDevice.h
+
+//
+// Versioning of structures for wdfDmaEnabler.h
+//
+typedef struct _WDF_DMA_ENABLER_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG                Size;
+
+    //
+    // One of the above WDF_DMA_PROFILES
+    //
+    WDF_DMA_PROFILE      Profile;
+
+    //
+    // Maximum DMA Transfer handled in bytes.
+    //
+    size_t               MaximumLength;
+
+    //
+    // The various DMA PnP/Power event callbacks
+    //
+    PFN_WDF_DMA_ENABLER_FILL                  EvtDmaEnablerFill;
+
+    PFN_WDF_DMA_ENABLER_FLUSH                 EvtDmaEnablerFlush;
+
+    PFN_WDF_DMA_ENABLER_DISABLE               EvtDmaEnablerDisable;
+
+    PFN_WDF_DMA_ENABLER_ENABLE                EvtDmaEnablerEnable;
+
+    PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START  EvtDmaEnablerSelfManagedIoStart;
+
+    PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP   EvtDmaEnablerSelfManagedIoStop;
+
+    //
+    // Overrides the address width specified by the DMA profile.
+    //
+    ULONG               AddressWidthOverride;
+
+    //
+    // Overrides the version of the WDM DMA interfaces that WDF uses
+    // (0 for default).
+    //
+    ULONG               WdmDmaVersionOverride;
+
+    //
+    // Bit field combination of values from the WDF_DMA_ENABLER_CONFIG_FLAGS
+    // enumeration
+    //
+    ULONG               Flags;
+
+} WDF_DMA_ENABLER_CONFIG_V1_11, *PWDF_DMA_ENABLER_CONFIG_V1_11;
+
+typedef struct _WDF_DMA_SYSTEM_PROFILE_CONFIG_V1_11 {
+    //
+    // The size of this structure in bytes
+    //
+    ULONG                 Size;
+
+    //
+    // Specifies that the transfer is controlled by the device's DMA
+    // request line.
+    //
+    //
+    BOOLEAN               DemandMode;
+
+    //
+    // Specifies that the DMA engine will loop back to the beginning
+    // of the buffer once it reaches the end.
+    //
+    //
+    BOOLEAN               LoopedTransfer;
+
+    //
+    // Width of the register to DMA to/from
+    //
+    //
+    DMA_WIDTH             DmaWidth;
+
+    //
+    // The adress at which to write to the device
+    //
+    PHYSICAL_ADDRESS      DeviceAddress;
+
+    //
+    // The translated resource descriptor for the DMA channel assigned
+    // the device during EvtDevicePrepareHardware
+    //
+    PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor;
+
+} WDF_DMA_SYSTEM_PROFILE_CONFIG_V1_11, *PWDF_DMA_SYSTEM_PROFILE_CONFIG_V1_11;
+
+// End of versioning of structures for wdfDmaEnabler.h
+
+//
+// Versioning of structures for wdfDmaTransaction.h
+//
+// End of versioning of structures for wdfDmaTransaction.h
+
+//
+// Versioning of structures for wdfdpc.h
+//
+typedef struct _WDF_DPC_CONFIG_V1_11 {
+    ULONG       Size;
+
+    PFN_WDF_DPC EvtDpcFunc;
+
+    //
+    // If this is TRUE, the DPC will automatically serialize
+    // with the event callback handlers of its Parent Object.
+    //
+    // Parent Object's callback constraints should be compatible
+    // with the DPC (DISPATCH_LEVEL), or the request will fail.
+    //
+    BOOLEAN     AutomaticSerialization;
+
+} WDF_DPC_CONFIG_V1_11, *PWDF_DPC_CONFIG_V1_11;
+
+// End of versioning of structures for wdfdpc.h
+
+//
+// Versioning of structures for wdfdriver.h
+//
+typedef struct _WDF_DRIVER_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Event callbacks
+    //
+    PFN_WDF_DRIVER_DEVICE_ADD EvtDriverDeviceAdd;
+
+    PFN_WDF_DRIVER_UNLOAD    EvtDriverUnload;
+
+    //
+    // Combination of WDF_DRIVER_INIT_FLAGS values
+    //
+    ULONG DriverInitFlags;
+
+    //
+    // Pool tag to use for all allocations made by the framework on behalf of
+    // the client driver.
+    //
+    ULONG DriverPoolTag;
+
+} WDF_DRIVER_CONFIG_V1_11, *PWDF_DRIVER_CONFIG_V1_11;
+
+typedef struct _WDF_DRIVER_VERSION_AVAILABLE_PARAMS_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Major Version requested
+    //
+    ULONG MajorVersion;
+
+    //
+    // Minor Version requested
+    //
+    ULONG MinorVersion;
+
+} WDF_DRIVER_VERSION_AVAILABLE_PARAMS_V1_11, *PWDF_DRIVER_VERSION_AVAILABLE_PARAMS_V1_11;
+
+// End of versioning of structures for wdfdriver.h
+
+//
+// Versioning of structures for wdffdo.h
+//
+typedef struct _WDF_FDO_EVENT_CALLBACKS_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    PFN_WDF_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtDeviceFilterAddResourceRequirements;
+
+    PFN_WDF_DEVICE_FILTER_RESOURCE_REQUIREMENTS EvtDeviceFilterRemoveResourceRequirements;
+
+    PFN_WDF_DEVICE_REMOVE_ADDED_RESOURCES EvtDeviceRemoveAddedResources;
+
+} WDF_FDO_EVENT_CALLBACKS_V1_11, *PWDF_FDO_EVENT_CALLBACKS_V1_11;
+
+// End of versioning of structures for wdffdo.h
+
+//
+// Versioning of structures for wdffileobject.h
+//
+// End of versioning of structures for wdffileobject.h
+
+//
+// Versioning of structures for wdfGlobals.h
+//
+typedef struct _WDF_DRIVER_GLOBALS_V1_11 {
+    // backpointer to the handle for this driver
+    WDFDRIVER Driver;
+
+    // Flags indicated by the driver during create
+    ULONG DriverFlags;
+
+    // Tag generated by WDF for the driver.  Tag used by allocations made on
+    // behalf of the driver by WDF.
+    ULONG DriverTag;
+
+    CHAR DriverName[WDF_DRIVER_GLOBALS_NAME_LEN];
+
+    // If TRUE, the stub code will capture DriverObject->DriverUnload and insert
+    // itself first in the unload chain.  If FALSE, DriverUnload is left alone
+    // (but WDF will not be notified of unload and there will be no auto cleanup).
+    BOOLEAN DisplaceDriverUnload;
+
+} WDF_DRIVER_GLOBALS_V1_11, *PWDF_DRIVER_GLOBALS_V1_11;
+
+// End of versioning of structures for wdfGlobals.h
+
+//
+// Versioning of structures for wdfinstaller.h
+//
+// End of versioning of structures for wdfinstaller.h
+
+//
+// Versioning of structures for wdfinternal.h
+//
+// End of versioning of structures for wdfinternal.h
+
+//
+// Versioning of structures for wdfinterrupt.h
+//
+//
+// Interrupt Configuration Structure
+//
+typedef struct _WDF_INTERRUPT_CONFIG_V1_11 {
+    ULONG              Size;
+
+    //
+    // If this interrupt is to be synchronized with other interrupt(s) assigned
+    // to the same WDFDEVICE, create a WDFSPINLOCK and assign it to each of the
+    // WDFINTERRUPTs config.
+    //
+    WDFSPINLOCK                     SpinLock;
+
+    WDF_TRI_STATE                   ShareVector;
+
+    BOOLEAN                         FloatingSave;
+
+    //
+    // DIRQL handling: automatic serialization of the DpcForIsr/WaitItemForIsr.
+    // Passive-level handling: automatic serialization of all callbacks.
+    //
+    BOOLEAN                         AutomaticSerialization;
+
+    //
+    // Event Callbacks
+    //
+    PFN_WDF_INTERRUPT_ISR           EvtInterruptIsr;
+
+    PFN_WDF_INTERRUPT_DPC           EvtInterruptDpc;
+
+    PFN_WDF_INTERRUPT_ENABLE        EvtInterruptEnable;
+
+    PFN_WDF_INTERRUPT_DISABLE       EvtInterruptDisable;
+
+    PFN_WDF_INTERRUPT_WORKITEM      EvtInterruptWorkItem;
+
+    //
+    // These fields are only used when interrupt is created in
+    // EvtDevicePrepareHardware callback.
+    //
+    PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptRaw;
+
+    PCM_PARTIAL_RESOURCE_DESCRIPTOR InterruptTranslated;
+
+    //
+    // Optional passive lock for handling interrupts at passive-level.
+    //
+    WDFWAITLOCK                     WaitLock;
+
+    //
+    // TRUE: handle interrupt at passive-level.
+    // FALSE: handle interrupt at DIRQL level. This is the default.
+    //
+    BOOLEAN                         PassiveHandling;
+
+    //
+    // TRUE: Interrupt is reported inactive on explicit power down
+    // instead of disconnecting it.
+    // FALSE: Interrupt is disconnected instead of reporting inactive
+    // on explicit power down.
+    // DEFAULT: Framework decides the right value.
+    //
+    WDF_TRI_STATE                   ReportInactiveOnPowerDown;
+
+} WDF_INTERRUPT_CONFIG_V1_11, *PWDF_INTERRUPT_CONFIG_V1_11;
+
+typedef struct _WDF_INTERRUPT_INFO_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG                  Size;
+
+    ULONG64                Reserved1;
+
+    KAFFINITY              TargetProcessorSet;
+
+    ULONG                  Reserved2;
+
+    ULONG                  MessageNumber;
+
+    ULONG                  Vector;
+
+    KIRQL                  Irql;
+
+    KINTERRUPT_MODE        Mode;
+
+    WDF_INTERRUPT_POLARITY Polarity;
+
+    BOOLEAN                MessageSignaled;
+
+    // CM_SHARE_DISPOSITION
+    UCHAR                  ShareDisposition;
+
+    DECLSPEC_ALIGN(8) USHORT Group;
+
+} WDF_INTERRUPT_INFO_V1_11, *PWDF_INTERRUPT_INFO_V1_11;
+
+//
+// Interrupt Extended Policy Configuration Structure
+//
+typedef struct _WDF_INTERRUPT_EXTENDED_POLICY_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG                   Size;
+
+    WDF_INTERRUPT_POLICY    Policy;
+
+    WDF_INTERRUPT_PRIORITY  Priority;
+
+    GROUP_AFFINITY          TargetProcessorSetAndGroup;
+
+} WDF_INTERRUPT_EXTENDED_POLICY_V1_11, *PWDF_INTERRUPT_EXTENDED_POLICY_V1_11;
+
+// End of versioning of structures for wdfinterrupt.h
+
+//
+// Versioning of structures for wdfio.h
+//
+//
+// This is the structure used to configure an IoQueue and
+// register callback events to it.
+//
+//
+typedef struct _WDF_IO_QUEUE_CONFIG_V1_11 {
+    ULONG                                       Size;
+
+    WDF_IO_QUEUE_DISPATCH_TYPE                  DispatchType;
+
+    WDF_TRI_STATE                               PowerManaged;
+
+    BOOLEAN                                     AllowZeroLengthRequests;
+
+    BOOLEAN                                     DefaultQueue;
+
+    PFN_WDF_IO_QUEUE_IO_DEFAULT                 EvtIoDefault;
+
+    PFN_WDF_IO_QUEUE_IO_READ                    EvtIoRead;
+
+    PFN_WDF_IO_QUEUE_IO_WRITE                   EvtIoWrite;
+
+    PFN_WDF_IO_QUEUE_IO_DEVICE_CONTROL          EvtIoDeviceControl;
+
+    PFN_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl;
+
+    PFN_WDF_IO_QUEUE_IO_STOP                    EvtIoStop;
+
+    PFN_WDF_IO_QUEUE_IO_RESUME                  EvtIoResume;
+
+    PFN_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE       EvtIoCanceledOnQueue;
+
+    union {
+        struct {
+            ULONG NumberOfPresentedRequests;
+
+        } Parallel;
+
+    } Settings;
+
+    WDFDRIVER                                   Driver;
+
+} WDF_IO_QUEUE_CONFIG_V1_11, *PWDF_IO_QUEUE_CONFIG_V1_11;
+
+typedef struct _WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_V1_11 {
+    ULONG  Size;
+
+    ULONG TotalForwardProgressRequests;
+
+    //
+    // Specify the type of the policy here.
+    //
+    WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY ForwardProgressReservedPolicy;
+
+    //
+    // Structure which contains the policy specific fields
+    //
+    WDF_IO_FORWARD_PROGRESS_RESERVED_POLICY_SETTINGS ForwardProgressReservePolicySettings;
+
+    //
+    // Callback for reserved request given at initialization time
+    //
+    PFN_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtIoAllocateResourcesForReservedRequest;
+
+    //
+    // Callback for reserved request given at run time
+    //
+    PFN_WDF_IO_ALLOCATE_REQUEST_RESOURCES  EvtIoAllocateRequestResources;
+
+} WDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_V1_11, *PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY_V1_11;
+
+// End of versioning of structures for wdfio.h
+
+//
+// Versioning of structures for wdfIoTarget.h
+//
+typedef struct _WDF_IO_TARGET_OPEN_PARAMS_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Indicates which fields of this structure are going to be used in
+    // creating the WDFIOTARGET.
+    //
+    WDF_IO_TARGET_OPEN_TYPE Type;
+
+    //
+    // Notification when the target is being queried for removal.
+    // If !NT_SUCCESS is returned, the query will fail and the target will
+    // remain opened.
+    //
+    PFN_WDF_IO_TARGET_QUERY_REMOVE EvtIoTargetQueryRemove;
+
+    //
+    // The previous query remove has been canceled and the target can now be
+    // reopened.
+    //
+    PFN_WDF_IO_TARGET_REMOVE_CANCELED EvtIoTargetRemoveCanceled;
+
+    //
+    // The query remove has succeeded and the target is now removed from the
+    // system.
+    //
+    PFN_WDF_IO_TARGET_REMOVE_COMPLETE EvtIoTargetRemoveComplete;
+
+    // ========== WdfIoTargetOpenUseExistingDevice begin ==========
+    //
+    // The device object to send requests to
+    //
+    PDEVICE_OBJECT TargetDeviceObject;
+
+    //
+    // File object representing the TargetDeviceObject.  The PFILE_OBJECT will
+    // be passed as a parameter in all requests sent to the resulting
+    // WDFIOTARGET.
+    //
+    PFILE_OBJECT TargetFileObject;
+
+    // ========== WdfIoTargetOpenUseExistingDevice end ==========
+    //
+    // ========== WdfIoTargetOpenByName begin ==========
+    //
+    // Name of the device to open.
+    //
+    UNICODE_STRING TargetDeviceName;
+
+    //
+    // The access desired on the device being opened up, ie WDM FILE_XXX_ACCESS
+    // such as FILE_ANY_ACCESS, FILE_SPECIAL_ACCESS, FILE_READ_ACCESS, or
+    // FILE_WRITE_ACCESS or you can use values such as GENERIC_READ,
+    // GENERIC_WRITE, or GENERIC_ALL.
+    //
+    ACCESS_MASK DesiredAccess;
+
+    //
+    // Share access desired on the target being opened, ie WDM FILE_SHARE_XXX
+    // values such as FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_DELETE.
+    //
+    // A zero value means exclusive access to the target.
+    //
+    ULONG ShareAccess;
+
+    //
+    // File  attributes, see ZwCreateFile in the DDK for a list of valid
+    // values and their meaning.
+    //
+    ULONG FileAttributes;
+
+    //
+    // Create disposition, see ZwCreateFile in the DDK for a list of valid
+    // values and their meaning.
+    //
+    ULONG CreateDisposition;
+
+    //
+    // Options for opening the device, see CreateOptions for ZwCreateFile in the
+    // DDK for a list of valid values and their meaning.
+    //
+    ULONG CreateOptions;
+
+    PVOID EaBuffer;
+
+    ULONG EaBufferLength;
+
+    PLONGLONG AllocationSize;
+
+    // ========== WdfIoTargetOpenByName end ==========
+    //
+    //
+    // On return for a create by name, this will contain one of the following
+    // values:  FILE_CREATED, FILE_OPENED, FILE_OVERWRITTEN, FILE_SUPERSEDED,
+    // FILE_EXISTS, FILE_DOES_NOT_EXIST
+    //
+    ULONG FileInformation;
+
+} WDF_IO_TARGET_OPEN_PARAMS_V1_11, *PWDF_IO_TARGET_OPEN_PARAMS_V1_11;
+
+// End of versioning of structures for wdfIoTarget.h
+
+//
+// Versioning of structures for wdfMemory.h
+//
+typedef struct _WDFMEMORY_OFFSET_V1_11 {
+    //
+    // Offset into the WDFMEMORY that the operation should start at.
+    //
+    size_t BufferOffset;
+
+    //
+    // Number of bytes that the operation should access.  If 0, the entire
+    // length of the WDFMEMORY buffer will be used in the operation or ignored
+    // depending on the API.
+    //
+    size_t BufferLength;
+
+} WDFMEMORY_OFFSET_V1_11, *PWDFMEMORY_OFFSET_V1_11;
+
+typedef struct _WDF_MEMORY_DESCRIPTOR_V1_11 {
+    WDF_MEMORY_DESCRIPTOR_TYPE Type;
+
+    union {
+        struct {
+            PVOID Buffer;
+
+            ULONG Length;
+
+        } BufferType;
+
+        struct {
+            PMDL Mdl;
+
+            ULONG BufferLength;
+
+        } MdlType;
+
+        struct {
+            WDFMEMORY Memory;
+
+            PWDFMEMORY_OFFSET_V1_11 Offsets;
+
+        } HandleType;
+
+    } u;
+
+} WDF_MEMORY_DESCRIPTOR_V1_11, *PWDF_MEMORY_DESCRIPTOR_V1_11;
+
+// End of versioning of structures for wdfMemory.h
+
+//
+// Versioning of structures for wdfMiniport.h
+//
+// End of versioning of structures for wdfMiniport.h
+
+//
+// Versioning of structures for wdfObject.h
+//
+typedef struct _WDF_OBJECT_ATTRIBUTES_V1_11 {
+    //
+    // Size in bytes of this structure
+    //
+    ULONG Size;
+
+    //
+    // Function to call when the object is deleted
+    //
+    PFN_WDF_OBJECT_CONTEXT_CLEANUP EvtCleanupCallback;
+
+    //
+    // Function to call when the objects memory is destroyed when the
+    // the last reference count goes to zero
+    //
+    PFN_WDF_OBJECT_CONTEXT_DESTROY EvtDestroyCallback;
+
+    //
+    // Execution level constraints for Object
+    //
+    WDF_EXECUTION_LEVEL ExecutionLevel;
+
+    //
+    // Synchronization level constraint for Object
+    //
+    WDF_SYNCHRONIZATION_SCOPE SynchronizationScope;
+
+    //
+    // Optional Parent Object
+    //
+    WDFOBJECT ParentObject;
+
+    //
+    // Overrides the size of the context allocated as specified by
+    // ContextTypeInfo->ContextSize
+    //
+    size_t ContextSizeOverride;
+
+    //
+    // Pointer to the type information to be associated with the object
+    //
+    PCWDF_OBJECT_CONTEXT_TYPE_INFO_V1_11 ContextTypeInfo;
+
+} WDF_OBJECT_ATTRIBUTES_V1_11, *PWDF_OBJECT_ATTRIBUTES_V1_11;
+
+//
+// Since C does not have strong type checking we must invent our own
+//
+typedef struct _WDF_OBJECT_CONTEXT_TYPE_INFO_V1_11 {
+    //
+    // The size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // String representation of the context's type name, i.e. "DEVICE_CONTEXT"
+    //
+    PCHAR ContextName;
+
+    //
+    // The size of the context in bytes.  This will be the size of the context
+    // associated with the handle unless
+    // WDF_OBJECT_ATTRIBUTES::ContextSizeOverride is specified.
+    //
+    size_t ContextSize;
+
+    //
+    // If NULL, this structure is the unique type identifier for the context
+    // type.  If != NULL, the UniqueType pointer value is the unique type id
+    // for the context type.
+    //
+    PCWDF_OBJECT_CONTEXT_TYPE_INFO_V1_11 UniqueType;
+
+    //
+    // Function pointer to retrieve the context type information structure
+    // pointer from the provider of the context type.  This function is invoked
+    // by the client driver's entry point by the KMDF stub after all class
+    // drivers are loaded and before DriverEntry is invoked.
+    //
+    PFN_GET_UNIQUE_CONTEXT_TYPE EvtDriverGetUniqueContextType;
+
+} WDF_OBJECT_CONTEXT_TYPE_INFO_V1_11, *PWDF_OBJECT_CONTEXT_TYPE_INFO_V1_11;
+
+//
+// Core structure for supporting custom types, see macros below.
+//
+typedef struct _WDF_CUSTOM_TYPE_CONTEXT_V1_11 {
+    ULONG       Size;
+
+    ULONG_PTR   Data;
+
+} WDF_CUSTOM_TYPE_CONTEXT_V1_11, *PWDF_CUSTOM_TYPE_CONTEXT_V1_11;
+
+// End of versioning of structures for wdfObject.h
+
+//
+// Versioning of structures for wdfpdo.h
+//
+typedef struct _WDF_PDO_EVENT_CALLBACKS_V1_11 {
+    //
+    // The size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Called in response to IRP_MN_QUERY_RESOURCES
+    //
+    PFN_WDF_DEVICE_RESOURCES_QUERY EvtDeviceResourcesQuery;
+
+    //
+    // Called in response to IRP_MN_QUERY_RESOURCE_REQUIREMENTS
+    //
+    PFN_WDF_DEVICE_RESOURCE_REQUIREMENTS_QUERY EvtDeviceResourceRequirementsQuery;
+
+    //
+    // Called in response to IRP_MN_EJECT
+    //
+    PFN_WDF_DEVICE_EJECT EvtDeviceEject;
+
+    //
+    // Called in response to IRP_MN_SET_LOCK
+    //
+    PFN_WDF_DEVICE_SET_LOCK EvtDeviceSetLock;
+
+    //
+    // Called in response to the power policy owner sending a wait wake to the
+    // PDO.  Bus generic arming shoulding occur here.
+    //
+    PFN_WDF_DEVICE_ENABLE_WAKE_AT_BUS       EvtDeviceEnableWakeAtBus;
+
+    //
+    // Called in response to the power policy owner sending a wait wake to the
+    // PDO.  Bus generic disarming shoulding occur here.
+    //
+    PFN_WDF_DEVICE_DISABLE_WAKE_AT_BUS      EvtDeviceDisableWakeAtBus;
+
+    //
+    // Called when reporting the PDO missing to PnP manager in response to
+    // IRP_MN_QUERY_DEVICE_RELATIONS for Bus Relations.
+    //
+    PFN_WDF_DEVICE_REPORTED_MISSING EvtDeviceReportedMissing;
+
+} WDF_PDO_EVENT_CALLBACKS_V1_11, *PWDF_PDO_EVENT_CALLBACKS_V1_11;
+
+// End of versioning of structures for wdfpdo.h
+
+//
+// Versioning of structures for wdfpool.h
+//
+// End of versioning of structures for wdfpool.h
+
+//
+// Versioning of structures for wdfqueryinterface.h
+//
+typedef struct _WDF_QUERY_INTERFACE_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes.
+    //
+    ULONG Size;
+
+    //
+    // Interface to be returned to the caller.  Optional if BehaviorType is set
+    // to WdfQueryInterfaceTypePassThrough or ImportInterface is set to TRUE.
+    //
+    PINTERFACE Interface;
+
+    //
+    // The GUID identifying the interface
+    //
+    CONST GUID * InterfaceType;
+
+    //
+    // Valid only for PDOs.  The framework will allocate a new request and
+    // forward it down the parent's device stack.
+    //
+    BOOLEAN SendQueryToParentStack;
+
+    //
+    // Driver supplied callback which is called after some basic interface
+    // validation has been performed (size, version, and guid checking).  This
+    // is an optional parameter and may be NULL unless ImportInterface is
+    // specified.
+    //
+    // If the callback returns !NT_SUCCESS, this error will be returned to the
+    // caller and the query interface will fail.
+    //
+    // In this callback, the caller is free to modify the ExposedInterface in
+    // any manner of its choosing.  For instance, the callback may change any
+    // field in the interface.  The callback may also alloate a dynamic context
+    // to be associated with the interface; the InterfaceReference and
+    // InterfaceDereference functions may also be overridden.
+    //
+    // If ImportInterface is set to TRUE, then this is a required field and the
+    // callback must initialize the interface (the framework will leave the
+    // ExposedInterface buffer exactly as it received it) since the framework
+    // has no way of knowing which fields to fill in and which to leave alone.
+    //
+    PFN_WDF_DEVICE_PROCESS_QUERY_INTERFACE_REQUEST EvtDeviceProcessQueryInterfaceRequest;
+
+    //
+    // If TRUE, the interface provided by the caller contains data that the
+    // driver is interested in.  By setting to this field to TRUE, the
+    // EvtDeviceProcessQueryInterfaceRequest callback must initialize the
+    // ExposedInterface.
+    //
+    // If FALSE, the entire ExposedInterface is initialized through a memory
+    // copy before the EvtDeviceProcessQueryInterfaceRequest is called.
+    //
+    BOOLEAN ImportInterface;
+
+} WDF_QUERY_INTERFACE_CONFIG_V1_11, *PWDF_QUERY_INTERFACE_CONFIG_V1_11;
+
+// End of versioning of structures for wdfqueryinterface.h
+
+//
+// Versioning of structures for wdfregistry.h
+//
+// End of versioning of structures for wdfregistry.h
+
+//
+// Versioning of structures for wdfrequest.h
+//
+//
+// This parameters structure allows general access to a requests parameters
+//
+typedef struct _WDF_REQUEST_PARAMETERS_V1_11 {
+    USHORT Size;
+
+    UCHAR MinorFunction;
+
+    WDF_REQUEST_TYPE Type;
+
+    //
+    // The following user parameters are based on the service that is being
+    // invoked.  Drivers and file systems can determine which set to use based
+    // on the above major and minor function codes.
+    //
+    union {
+        //
+        // System service parameters for:  Create
+        //
+        //
+        struct {
+            PIO_SECURITY_CONTEXT SecurityContext;
+
+            ULONG Options;
+
+            USHORT POINTER_ALIGNMENT FileAttributes;
+
+            USHORT ShareAccess;
+
+            ULONG POINTER_ALIGNMENT EaLength;
+
+        } Create;
+
+        //
+        // System service parameters for:  Read
+        //
+        //
+        struct {
+            size_t Length;
+
+            ULONG POINTER_ALIGNMENT Key;
+
+            LONGLONG DeviceOffset;
+
+        } Read;
+
+        //
+        // System service parameters for:  Write
+        //
+        //
+        struct {
+            size_t Length;
+
+            ULONG POINTER_ALIGNMENT Key;
+
+            LONGLONG DeviceOffset;
+
+        } Write;
+
+        //
+        // System service parameters for:  Device Control
+        //
+        // Note that the user's output buffer is stored in the UserBuffer field
+        // and the user's input buffer is stored in the SystemBuffer field.
+        //
+        //
+        struct {
+            size_t OutputBufferLength;
+
+            size_t POINTER_ALIGNMENT InputBufferLength;
+
+            ULONG POINTER_ALIGNMENT IoControlCode;
+
+            PVOID Type3InputBuffer;
+
+        } DeviceIoControl;
+
+        struct {
+            PVOID Arg1;
+
+            PVOID  Arg2;
+
+            ULONG POINTER_ALIGNMENT IoControlCode;
+
+            PVOID Arg4;
+
+        } Others;
+
+    } Parameters;
+
+} WDF_REQUEST_PARAMETERS_V1_11, *PWDF_REQUEST_PARAMETERS_V1_11;
+
+typedef struct _WDF_REQUEST_COMPLETION_PARAMS_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    WDF_REQUEST_TYPE Type;
+
+    IO_STATUS_BLOCK IoStatus;
+
+    union {
+        struct {
+            WDFMEMORY Buffer;
+
+            size_t Length;
+
+            size_t Offset;
+
+        } Write;
+
+        struct {
+            WDFMEMORY Buffer;
+
+            size_t Length;
+
+            size_t Offset;
+
+        } Read;
+
+        struct {
+            ULONG IoControlCode;
+
+            struct {
+                WDFMEMORY Buffer;
+
+                size_t Offset;
+
+            } Input;
+
+            struct {
+                WDFMEMORY Buffer;
+
+                size_t Offset;
+
+                size_t Length;
+
+            } Output;
+
+        } Ioctl;
+
+        struct {
+            union {
+                PVOID Ptr;
+
+                ULONG_PTR Value;
+
+            } Argument1;
+
+            union {
+                PVOID Ptr;
+
+                ULONG_PTR Value;
+
+            } Argument2;
+
+            union {
+                PVOID Ptr;
+
+                ULONG_PTR Value;
+
+            } Argument3;
+
+            union {
+                PVOID Ptr;
+
+                ULONG_PTR Value;
+
+            } Argument4;
+
+        } Others;
+
+        struct {
+            PWDF_USB_REQUEST_COMPLETION_PARAMS_V1_11 Completion;
+
+        } Usb;
+
+    } Parameters;
+
+} WDF_REQUEST_COMPLETION_PARAMS_V1_11, *PWDF_REQUEST_COMPLETION_PARAMS_V1_11;
+
+typedef struct _WDF_REQUEST_REUSE_PARAMS_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Bit field combination of WDF_REQUEST_REUSE_Xxx values
+    //
+    ULONG Flags;
+
+    //
+    // The new status of the request.
+    //
+    NTSTATUS Status;
+
+    //
+    // New PIRP  to be contained in the WDFREQUEST.   Setting a new PIRP value
+    // is only valid for WDFREQUESTs created by WdfRequestCreateFromIrp where
+    // RequestFreesIrp == FALSE.  No other WDFREQUESTs (presented by the
+    // I/O queue for instance) may have their IRPs changed.
+    //
+    PIRP NewIrp;
+
+} WDF_REQUEST_REUSE_PARAMS_V1_11, *PWDF_REQUEST_REUSE_PARAMS_V1_11;
+
+typedef struct _WDF_REQUEST_SEND_OPTIONS_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Bit field combination of values from the WDF_REQUEST_SEND_OPTIONS_FLAGS
+    // enumeration
+    //
+    ULONG Flags;
+
+    //
+    // Valid when WDF_REQUEST_SEND_OPTION_TIMEOUT is set
+    //
+    LONGLONG Timeout;
+
+} WDF_REQUEST_SEND_OPTIONS_V1_11, *PWDF_REQUEST_SEND_OPTIONS_V1_11;
+
+typedef struct _WDF_REQUEST_FORWARD_OPTIONS_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Bit field combination of values from the WDF_REQUEST_FORWARD_OPTIONS_FLAGS
+    // enumeration
+    //
+    ULONG Flags;
+
+} WDF_REQUEST_FORWARD_OPTIONS_V1_11, *PWDF_REQUEST_FORWARD_OPTIONS_V1_11;
+
+// End of versioning of structures for wdfrequest.h
+
+//
+// Versioning of structures for wdfresource.h
+//
+// End of versioning of structures for wdfresource.h
+
+//
+// Versioning of structures for wdfstring.h
+//
+// End of versioning of structures for wdfstring.h
+
+//
+// Versioning of structures for wdfsync.h
+//
+// End of versioning of structures for wdfsync.h
+
+//
+// Versioning of structures for wdftimer.h
+//
+typedef struct _WDF_TIMER_CONFIG_V1_11 {
+    ULONG Size;
+
+    PFN_WDF_TIMER EvtTimerFunc;
+
+    ULONG Period;
+
+    //
+    // If this is TRUE, the Timer will automatically serialize
+    // with the event callback handlers of its Parent Object.
+    //
+    // Parent Object's callback constraints should be compatible
+    // with the Timer DPC (DISPATCH_LEVEL), or the request will fail.
+    //
+    BOOLEAN AutomaticSerialization;
+
+    //
+    // Optional tolerance for the timer in milliseconds.
+    //
+    ULONG TolerableDelay;
+
+} WDF_TIMER_CONFIG_V1_11, *PWDF_TIMER_CONFIG_V1_11;
+
+// End of versioning of structures for wdftimer.h
+
+//
+// Versioning of structures for wdftriage.h
+//
+typedef struct _WDFOBJECT_TRIAGE_INFO_V1_11 {
+    //  value
+    ULONG   RawObjectSize;
+
+    ULONG   ObjectType;
+
+    ULONG   TotalObjectSize;
+
+    ULONG   ChildListHead;
+
+    ULONG   ChildEntry;
+
+    ULONG   Globals;
+
+    ULONG   ParentObject;
+
+} WDFOBJECT_TRIAGE_INFO_V1_11, *PWDFOBJECT_TRIAGE_INFO_V1_11;
+
+typedef struct _WDFCONTEXT_TRIAGE_INFO_V1_11 {
+    //  value
+    ULONG   HeaderSize;
+
+    ULONG   NextHeader;
+
+    ULONG   Object;
+
+    ULONG   TypeInfoPtr;
+
+    ULONG   Context;
+
+} WDFCONTEXT_TRIAGE_INFO_V1_11, *PWDFCONTEXT_TRIAGE_INFO_V1_11;
+
+typedef struct _WDFCONTEXTTYPE_TRIAGE_INFO_V1_11 {
+    //  value
+    ULONG   TypeInfoSize;
+
+    ULONG   ContextSize;
+
+    ULONG   ContextName;
+
+} WDFCONTEXTTYPE_TRIAGE_INFO_V1_11, *PWDFCONTEXTTYPE_TRIAGE_INFO_V1_11;
+
+typedef struct _WDFQUEUE_TRIAGE_INFO_V1_11 {
+    //  value
+    ULONG   QueueSize;
+
+    ULONG   IrpQueue1;
+
+    ULONG   IrpQueue2;
+
+    ULONG   RequestList1;
+
+    ULONG   RequestList2;
+
+    ULONG   FwdProgressContext;
+
+    ULONG   PkgIo;
+
+} WDFQUEUE_TRIAGE_INFO_V1_11, *PWDFQUEUE_TRIAGE_INFO_V1_11;
+
+typedef struct _WDFFWDPROGRESS_TRIAGE_INFO_V1_11 {
+    ULONG   ReservedRequestList;
+
+    ULONG   ReservedRequestInUseList;
+
+    ULONG   PendedIrpList;
+
+} WDFFWDPROGRESS_TRIAGE_INFO_V1_11, *PWDFFWDPROGRESS_TRIAGE_INFO_V1_11;
+
+typedef struct _WDFIRPQUEUE_TRIAGE_INFO_V1_11 {
+    //  value
+    ULONG   IrpQueueSize;
+
+    ULONG   IrpListHeader;
+
+    ULONG   IrpListEntry;
+
+    ULONG   IrpContext;
+
+} WDFIRPQUEUE_TRIAGE_INFO_V1_11, *PWDFIRPQUEUE_TRIAGE_INFO_V1_11;
+
+typedef struct _WDFREQUEST_TRIAGE_INFO_V1_11 {
+    //  value
+    ULONG   RequestSize;
+
+    ULONG   CsqContext;
+
+    //  WDF irp wrapper, see below.
+    ULONG   FxIrp;
+
+    ULONG   ListEntryQueueOwned;
+
+    ULONG   ListEntryQueueOwned2;
+
+    ULONG   RequestListEntry;
+
+    ULONG   FwdProgressList;
+
+} WDFREQUEST_TRIAGE_INFO_V1_11, *PWDFREQUEST_TRIAGE_INFO_V1_11;
+
+typedef struct _WDFDEVICE_TRIAGE_INFO_V1_11 {
+    //  value
+    ULONG   DeviceInitSize;
+
+    ULONG   DeviceDriver;
+
+} WDFDEVICE_TRIAGE_INFO_V1_11, *PWDFDEVICE_TRIAGE_INFO_V1_11;
+
+typedef struct _WDFIRP_TRIAGE_INFO_V1_11 {
+    //  value
+    ULONG   FxIrpSize;
+
+    ULONG   IrpPtr;
+
+} WDFIRP_TRIAGE_INFO_V1_11, *PWDFIRP_TRIAGE_INFO_V1_11;
+
+typedef struct _WDF_TRIAGE_INFO_V1_11 {
+    //
+    // Version.
+    //
+    ULONG                       WdfMajorVersion;
+
+    ULONG                       WdfMinorVersion;
+
+    ULONG                       TriageInfoMajorVersion;
+
+    ULONG                       TriageInfoMinorVersion;
+
+    //
+    // Reserved pointer.
+    //
+    PVOID                       Reserved;
+
+    //
+    // WDF objects triage info.
+    //
+    PWDFOBJECT_TRIAGE_INFO_V1_11      WdfObjectTriageInfo;
+
+    PWDFCONTEXT_TRIAGE_INFO_V1_11     WdfContextTriageInfo;
+
+    PWDFCONTEXTTYPE_TRIAGE_INFO_V1_11 WdfContextTypeTriageInfo;
+
+    PWDFQUEUE_TRIAGE_INFO_V1_11       WdfQueueTriageInfo;
+
+    PWDFFWDPROGRESS_TRIAGE_INFO_V1_11 WdfFwdProgressTriageInfo;
+
+    PWDFIRPQUEUE_TRIAGE_INFO_V1_11    WdfIrpQueueTriageInfo;
+
+    PWDFREQUEST_TRIAGE_INFO_V1_11     WdfRequestTriageInfo;
+
+    PWDFDEVICE_TRIAGE_INFO_V1_11      WdfDeviceTriageInfo;
+
+    PWDFIRP_TRIAGE_INFO_V1_11         WdfIrpTriageInfo;
+
+} WDF_TRIAGE_INFO_V1_11, *PWDF_TRIAGE_INFO_V1_11;
+
+// End of versioning of structures for wdftriage.h
+
+//
+// Versioning of structures for wdftypes.h
+//
+// End of versioning of structures for wdftypes.h
+
+//
+// Versioning of structures for wdfUsb.h
+//
+typedef struct _WDF_USB_REQUEST_COMPLETION_PARAMS_V1_11 {
+    USBD_STATUS UsbdStatus;
+
+    WDF_USB_REQUEST_TYPE Type;
+
+    union {
+        struct {
+            WDFMEMORY Buffer;
+
+            USHORT LangID;
+
+            UCHAR StringIndex;
+
+            //
+            // If STATUS_BUFFER_OVERFLOW is returned, this field will contain the
+            // number of bytes required to retrieve the entire string.
+            //
+            UCHAR RequiredSize;
+
+        } DeviceString;
+
+        struct {
+            WDFMEMORY Buffer;
+
+            WDF_USB_CONTROL_SETUP_PACKET SetupPacket;
+
+            ULONG Length;
+
+        } DeviceControlTransfer;
+
+        struct {
+            WDFMEMORY Buffer;
+
+        } DeviceUrb;
+
+        struct {
+            WDFMEMORY Buffer;
+
+            size_t Length;
+
+            size_t Offset;
+
+        } PipeWrite;
+
+        struct {
+            WDFMEMORY Buffer;
+
+            size_t Length;
+
+            size_t Offset;
+
+        } PipeRead;
+
+        struct {
+            WDFMEMORY Buffer;
+
+        } PipeUrb;
+
+    } Parameters;
+
+} WDF_USB_REQUEST_COMPLETION_PARAMS_V1_11, *PWDF_USB_REQUEST_COMPLETION_PARAMS_V1_11;
+
+typedef struct _WDF_USB_CONTINUOUS_READER_CONFIG_V1_11 {
+    //
+    // Size of the string in bytes
+    //
+    ULONG Size;
+
+    //
+    // Number of bytes to send ask for from the usb device.
+    //
+    size_t TransferLength;
+
+    //
+    // Number of bytes to allocate before the requested transfer length
+    //
+    size_t HeaderLength;
+
+    //
+    // Number of bytes to allocate after the requested transfer length
+    //
+    size_t TrailerLength;
+
+    //
+    // Number of reads to send to the device at once.  If zero is specified, the
+    // default will be used.
+    //
+    UCHAR NumPendingReads;
+
+    //
+    // Optional attributes to apply to each WDFMEMORY allocated for each read
+    //
+    PWDF_OBJECT_ATTRIBUTES_V1_11 BufferAttributes;
+
+    //
+    // Event callback invoked when a read is completed
+    //
+    PFN_WDF_USB_READER_COMPLETION_ROUTINE EvtUsbTargetPipeReadComplete;
+
+    //
+    // Context to be passed to EvtUsbTargetPipeReadComplete
+    //
+    WDFCONTEXT EvtUsbTargetPipeReadCompleteContext;
+
+    //
+    // Event callback invoked when a reader fails.  If TRUE is returned, the
+    // readers are restarted.
+    //
+    PFN_WDF_USB_READERS_FAILED EvtUsbTargetPipeReadersFailed;
+
+} WDF_USB_CONTINUOUS_READER_CONFIG_V1_11, *PWDF_USB_CONTINUOUS_READER_CONFIG_V1_11;
+
+typedef struct _WDF_USB_DEVICE_INFORMATION_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // USBD version information
+    //
+    USBD_VERSION_INFORMATION UsbdVersionInformation;
+
+    //
+    // Usb controller port capabilities
+    //
+    ULONG HcdPortCapabilities;
+
+    //
+    // Bitfield of WDF_USB_DEVICE_TRAITS values
+    //
+    ULONG Traits;
+
+} WDF_USB_DEVICE_INFORMATION_V1_11, *PWDF_USB_DEVICE_INFORMATION_V1_11;
+
+typedef struct _WDF_USB_INTERFACE_SETTING_PAIR_V1_11 {
+    //
+    // Interface to select
+    //
+    WDFUSBINTERFACE UsbInterface;
+
+    //
+    // Setting to select on UsbInterface
+    //
+    UCHAR SettingIndex;
+
+} WDF_USB_INTERFACE_SETTING_PAIR_V1_11, *PWDF_USB_INTERFACE_SETTING_PAIR_V1_11;
+
+typedef struct _WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Type of select config, one of WdfUsbTargetDeviceSelectConfigType values
+    //
+    WdfUsbTargetDeviceSelectConfigType Type;
+
+    union {
+        struct {
+            //
+            // Configuration descriptor to use
+            //
+            PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
+
+            //
+            // Array of interface descriptors pointers.
+            //
+            PUSB_INTERFACE_DESCRIPTOR * InterfaceDescriptors;
+
+            //
+            // Number of elements in the InterfaceDescrtiptors pointer array.
+            //
+            ULONG NumInterfaceDescriptors;
+
+        } Descriptor;
+
+        struct {
+            //
+            // Preallocated select config URB formatted by the caller.
+            // Will be used, as supplied without modification, as the select
+            // config request.
+            //
+            PURB Urb;
+
+        } Urb;
+
+        struct {
+            //
+            // Number of pipes configured on the single after.  This value is
+            // returned to the caller after a succssful call.
+            //
+            UCHAR   NumberConfiguredPipes;
+
+            //
+            // The interface which was configred.  This value is returned to the
+            // caller after a successful call.
+            //
+            WDFUSBINTERFACE ConfiguredUsbInterface;
+
+        } SingleInterface;
+
+        struct {
+            //
+            // Number of interface pairs in the Pairs array
+            //
+            UCHAR NumberInterfaces;
+
+            //
+            // Array of interface + settings
+            //
+            PWDF_USB_INTERFACE_SETTING_PAIR_V1_11 Pairs;
+
+            //
+            // Number of interfaces which were configured after a successful call
+            //
+            UCHAR NumberOfConfiguredInterfaces;
+
+        } MultiInterface;
+
+    } Types;
+
+} WDF_USB_DEVICE_SELECT_CONFIG_PARAMS_V1_11, *PWDF_USB_DEVICE_SELECT_CONFIG_PARAMS_V1_11;
+
+typedef struct _WDF_USB_INTERFACE_SELECT_SETTING_PARAMS_V1_11 {
+    //
+    // Size of this data structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Type of select interface as indicated by one of the
+    // WdfUsbTargetDeviceSelectSettingType values.
+    //
+    WdfUsbTargetDeviceSelectSettingType Type;
+
+    union {
+        struct {
+            //
+            // Interface descriptor that will be used in the interface selection
+            //
+            PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
+
+        } Descriptor;
+
+        struct {
+            //
+            // The setting index of the WDFUSBINTERFACE to use
+            //
+            UCHAR SettingIndex;
+
+        } Interface;
+
+        struct {
+            //
+            // Preformatted select interface URB which will be used in the
+            // select interface request.
+            //
+            PURB Urb;
+
+        } Urb;
+
+    } Types;
+
+} WDF_USB_INTERFACE_SELECT_SETTING_PARAMS_V1_11, *PWDF_USB_INTERFACE_SELECT_SETTING_PARAMS_V1_11;
+
+typedef struct _WDF_USB_PIPE_INFORMATION_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Maximum packet size this device is capable of
+    //
+    ULONG MaximumPacketSize;
+
+    //
+    // Raw endpoint address of the device as described by its descriptor
+    //
+    UCHAR EndpointAddress;
+
+    //
+    // Polling interval
+    //
+    UCHAR Interval;
+
+    //
+    // Which alternate setting this structure is relevant for
+    //
+    UCHAR SettingIndex;
+
+    //
+    // The type of the pipe
+    WDF_USB_PIPE_TYPE PipeType;
+
+    //
+    // Maximum size of one transfer which should be sent to the host controller
+    //
+    ULONG  MaximumTransferSize;
+
+} WDF_USB_PIPE_INFORMATION_V1_11, *PWDF_USB_PIPE_INFORMATION_V1_11;
+
+typedef struct _WDF_USB_DEVICE_CREATE_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG   Size;
+
+    //
+    // USBD Client Contraction of the Wdf Client
+    //
+    ULONG   USBDClientContractVersion;
+
+} WDF_USB_DEVICE_CREATE_CONFIG_V1_11, *PWDF_USB_DEVICE_CREATE_CONFIG_V1_11;
+
+// End of versioning of structures for wdfUsb.h
+
+//
+// Versioning of structures for wdfverifier.h
+//
+// End of versioning of structures for wdfverifier.h
+
+//
+// Versioning of structures for wdfWMI.h
+//
+typedef struct _WDF_WMI_PROVIDER_CONFIG_V1_11 {
+    //
+    // Size of this structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // The GUID being registered
+    //
+    GUID Guid;
+
+    //
+    // Combination of values from the enum WDF_WMI_PROVIDER_FLAGS
+    //
+    ULONG Flags;
+
+    //
+    // Minimum expected buffer size for query and set instance requests.
+    // Ignored if WdfWmiProviderEventOnly is set in Flags.
+    //
+    ULONG MinInstanceBufferSize;
+
+    //
+    // Callback when caller is opening a provider which ha been marked as
+    // expensive or when a caller is interested in events.
+    //
+    PFN_WDF_WMI_PROVIDER_FUNCTION_CONTROL EvtWmiProviderFunctionControl;
+
+} WDF_WMI_PROVIDER_CONFIG_V1_11, *PWDF_WMI_PROVIDER_CONFIG_V1_11;
+
+typedef struct _WDF_WMI_INSTANCE_CONFIG_V1_11 {
+    //
+    // Size of the structure in bytes
+    //
+    ULONG Size;
+
+    //
+    // Optional parameter.  If NULL, ProviderConfig must be set to a valid pointer
+    // value.   If specified, indicates the provider to create an instance for.
+    //
+    WDFWMIPROVIDER Provider;
+
+    //
+    // Optional parameter.  If NULL, Provider must be set to a valid handle
+    // value.  If specifeid, indicates the configuration for a provider to be
+    // created and for this instance to be associated with.
+    //
+    PWDF_WMI_PROVIDER_CONFIG_V1_11 ProviderConfig;
+
+    //
+    // If the Provider is configured as read only and this field is set to TRUE,
+    // the EvtWmiInstanceQueryInstance is ignored and WDF will blindly copy the
+    // context associated with this instance (using RtlCopyMemory, with no locks
+    // held) into the query buffer.
+    //
+    BOOLEAN UseContextForQuery;
+
+    //
+    // If TRUE, the instance will be registered as well as created.
+    //
+    BOOLEAN Register;
+
+    //
+    // Callback when caller wants to query the entire data item's buffer.
+    //
+    PFN_WDF_WMI_INSTANCE_QUERY_INSTANCE EvtWmiInstanceQueryInstance;
+
+    //
+    // Callback when caller wants to set the entire data item's buffer.
+    //
+    PFN_WDF_WMI_INSTANCE_SET_INSTANCE EvtWmiInstanceSetInstance;
+
+    //
+    // Callback when caller wants to set a single field in the data item's buffer
+    //
+    PFN_WDF_WMI_INSTANCE_SET_ITEM EvtWmiInstanceSetItem;
+
+    //
+    // Callback when caller wants to execute a method on the data item.
+    //
+    PFN_WDF_WMI_INSTANCE_EXECUTE_METHOD EvtWmiInstanceExecuteMethod;
+
+} WDF_WMI_INSTANCE_CONFIG_V1_11, *PWDF_WMI_INSTANCE_CONFIG_V1_11;
+
+// End of versioning of structures for wdfWMI.h
+
+//
+// Versioning of structures for wdfworkitem.h
+//
+typedef struct _WDF_WORKITEM_CONFIG_V1_11 {
+    ULONG Size;
+
+    PFN_WDF_WORKITEM EvtWorkItemFunc;
+
+    //
+    // If this is TRUE, the workitem will automatically serialize
+    // with the event callback handlers of its Parent Object.
+    //
+    // Parent Object's callback constraints should be compatible
+    // with the work item (PASSIVE_LEVEL), or the request will fail.
+    //
+    BOOLEAN AutomaticSerialization;
+
+} WDF_WORKITEM_CONFIG_V1_11, *PWDF_WORKITEM_CONFIG_V1_11;
+
+// End of versioning of structures for wdfworkitem.h
+
+
+#endif // _WDF_V1_11_TYPES_H_