//GenerateParser CL 244789
//#  (c) 2009 Microsoft Corporation
//#
//#  Title:                  Microsoft-Windows-usbxhci
//#
//#  Details:
//#
//#  Public References:      usbxhci.man
//#
//#  Comments:
//#
//#  Revision Class and Date:Minor, 6/29/2011
//#
//####

include "etl_usb3_Ucx_EndpointStateMachine.npl"
include "etl_usb3_Ucx_ControllerResetStateMachine.npl"
include "etl_usb3_HubStateMachines.npl"
include "etl_mausb.npl"
include "etl_PalInTransfer.npl"
include "etl_PalOutTransfer.npl"
include "etl_PalSession.npl"
include "etl_UilEndpoint.npl"

[RegisterBefore(NetEvent.UserData, UsbXhci, "{30e1d284-5d88-459c-83fd-6345b39b19ec}")]
Protocol UsbXhci = property.ETLSummary
{
    [BuildConversationWithParent, conversation.ConversationDescription = ""]
    [Post.Property.USBIsError =
        ((
            (NetEvent.Header.Descriptor.Level == 0x2)
            OR
            (Property.USBDStatus != "success" && Property.USBDStatus != "" && Property.USBDStatus != "canceled" && Property.USBDStatus != "pending")
            OR
            (Property.USBNtStatus != "success" && Property.USBNtStatus != "Success" && Property.USBNtStatus != "" && Property.USBNtStatus != "0xC0000120 - STATUS_CANCELLED")
        ) ? 1 : 0)]
    switch(property.EventID)
    {
        case 1: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_START USBXHCI_ETW_EVENT_RUNDOWN_START;
        case 2: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_COMPLETE USBXHCI_ETW_EVENT_RUNDOWN_COMPLETE;
        case 3:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION;
                case 1: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V1 USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V1;
                case 2: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V2 USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V2;
                case 3: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V3 USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V3;
            }
        case 4:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION;
                case 1: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V1 USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V1;
                case 2: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V2 USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V2;
                case 3: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V3 USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V3;
            }
        case 5: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RUNDOWN_ENDPOINT_INFORMATION USBXHCI_ETW_EVENT_RUNDOWN_ENDPOINT_INFORMATION;
        case 6:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_CREATE USBXHCI_ETW_EVENT_CONTROLLER_CREATE;
                case 1: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_CREATE_V1 USBXHCI_ETW_EVENT_CONTROLLER_CREATE_V1;
            }
        case 7: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_DELETE USBXHCI_ETW_EVENT_CONTROLLER_DELETE;
        case 8:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_CREATE USBXHCI_ETW_EVENT_DEVICE_CREATE;
                case 1: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_CREATE_V1 USBXHCI_ETW_EVENT_DEVICE_CREATE_V1;
                case 2: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_CREATE_V2 USBXHCI_ETW_EVENT_DEVICE_CREATE_V2;
                case 3: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_CREATE_V3 USBXHCI_ETW_EVENT_DEVICE_CREATE_V3;
            }
        case 9:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_UPDATE USBXHCI_ETW_EVENT_DEVICE_UPDATE;
                case 1: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_UPDATE_V1 USBXHCI_ETW_EVENT_DEVICE_UPDATE_V1;
                case 2: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_UPDATE_V2 USBXHCI_ETW_EVENT_DEVICE_UPDATE_V2;
                case 3: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_UPDATE_V3 USBXHCI_ETW_EVENT_DEVICE_UPDATE_V3;
            }
        case 10:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_DELETE USBXHCI_ETW_EVENT_DEVICE_DELETE;
                case 1: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_DELETE_V1 USBXHCI_ETW_EVENT_DEVICE_DELETE_V1;
                case 2: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_DELETE_V2 USBXHCI_ETW_EVENT_DEVICE_DELETE_V2;
                case 3: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEVICE_DELETE_V3 USBXHCI_ETW_EVENT_DEVICE_DELETE_V3;
            }
        case 11: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_ENDPOINT_CREATE USBXHCI_ETW_EVENT_ENDPOINT_CREATE;
        case 12: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_ENDPOINT_UPDATE USBXHCI_ETW_EVENT_ENDPOINT_UPDATE;
        case 13: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_ENDPOINT_DELETE USBXHCI_ETW_EVENT_ENDPOINT_DELETE;
        case 14: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_STARTDEVICE_FAIL USBXHCI_ETW_EVENT_STARTDEVICE_FAIL;
        case 15: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_FIRMWARE_VERSION_UPDATE USBXHCI_ETW_EVENT_CONTROLLER_FIRMWARE_VERSION_UPDATE;
        case 16: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_START USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_START;
        case 17: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_COMPLETE USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_COMPLETE;
        case 18: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_POST_INTERRUPTS_START USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_POST_INTERRUPTS_START;
        case 19: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_POST_INTERRUPTS_COMPLETE USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_POST_INTERRUPTS_COMPLETE;
        case 20: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_PRE_INTERRUPTS_START USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_PRE_INTERRUPTS_START;
        case 21: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_PRE_INTERRUPTS_COMPLETE USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_PRE_INTERRUPTS_COMPLETE;
        case 22: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_START USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_START;
        case 23: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_COMPLETE USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_COMPLETE;
        case 24: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_SAVE_STATE_START USBXHCI_ETW_EVENT_CONTROLLER_SAVE_STATE_START;
        case 25: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_SAVE_STATE_COMPLETE USBXHCI_ETW_EVENT_CONTROLLER_SAVE_STATE_COMPLETE;
        case 26: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_RESTORE_STATE_START USBXHCI_ETW_EVENT_CONTROLLER_RESTORE_STATE_START;
        case 27: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_RESTORE_STATE_COMPLETE USBXHCI_ETW_EVENT_CONTROLLER_RESTORE_STATE_COMPLETE;
        case 28: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_INTERNAL_RESET_START USBXHCI_ETW_EVENT_CONTROLLER_INTERNAL_RESET_START;
        case 29: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_INTERNAL_RESET_COMPLETE USBXHCI_ETW_EVENT_CONTROLLER_INTERNAL_RESET_COMPLETE;
        case 30: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_ERROR USBXHCI_ETW_EVENT_CONTROLLER_ERROR;
        case 31: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_COMMAND_SEND USBXHCI_ETW_EVENT_COMMAND_SEND;
        case 32: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_COMMAND_WAITLISTED USBXHCI_ETW_EVENT_COMMAND_WAITLISTED;
        case 33: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_COMMAND_COMPLETE USBXHCI_ETW_EVENT_COMMAND_COMPLETE;
        case 34: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_COMMAND_COMPLETE_ERROR USBXHCI_ETW_EVENT_COMMAND_COMPLETE_ERROR;
        case 35: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_QUERY_USB_CAPABILITY USBXHCI_ETW_EVENT_CONTROLLER_QUERY_USB_CAPABILITY;
        case 36: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_WDF_POWER_REFERENCE_FOR_DEBUGGER USBXHCI_ETW_EVENT_CONTROLLER_WDF_POWER_REFERENCE_FOR_DEBUGGER;
        case 37: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_SENDING_TRUSTLET_REQUEST USBXHCI_ETW_EVENT_SENDING_TRUSTLET_REQUEST;
        case 38: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_RECEIVED_TRUSTLET_REQUEST_IN_VTL1 USBXHCI_ETW_EVENT_RECEIVED_TRUSTLET_REQUEST_IN_VTL1;
        case 39: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_COMPLETED_TRUSTLET_REQUEST_IN_VTL1 USBXHCI_ETW_EVENT_COMPLETED_TRUSTLET_REQUEST_IN_VTL1;
        case 40: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_COMPLETED_TRUSTLET_REQUEST USBXHCI_ETW_EVENT_COMPLETED_TRUSTLET_REQUEST;
        case 41: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_TRANSFER_INITIALIZED USBXHCI_ETW_EVENT_TRANSFER_INITIALIZED;
        case 42: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_INTERRUPT USBXHCI_ETW_EVENT_INTERRUPT;
        case 43: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEFERRED_WORK_START USBXHCI_ETW_EVENT_DEFERRED_WORK_START;
        case 44: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DEFERRED_WORK_STOP USBXHCI_ETW_EVENT_DEFERRED_WORK_STOP;
        case 45: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_DOORBELL USBXHCI_ETW_EVENT_DOORBELL;
        case 46: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_START_TRACKING_FOR_TIME_SYNC USBXHCI_ETW_EVENT_START_TRACKING_FOR_TIME_SYNC;
        case 47: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_STOP_TRACKING_FOR_TIME_SYNC USBXHCI_ETW_EVENT_STOP_TRACKING_FOR_TIME_SYNC;
        case 48: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONFIGURE_ENDPOINT USBXHCI_ETW_EVENT_CONFIGURE_ENDPOINT;
        case 49: 
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_HEALTH USBXHCI_ETW_EVENT_CONTROLLER_HEALTH;
                case 1: [property.ETLSummary = this.ToString] USBXHCI_ETW_EVENT_CONTROLLER_HEALTH_V1 USBXHCI_ETW_EVENT_CONTROLLER_HEALTH_V1;
            }
        default: [property.ETLSummary = "Not exist EventID"]struct{};
    }
}
Table StartDeviceFailReasonTable(value)
{
    switch(value)
    {
        case 1: "BIOS Handoff failed. Check with your computer manufacturer for an updated BIOS, or an updated firmware for the controller.";
        case 2: "Controller was not halted after a BIOS handoff. Check with your computer manufacturer for an updated BIOS.";
        case 3: "Controller reset timed out. Check with your computer manufacturer for an updated firmware for the controller.";
        default:
            FormatString("Unknown value: %d", value);
    }
}
// Applies to both Usbxhci and Ucx
Table MapParentBusType(value)
{
    switch(value)
    {
        case 1: "ParentBusTypePci";
        case 2: "ParentBusTypeAcpi";
        case 3: "ParentBusTypeMaUsb";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table S0IdleStatus(value)
{
    switch(value)
    {
        case 0: "S0IdleConfigured";
        case 1: "S0IdleNotConfiguredDueToHackFlag";
        case 2: "NotConfiguredDueToNoS0WakeCapability";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table WdfDevicePowerState(value)
{
    switch(value)
    {
        case 0: "WdfPowerDeviceInvalid";
        case 1: "WdfPowerDeviceD0";
        case 2: "WdfPowerDeviceD1";
        case 3: "WdfPowerDeviceD2";
        case 4: "WdfPowerDeviceD3";
        case 5: "WdfPowerDeviceD3Final";
        case 6: "WdfPowerDevicePrepareForHibernation";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table DMAModeInVSM(value)
{
    switch(value)
    {
        case 0: "NoVSM";
        case 1: "SingleDMAAdapterInVSM";
        case 2: "MultipleDMAAdaptersInVSM";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table InterruptMechanism(value)
{
    switch(value)
    {
        case 0: "LineBased";
        case 1: "MultiMessageMSI";
        case 2: "MSIX";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table UsbEndpointOffloadMode(value)
{
    switch(value)
    {
        case 0: "NotSupported";
        case 1: "SoftwareAssisted";
        case 2: "HardwareAssisted";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table CommandWaitlistReason(value)
{
    switch(value)
    {
        case 1: "CommandRingFull";
        case 2: "CommandsSerialized";
        case 3: "CommandAbortInProgress";
        case 4: "ControllerResetInProgress";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table Usb20LpmStatus(value)
{
    switch(value)
    {
        case 0: "Usb20LpmStatusUnknown";
        case 1: "Usb20LpmEnabled";
        case 2: "Usb20LpmDisabledSinceDeviceIsHub";
        case 3: "Usb20LpmDisabledDueToDeviceHackFlag";
        case 4: "Usb20LpmDisabledDueToHubHackFlag";
        case 5: "Usb20LpmDisabledDueToHubGlobalFlag";
        case 6: "Usb20LpmNotSupportedByDevice";
        case 7: "Usb20LpmDisabledSinceBESLandAltHIRDNotSupported";
        case 8: "Usb20LpmNotSupportedOnThisPort";
        case 9: "Usb20LpmDiabledSinceDeviceOperatingInSuperspeedModeOrHigher";
        default:
            FormatString("Unknown 20 Lpm Status: %d", value);
    }
}
Table TrbCompletionCode(value)
{
    switch(value)
    {
        case 0: "Invalid";
        case 1: "Success";
        case 2: "Data Buffer Error";
        case 3: "Babble Detected Error";
        case 4: "Usb Transaction Error";
        case 5: "Trb Error";
        case 6: "Stall Error";
        case 7: "Resource Error";
        case 8: "Bandwidth Error";
        case 9: "No Slots Available Error";
        case 10: "Invalid Stream Type Error";
        case 11: "Slot Not Enabled Error";
        case 12: "Endpoint Not Enabled Error";
        case 13: "Short Packet";
        case 14: "Ring Underrun";
        case 15: "Ring Overrun";
        case 16: "Vf Event Ring Full Error";
        case 17: "Parameter Error";
        case 18: "Bandwidth Overrun Error";
        case 19: "Context State Error";
        case 20: "No Ping Response Error";
        case 21: "Event Ring Full Error";
        case 22: "Incompatible Device Error";
        case 23: "Missed Service Error";
        case 24: "Command Ring Stopped";
        case 25: "Command Aborted";
        case 26: "Stopped";
        case 27: "Stopped Length Invalid";
        case 28: "Stopped Short Packet";
        case 29: "Max Exit Latency Too Large Error";
        case 31: "Isoch Buffer Overrun";
        case 32: "Event Lost Error";
        case 33: "Undefined Error";
        case 34: "Invalid Stream Id Error";
        case 35: "Secondary Bandwidth Error";
        case 36: "Split Transaction Error";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table TrbCompletionStatus(value)
{
    switch(value)
    {
        case 0: "Success";
        case 1: "Unsuccessful";
        case 2: "Timeout";
        case 3: "Controller Gone";
        case 4: "Not Complete";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table TrustletRequestOpCode(value)
{
    switch(value)
    {
        case 1: "ControllerCreate";
        case 2: "ControllerDestroy";
        case 3: "ControllerRequestDebugBreak";
        case 4: "SecureDmaEnablerCreate";
        case 5: "SecureDmaEnablerMapExposedSection";
        case 6: "SecureDmaEnablerUnmap";
        case 7: "RegisterCreate";
        case 8: "RegisterMapMmio";
        case 9: "RegisterUnmapMmio";
        case 10: "RegisterReadMmio";
        case 11: "RegisterWriteMmio";
        case 12: "CommandCreate";
        case 13: "CommandAllocateResources";
        case 14: "CommandFreeResources";
        case 15: "CommandInitialize";
        case 16: "CommandAbortRing";
        case 17: "CommandAdvanceDequeuePointer";
        case 18: "CommandQueryIsRingRunning";
        case 19: "CommandAddCommandTRBToRing";
        case 20: "DeviceSlotCreate";
        case 21: "DeviceSlotAllocateResources";
        case 22: "DeviceSlotFreeResources";
        case 23: "DeviceSlotInitialize";
        case 24: "DeviceSlotInitializeScratchpadBuffers";
        case 25: "DeviceSlotSetDeviceContext";
        case 26: "DeviceSlotClearDeviceContext";
        case 27: "DeviceSlotQueryInfoFromSlotContext";
        case 28: "DeviceSlotQueryInfoFromEndpointContext";
        case 29: "UsbDeviceCreate";
        case 30: "UsbDeviceDestroy";
        case 31: "EndpointCreate";
        case 32: "EndpointDestroy";
        case 33: "TransferRingCreate";
        case 34: "TransferRingAllocateSegments";
        case 35: "TransferRingFreeSegments";
        case 36: "TransferRingInitializeSegment";
        case 37: "TransferRingStageComplete";
        case 38: "TransferRingAddTRBRange";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table DescriptorValidationError(value)
{
    switch(value)
    {
        case 0: "DescriptorValidationError20HubBlengthTooLarge";
        case 1: "DescriptorValidationError20HubBlengthTooSmall";
        case 2: "DescriptorValidationError20HubBufferNull";
        case 3: "DescriptorValidationError20HubBufferTooSmall";
        case 4: "DescriptorValidationError20HubDeviceRemovableBitOneForNonExistentPorts";
        case 5: "DescriptorValidationError20HubDeviceRemovableNonZeroReservedBit";
        case 6: "DescriptorValidationError20HubInvalidType";
        case 7: "DescriptorValidationError20HubNumberOfPortsZero";
        case 8: "DescriptorValidationError20HubPortPwrCtrlMaskZero";
        case 9: "DescriptorValidationError20HubWHubCharacteristicsNonZeroReservedBits";
        case 10: "DescriptorValidationError30HubBHubHdrDecLatHasReservedValue";
        case 11: "DescriptorValidationError30HubBlengthTooLarge";
        case 12: "DescriptorValidationError30HubBlengthTooSmall";
        case 13: "DescriptorValidationError30HubBufferTooSmall";
        case 14: "DescriptorValidationError30HubDeviceRemovableBitOneForNonExistentPorts";
        case 15: "DescriptorValidationError30HubDeviceRemovableNonZeroReservedBit";
        case 16: "DescriptorValidationError30HubInvalidType";
        case 17: "DescriptorValidationError30HubNumberOfPortsTooLarge";
        case 18: "DescriptorValidationError30HubNumberOfPortsZero";
        case 19: "DescriptorValidationError30HubWHubCharacteristicsNonZeroReservedBits";
        case 20: "DescriptorValidationErrorBosBlengthTooLarge";
        case 21: "DescriptorValidationErrorBosBlengthTooSmall";
        case 22: "DescriptorValidationErrorBosBufferTooLarge";
        case 23: "DescriptorValidationErrorBosBufferTooSmall";
        case 24: "DescriptorValidationErrorBosInvalidType";
        case 25: "DescriptorValidationErrorBosMismatchBetweenBNumDeviceCapsAndDevicCapsFound";
        case 26: "DescriptorValidationErrorBosNoSuperSpeedCap";
        case 27: "DescriptorValidationErrorBosNull";
        case 28: "DescriptorValidationErrorBosUnknownDescriptorType";
        case 29: "DescriptorValidationErrorBosWTotalLengthTooSmall";
        case 30: "DescriptorValidationErrorBulkEndpointAtLowSpeed";
        case 31: "DescriptorValidationErrorBulkEndpointBmAttributesNonZeroReservedBits";
        case 32: "DescriptorValidationErrorBulkEndpointInvalidWMaxPacketSize";
        case 33: "DescriptorValidationErrorCompanionBulkEndpointBmAttributesNonZeroReservedBits";
        case 34: "DescriptorValidationErrorCompanionBulkEndpointBMaxBurstTooLarge";
        case 35: "DescriptorValidationErrorCompanionBulkEndpointMaxStreamsTooLarge";
        case 36: "DescriptorValidationErrorCompanionBulkEndpointNonZeroWBytesPerInterval";
        case 37: "DescriptorValidationErrorCompanionControlEndpointNonZeroBmAttributes";
        case 38: "DescriptorValidationErrorCompanionControlEndpointNonZeroBMaxBurst";
        case 39: "DescriptorValidationErrorCompanionControlEndpointNonZeroWBytesPerInterval";
        case 40: "DescriptorValidationErrorCompanionEndpointAtNonSuperSpeed";
        case 41: "DescriptorValidationErrorCompanionEndpointAtUnexpectedLocation";
        case 42: "DescriptorValidationErrorCompanionEndpointBlengthTooLarge";
        case 43: "DescriptorValidationErrorCompanionEndpointBlengthTooSmall";
        case 44: "DescriptorValidationErrorCompanionEndpointBufferTooSmall";
        case 45: "DescriptorValidationErrorCompanionInterruptEndpointBMaxBurstTooLarge";
        case 46: "DescriptorValidationErrorCompanionInterruptEndpointIncompatibleBMaxBurstAndWMaxPacketSize";
        case 47: "DescriptorValidationErrorCompanionInterruptEndpointNonZeroBmAttributes";
        case 48: "DescriptorValidationErrorCompanionInterruptEndpointWBytesPerIntervalTooLarge";
        case 49: "DescriptorValidationErrorCompanionIoschEndpointBmAttributesNonZeroReservedBits";
        case 50: "DescriptorValidationErrorCompanionIsochEndpointBMaxBurstTooLarge";
        case 51: "DescriptorValidationErrorCompanionIsochEndpointIncompatibleBMaxBurstAndWMaxPacketSize";
        case 52: "DescriptorValidationErrorCompanionIsochEndpointMultTooLarge";
        case 53: "DescriptorValidationErrorCompanionIsochEndpointWBytesPerIntervalTooLarge";
        case 54: "DescriptorValidationErrorConfigBlengthTooLarge";
        case 55: "DescriptorValidationErrorConfigBlengthTooSmall";
        case 56: "DescriptorValidationErrorConfigBufferTooSmall";
        case 57: "DescriptorValidationErrorConfigBufferTooSmallToHaveInterface";
        case 58: "DescriptorValidationErrorConfigInvalidType";
        case 59: "DescriptorValidationErrorConfigMissingCompanionEndpoint";
        case 60: "DescriptorValidationErrorConfigNull";
        case 61: "DescriptorValidationErrorConfigWTotalLengthTooLarge";
        case 62: "DescriptorValidationErrorConfigWTotalLengthTooSmallToHaveInterface";
        case 63: "DescriptorValidationErrorContainerIdBlengthTooLarge";
        case 64: "DescriptorValidationErrorContainerIdBlengthTooSmall";
        case 65: "DescriptorValidationErrorContainerIdBufferTooSmall";
        case 66: "DescriptorValidationErrorContainerIdNonZeroReservedBits";
        case 67: "DescriptorValidationErrorControlEndpointBmAttributesNonZeroReservedBits";
        case 68: "DescriptorValidationErrorControlEndpointInvalidWMaxPacketSize";
        case 69: "DescriptorValidationErrorDeviceBcdDeviceHasIncorrectFormat";
        case 70: "DescriptorValidationErrorDeviceBlengthTooSmall";
        case 71: "DescriptorValidationErrorDeviceBufferTooSmall";
        case 72: "DescriptorValidationErrorDeviceCapBlengthTooSmall";
        case 73: "DescriptorValidationErrorDeviceCapBufferTooSmall";
        case 74: "DescriptorValidationErrorDeviceCapMultipleContainerId";
        case 75: "DescriptorValidationErrorDeviceCapMultipleSuperSpeedCap";
        case 76: "DescriptorValidationErrorDeviceCapMultipleUSB20Cap";
        case 77: "DescriptorValidationErrorDeviceIncorrectType";
        case 78: "DescriptorValidationErrorDeviceInvalidBMaxPacketSize";
        case 79: "DescriptorValidationErrorDeviceNullBuffer";
        case 80: "DescriptorValidationErrorEndpointBlengthTooLarge";
        case 81: "DescriptorValidationErrorEndpointBlengthTooSmall";
        case 82: "DescriptorValidationErrorEndpointBmAttributesNonZeroReservedBits";
        case 83: "DescriptorValidationErrorEndpointBufferTooSmall";
        case 84: "DescriptorValidationErrorEndpointNonZeroReservedBits";
        case 85: "DescriptorValidationErrorEndpointWithNoPreceedingInterface";
        case 86: "DescriptorValidationErrorEndpointZeroAddress";
        case 87: "DescriptorValidationErrorHeaderBlengthLargerThanRemainingBuffer";
        case 88: "DescriptorValidationErrorHeaderBlengthLargerThanWTotalLength";
        case 89: "DescriptorValidationErrorHeaderBlengthTooSmall";
        case 90: "DescriptorValidationErrorHeaderBufferTooSmall";
        case 91: "DescriptorValidationErrorHeaderZeroBlength";
        case 92: "DescriptorValidationErrorIadBlengthTooLarge";
        case 93: "DescriptorValidationErrorIadBlengthTooSmall";
        case 94: "DescriptorValidationErrorIadBufferTooSmall";
        case 95: "DescriptorValidationErrorIadInterfaceCountTooLargeForTheConfig";
        case 96: "DescriptorValidationErrorIadInterfaceCountZero";
        case 97: "DescriptorValidationErrorIadInterfaceNumberTooLarge";
        case 98: "DescriptorValidationErrorInterfaceBlengthTooLarge";
        case 99: "DescriptorValidationErrorInterfaceBlengthTooSmall";
        case 100: "DescriptorValidationErrorInterfaceBufferTooSmall";
        case 101: "DescriptorValidationErrorInterfaceDuplicateAlternateSetting";
        case 102: "DescriptorValidationErrorInterfaceDuplicateEndpointAddress";
        case 103: "DescriptorValidationErrorInterfaceDuplicateInterfaceNumber";
        case 104: "DescriptorValidationErrorInterfaceFirstDescriptorWithNonZeroAlternateSetting";
        case 105: "DescriptorValidationErrorInterfaceOutOfSequenceAlternateSetting";
        case 106: "DescriptorValidationErrorInterfaceOutOfSequenceInterfaceNumber";
        case 107: "DescriptorValidationErrorInterfaceParsedEndpointCountTooSmall";
        case 108: "DescriptorValidationErrorInterruptEndpointBmAttributesNonZeroReservedBits";
        case 109: "DescriptorValidationErrorInterruptEndpointInvalidBInterval";
        case 110: "DescriptorValidationErrorInterruptEndpointInvalidWMaxPacketSize";
        case 111: "DescriptorValidationErrorIsochEndpointAtLowSpeed";
        case 112: "DescriptorValidationErrorIsochEndpointInvalidBInterval";
        case 113: "DescriptorValidationErrorIsochEndpointInvalidWMaxPacketSize";
        case 114: "DescriptorValidationErrorMSOSContainerIdAllZeroes";
        case 115: "DescriptorValidationErrorMSOSContainerIdInvalidBcdVersion";
        case 116: "DescriptorValidationErrorMSOSContainerIdInvalidBcdWIndex";
        case 117: "DescriptorValidationErrorMSOSContainerIdInvalidBufferSize";
        case 118: "DescriptorValidationErrorMSOSContainerIdInvalidDwLength";
        case 119: "DescriptorValidationErrorMSOSExtendedConfigBFirstInterfaceNumberTooLarge";
        case 120: "DescriptorValidationErrorMSOSExtendedConfigInvalidBcdVersion";
        case 121: "DescriptorValidationErrorMSOSExtendedConfigInvalidBCount";
        case 122: "DescriptorValidationErrorMSOSExtendedConfigInvalidBufferSize";
        case 123: "DescriptorValidationErrorMSOSExtendedConfigInvalidCompatibleId";
        case 124: "DescriptorValidationErrorMSOSExtendedConfigInvalidSubCompatibleId";
        case 125: "DescriptorValidationErrorMSOSExtendedConfigInvalidWIndex";
        case 126: "DescriptorValidationErrorMSOSExtendedConfigMismatchBetweenBufferSizeAndDwLength";
        case 127: "DescriptorValidationErrorMSOSExtendedConfigMismatchBetweenDwLengthAndBCount";
        case 128: "DescriptorValidationErrorStringBlengthNotEven";
        case 129: "DescriptorValidationErrorStringBlengthTooLarge";
        case 130: "DescriptorValidationErrorStringBlengthTooSmall";
        case 131: "DescriptorValidationErrorStringBufferTooSmall";
        case 132: "DescriptorValidationErrorStringInvalidCharacter";
        case 133: "DescriptorValidationErrorStringInvalidType";
        case 134: "DescriptorValidationErrorStringMismatchBetweenBlengthAndBufferLength";
        case 135: "DescriptorValidationErrorSuperSpeedCapBlengthTooLarge";
        case 136: "DescriptorValidationErrorSuperSpeedCapBlengthTooSmall";
        case 137: "DescriptorValidationErrorSuperSpeedCapBmAttributesNonZeroReservedBits";
        case 138: "DescriptorValidationErrorSuperSpeedCapBU1DevExitLatTooLarge";
        case 139: "DescriptorValidationErrorSuperSpeedCapBU2DevExitLatTooLarge";
        case 140: "DescriptorValidationErrorSuperSpeedCapBufferTooSmall";
        case 141: "DescriptorValidationErrorSuperSpeedCapIncompatibleWSpeedsSupportedAndBFunctionalitySupported";
        case 142: "DescriptorValidationErrorSuperSpeedCapReservedValueInBFunctionalitySupported";
        case 143: "DescriptorValidationErrorSuperSpeedCapReservedValueInWSpeedsSupported";
        case 144: "DescriptorValidationErrorSuperSpeedCapZeroWSpeedsSupported";
        case 145: "DescriptorValidationErrorUSB20CapBlengthTooLarge";
        case 146: "DescriptorValidationErrorUSB20CapBlengthTooSmall";
        case 147: "DescriptorValidationErrorUSB20CapBmAttributesNonZeroReservedBits";
        case 148: "DescriptorValidationErrorUSB20CapBufferTooSmall";
        case 149: "DescriptorValidationErrorUSB20CapIncompatibleBaselineBESLValidAndBaselineBESL";
        case 150: "DescriptorValidationErrorUSB20CapIncompatibleBESLAndAlternateHIRDSupportedAndLPMCapable";
        case 151: "DescriptorValidationErrorUSB20CapIncompatibleDeepBESLAndBaselineBESL";
        case 152: "DescriptorValidationErrorUSB20CapIncompatibleDeepBESLValidAndDeepBESL";
        case 153: "DescriptorValidationErrorContainerIdAllZeros";
        case 154: "DescriptorValidationErrorMsOs20MultipleDescriptorSetHeaders";
        case 155: "DescriptorValidationErrorMsOs20DescriptorSetHeaderInvalidwLength";
        case 156: "DescriptorValidationErrorMsOs20ConfigurationSubsetHeaderInvalidwLength";
        case 157: "DescriptorValidationErrorMsOs20ConfigurationSubsetHeaderTooSmallwTotalLength";
        case 158: "DescriptorValidationErrorMsOs20ConfigurationSubsetHeaderTooLargewTotalLength";
        case 159: "DescriptorValidationErrorMsOs20ConfigurationSubsetHeaderInvalidFeatureDescriptor";
        case 160: "DescriptorValidationErrorMsOs20ConfigurationSubsetHeaderInvalidFeatureDescriptorLength";
        case 161: "DescriptorValidationErrorMsOs20FunctionSubsetHeaderInvalidwLength";
        case 162: "DescriptorValidationErrorMsOs20FunctionSubsetHeaderTooSmallwTotalLength";
        case 163: "DescriptorValidationErrorMsOs20FunctionSubsetHeaderTooLargewTotalLength";
        case 164: "DescriptorValidationErrorMsOs20FunctionSubsetHeaderInvalidFeatureDescriptor";
        case 165: "DescriptorValidationErrorMsOs20FunctionSubsetHeaderInvalidFeatureDescriptorLength";
        case 166: "DescriptorValidationErrorMsOs20ComatibleIdDescriptorMultipleDescriptors";
        case 167: "DescriptorValidationErrorMsOs20ComatibleIdDescriptorInvalidwLength";
        case 168: "DescriptorValidationErrorMsOs20ComatibleIdDescriptorNonNullAfterNullTermination";
        case 169: "DescriptorValidationErrorMsOs20RegistryValueDescriptorTooSmallwLength";
        case 170: "DescriptorValidationErrorMsOs20RegistryValueDescriptorTooLargewPropertyNameLength";
        case 171: "DescriptorValidationErrorMsOs20RegistryValueDescriptorOddOrZerowPropertyNameLength";
        case 172: "DescriptorValidationErrorMsOs20RegistryValueDescriptorTooLargewPropertyDataLength";
        case 173: "DescriptorValidationErrorMsOs20RegistryValueDescriptorZerowPropertyDataLength";
        case 174: "DescriptorValidationErrorMsOs20RegistryValueDescriptorInvalidwPropertyDataType";
        case 175: "DescriptorValidationErrorMsOs20MinumumResumeTimeDescriptorMultipleDescriptors";
        case 176: "DescriptorValidationErrorMsOs20MinumumResumeTimeDescriptorInvalidwLength";
        case 177: "DescriptorValidationErrorMsOs20MinumumResumeTimeDescriptorInvalidbResumeRecoveryTime";
        case 178: "DescriptorValidationErrorMsOs20MinumumResumeTimeDescriptorInvalidbResumeSignalingTimeValue";
        case 179: "DescriptorValidationErrorMsOs20RecoveryTimeDescriptorMultipleDescriptors";
        case 180: "DescriptorValidationErrorMsOs20RecoveryTimeInvalidwLength";
        case 181: "DescriptorValidationErrorMsOs20ModelIdDescriptorMultipleDescriptors";
        case 182: "DescriptorValidationErrorMsOs20ModelIdDescriptorInvalidwLength";
        case 183: "DescriptorValidationErrorMsOs20ModelIdDescriptorNullUuid";
        case 184: "DescriptorValidationErrorMsOs20AlternateDeviceDescriptorMultipleInstances";
        case 185: "DescriptorValidationErrorMsOs20AlternateDeviceDescriptorInvalidwLength";
        case 186: "DescriptorValidationErrorMSOS20AlternateBosDescriptorMultipleInstances";
        case 187: "DescriptorValidationErrorMSOS20AlternateBosDescriptorwLengthTooSmall";
        case 188: "DescriptorValidationErrorMSOS20DescriptorSetBytesReturnNotEqualToDescriptorSetwLength";
        case 189: "DescriptorValidationErrorMSOS20DescriptorSetBytesReturnTooSmall";
        case 190: "DescriptorValidationErrorMSOS20DescriptorSetHeaderInvalidwLength";
        case 191: "DescriptorValidationErrorMSOS20DescriptorSetwTotalLengthMismatch";
        case 192: "DescriptorValidationErrorMSOS20DescriptordwWindowsVersionMismatch";
        case 193: "DescriptorValidationErrorMSOS20DescriptorOutOfOrderTopLevelFeatureDescriptor";
        case 194: "DescriptorValidationErrorMSOS20DescriptorRunsPastEndOfDescriptorSet";
        case 195: "DescriptorValidationErrorPlatformbReservedNonZero";
        case 196: "DescriptorValidationErrorPlatformIdAllZeros";
        case 197: "DescriptorValidationErrorMsOS20PlatformDescriptorMultipleDescriptors";
        case 198: "DescriptorValidationErrorMsOS20PlatformDescriptorInvalidbLength";
        case 199: "DescriptorValidationErrorMsOS20PlatformDescriptorDuplicateWindowsVersion";
        case 200: "DescriptorValidationErrorMsOS20PlatformDescriptorNoWindowsVersionMatchFound";
        case 201: "DescriptorValidationErrorMsOs20CcgpDeviceMultipleDescriptors";
        case 202: "DescriptorValidationErrorMsOs20CcgpDeviceDescriptorInvalidwLength";
        case 203: "DescriptorValidationErrorDeviceCapMultipleSuperSpeedPlusCap";
        case 204: "DescriptorValidationErrorCompanionIsochEndpointWBytesPerIntervalNotOne";
        case 205: "DescriptorValidationErrorSSPCompanionEndpointAtNonSuperSpeed";
        case 206: "DescriptorValidationErrorSSPCompanionEndpointAtUnexpectedLocation";
        case 207: "DescriptorValidationErrorSSPCompanionEndpointBlengthTooLarge";
        case 208: "DescriptorValidationErrorSSPCompanionEndpointBlengthTooSmall";
        case 209: "DescriptorValidationErrorSSPCompanionEndpointBufferTooSmall";
        case 210: "DescriptorValidationErrorSSPCompanionIoschEndpointNonZeroReservedBits";
        case 211: "DescriptorValidationErrorSSPCompanionIsochEndpointDWBytesPerIntervalTooSmallLarge";
        case 212: "DescriptorValidationErrorConfigMissingSSPCompanionEndpoint";
        case 213: "DescriptorValidationErrorSuperSpeedPlusCapBlengthInvalid";
        case 214: "DescriptorValidationErrorSuperSpeedPlusCapBlengthTooSmall";
        case 215: "DescriptorValidationErrorSuperSpeedPlusCapBmAttributesNonZeroReservedBits";
        case 216: "DescriptorValidationErrorSuperSpeedPlusCapWFunctionalitySupportNonZeroReservedBits";
        case 217: "DescriptorValidationErrorSuperSpeedPlusCapBufferTooSmall";
        case 218: "DescriptorValidationErrorSuperSpeedPlusCapNonZeroBReserved";
        case 219: "DescriptorValidationErrorSuperSpeedPlusCapNonZeroWReserved";
        case 220: "DescriptorValidationErrorSuperSpeedPlusCapAttrRx";
        case 221: "DescriptorValidationErrorSuperSpeedPlusCapAttrTx";
        case 222: "DescriptorValidationErrorSuperSpeedPlusCapAttrTxIncomplete";
        case 223: "DescriptorValidationErrorSuperSpeedPlusCapAttrPairInvalid";
        case 224: "DescriptorValidationErrorSuperSpeedPlusCapAttrSymmetricPairInvalid";
        case 225: "DescriptorValidationErrorSuperSpeedPlusCapAttrMinimumSymmetricPairInvalid";
        case 226: "DescriptorValidationErrorSuperSpeedPlusCapAttrSpeedIDDuplication";
        case 227: "DescriptorValidationErrorSuperSpeedPlusCapAttrSpeedIDCount";
        case 228: "DescriptorValidationErrorSuperSpeedPlusCapAttrMinimumNotFound";
        case 229: "DescriptorValidationErrorPDBlengthTooLarge";
        case 230: "DescriptorValidationErrorPDBlengthTooSmall";
        case 231: "DescriptorValidationErrorPDBufferTooSmall";
        case 232: "DescriptorValidationErrorPDNonZeroReservedBits";
        case 233: "DescriptorValidationErrorAltSetting0IsochEndpointNonZeroMaxPacketSize";
        case 234: "DescriptorValidationErrorDuplicateSerialNumber";
        case 235: "DescriptorValidationErrorBillboardCapBlengthTooSmall";
        case 236: "DescriptorValidationErrorBillboardCapBlengthInvalid";
        case 237: "DescriptorValidationErrorBillboardCapBufferTooSmall";
        case 238: "DescriptorValidationErrorBillboardCapZeroAlternateModes";
        case 239: "DescriptorValidationErrorBillboardCapTooManyAlternateModes";
        case 240: "DescriptorValidationErrorBillboardCapPreferredAlternateModeZero";
        case 241: "DescriptorValidationErrorBillboardCapPreferredAlternateModeInvalid";
        case 242: "DescriptorValidationErrorBillboardCapNonZeroBReserved";
        case 243: "DescriptorValidationErrorBillboardCapReservedVconnPowerValueUsed";
        case 244: "DescriptorValidationErrorBillboardCapNonZeroVConnPowerReserved";
        case 245: "DescriptorValidationErrorDeviceCapMultipleBillboardCap";
        case 246: "DescriptorValidationErrorBillboardDeviceIncorrectBcdUsb";
        case 247: "DescriptorValidationErrorUsbFeaturesPlatformDescriptorInvalidbLength";
        case 248: "DescriptorValidationErrorUsbFeaturesPlatformDescriptorMultipleDescriptors";
        case 249: "DescriptorValidationErrorUsbFeaturesPlatformDescriptorInvalidVersionNumber";
        case 250: "DescriptorValidationErrorUsbFeaturesPlatformDescriptorbLengthTooSmall";
        case 251: "DescriptorValidationErrorPlatformBlengthTooSmall";
        case 252: "DescriptorValidationErrorPlatformBlengthTooLarge";
        case 253: "DescriptorValidationErrorPlatformBufferTooSmall";
        case 254: "DescriptorValidationErrorConfigurationSummaryDescriptorBlengthTooSmall";
        case 255: "DescriptorValidationErrorConfigurationSummaryDescriptorBlengthInvalid";
        case 256: "DescriptorValidationErrorConfigurationSummaryDescriptorBufferTooSmall";
        case 257: "DescriptorValidationErrorConfigurationSummaryDescriptorConfigurationValueInvalid";
        case 258: "DescriptorValidationErrorMsOs20VendorRevisionMultipleDescriptors";
        case 259: "DescriptorValidationErrorMsOs20VendorRevisionDescriptorInvalidwLength";
        case 260: "DescriptorValidationErrorMsOs20VendorRevisionDescriptorInvalidValueZero";
        case 261: "DescriptorValidationErrorFirmwareStatusCapBufferTooSmall";
        case 262: "DescriptorValidationErrorFirmwareStatusCapBlengthTooSmall";
        case 263: "DescriptorValidationErrorFirmwareStatusCapBlengthInvalid";
        case 264: "DescriptorValidationErrorFirmwareStatusCapBlengthTooLarge";
        case 265: "DescriptorValidationErrorFirmwareStatusCapBmAttributesNonZeroReservedBits";
    }

}

Table MaUsbDescriptorValidationError(value)
{
    switch(value)
    {
        case 0: "MaUsbDescriptorValidationErrorCapabilityDescriptorInvalidSize";
        case 1: "MaUsbDescriptorValidationErrorRequiredCapabilityDescriptorMissing";
        case 2: "MaUsbDescriptorValidationErrorCapabilityDescriptorHeaderZeroSizeLengthField";
        case 3: "MaUsbDescriptorValidationErrorCapabilityDescriptorOverrunsEndOfCapabilityResponsePacket";
        case 4: "MaUsbDescriptorValidationErrorDuplicateCapabilityDescriptor";
        case 5: "MaUsbDescriptorValidationErrorCapabilityResponsePacketNumberOfEndpointsLessThan16";
        case 6: "MaUsbDescriptorValidationErrorCapabilityResponsePacketNumberOfDevicesNot1";
        case 7: "MaUsbDescriptorValidationErrorCapabilityResponsePacketUnknownDeviceType";
        case 8: "MaUsbDescriptorValidationErrorCapabilityResponsePacketMismatchBetweenLengthFieldAndCapabilityDescriptorLengthField";
        case 9: "MaUsbDescriptorValidationErrorCapabilityResponsePacketMismatchBetweenLengthFieldAndActualCapabilityDescriptorSetLength";
    }
}

Table RequestorModeEnumValue(value)
{
    switch(value)
    {
        case 0: "KernelMode";
        case 1: "UserMode";
    }
}

Table ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)
{
    switch(fid_ParentBusType)
    {
    case 1: FormatString("XHCI %x:%x:%x", fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId);
    case 2: FormatString("XHCI(ACPI) %s:%s:%s", fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId);
    case 3: FormatString("MAUSB");
    default: FormatString("Unknown Bus");
    }
}

Struct USBXHCI_ETW_EVENT_RUNDOWN_START = "Start Rundown" {}; // Empty Struct
Struct USBXHCI_ETW_EVENT_RUNDOWN_COMPLETE = "Complete Rundown" {}; // Empty Struct
Struct USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION = FormatString("USBXHCI Controller Information")
{
    InitialUcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState = WdfDevicePowerState(this);
    [Global.InternalUsbTblController$[Property.UcxControllerPtr] = ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)]
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
}
Struct USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V1 = FormatString("USBXHCI Controller Information v1")
{
    InitialUcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState = WdfDevicePowerState(this);
    [Global.InternalUsbTblController$[Property.UcxControllerPtr] = ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)]
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
    UINT8  fid_MajorVersion;
    UINT8  fid_MinorVersion;
    BOOL   fid_IsSecureDevice;
    UINT32 fid_DMAModeInVSM = DMAModeInVSM(this);
    UINT32 fid_NumberOfDMATargetsInVSM;
    UINT32 fid_NumberOfResetRecoveryAttempts;
    UINT32 fid_UsbEndpointOffloadMode = UsbEndpointOffloadMode(this);
    BOOL   fid_IsTimeTrackingEnabled;
    USBXHCIDeviceFlags0 fid_DeviceFlags_0;
    USBXHCIDeviceFlags1 fid_DeviceFlags_1;
    USBXHCICachedHccParams1 fid_CachedHccParams1;
    USBXHCICachedHccParams2 fid_CachedHccParams2;
    UINT32 fid_MapRegisterCount;
    UINT32 fid_SecondaryInterrupterCount;
    UINT32 fid_InterruptMechanism = InterruptMechanism(this);
}

Struct USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V2 = FormatString("USBXHCI Controller Information v2")
{
    InitialUcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT8  fid_MajorVersion;
    UINT8  fid_MinorVersion;
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState = WdfDevicePowerState(this);
    [Global.InternalUsbTblController$[Property.UcxControllerPtr] = ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)]
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
    BOOL   fid_IsSecureDevice;
    UINT32 fid_DMAModeInVSM = DMAModeInVSM(this);
    UINT32 fid_NumberOfDMATargetsInVSM;
    UINT32 fid_UsbEndpointOffloadMode = UsbEndpointOffloadMode(this);
    BOOL   fid_IsTimeTrackingEnabled;
    USBXHCIDeviceFlags0 fid_DeviceFlags_0;
    USBXHCIDeviceFlags1 fid_DeviceFlags_1;
    USBXHCICachedHcsParams1 fid_CachedHcsParams1;
    USBXHCICachedHcsParams2 fid_CachedHcsParams2;
    USBXHCICachedHcsParams3 fid_CachedHcsParams3;
    USBXHCICachedHccParams1 fid_CachedHccParams1;
    USBXHCICachedHccParams2 fid_CachedHccParams2;
    UINT32 fid_MapRegisterCount;
    UINT32 fid_SecondaryInterrupterCount;
    UINT32 fid_InterruptMechanism = InterruptMechanism(this);
    UINT32 fid_SupportedNumberOfStreams;
    UINT32 fid_ControllerSuspendResumeCount;
    UINT32 fid_NumberOfResetRecoveryAttempts;
    UINT32 RestoreStateFailureCount;
    UINT32 RHResumeTimeoutCount;
    UINT32 RHResumeNeededExtendedWaitCount;
    UINT32 RHSuspendTimeoutCount;
    UINT32 RHSuspendNeededExtendedWaitCount;
    UINT32 RHPLCClearedOnU0PriorToU3Count;
}
Struct USBXHCI_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION_V3 = FormatString("USBXHCI Controller Information v3")
{
    InitialUcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT8  fid_MajorVersion;
    UINT8  fid_MinorVersion;
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState = WdfDevicePowerState(this);
    [Global.InternalUsbTblController$[Property.UcxControllerPtr] = ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)]
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
    BOOL   fid_IsSecureDevice;
    UINT32 fid_DMAModeInVSM = DMAModeInVSM(this);
    UINT32 fid_NumberOfDMATargetsInVSM;
    UINT32 fid_UsbEndpointOffloadMode = UsbEndpointOffloadMode(this);
    BOOL   fid_IsTimeTrackingEnabled;
    USBXHCIDeviceFlags0 fid_DeviceFlags_0;
    USBXHCIDeviceFlags1 fid_DeviceFlags_1;
    USBXHCICachedHcsParams1 fid_CachedHcsParams1;
    USBXHCICachedHcsParams2 fid_CachedHcsParams2;
    USBXHCICachedHcsParams3 fid_CachedHcsParams3;
    USBXHCICachedHccParams1 fid_CachedHccParams1;
    USBXHCICachedHccParams2 fid_CachedHccParams2;
    UINT32 fid_MapRegisterCount;
    UINT32 fid_SecondaryInterrupterCount;
    UINT32 fid_InterruptMechanism = InterruptMechanism(this);
    UINT32 fid_SupportedNumberOfStreams;
    UINT32 fid_ControllerSuspendResumeCount;
    UINT32 fid_NumberOfResetRecoveryAttempts;
    UINT32 RestoreStateFailureCount;
    UINT32 RHResumeTimeoutCount;
    UINT32 RHResumeNeededExtendedWaitCount;
    UINT32 RHSuspendTimeoutCount;
    UINT32 RHSuspendNeededExtendedWaitCount;
    UINT32 RHPLCClearedOnU0PriorToU3Count;
    DeviceCapabilities fid_DeviceCapabilities;
}
Struct USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION = FormatString("USBXHCI Device Information")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    [Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = UsbDeviceSpeed(this)]
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}

Struct USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V1 = FormatString("USBXHCI Device Information v1")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    [Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = UsbDeviceSpeed(this)]
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
}

Struct USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V2 = FormatString("USBXHCI Device Information v2")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    [Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = UsbDeviceSpeed(this)]
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
    UINT8 ConfigurationValue;
    UINT8 InterfaceNumber;
    UINT8 AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_LastConfigureEndpointStatus;
}

Struct USBXHCI_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V3 = FormatString("USBXHCI Device Information v3")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    [Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = UsbDeviceSpeed(this)]
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
    UINT8 ConfigurationValue;
    UINT8 InterfaceNumber;
    UINT8 AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_LastConfigureEndpointStatus;

    struct fid_Hash_Information
    {
        BOOL IsFirmwareHashValid;
        BOOL IsFirmwareHashQueried;
        BOOL IsFirmwareHashFromDevicePresent;
        BOOL IsFirmwareHashFromSDEVEntryPresent;

        UINT8 FirmwareHashFromDevice[32];
        UINT8 FirmwareHashFromSDEVEntry[32];
    }
}

Struct USBXHCI_ETW_EVENT_RUNDOWN_ENDPOINT_INFORMATION = FormatString("USBXHCI Endpoint Information")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    InitialUsbEndpointPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        [Global.InternalUsbTblEndpoint$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpoint$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointAddressFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        UINT8 fid_bEndpointAddress;
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBEndpointPtr] = EndpointType(this)]
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBPipeHandle] = EndpointType(this)]
        UINT8 fid_bmAttributes;
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT16 fid_wMaxPacketSize;
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT8 fid_bInterval;
    }
    struct  fid_USB_SuperSpeed_Endpoint_Companion_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bMaxBurst;
        UINT8 fid_bmAttributes;
        UINT16 fid_wBytesPerInterval;
    }
    struct  fid_USB_SuperSpeedPlus_IsochEndpoint_Companion_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_Reserved;
        UINT32 fid_wBytesPerInterval;
    }
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_CREATE = FormatString("USBXHCI Controller Create")
{
    InitialUcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState;
    [Global.InternalUsbTblController$[Property.UcxControllerPtr] = ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)]
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_CREATE_V1 = FormatString("USBXHCI Controller Create v1")
{
    InitialUcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState;
    [Global.InternalUsbTblController$[Property.UcxControllerPtr] = ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)]
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
    DeviceCapabilities fid_DeviceCapabilities;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_DELETE = FormatString("USBXHCI Controller Delete")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState;
    UINT32 fid_InstanceNumber;
}
Struct USBXHCI_ETW_EVENT_DEVICE_CREATE = FormatString("USBXHCI Device Create")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    [Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = UsbDeviceSpeed(this)]
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}
Struct USBXHCI_ETW_EVENT_DEVICE_CREATE_V1 = FormatString("USBXHCI Device Create v1")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    [Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = UsbDeviceSpeed(this)]
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
}
Struct USBXHCI_ETW_EVENT_DEVICE_CREATE_V2 = FormatString("USBXHCI Device Create v2")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    [Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = UsbDeviceSpeed(this)]
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
    UINT8 ConfigurationValue;
    UINT8 InterfaceNumber;
    UINT8 AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_DEVICE_CREATE_V3 = FormatString("USBXHCI Device Create v3")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    [Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = UsbDeviceSpeed(this)]
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
    UINT8 ConfigurationValue;
    UINT8 InterfaceNumber;
    UINT8 AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_LastConfigureEndpointStatus;

    struct fid_Hash_Information
    {
        BOOL IGNORE_DURING_CREATE_IsFirmwareHashValid;
        BOOL IGNORE_DURING_CREATE_IsFirmwareHashQueried;
        BOOL IGNORE_DURING_CREATE_IsFirmwareHashFromDevicePresent;
        BOOL IGNORE_DURING_CREATE_IsFirmwareHashFromSDEVEntryPresent;

        UINT8 IGNORE_DURING_CREATE_FirmwareHashFromDevice[32];
        UINT8 IGNORE_DURING_CREATE_FirmwareHashFromSDEVEntry[32];
    }
}
Struct USBXHCI_ETW_EVENT_DEVICE_UPDATE = FormatString("USBXHCI Device Update")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}
Struct USBXHCI_ETW_EVENT_DEVICE_UPDATE_V1 = FormatString("USBXHCI Device Update v1")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
}
Struct USBXHCI_ETW_EVENT_DEVICE_UPDATE_V2 = FormatString("USBXHCI Device Update v2")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
    UINT8 ConfigurationValue;
    UINT8 InterfaceNumber;
    UINT8 AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_DEVICE_UPDATE_V3 = FormatString("USBXHCI Device Update v3")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
    UINT8 ConfigurationValue;
    UINT8 InterfaceNumber;
    UINT8 AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_LastConfigureEndpointStatus;

    struct fid_Hash_Information
    {
        BOOL IsFirmwareHashValid;
        BOOL IsFirmwareHashQueried;
        BOOL IsFirmwareHashFromDevicePresent;
        BOOL IsFirmwareHashFromSDEVEntryPresent;

        UINT8 FirmwareHashFromDevice[32];
        UINT8 FirmwareHashFromSDEVEntry[32];
    }
}
Struct USBXHCI_ETW_EVENT_DEVICE_DELETE = FormatString("USBXHCI Device Delete")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}
Struct USBXHCI_ETW_EVENT_DEVICE_DELETE_V1 = FormatString("USBXHCI Device Delete v1")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
}
Struct USBXHCI_ETW_EVENT_DEVICE_DELETE_V2 = FormatString("USBXHCI Device Delete v2")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
    UINT8 ConfigurationValue;
    UINT8 InterfaceNumber;
    UINT8 AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_DEVICE_DELETE_V3 = FormatString("USBXHCI Device Delete v3")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    [Post.Property.USBPortPath = this.ToString]
    UsbPortPath PortPath;
    UINT32 fid_SlotId;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
    BOOL IsSecureUSBDevice;
    BOOL IsProxyUSBDevice;
    BOOL IsDeviceContextLocal;
    UINT8 ConfigurationValue;
    UINT8 InterfaceNumber;
    UINT8 AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_LastConfigureEndpointStatus;

    struct fid_Hash_Information
    {
        BOOL IGNORE_DURING_DELETE_IsFirmwareHashValid;
        BOOL IGNORE_DURING_DELETE_IsFirmwareHashQueried;
        BOOL IGNORE_DURING_DELETE_IsFirmwareHashFromDevicePresent;
        BOOL IGNORE_DURING_DELETE_IsFirmwareHashFromSDEVEntryPresent;

        UINT8 IGNORE_DURING_DELETE_FirmwareHashFromDevice[32];
        UINT8 IGNORE_DURING_DELETE_irmwareHashFromSDEVEntry[32];
    }
}
Struct USBXHCI_ETW_EVENT_ENDPOINT_CREATE = FormatString("USBXHCI Endpoint Create")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    InitialUsbEndpointPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        [Global.InternalUsbTblEndpoint$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpoint$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointAddressFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        UINT8 fid_bEndpointAddress;
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBEndpointPtr] = EndpointType(this)]
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBPipeHandle] = EndpointType(this)]
        UINT8 fid_bmAttributes;
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT16 fid_wMaxPacketSize;
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT8 fid_bInterval;
    }
    struct  fid_USB_SuperSpeed_Endpoint_Companion_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bMaxBurst;
        UINT8 fid_bmAttributes;
        UINT16 fid_wBytesPerInterval;
    }
    struct  fid_USB_SuperSpeedPlus_IsochEndpoint_Companion_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_Reserved;
        UINT32 fid_wBytesPerInterval;
    }
}
Struct USBXHCI_ETW_EVENT_ENDPOINT_UPDATE = FormatString("USBXHCI Endpoint Update")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        [Global.InternalUsbTblEndpoint$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpoint$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointAddressFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        UINT8 fid_bEndpointAddress;
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBEndpointPtr] = EndpointType(this)]
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBPipeHandle] = EndpointType(this)]
        UINT8 fid_bmAttributes;
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT16 fid_wMaxPacketSize;
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT8 fid_bInterval;
    }
    struct  fid_USB_SuperSpeed_Endpoint_Companion_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bMaxBurst;
        UINT8 fid_bmAttributes;
        UINT16 fid_wBytesPerInterval;
    }
}
Struct USBXHCI_ETW_EVENT_ENDPOINT_DELETE = FormatString("USBXHCI Endpoint Delete")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bEndpointAddress;
        UINT8 fid_bmAttributes;
        UINT16 fid_wMaxPacketSize;
        UINT8 fid_bInterval;
    }
    struct  fid_USB_SuperSpeed_Endpoint_Companion_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bMaxBurst;
        UINT8 fid_bmAttributes;
        UINT16 fid_wBytesPerInterval;
    }
}
Struct USBXHCI_ETW_EVENT_STARTDEVICE_FAIL = FormatString("Windows failed to start the %s for the following reason: %s", DeviceDescription.ToString, StartDeviceFailReason.ToString)
{
    UcxControllerPtr fid_UcxController;
    UINT32 DeviceDescLength;
    UnicodeString(DeviceDescLength) DeviceDescription;
    UINT32 StartDeviceFailReason = StartDeviceFailReasonTable(this); // table must have different name from element
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_FIRMWARE_VERSION_UPDATE = FormatString("USBXHCI Controller Firmware Version Update")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState;
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_START = FormatString("USBXHCI Controller EvtDeviceD0Entry Start")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    UINT16 fid_WaitWakePending;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_COMPLETE = FormatString("USBXHCI Controller EvtDeviceD0Entry Complete")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_POST_INTERRUPTS_START = FormatString("USBXHCI Controller EvtDeviceD0EntryPostInterruptsEnabled Start")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    UINT16 fid_WaitWakePending;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_D0_ENTRY_POST_INTERRUPTS_COMPLETE = FormatString("USBXHCI Controller EvtDeviceD0EntryPostInterruptsEnabled Complete")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_PRE_INTERRUPTS_START = FormatString("USBXHCI Controller EvtDeviceD0ExitPreInterruptsDisabled Start")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    UINT16 fid_WaitWakePending;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_PRE_INTERRUPTS_COMPLETE = FormatString("USBXHCI Controller EvtDeviceD0ExitPreInterruptsDisabled Complete")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_START = FormatString("USBXHCI Controller EvtDeviceD0Exit Start")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    UINT16 fid_WaitWakePending;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_D0_EXIT_COMPLETE = FormatString("USBXHCI Controller EvtDeviceD0Exit Complete")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_SAVE_STATE_START = FormatString("USBXHCI Controller Save State Start")
{
    UcxControllerPtr fid_UcxController;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_SAVE_STATE_COMPLETE = FormatString("USBXHCI Controller Save State Complete")
{
    UcxControllerPtr fid_UcxController;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_RESTORE_STATE_START = FormatString("USBXHCI Controller Restore State Start")
{
    UcxControllerPtr fid_UcxController;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_RESTORE_STATE_COMPLETE = FormatString("USBXHCI Controller Restore State Complete")
{
    UcxControllerPtr fid_UcxController;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_INTERNAL_RESET_START = FormatString("USBXHCI Controller Internal Reset Start")
{
    UcxControllerPtr fid_UcxController;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_INTERNAL_RESET_COMPLETE = FormatString("USBXHCI Controller Internal Reset Complete")
{
    UcxControllerPtr fid_UcxController;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_ERROR = FormatString("USBXHCI Controller Error detected. To recover from this Error, Windows may need to reset the Controller and re-enumerate USB devices downstream of the Controller. Please refer Event Properties for more contextual information about this Error. Hardware Verifier Flag: %s. Detailed description: %s", fid_HWVerifierFlag.ToString, fid_Description.ToString)
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_UcxDevice;
    EtlPtr fid_UcxEndpoint;
    UINT64 fid_HWVerifierFlag;
    AsciiString fid_Description;
    TRB fid_CommandTRB;
    TRB fid_EventTRB;
}
Struct USBXHCI_ETW_EVENT_COMMAND_SEND = FormatString("xHCI Command sent to Controller: %s", fid_Command_TRB.ToString)
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_CrbPointer;
    TRB fid_Command_TRB;
}
Struct USBXHCI_ETW_EVENT_COMMAND_WAITLISTED = FormatString("xHCI Command waitlisted due to Command Ring full or Command Serialization: %s", fid_Command_TRB.ToString)
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_CrbPointer;
    TRB fid_Command_TRB;
    UINT8 fid_CommandWaitlistReason = CommandWaitlistReason(this);
}
Struct USBXHCI_ETW_EVENT_COMMAND_COMPLETE = FormatString("xHCI Command Complete: %s, %s", fid_CompletionStatus >= 2 ? fid_CompletionStatus.ToString : fid_CompletionCode.ToString, fid_Command_TRB.ToString)
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_CrbPointer;
    TRB fid_Command_TRB;
    UINT32 fid_CompletionStatus = TrbCompletionStatus(this);
    UINT8 fid_CompletionCode = TrbCompletionCode(this);
}
Struct USBXHCI_ETW_EVENT_COMMAND_COMPLETE_ERROR = FormatString("xHCI Command Complete with Error: %s, %s", fid_CompletionStatus >= 2 ? fid_CompletionStatus.ToString : fid_CompletionCode.ToString, fid_Command_TRB.ToString)
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_CrbPointer;
    TRB fid_Command_TRB;
    UINT32 fid_CompletionStatus = TrbCompletionStatus(this);
    UINT8 fid_CompletionCode = TrbCompletionCode(this);
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_QUERY_USB_CAPABILITY = FormatString("Query USB capability for controller")
{
    UcxControllerPtr fid_UcxController;
    GUID(true) fid_Capability;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
    UINT32 fid_NumStaticStreams;
}
Struct USBXHCI_ETW_EVENT_CONTROLLER_WDF_POWER_REFERENCE_FOR_DEBUGGER = FormatString("Wdf Power Reference acquired or released because controller is shared with debugger")
{
    UcxControllerPtr fid_UcxController;
    BOOL fid_WdfPowerReferenceForDebuggerAcquired;
}
Struct USBXHCI_ETW_EVENT_SENDING_TRUSTLET_REQUEST = FormatString("USBXHCI_ETW_EVENT_SENDING_TRUSTLET_REQUEST - fid_TrustletRequestOpCode : %s, fid_InputBufferLength : %s, fid_OutputBufferLength : %s, fid_OutstandingRequestsAtSendTime : %s", fid_TrustletRequestOpCode.ToString, fid_InputBufferLength.ToString, fid_OutputBufferLength.ToString, fid_OutstandingRequestsAtSendTime.ToString)
{
    UINT32 fid_TrustletRequestOpCode = TrustletRequestOpCode(this);
    UINT32 fid_InputBufferLength;
    UINT32 fid_OutputBufferLength;
    UINT32 fid_OutstandingRequestsAtSendTime;
}
Struct USBXHCI_ETW_EVENT_RECEIVED_TRUSTLET_REQUEST_IN_VTL1 = FormatString("USBXHCI_ETW_EVENT_RECEIVED_TRUSTLET_REQUEST_IN_VTL1 - fid_TrustletRequestOpCode : %s, fid_OutstandingRequestsAtSendTime : %s", fid_TrustletRequestOpCode.ToString, fid_OutstandingRequestsAtSendTime.ToString)
{
    UINT32 fid_TrustletRequestOpCode = TrustletRequestOpCode(this);
    UINT32 fid_OutstandingRequestsAtSendTime;
}
Struct USBXHCI_ETW_EVENT_COMPLETED_TRUSTLET_REQUEST_IN_VTL1 = FormatString("USBXHCI_ETW_EVENT_COMPLETED_TRUSTLET_REQUEST_IN_VTL1 - fid_TrustletRequestOpCode : %s, fid_OutstandingRequestsAtSendTime : %s", fid_TrustletRequestOpCode.ToString, fid_OutstandingRequestsAtSendTime.ToString)
{
    UINT32 fid_TrustletRequestOpCode = TrustletRequestOpCode(this);
    UINT32 fid_OutstandingRequestsAtSendTime;
}
Struct USBXHCI_ETW_EVENT_COMPLETED_TRUSTLET_REQUEST = FormatString("USBXHCI_ETW_EVENT_COMPLETED_TRUSTLET_REQUEST - fid_TrustletRequestOpCode : %s, fid_OutstandingRequestsAtSendTime : %s, fid_TimeInNs : %s", fid_TrustletRequestOpCode.ToString, fid_OutstandingRequestsAtSendTime.ToString, fid_TimeInNs.ToString)
{
    UINT32 fid_TrustletRequestOpCode = TrustletRequestOpCode(this);
    UINT32 fid_OutstandingRequestsAtSendTime;
    UINT64 fid_TimeInNs;
}
Struct USBXHCI_ETW_EVENT_TRANSFER_INITIALIZED = FormatString("USBXHCI_ETW_EVENT_TRANSFER_INITIALIZED - fid_SlotId : %s, fid_EndpointContextIndex : %s, fid_StreamId : %s, fid_BytesTotal : %s", fid_SlotId.ToString, fid_EndpointContextIndex.ToString, fid_StreamId.ToString, fid_BytesTotal.ToString)
{
    UINT8 fid_SlotId;
    UINT32 fid_EndpointContextIndex;
    UINT32 fid_StreamId;
    UINT32 fid_BytesTotal;
}
Struct USBXHCI_ETW_EVENT_INTERRUPT = FormatString("USBXHCI_ETW_EVENT_INTERRUPT - fid_InterrupterNumber : %s", fid_InterrupterNumber.ToString)
{
    UINT32 fid_InterrupterNumber;
}
Struct USBXHCI_ETW_EVENT_DEFERRED_WORK_START = FormatString("USBXHCI_ETW_EVENT_DEFERRED_WORK_START - fid_InterrupterNumber : %s", fid_InterrupterNumber.ToString)
{
    UINT32 fid_InterrupterNumber;
}
Struct USBXHCI_ETW_EVENT_DEFERRED_WORK_STOP = FormatString("USBXHCI_ETW_EVENT_DEFERRED_WORK_STOP - fid_InterrupterNumber : %s", fid_InterrupterNumber.ToString)
{
    UINT32 fid_InterrupterNumber;
}
Struct USBXHCI_ETW_EVENT_DOORBELL = FormatString("USBXHCI_ETW_EVENT_DOORBELL - fid_SlotId : %s, fid_EndpointContextIndex : %s, fid_StreamId : %s", fid_SlotId.ToString, fid_EndpointContextIndex.ToString, fid_StreamId.ToString)
{
    UINT8 fid_SlotId;
    UINT32 fid_EndpointContextIndex;
    UINT32 fid_StreamId;
}
Struct USBXHCI_ETW_EVENT_START_TRACKING_FOR_TIME_SYNC = FormatString("START_TRACKING_FOR_TIME_SYNC - fid_UcxController : %s, fid_IsStartupDelayTolerable : %s, fid_RequestorMode : %s, fid_NtStatus : %s, fid_TimeTrackingHandle : %s", fid_UcxController.ToString, fid_IsStartupDelayTolerable.ToString, RequestorModeEnumValue(fid_RequestorMode), fid_NtStatus.ToString, fid_TimeTrackingHandle.ToString)
{
    UcxControllerPtr fid_UcxController;
    BOOL fid_IsStartupDelayTolerable;
    UINT32 fid_RequestorMode = RequestorModeEnumValue(this);
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
    EtlPtr fid_TimeTrackingHandle;
}
Struct USBXHCI_ETW_EVENT_STOP_TRACKING_FOR_TIME_SYNC = FormatString("STOP_TRACKING_FOR_TIME_SYNC - fid_UcxController : %s, fid_TimeTrackingHandle : %s, fid_IsCloseHandleFromClient : %s, fid_RequestorMode : %s, fid_NtStatus : %s, fid_NumberOfFrameQpcTranslations : %s", fid_UcxController.ToString, fid_TimeTrackingHandle.ToString, fid_IsCloseHandleFromClient.ToString, RequestorModeEnumValue(fid_RequestorMode), fid_NtStatus.ToString, fid_NumberOfGetFrameQpcCalls.ToString, fid_NumberOfFrameQpcTranslations.ToString)
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_TimeTrackingHandle;
    BOOL fid_IsCloseHandleFromClient;
    UINT32 fid_RequestorMode = RequestorModeEnumValue(this);
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
    UINT32 fid_NumberOfGetFrameQpcCalls;
    UINT32 fid_NumberOfFrameQpcTranslations;
}
Struct USBXHCI_ETW_EVENT_CONFIGURE_ENDPOINT = FormatString("CONFIGURE_ENDPOINT Config:Interface:AltSetting %s:%s:%s", fid_ConfigurationValue.ToString, fid_InterfaceNumber.ToString, fid_AlternateSetting.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_ConfigurationValue;
    UINT32 fid_InterfaceNumber;
    UINT32 fid_AlternateSetting;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_LastConfigureEndpointStatus;
}

Struct USBXHCI_ETW_EVENT_CONTROLLER_HEALTH = FormatString("USBXHCI Controller Health Information")
{
    InitialUcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT8  fid_MajorVersion;
    UINT8  fid_MinorVersion;
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState = WdfDevicePowerState(this);
    [Global.InternalUsbTblController$[Property.UcxControllerPtr] = ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)]
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
    BOOL   fid_IsSecureDevice;
    UINT32 fid_DMAModeInVSM = DMAModeInVSM(this);
    UINT32 fid_NumberOfDMATargetsInVSM;
    UINT32 fid_UsbEndpointOffloadMode = UsbEndpointOffloadMode(this);
    BOOL   fid_IsTimeTrackingEnabled;
    USBXHCIDeviceFlags0 fid_DeviceFlags_0;
    USBXHCIDeviceFlags1 fid_DeviceFlags_1;
    USBXHCICachedHcsParams1 fid_CachedHcsParams1;
    USBXHCICachedHcsParams2 fid_CachedHcsParams2;
    USBXHCICachedHcsParams3 fid_CachedHcsParams3;
    USBXHCICachedHccParams1 fid_CachedHccParams1;
    USBXHCICachedHccParams2 fid_CachedHccParams2;
    UINT32 fid_MapRegisterCount;
    UINT32 fid_SecondaryInterrupterCount;
    UINT32 fid_InterruptMechanism = InterruptMechanism(this);
    UINT32 fid_SupportedNumberOfStreams;
    UINT32 fid_ControllerSuspendResumeCount;
    UINT32 fid_NumberOfResetRecoveryAttempts;
    UINT32 RestoreStateFailureCount;
    UINT32 RHResumeTimeoutCount;
    UINT32 RHResumeNeededExtendedWaitCount;
    UINT32 RHSuspendTimeoutCount;
    UINT32 RHSuspendNeededExtendedWaitCount;
    UINT32 RHPLCClearedOnU0PriorToU3Count;
    DeviceCapabilities fid_DeviceCapabilities;
    UINT32 fid_PortNumber;
    UINT32 fid_PortStatusChange;
}

Struct USBXHCI_ETW_EVENT_CONTROLLER_HEALTH_V1 = FormatString("USBXHCI Controller Health Information")
{
    InitialUcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT8  fid_MajorVersion;
    UINT8  fid_MinorVersion;
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT64 fid_FirmwareVersion;
    UINT32 fid_S0IdleStatus = S0IdleStatus(this);
    UINT32 fid_WdfDevicePowerState = WdfDevicePowerState(this);
    [Global.InternalUsbTblController$[Property.UcxControllerPtr] = ControllerString(fid_ParentBusType, fid_PciVendorId, fid_PciDeviceId, fid_PciRevisionId, fid_AcpiVendorId, fid_AcpiDeviceId, fid_AcpiRevisionId)]
    UINT32 fid_InstanceNumber;
    BOOL   fid_WdfPowerReferenceForDebuggerAcquired;
    BOOL   fid_IsSecureDevice;
    UINT32 fid_DMAModeInVSM = DMAModeInVSM(this);
    UINT32 fid_NumberOfDMATargetsInVSM;
    UINT32 fid_UsbEndpointOffloadMode = UsbEndpointOffloadMode(this);
    BOOL   fid_IsTimeTrackingEnabled;
    USBXHCIDeviceFlags0 fid_DeviceFlags_0;
    USBXHCIDeviceFlags1 fid_DeviceFlags_1;
    USBXHCICachedHcsParams1 fid_CachedHcsParams1;
    USBXHCICachedHcsParams2 fid_CachedHcsParams2;
    USBXHCICachedHcsParams3 fid_CachedHcsParams3;
    USBXHCICachedHccParams1 fid_CachedHccParams1;
    USBXHCICachedHccParams2 fid_CachedHccParams2;
    UINT32 fid_MapRegisterCount;
    UINT32 fid_SecondaryInterrupterCount;
    UINT32 fid_InterruptMechanism = InterruptMechanism(this);
    UINT32 fid_SupportedNumberOfStreams;
    UINT32 fid_ControllerSuspendResumeCount;
    UINT32 fid_NumberOfResetRecoveryAttempts;
    UINT32 RestoreStateFailureCount;
    UINT32 RHResumeTimeoutCount;
    UINT32 RHResumeNeededExtendedWaitCount;
    UINT32 RHSuspendTimeoutCount;
    UINT32 RHSuspendNeededExtendedWaitCount;
    UINT32 RHPLCClearedOnU0PriorToU3Count;
    DeviceCapabilities fid_DeviceCapabilities;
    UINT32 fid_PortNumber;
    UINT32 fid_PortStatusChange;
    BOOLEAN fid_IsPortErrorRecovered;
}

[RegisterBefore(EventDescriptor.DefaultKeyword, MicrosoftWindowsUSBUSBXHCI_Keyword, "{30e1d284-5d88-459c-83fd-6345b39b19ec}")]
struct MicrosoftWindowsUSBUSBXHCI_Keyword
{
    UINT64 Default:1 = FormatString("            (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_DEFAULT":"");
    UINT64 USBError:1 = FormatString("           (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_USBERROR":"");
    UINT64 IRP:1 = FormatString("                (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_IRP":"");
    UINT64 Power:1 = FormatString("              (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_POWER":"");
    UINT64 PnP:1 = FormatString("                (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_PNP":"");
    UINT64 Performance:1 = FormatString("        (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_PERFORMANCE":"");
    UINT64 HeadersBusTrace:1 = FormatString("    (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_HEADERS_BUS_TRACE":"");
    UINT64 PartialDataBusTrace:1 = FormatString("(%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_PARTIAL_DATA_BUS_TRACE":"");
    UINT64 FullDataBusTrace:1 = FormatString("   (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_FULL_DATA_BUS_TRACE":"");
    UINT64 StateMachine:1 = FormatString("       (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_STATEMACHINE":"");
    UINT64 Enumeration:1 = FormatString("        (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_ENUMERATION":"");
    UINT64 VerifyDriver:1 = FormatString("       (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_VERIFYDRIVER":"");
    UINT64 HWVerifyHost:1 = FormatString("       (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_HW_VERIFYHOST":"");
    UINT64 HWVerifyHub:1 = FormatString("        (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_HW_VERIFYHUB":"");
    UINT64 HWVerifyDevice:1 = FormatString("     (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_HW_VERIFYDEVICE":"");
    UINT64 Rundown:1 = FormatString("            (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_RUNDOWN":"");
    UINT64 Device:1 = FormatString("             (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_DEVICE":"");
    UINT64 Hub:1 = FormatString("                (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_HUB":"");
    UINT64 Compat:1 = FormatString("             (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_COMPAT":"");
    UINT64 ControllerCommand:1 = FormatString("  (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_CONTROLLER_COMMAND":"");
    UINT64 Reserved1:44 = FormatString("          (%s)", this.ToBitString);
}
struct USBXHCIDeviceFlags0
{
    UINT64 Use32BitRegisterAccess:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 NoControllerSaveRestoreState:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 IgnoreBIOSHandoffFailure:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 NoLinkTRBInTD:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ControllerNotSupported:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 IgnoreContextErrorOnEPStop:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DataStageTrbMax512:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DisableChainedMDLSupport:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DelayAfterMFDisable:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 UseLineBasedInterrupts:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 UseMaxNumberOfStreams:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 SetLinkTRBChainBit:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 UseSingleInterrupter:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 IgnoreCompletionCode199:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DelayInitialEndpointStopCommand:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 OnResetDisableEnable:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 MaximumEndpointIntervalValue7:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DisableImmediateData:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DisableStreams:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ForceU0PriorToU3:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DisableIdlePowerManagement:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 OnStopConfigureStreamEndpoint:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 Disable20LPM:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 EnablePPTSWBandwidthMgmt:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ControllerFirmwareOutdated:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 Map20PortDisableToSuspend:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ControllerCanMissU3Request:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 Disable20LPMPriorToU3:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 EnableErrorRecoveryOnEventRingFull:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ForceWakeEnableBitsInD0:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ClearCSCPriorToD0Exit:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 SerializeControllerCommands:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ClearTtBufferOnAsyncTransferCancel:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DisableBEI:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 RoundSplitTransferSizeToPacketSize:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 StreamEDTLAAlternateLocation1:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 StreamEDTLAAlternateLocation2:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ValidateTransferEventPointer:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DropDuplicateEd0TransferEvents:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 SerializeTDBulkInterrupt:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 PartialStreamEDTLAValue:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 PreventSchedulingLateIsochTd:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ExpectLackOfMseEvents:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ResetControllerOnShutdown:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 StreamEDTLAReinitNeeded:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 UseEDTLAValidBit:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 EnablePPTBulkBeforeIntWorkaround:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 PreventStandaloneLinkTDForFullSpeedIsoch:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 MaxEventRingSegmentCount2:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 Append8NoOpTRBsToEventDataTrbForSSBulkIn:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ZeroTRBSegments:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 HideInvalidDebugPortStatusAndChange:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 SetUnlimitedErrorRetryCountForEndpoint:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 IgnoreEventDataBitForTransferRingEmptyEvent:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DoPreInterruptsDisableAcpiCallout:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 EnableCHTNonArchitecturalRegisterSaveRestore:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 EnableCHTPMEWakeWorkaround:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 EnableCHTSSICPortUnusedWorkaround:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ExecuteDSMToEnableRTD3InAddDevice:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 IgnoreContiguousFrameIDCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ExecuteDSMForHSICDisconnectInU3:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 SetMultiTTBitDuringConfigureEndpoint:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 FailTransfersWithCompletionCode199:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 UseStrictBIOSHandoff:1 = (this == 1 ? "ENABLED" : "0");
}
struct USBXHCIDeviceFlags1
{
    UINT64 ExecutePowerTransitionWorkaroundsForKBL:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 DelayPollingHCRSTAfterSettingHCRST:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 IgnoreDataBufferErrorWithED0EventTrb:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 NoControllerSaveRestoreStateWithDebugEnabled:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 NoClearPciCommandRegisterOnControllerStopFailed:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 FailTransfersWithCompletionCode198:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 ClearPLCOnU0PriorToU3:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 RestoreRyzenFeatureBitsPostControllerReset1:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 RestoreRyzenFeatureBitsPostControllerReset2:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 RestoreRyzenFeatureBitsPostControllerReset3:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 AvoidClearingERSTDuringReleaseHardware:1 = (this == 1 ? "ENABLED" : "0");
    UINT64 Reserved:53 = (this != 0 ? "Unknown hackflags are enabled. NPL file needs to be updated" : "0");
}
struct USBXHCICachedHcsParams1
{
    UINT32 NumberOfDeviceSlots:8;
    UINT32 NumberOfInterrupters:11;
    UINT32 Reserved0:5 = this.ToBitString;
    UINT32 NumberOfPorts:8;
}
struct USBXHCICachedHcsParams2
{
    UINT32 IsochSchedulingThreshold:4;
    UINT32 EventRingSegmentTableMax:4;
    UINT32 Reserved0:13 = this.ToBitString;
    UINT32 MaxScratchpadBuffersHi:5;
    UINT32 ScratchpadRestore:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 MaxScratchpadBuffers:5;
}
struct USBXHCICachedHcsParams3
{
    UINT32 U1DeviceExitLatency:8;
    UINT32 Reserved0:8 = this.ToBitString;
    UINT32 U2DeviceExitLatency:16
}
struct USBXHCICachedHccParams1
{
    UINT32 Bit64AddressingCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 BwNegotiationCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 ContextSize:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 PortPowerControl:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 PortIndicators:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 LightHCResetCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 LatencyToleranceMessagingCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 NoSecondarySidSupport:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 ParseAllEventData:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 StoppedShortPacketCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 StoppedEDTLACapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 ContiguousFrameIDCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 MaximumPrimaryStreamArraySize:4 = this.ToBitString;
    UINT32 XhciExtendedCapabilitiesPointer:16 = this.ToBitString;
}
struct USBXHCICachedHccParams2
{
    UINT32 U3EntryCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 ConfigureEndpointCommandMaxExitLatencyCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 ForceSaveContextCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 ComplianceTransitionCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 LargeESITPayloadCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 ConfigurationInformationCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 ExtendedTBCCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 GetSetExtendedPropertyCapability:1 = (this == 1 ? "ENABLED" : "0");
    UINT32 Reserved:24 = FormatString("%s", this.ToBitString);
}
struct DeviceCapabilities
{
    UINT16 Size;
    UINT16 Version;

    UINT32 DeviceD1:1;
    UINT32 DeviceD2:1;
    UINT32 LockSupported:1;
    UINT32 EjectSupported:1; // Ejectable in S0
    UINT32 Removable:1;
    UINT32 DockDevice:1;
    UINT32 UniqueID:1;
    UINT32 SilentInstall:1;
    UINT32 RawDeviceOK:1;
    UINT32 SurpriseRemovalOK:1;
    UINT32 WakeFromD0:1;
    UINT32 WakeFromD1:1;
    UINT32 WakeFromD2:1;
    UINT32 WakeFromD3:1;
    UINT32 HardwareDisabled:1;
    UINT32 NonDynamic:1;
    UINT32 WarmEjectSupported:1;
    UINT32 NoDisplayInUI:1;
    UINT32 Reserved1:1;
    UINT32 WakeFromInterrupt:1;
    UINT32 SecureDevice:1;
    UINT32 ChildOfVgaEnabledBridge:1;
    UINT32 DecodeIoOnBoot:1;
    UINT32 Reserved:9 = (this != 0 ? "Reserved/Unknown flags are enabled. NPL file needs to be updated" : "0");

    UINT32 Address;
    UINT32 UINumber;
    UINT32 DeviceState[7];
    UINT32 SystemWake;
    UINT32 DeviceWake;
    UINT32 U1Latency;
    UINT32 U2Latency;
    UINT32 U3Latency;
}
//#  (c) 2009 Microsoft Corporation
//#
//#  Title:                  Microsoft-Windows-mausbhost
//#
//#  Details:
//#
//#  Public References:      mausbhost.man
//#
//#  Comments:
//#
//#  Revision Class and Date:Minor, 7/5/2016
//#
//####
[RegisterBefore(NetEvent.UserData, MAUSBHOST, "{7725b5f9-1f2e-4e21-baeb-b2af4690bc87}")]
Protocol MaUsbHost = property.ETLSummary
{
    [BuildConversationWithParent, conversation.ConversationDescription = ""]
    [Post.Property.USBIsError =
        ((
            (NetEvent.Header.Descriptor.Level == 0x2)
            OR
            (Property.USBNtStatus != "success" && Property.USBNtStatus != "" && Property.USBNtStatus != "0xC0000120 - STATUS_CANCELLED")
        ) ? 1 : 0)]
    switch(property.EventID)
    {
        case 1: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_RUNDOWN_START MAUSBHOST_ETW_EVENT_RUNDOWN_START;
        case 2: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_RUNDOWN_COMPLETE MAUSBHOST_ETW_EVENT_RUNDOWN_COMPLETE;
        case 3: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION MAUSBHOST_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION;
        case 4: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION MAUSBHOST_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION;
        case 5: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_RUNDOWN_ENDPOINT_INFORMATION MAUSBHOST_ETW_EVENT_RUNDOWN_ENDPOINT_INFORMATION;
        case 6: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_CREATE MAUSBHOST_ETW_EVENT_CONTROLLER_CREATE;
        case 7: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_DELETE MAUSBHOST_ETW_EVENT_CONTROLLER_DELETE;
        case 8: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_DEVICE_CREATE MAUSBHOST_ETW_EVENT_DEVICE_CREATE;
        case 9: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_DEVICE_UPDATE MAUSBHOST_ETW_EVENT_DEVICE_UPDATE;
        case 10: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_DEVICE_DELETE MAUSBHOST_ETW_EVENT_DEVICE_DELETE;
        case 11: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_ENDPOINT_CREATE MAUSBHOST_ETW_EVENT_ENDPOINT_CREATE;
        case 12: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_ENDPOINT_UPDATE MAUSBHOST_ETW_EVENT_ENDPOINT_UPDATE;
        case 13: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_ENDPOINT_DELETE MAUSBHOST_ETW_EVENT_ENDPOINT_DELETE;
        case 15: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_D0_ENTRY_START MAUSBHOST_ETW_EVENT_CONTROLLER_D0_ENTRY_START;
        case 16: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_D0_ENTRY_COMPLETE MAUSBHOST_ETW_EVENT_CONTROLLER_D0_ENTRY_COMPLETE;
        case 17: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_D0_EXIT_START MAUSBHOST_ETW_EVENT_CONTROLLER_D0_EXIT_START;
        case 18: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_D0_EXIT_COMPLETE MAUSBHOST_ETW_EVENT_CONTROLLER_D0_EXIT_COMPLETE;
        case 19: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_START MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_START;
        case 20: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_COMPLETE MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_COMPLETE;
        case 21: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_QUERY_USB_CAPABILITY MAUSBHOST_ETW_EVENT_CONTROLLER_QUERY_USB_CAPABILITY;
        case 50: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_SEND_MANAGEMENT_REQUEST MAUSBHOST_ETW_EVENT_PAL_SEND_MANAGEMENT_REQUEST;
        case 51: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_SEND_MANAGEMENT_RESPONSE MAUSBHOST_ETW_EVENT_PAL_SEND_MANAGEMENT_RESPONSE;
        case 52: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_RECEIVE_MANAGEMENT_REQUEST MAUSBHOST_ETW_EVENT_PAL_RECEIVE_MANAGEMENT_REQUEST;
        case 53: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_RECEIVE_MANAGEMENT_RESPONSE MAUSBHOST_ETW_EVENT_PAL_RECEIVE_MANAGEMENT_RESPONSE;
        case 54: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_DESCRIPTOR_VALIDATION_FAILURE MAUSBHOST_ETW_EVENT_PAL_DESCRIPTOR_VALIDATION_FAILURE;
        case 55: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_INVALID_SUBTYPE MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_INVALID_SUBTYPE;
        case 56: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_STATUS_ERROR MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_STATUS_ERROR;
        case 57: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_RETRIES_TIMEOUT MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_RETRIES_TIMEOUT;
        case 58: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_HEADER_STATUS_ERROR MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_HEADER_STATUS_ERROR;
        case 59: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_INCORRECT_SIZE MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_INCORRECT_SIZE;
        case 60: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_MANAGEMENT_STATE_MACHINE_TRANSITION MAUSBHOST_ETW_EVENT_MANAGEMENT_STATE_MACHINE_TRANSITION;
        case 61: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_MANAGEMENT_STATE_MACHINE_EXCEPTION MAUSBHOST_ETW_EVENT_MANAGEMENT_STATE_MACHINE_EXCEPTION;
        case 62: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_IN_TRANSFER_STATE_MACHINE_TRANSITION MAUSBHOST_ETW_EVENT_IN_TRANSFER_STATE_MACHINE_TRANSITION;
        case 63: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_IN_TRANSFER_STATE_MACHINE_EXCEPTION MAUSBHOST_ETW_EVENT_IN_TRANSFER_STATE_MACHINE_EXCEPTION;
        case 64: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_OUT_TRANSFER_STATE_MACHINE_TRANSITION MAUSBHOST_ETW_EVENT_OUT_TRANSFER_STATE_MACHINE_TRANSITION;
        case 65: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_OUT_TRANSFER_STATE_MACHINE_EXCEPTION MAUSBHOST_ETW_EVENT_OUT_TRANSFER_STATE_MACHINE_EXCEPTION;
        case 66: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_UIL_ENDPOINT_STATE_MACHINE_TRANSITION MAUSBHOST_ETW_EVENT_UIL_ENDPOINT_STATE_MACHINE_TRANSITION;
        case 67: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_UIL_ENDPOINT_STATE_MACHINE_EXCEPTION MAUSBHOST_ETW_EVENT_UIL_ENDPOINT_STATE_MACHINE_EXCEPTION;
        case 70: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_START_USB_TRANSFER MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_START_USB_TRANSFER;
        case 71: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_COMPLETE_USB_TRANSFER MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_COMPLETE_USB_TRANSFER;
        case 72: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERREQ MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERREQ;
        case 73: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERACK MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERACK;
        case 74: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERRESP MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERRESP;
        case 75: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MAUSB_SPEED_DEVICE_CAPABILITY_DESCRIPTOR MAUSBHOST_ETW_EVENT_PAL_MAUSB_SPEED_DEVICE_CAPABILITY_DESCRIPTOR;
        case 76: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MAUSB_P_OUT_DEVICE_CAPABILITY_DESCRIPTOR MAUSBHOST_ETW_EVENT_PAL_MAUSB_P_OUT_DEVICE_CAPABILITY_DESCRIPTOR;
        case 77: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MAUSB_ISOCH_DEVICE_CAPABILITY_DESCRIPTOR MAUSBHOST_ETW_EVENT_PAL_MAUSB_ISOCH_DEVICE_CAPABILITY_DESCRIPTOR;
        case 78: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MAUSB_SYNCH_DEVICE_CAPABILITY_DESCRIPTOR MAUSBHOST_ETW_EVENT_PAL_MAUSB_SYNCH_DEVICE_CAPABILITY_DESCRIPTOR;
        case 79: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MAUSB_CONTAINER_ID_DEVICE_CAPABILITY_DESCRIPTOR MAUSBHOST_ETW_EVENT_PAL_MAUSB_CONTAINER_ID_DEVICE_CAPABILITY_DESCRIPTOR;
        case 80: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_MAUSB_LINK_SLEEP_DEVICE_CAPABILITY_DESCRIPTOR MAUSBHOST_ETW_EVENT_PAL_MAUSB_LINK_SLEEP_DEVICE_CAPABILITY_DESCRIPTOR;
        case 100: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_IP_SEND_DATA MAUSBHOST_ETW_EVENT_IP_SEND_DATA;
        case 101: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_IP_SEND_DATA_COMPLETE MAUSBHOST_ETW_EVENT_IP_SEND_DATA_COMPLETE;
        case 102: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_IP_READ_DATA MAUSBHOST_ETW_EVENT_IP_READ_DATA;
        case 103: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_IP_READ_DATA_COMPLETE MAUSBHOST_ETW_EVENT_IP_READ_DATA_COMPLETE;
        case 104: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_IP_SOCKET_CONNECT MAUSBHOST_ETW_EVENT_IP_SOCKET_CONNECT;
        case 105: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_IP_SOCKET_DISCONNECT MAUSBHOST_ETW_EVENT_IP_SOCKET_DISCONNECT;
        case 106: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_FAIL_ISOCHRONOUS_DEVICE MAUSBHOST_ETW_EVENT_PAL_FAIL_ISOCHRONOUS_DEVICE;
        case 107: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_PAL_SESSION_CLOSE MAUSBHOST_ETW_EVENT_PAL_SESSION_CLOSE;
        case 108: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_RECOVERY MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_RECOVERY;
        case 109: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_EVENT_ENDPOINT_GET_DESCRIPTOR MAUSBHOST_ETW_EVENT_ENDPOINT_GET_DESCRIPTOR;
        case 201: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_SETUSBDEVADDRREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_SETUSBDEVADDRREQ_PACKET;
        case 202: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVRESETREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVRESETREQ_PACKET;
        case 203: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVHANDLEREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVHANDLEREQ_PACKET;
        case 204: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVDISCONNECTREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVDISCONNECTREQ_PACKET;
        case 205: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_PINGRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_PINGRESP_PACKET;
        case 206: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVHANDLERESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVHANDLERESP_PACKET;
        case 207: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVDISCONNECTRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVDISCONNECTRESP_PACKET;
        case 208: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_MODIFYEP0REQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_MODIFYEP0REQ_PACKET;
        case 209: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVRESETRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVRESETRESP_PACKET;
        case 210: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEINACTIVATEREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEINACTIVATEREQ_PACKET;
        case 211: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_MAUSBDEVICEINITIATEDDISCONNECTREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_MAUSBDEVICEINITIATEDDISCONNECTREQ_PACKET;
        case 212: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_UPDATEDEVREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_UPDATEDEVREQ_PACKET;
        case 213: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_MAUSBDEVICEINITIATEDDISCONNECTRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_MAUSBDEVICEINITIATEDDISCONNECTRESP_PACKET;
        case 214: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEDELETERESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEDELETERESP_PACKET;
        case 215: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEDELETEREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEDELETEREQ_PACKET;
        case 216: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEINACTIVATERESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEINACTIVATERESP_PACKET;
        case 217: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPRESETRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPRESETRESP_PACKET;
        case 218: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_CAPREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_CAPREQ_PACKET;
        case 219: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVDISCONNECTREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVDISCONNECTREQ_PACKET;
        case 220: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPRESETREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPRESETREQ_PACKET;
        case 221: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVDISCONNECTRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVDISCONNECTRESP_PACKET;
        case 222: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVRESETRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVRESETRESP_PACKET;
        case 223: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_SETUSBDEVADDRRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_SETUSBDEVADDRRESP_PACKET;
        case 224: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLERESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLERESP_PACKET;
        case 225: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_CAPRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_CAPRESP_PACKET;
        case 226: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVRESETREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVRESETREQ_PACKET;
        case 227: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEACTIVATERESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEACTIVATERESP_PACKET;
        case 228: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_UPDATEDEVRESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_UPDATEDEVRESP_PACKET;
        case 229: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_MODIFYEP0RESP_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_MODIFYEP0RESP_PACKET;
        case 230: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEREQ_PACKET;
        case 231: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEACTIVATEREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEACTIVATEREQ_PACKET;
        case 232: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_PINGREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_PINGREQ_PACKET;
        case 233: [property.ETLSummary = this.ToString] MAUSBHOST_ETW_MAUSB_MANAGEMENT_VENDORSPECIFICREQ_PACKET MAUSBHOST_ETW_MAUSB_MANAGEMENT_VENDORSPECIFICREQ_PACKET;
        default: [property.ETLSummary = "Not exist EventID"]struct{};
    }
}
Table MapSessionCloseReason(value)
{
    switch(value)
    {
        case 0: "SessionCloseReasonNone";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table MapControllerResetReason(value)
{
    switch(value)
    {
        case 0: "ControllerResetReasonNone";
        case 1: "ControllerResetReasonInvalidDeviceHandle";
        case 2: "ControllerResetReasonInvalidEndpointHandle";
        case 3: "ControllerResetReasonInvalidSessionState";
        case 4: "ControllerResetReasonInternalError";
        case 5: "ControllerResetReasonSessionDown";
        case 6: "ControllerResetReasonSessionRecovery";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Struct MAUSBHOST_ETW_EVENT_RUNDOWN_START = "Start Rundown" {}; // Empty Struct
Struct MAUSBHOST_ETW_EVENT_RUNDOWN_COMPLETE = "Complete Rundown" {}; // Empty Struct
Struct MAUSBHOST_ETW_EVENT_RUNDOWN_CONTROLLER_INFORMATION = FormatString("MAUSB Controller Information")
{
    EtlPtr fid_Controller;
    UINT32 fid_WdfDevicePowerState;
}
Struct MAUSBHOST_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION = FormatString("MAUSB Device Information")
{
    EtlPtr fid_Controller;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    UINT32 PortPathDepth;
    UINT32 PortPath[6];
    UINT32 fid_MaUsbDeviceHandle;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}
Struct MAUSBHOST_ETW_EVENT_RUNDOWN_ENDPOINT_INFORMATION = FormatString("MAUSB Endpoint Information")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bEndpointAddress;
        UINT8 fid_bmAttributes;
        UINT16 fid_wMaxPacketSize;
        UINT8 fid_bInterval;
    }
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_CREATE = FormatString("MAUSB Controller Create")
{
    EtlPtr fid_Controller;
    UINT32 fid_WdfDevicePowerState;
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_DELETE = FormatString("MAUSB Controller Delete")
{
    EtlPtr fid_Controller;
    UINT32 fid_WdfDevicePowerState;
}
Struct MAUSBHOST_ETW_EVENT_DEVICE_CREATE = FormatString("MAUSB Device Create")
{
    EtlPtr fid_Controller;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    UINT32 PortPathDepth;
    UINT32 PortPath[6];
    UINT32 fid_MaUsbDeviceHandle;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}
Struct MAUSBHOST_ETW_EVENT_DEVICE_UPDATE = FormatString("MAUSB Device Update")
{
    EtlPtr fid_Controller;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    UINT32 PortPathDepth;
    UINT32 PortPath[6];
    UINT32 fid_MaUsbDeviceHandle;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}
Struct MAUSBHOST_ETW_EVENT_DEVICE_DELETE = FormatString("MAUSB Device Delete")
{
    EtlPtr fid_Controller;
    EtlPtr fid_UsbTtHubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    UINT32 PortPathDepth;
    UINT32 PortPath[6];
    UINT32 fid_MaUsbDeviceHandle;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}
Struct MAUSBHOST_ETW_EVENT_ENDPOINT_CREATE = FormatString("MAUSB Endpoint Create")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bEndpointAddress;
        UINT8 fid_bmAttributes;
        UINT16 fid_wMaxPacketSize;
        UINT8 fid_bInterval;
    }
}
Struct MAUSBHOST_ETW_EVENT_ENDPOINT_UPDATE = FormatString("MAUSB Endpoint Update")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bEndpointAddress;
        UINT8 fid_bmAttributes;
        UINT16 fid_wMaxPacketSize;
        UINT8 fid_bInterval;
    }
}
Struct MAUSBHOST_ETW_EVENT_ENDPOINT_DELETE = FormatString("MAUSB Endpoint Delete")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bEndpointAddress;
        UINT8 fid_bmAttributes;
        UINT16 fid_wMaxPacketSize;
        UINT8 fid_bInterval;
    }
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_D0_ENTRY_START = FormatString("MAUSB Controller EvtDeviceD0Entry Start")
{
    EtlPtr fid_Controller;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_D0_ENTRY_COMPLETE = FormatString("MAUSB Controller EvtDeviceD0Entry Complete")
{
    EtlPtr fid_Controller;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_D0_EXIT_START = FormatString("MAUSB Controller EvtDeviceD0Exit Start")
{
    EtlPtr fid_Controller;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_D0_EXIT_COMPLETE = FormatString("MAUSB Controller EvtDeviceD0Exit Complete")
{
    EtlPtr fid_Controller;
    UINT32 fid_DeviceState;
    UINT32 fid_PowerAction;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_START = FormatString("MAUSB Controller Internal Reset Start")
{
    EtlPtr fid_Controller;
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_COMPLETE = FormatString("MAUSB Controller Internal Reset Complete")
{
    EtlPtr fid_Controller;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_QUERY_USB_CAPABILITY = FormatString("Query USB capability for controller")
{
    EtlPtr fid_Controller;
    GUID(true) fid_Capability;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
    UINT32 fid_NumStaticStreams;
}
Struct MAUSBHOST_ETW_EVENT_PAL_SEND_MANAGEMENT_REQUEST = FormatString("Send Management Request <%s>", MaUsbManagementSubType(fid_SubType))
{
    EtlPtr fid_Controller;
    EtlPtr fid_WdfRequest;
    UINT8 fid_SubType;
    UINT16 fid_DeviceHandle;
    UINT8 fid_DeviceAddress;
    UINT8 fid_Ssid;
    UINT8 fid_StatusCode;
    UINT16 fid_DialogToken;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_SEND_MANAGEMENT_RESPONSE = FormatString("Send Management Response <%s> %s", MaUsbManagementSubType(fid_SubType), MaUsbStatus(fid_StatusCode))
{
    EtlPtr fid_Controller;
    EtlPtr fid_WdfRequest;
    UINT8 fid_SubType;
    UINT16 fid_DeviceHandle;
    UINT8 fid_DeviceAddress;
    UINT8 fid_Ssid;
    UINT8 fid_StatusCode;
    UINT16 fid_DialogToken;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_RECEIVE_MANAGEMENT_REQUEST = FormatString("Receive Management Request <%s> %s", MaUsbManagementSubType(fid_SubType), MaUsbStatus(fid_StatusCode))
{
    EtlPtr fid_Controller;
    EtlPtr fid_WdfRequest;
    UINT8 fid_SubType;
    UINT16 fid_DeviceHandle;
    UINT8 fid_DeviceAddress;
    UINT8 fid_Ssid;
    UINT8 fid_StatusCode;
    UINT16 fid_DialogToken;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_RECEIVE_MANAGEMENT_RESPONSE = FormatString("Receive Management Response <%s> %s", MaUsbManagementSubType(fid_SubType), MaUsbStatus(fid_StatusCode))
{
    EtlPtr fid_Controller;
    EtlPtr fid_WdfRequest;
    UINT8 fid_SubType;
    UINT16 fid_DeviceHandle;
    UINT8 fid_DeviceAddress;
    UINT8 fid_Ssid;
    UINT8 fid_StatusCode;
    UINT16 fid_DialogToken;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_DESCRIPTOR_VALIDATION_FAILURE = FormatString("MA USB Descriptor Validation Failed Failed For the Following Reason: %s", MaUsbDescriptorValidationError(fid_Error))
{
    EtlPtr fid_Controller;
    UINT32 fid_Error;
}
Struct MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_INVALID_SUBTYPE = FormatString("Management Response Invalid Subtype")
{
    EtlPtr fid_Controller;
    UINT32 fid_ExpectedSubtype;
    UINT32 fid_ActualSubtype;
}
Struct MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_STATUS_ERROR = FormatString("Management Response Status Error")
{
    EtlPtr fid_Controller;
    UINT32 fid_Subtype;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_RETRIES_TIMEOUT = FormatString("Management Response Retries Timed Out")
{
    EtlPtr fid_Controller;
    UINT32 fid_Subtype;
}
Struct MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_HEADER_STATUS_ERROR = FormatString("Management Response Header Status Error")
{
    EtlPtr fid_Controller;
    UINT32 fid_Subtype;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_MANAGEMENT_RESPONSE_INCORRECT_SIZE = FormatString("Management Response Packet Incorrect Size")
{
    EtlPtr fid_Controller;
    UINT32 fid_Subtype;
    UINT32 fid_Size;
}
Struct MAUSBHOST_ETW_EVENT_MANAGEMENT_STATE_MACHINE_TRANSITION = FormatString("Session State Machine Transition <%s> %s", PalSessionEvents(fid_Event), PalSessionStates(fid_SourceState))
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_ObjectHandle;
    UINT32 fid_TransitionType;
    UINT32 fid_SourceState;
    UINT32 fid_Event;
    UINT32 fid_TargetState;
}
Struct MAUSBHOST_ETW_EVENT_MANAGEMENT_STATE_MACHINE_EXCEPTION = FormatString("Session State Machine Exception <%s> %s", PalSessionEvents(fid_Event), PalSessionStates(fid_State))
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_ObjectHandle;
    UINT32 fid_Exception;
    UINT32 fid_State;
    UINT32 fid_Event;
}
Struct MAUSBHOST_ETW_EVENT_IN_TRANSFER_STATE_MACHINE_TRANSITION = FormatString("In Transfer State Machine Transition <%s> %s", PalInTransferEvents(fid_Event), PalInTransferStates(fid_SourceState))
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_ObjectHandle;
    UINT32 fid_TransitionType;
    UINT32 fid_SourceState;
    UINT32 fid_Event;
    UINT32 fid_TargetState;
}
Struct MAUSBHOST_ETW_EVENT_IN_TRANSFER_STATE_MACHINE_EXCEPTION = FormatString("In Transfer State Machine Exception <%s> %s", PalInTransferEvents(fid_Event), PalInTransferStates(fid_State))
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_ObjectHandle;
    UINT32 fid_Exception;
    UINT32 fid_State;
    UINT32 fid_Event;
}
Struct MAUSBHOST_ETW_EVENT_OUT_TRANSFER_STATE_MACHINE_TRANSITION = FormatString("Out Transfer State Machine Transition <%s> %s", PalOutTransferEvents(fid_Event), PalOutTransferStates(fid_SourceState))
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_ObjectHandle;
    UINT32 fid_TransitionType;
    UINT32 fid_SourceState;
    UINT32 fid_Event;
    UINT32 fid_TargetState;
}
Struct MAUSBHOST_ETW_EVENT_OUT_TRANSFER_STATE_MACHINE_EXCEPTION = FormatString("Out Transfer State Machine Exception <%s> %s", PalOutTransferEvents(fid_Event), PalOutTransferStates(fid_State))
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_ObjectHandle;
    UINT32 fid_Exception;
    UINT32 fid_State;
    UINT32 fid_Event;
}
Struct MAUSBHOST_ETW_EVENT_UIL_ENDPOINT_STATE_MACHINE_TRANSITION = FormatString("UIL Endpoint State Machine Transition <%s> %s", UilEndpointEvents(fid_Event), UilEndpointStates(fid_SourceState))
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_ObjectHandle;
    UINT32 fid_TransitionType;
    UINT32 fid_SourceState;
    UINT32 fid_Event;
    UINT32 fid_TargetState;
}
Struct MAUSBHOST_ETW_EVENT_UIL_ENDPOINT_STATE_MACHINE_EXCEPTION = FormatString("UIL Endpoint State Machine Exception <%s> %s", UilEndpointEvents(fid_Event), UilEndpointStates(fid_State))
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_ObjectHandle;
    UINT32 fid_Exception;
    UINT32 fid_State;
    UINT32 fid_Event;
}
Struct MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_START_USB_TRANSFER = FormatString("Start USB Transfer")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    UINT16 fid_MaUsbEndpointHandle;
    EtlPtr fid_UsbTransferRequest;
    UINT32 fid_TransferType;
    UINT32 fid_TransferDirection;
    UINT32 fid_TransferBufferLength;
}
Struct MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_COMPLETE_USB_TRANSFER = FormatString("Complete USB Transfer")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    UINT16 fid_MaUsbEndpointHandle;
    EtlPtr fid_UsbTransferRequest;
    UINT32 fid_BytesTransferred;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERREQ = FormatString("TransferReq")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_UsbTransferRequest;
    UINT16 fid_EndpointHandle;
    UINT32 fid_TransferType;
    UINT32 fid_TransferDirection;
    UINT32 fid_RemainingSizeOrCredit;
    UINT32 fid_BytesTotal;
    UINT8 fid_RequestId;
    UINT32 fid_SequenceNumber;
    UINT8 fid_FlagBitRetry;
}
Struct MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERACK = FormatString("TransferAck")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_UsbTransferRequest;
    UINT16 fid_EndpointHandle;
    UINT32 fid_TransferType;
    UINT32 fid_TransferDirection;
    UINT8 fid_RequestId;
    UINT32 fid_SequenceNumber;
    UINT32 fid_MaUsbStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_ENDPOINT_TRANSFERRESP = FormatString("TransferResp")
{
    EtlPtr fid_Controller;
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    UINT16 fid_EndpointHandle;
    UINT32 fid_TransferType;
    UINT32 fid_TransferDirection;
    UINT8 fid_RequestId;
    UINT32 fid_SequenceNumber;
    UINT16 fid_Length;
    UINT32 fid_MaUsbStatus;
    UINT8 fid_AckRequest;
    UINT8 fid_FlagBitRetry;
    UINT32 fid_RemainingSizeOrCredit;
    UINT8 fid_EndOfTransfer;
}
Struct MAUSBHOST_ETW_EVENT_PAL_MAUSB_SPEED_DEVICE_CAPABILITY_DESCRIPTOR = FormatString("MA USB Speed Device Capability Descriptor")
{
    EtlPtr fid_Controller;
    struct  fid_MAUSB_Device_Speed_Capability_Descriptor
    {
        UINT8 fid_Length;
        UINT8 fid_Type;
        UINT8 fid_Speed;
        UINT8 fid_LaneSpeedExponent;
    }
}
Struct MAUSBHOST_ETW_EVENT_PAL_MAUSB_P_OUT_DEVICE_CAPABILITY_DESCRIPTOR = FormatString("MA USB P-Out Device Capability Descriptor")
{
    EtlPtr fid_Controller;
    struct  fid_MAUSB_Device_P_Out_Capability_Descriptor
    {
        UINT8 fid_Length;
        UINT8 fid_Type;
        UINT8 fid_POutCapabilities;
    }
}
Struct MAUSBHOST_ETW_EVENT_PAL_MAUSB_ISOCH_DEVICE_CAPABILITY_DESCRIPTOR = FormatString("MA USB Isochronous Device Capability Descriptor")
{
    EtlPtr fid_Controller;
    struct  fid_MAUSB_Device_Speed_Capability_Descriptor
    {
        UINT8 fid_Length;
        UINT8 fid_Type;
        UINT8 fid_Speed;
        UINT8 fid_LaneSpeedExponent;
    }
}
Struct MAUSBHOST_ETW_EVENT_PAL_MAUSB_SYNCH_DEVICE_CAPABILITY_DESCRIPTOR = FormatString("MA USB Synchronization Device Capability Descriptor")
{
    EtlPtr fid_Controller;
    struct  fid_MAUSB_Device_Synch_Capability_Descriptor
    {
        UINT8 fid_SynchCapabilities;
    }
}
Struct MAUSBHOST_ETW_EVENT_PAL_MAUSB_CONTAINER_ID_DEVICE_CAPABILITY_DESCRIPTOR = FormatString("MA USB Container ID Device Capability Descriptor")
{
    EtlPtr fid_Controller;
    struct  fid_MAUSB_Device_Container_Id_Capability_Descriptor
    {
        GUID(true) fid_ContainerID;
    }
}
Struct MAUSBHOST_ETW_EVENT_PAL_MAUSB_LINK_SLEEP_DEVICE_CAPABILITY_DESCRIPTOR = FormatString("MA USB Link Sleep Device Capability Descriptor")
{
    EtlPtr fid_Controller;
    struct  fid_MAUSB_Device_Link_Sleep_Capability_Descriptor
    {
        UINT8 fid_LinkSleepCapabilities;
    }
}
Struct MAUSBHOST_ETW_EVENT_IP_SEND_DATA = FormatString("IP Send Data")
{
    EtlPtr fid_WdfRequest;
    EtlPtr fid_Irp;
    EtlPtr fid_IoChannelHandle;
    UINT64 fid_NumberOfBytes;
}
Struct MAUSBHOST_ETW_EVENT_IP_SEND_DATA_COMPLETE = FormatString("IP Send Data Complete")
{
    EtlPtr fid_WdfRequest;
    EtlPtr fid_Irp;
    UINT64 fid_NumberOfBytes;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_IP_READ_DATA = FormatString("IP Read Data")
{
    EtlPtr fid_WdfRequest;
    EtlPtr fid_IoChannelHandle;
    UINT64 fid_NumberOfBytes;
}
Struct MAUSBHOST_ETW_EVENT_IP_READ_DATA_COMPLETE = FormatString("IP Read Data Complete")
{
    EtlPtr fid_WdfRequest;
    UINT64 fid_NumberOfBytes;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_IP_SOCKET_CONNECT = FormatString("IP Socket Connect")
{
    EtlPtr fid_FdoContext;
    UINT32 fid_LocalAddressLength;
    switch
    {
        case fid_LocalAddressLength > 0 :
            ETL_SOCKADDR_STORAGE fid_LocalAddress;
    }
    UINT32 fid_RemoteAddressLength;
    switch
    {
        case fid_RemoteAddressLength > 0 :
            ETL_SOCKADDR_STORAGE fid_RemoteAddress;
    }
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_IP_SOCKET_DISCONNECT = FormatString("IP Socket Disconnect")
{
    EtlPtr fid_FdoContext;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct MAUSBHOST_ETW_EVENT_PAL_FAIL_ISOCHRONOUS_DEVICE = FormatString("Isochronous Device Fail")
{
    EtlPtr fid_Controller;
    EtlPtr fid_UsbTtHubDevice;
    EtlPtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    UINT32 PortPathDepth;
    UINT32 PortPath[6];
    UINT32 fid_MaUsbDeviceHandle;
    UINT32 fid_DeviceIsHub;
    UINT32 fid_NumberOfPorts;
    UINT32 fid_NumberOfTTs;
    struct  fid_USB_Device_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT16 fid_bcdUSB;
        UINT8 fid_bDeviceClass;
        UINT8 fid_bDeviceSubClass;
        UINT8 fid_bDeviceProtocol;
        UINT8 fid_bMaxPacketSize0;
        UINT16 fid_idVendor;
        UINT16 fid_idProduct;
        UINT16 fid_bcdDevice;
        UINT8 fid_iManufacturer;
        UINT8 fid_iProduct;
        UINT8 fid_iSerialNumber;
        UINT8 fid_bNumConfigurations;
    }
}
Struct MAUSBHOST_ETW_EVENT_PAL_SESSION_CLOSE = FormatString("Session Close")
{
    EtlPtr fid_Controller;
    UINT64 fid_ControlTransferSuccessCount;
    UINT64 fid_ControlTransferFailureCount;
    UINT64 fid_InterruptTransferSuccessCount;
    UINT64 fid_InterruptTransferFailureCount;
    UINT64 fid_BulkTransferSuccessCount;
    UINT64 fid_BulkTransferFailureCount;
    UINT64 fid_IsochTransferSuccessCount;
    UINT64 fid_IsochTransferFailureCount;
    UINT64 fid_RetriedPacketsWhichSucceeded;
    UINT64 fid_InvalidPacketsBadEndpointHandle;
    UINT64 fid_InvalidPacketsBadTransferRespRequestId;
    UINT64 fid_InvalidPacketsBadTransferRespSequenceNumber;
    UINT64 fid_InvalidPacketsBadStatusCode;
    UINT64 fid_InvalidPacketsBadSize;
    UINT64 fid_InvalidPacketsIsochNotSupported;
    UINT64 fid_InvalidPacketsNoManagementRequest;
    UINT64 fid_InvalidPacketsManagementBadSubtype;
    UINT32 fid_SessionCloseReason = MapSessionCloseReason(this);
    UINT32 fid_ManufacturerStringLength;
    UnicodeString(fid_ManufacturerStringLength) fid_ManufacturerString;
    UINT32 fid_ModelNameStringLength;
    UnicodeString(fid_ModelNameStringLength) fid_ModelNameString;
    UINT32 fid_ModelNumberStringLength;
    UnicodeString(fid_ModelNumberStringLength) fid_ModelNumberString;
}
Struct MAUSBHOST_ETW_EVENT_CONTROLLER_RESET_RECOVERY = FormatString("Recovered session by control reset")
{
    EtlPtr fid_Controller;
    UINT32 fid_ControllerResetReason = MapControllerResetReason(this);
}
Struct MAUSBHOST_ETW_EVENT_ENDPOINT_GET_DESCRIPTOR = FormatString("Receieved descriptor for endpoint")
{
    EtlPtr fid_Controller;
    EtlPtr fid_UsbDevice;
    EtlPtr fid_Endpoint;
    struct  fid_USB_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bEndpointAddress;
        UINT8 fid_bmAttributes;
        UINT16 fid_wMaxPacketSize;
        UINT8 fid_bInterval;
    }
    UINT8 fid_IsLinkManaged;
    UINT16 fid_CreditConsumptionUnit;
    UINT32 fid_BufferSize;
    UINT16 fid_IsochProgrammingDelay;
    UINT16 fid_IsochResponseDelay;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_SETUSBDEVADDRREQ_PACKET = FormatString("Management packet of type SetUSBDevAddrReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT16 fid_ResponseTimeout;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVRESETREQ_PACKET = FormatString("Management packet of type DevResetReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVHANDLEREQ_PACKET = FormatString("Management packet of type USBDevHandleReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_RouteStringPort1;
    UINT8 fid_RouteStringPort2;
    UINT8 fid_RouteStringPort3;
    UINT8 fid_RouteStringPort4;
    UINT8 fid_RouteStringPort5;
    UINT8 fid_USBSpeed;
    UINT16 fid_HubDeviceHandle;
    UINT16 fid_ParentHSHubDeviceHandle;
    UINT8 fid_ParentHSHubPort;
    UINT8 fid_MTT;
    UINT8 fid_LaneSpeedExponent;
    UINT8 fid_SublinkType;
    UINT8 fid_LaneCount;
    UINT8 fid_LinkProtocol;
    UINT16 fid_LaneSpeedMantissa;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVDISCONNECTREQ_PACKET = FormatString("Management packet of type USBDevDisconnectReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_PINGRESP_PACKET = FormatString("Management packet of type PingResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVHANDLERESP_PACKET = FormatString("Management packet of type USBDevHandleResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT16 fid_USBDeviceHandle;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVDISCONNECTRESP_PACKET = FormatString("Management packet of type USBDevDisconnectResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_MODIFYEP0REQ_PACKET = FormatString("Management packet of type ModifyEP0Req")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT16 fid_EP0Handle;
    UINT16 fid_MaxPacketSize;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVRESETRESP_PACKET = FormatString("Management packet of type USBDevResetResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEINACTIVATEREQ_PACKET = FormatString("Management packet of type EPInactivateReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEpHandlesToInactivate;
    UINT8 fid_SuspendFlag;
    UINT16 fid_EndpointHandle[fid_NumberOfEpHandlesToInactivate];
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_MAUSBDEVICEINITIATEDDISCONNECTREQ_PACKET = FormatString("Management packet of type DevInitDisconnectReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_UPDATEDEVREQ_PACKET = FormatString("Management packet of type UpdateDevReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT32 fid_UpdateDevReqFields;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_MAUSBDEVICEINITIATEDDISCONNECTRESP_PACKET = FormatString("Management packet of type DevInitDisconnectResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEDELETERESP_PACKET = FormatString("Management packet of type EPHandleDeleteResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEpHandlesWithError;
    UINT16 fid_EndpointHandle[fid_NumberOfEpHandlesWithError];
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEDELETEREQ_PACKET = FormatString("Management packet of type EPHandleDeleteReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEpHandlesToDelete;
    UINT16 fid_EndpointHandle[fid_NumberOfEpHandlesToDelete];
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEINACTIVATERESP_PACKET = FormatString("Management packet of type EPInactivateResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEpHandlesWithError;
    UINT16 fid_EndpointHandle[fid_NumberOfEpHandlesWithError];
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPRESETRESP_PACKET = FormatString("Management packet of type EPResetResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEPHandlesWithError;
    UINT16 fid_EPHandle;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_CAPREQ_PACKET = FormatString("Management packet of type CapReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVDISCONNECTREQ_PACKET = FormatString("Management packet of type DevDisconnectReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPRESETREQ_PACKET = FormatString("Management packet of type EPResetReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEPResetInformationBlocks;
    UINT16 fid_EPHandle;
    UINT8 fid_TransferStatePreserve;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVDISCONNECTRESP_PACKET = FormatString("Management packet of type DevDisconnectResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_DEVRESETRESP_PACKET = FormatString("Management packet of type DevResetResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_SETUSBDEVADDRRESP_PACKET = FormatString("Management packet of type SetUSBDevAddrResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_UsbDeviceAddress;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLERESP_PACKET = FormatString("Management packet of type EPHandleResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEpDescriptors;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_CAPRESP_PACKET = FormatString("Management packet of type CapResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT16 fid_NumberOfEndpoints;
    UINT8 fid_NumberOfDevices;
    UINT8 fid_NumberOfStreams;
    UINT8 fid_DeviceType;
    UINT8 fid_DescriptorCount;
    UINT32 fid_DescriptorLength;
    UINT16 fid_MaxOutstandingTransferRequests;
    UINT16 fid_MaxOutstandingManagementRequests;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_USBDEVRESETREQ_PACKET = FormatString("Management packet of type USBDevResetReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEACTIVATERESP_PACKET = FormatString("Management packet of type EPActivateResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEpHandlesWithError;
    UINT16 fid_EndpointHandle[fid_NumberOfEpHandlesWithError];
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_UPDATEDEVRESP_PACKET = FormatString("Management packet of type UpdateDevResp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_MODIFYEP0RESP_PACKET = FormatString("Management packet of type ModifyEP0Resp")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT16 fid_EP0Handle;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEREQ_PACKET = FormatString("Management packet of type EPHandleReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEpDescriptors;
    UINT8 fid_SizeOfEPDescriptor;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_EPHANDLEACTIVATEREQ_PACKET = FormatString("Management packet of type EPActivateReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
    UINT8 fid_NumberOfEpHandlesToActivate;
    UINT16 fid_EndpointHandle[fid_NumberOfEpHandlesToActivate];
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_PINGREQ_PACKET = FormatString("Management packet of type PingReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
Struct MAUSBHOST_ETW_MAUSB_MANAGEMENT_VENDORSPECIFICREQ_PACKET = FormatString("Management packet of type VendorSpecificReq")
{
    EtlPtr fid_Controller;
    UINT8 fid_HeaderVersion;
    UINT8 fid_HeaderFlagBitHost;
    UINT8 fid_HeaderFlagBitRetry;
    UINT8 fid_HeaderFlagBitTimeStamp;
    UINT8 fid_HeaderSubType;
    UINT8 fid_HeaderType;
    UINT16 fid_HeaderLength;
    UINT16 fid_HeaderDeviceHandle;
    UINT8 fid_HeaderDeviceAddress;
    UINT8 fid_HeaderSSID;
    UINT8 fid_HeaderStatusCode;
    UINT16 fid_HeaderDialogToken;
}
[RegisterBefore(EventDescriptor.DefaultKeyword, MicrosoftWindowsUSBMAUSBHOST_Keyword, "{7725b5f9-1f2e-4e21-baeb-b2af4690bc87}")]
struct MicrosoftWindowsUSBMAUSBHOST_Keyword
{
    UINT64 Default:1 = FormatString("            (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_DEFAULT":"");
    UINT64 USBError:1 = FormatString("           (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_USBERROR":"");
    UINT64 IRP:1 = FormatString("                (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_IRP":"");
    UINT64 Power:1 = FormatString("              (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_POWER":"");
    UINT64 PnP:1 = FormatString("                (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_PNP":"");
    UINT64 Performance:1 = FormatString("        (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_PERFORMANCE":"");
    UINT64 HeadersBusTrace:1 = FormatString("    (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_HEADERS_BUS_TRACE":"");
    UINT64 PartialDataBusTrace:1 = FormatString("(%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_PARTIAL_DATA_BUS_TRACE":"");
    UINT64 FullDataBusTrace:1 = FormatString("   (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_FULL_DATA_BUS_TRACE":"");
    UINT64 StateMachine:1 = FormatString("       (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_STATEMACHINE":"");
    UINT64 Enumeration:1 = FormatString("        (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_ENUMERATION":"");
    UINT64 VerifyDriver:1 = FormatString("       (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_VERIFYDRIVER":"");
    UINT64 HWVerifyHost:1 = FormatString("       (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_HW_VERIFYHOST":"");
    UINT64 HWVerifyHub:1 = FormatString("        (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_HW_VERIFYHUB":"");
    UINT64 HWVerifyDevice:1 = FormatString("     (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_HW_VERIFYDEVICE":"");
    UINT64 Rundown:1 = FormatString("            (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_RUNDOWN":"");
    UINT64 Device:1 = FormatString("             (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_DEVICE":"");
    UINT64 Hub:1 = FormatString("                (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_HUB":"");
    UINT64 Compat:1 = FormatString("             (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_COMPAT":"");
    UINT64 MAUSBTraffic:1 = FormatString("       (%s) %s", this.ToBitString, this? "MAUSBHOST_ETW_KEYWORD_MAUSB_TRAFFIC":"");
    UINT64 Reserved1:44 = FormatString("          (%s)", this.ToBitString);
}
//#  (c) 2009 Microsoft Corporation
//#
//#  Title:                  Microsoft-Windows-ucx
//#
//#  Details:
//#
//#  Public References:      ucx.man
//#
//#  Comments:
//#
//#  Revision Class and Date:Minor, 6/6/2011
//#
//####
[RegisterBefore(NetEvent.UserData, UsbUcx, "{36da592d-e43a-4e28-af6f-4bc57c5a11e8}")]
Protocol UsbUcx = property.ETLSummary
{
    [BuildConversationWithParent, conversation.ConversationDescription = ""]

    //
    // All completion URBs logged by UCX include NTSTATUS
    //
    [Property.InternalUsbNtstatusUrbs = 1]
    [Post.Property.USBIsError =
        ((
            (NetEvent.Header.Descriptor.Level == 0x2)
            OR
            (Property.USBDStatus != "success" && Property.USBDStatus != "" && Property.USBDStatus != "canceled" && Property.USBDStatus != "pending")
            OR
            (Property.USBNtStatus != "success" && Property.USBNtStatus != "Success" && Property.USBNtStatus != "" && Property.USBNtStatus != "0xC0000120 - STATUS_CANCELLED")
        ) ? 1 : 0)]
    switch(property.EventID)
    {
        case 1: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_START UCX_ETW_EVENT_RUNDOWN_START;
        case 2: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_COMPLETE UCX_ETW_EVENT_RUNDOWN_COMPLETE;
        case 3: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_INFORMATION UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_INFORMATION;
        case 4: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_ROOTHUB_INFORMATION UCX_ETW_EVENT_RUNDOWN_UCX_ROOTHUB_INFORMATION;
        case 5: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_DEVICE_INFORMATION UCX_ETW_EVENT_RUNDOWN_UCX_DEVICE_INFORMATION;
        case 6: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_INFORMATION UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_INFORMATION;
        case 7: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_STATIC_STREAM_INFORMATION UCX_ETW_EVENT_RUNDOWN_UCX_STATIC_STREAM_INFORMATION;
        case 8: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_CONTROLLER_CREATE UCX_ETW_EVENT_UCX_CONTROLLER_CREATE;
        case 9: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_CONTROLLER_DELETE UCX_ETW_EVENT_UCX_CONTROLLER_DELETE;
        case 10: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ROOTHUB_CREATE UCX_ETW_EVENT_UCX_ROOTHUB_CREATE;
        case 11: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ROOTHUB_DELETE UCX_ETW_EVENT_UCX_ROOTHUB_DELETE;
        case 12: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ROOTHUB_PREPARE UCX_ETW_EVENT_UCX_ROOTHUB_PREPARE;
        case 13: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ROOTHUB_RELEASE UCX_ETW_EVENT_UCX_ROOTHUB_RELEASE;
        case 14: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_DEVICE_CREATE UCX_ETW_EVENT_UCX_DEVICE_CREATE;
        case 15: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_DEVICE_DELETE UCX_ETW_EVENT_UCX_DEVICE_DELETE;
        case 16: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ENDPOINT_CREATE UCX_ETW_EVENT_UCX_ENDPOINT_CREATE;
        case 17: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ENDPOINT_DELETE UCX_ETW_EVENT_UCX_ENDPOINT_DELETE;
        case 18: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_STATIC_STREAM_CREATE UCX_ETW_EVENT_UCX_STATIC_STREAM_CREATE;
        case 19: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_STATIC_STREAM_DELETE UCX_ETW_EVENT_UCX_STATIC_STREAM_DELETE;
        case 20: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CONTROL_TRANSFER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CONTROL_TRANSFER;
        case 21: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER;
        case 22: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_DATA UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_DATA;
        case 23: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CONTROL_TRANSFER_EX UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CONTROL_TRANSFER_EX;
        case 24: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_EX UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_EX;
        case 25: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_EX_DATA UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_EX_DATA;
        case 26: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER;
        case 27: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER;
        case 28: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_PARTIAL_DATA UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_PARTIAL_DATA;
        case 29: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_FULL_DATA UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_FULL_DATA;
        case 30: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_ISOCH_TRANSFER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_ISOCH_TRANSFER;
        case 31: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER;
        case 32: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER_PARTIAL_DATA UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER_PARTIAL_DATA;
        case 33: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER_FULL_DATA UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER_FULL_DATA;
        case 34: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE;
        case 35: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE;
        case 36: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT;
        case 37: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE;
        case 38: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE;
        case 39: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT;
        case 40: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_DEVICE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_DEVICE;
        case 41: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_INTERFACE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_INTERFACE;
        case 42: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_ENDPOINT UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_ENDPOINT;
        case 43: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_OTHER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_OTHER;
        case 44: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE;
        case 45: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE;
        case 46: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT;
        case 47: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_OTHER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_OTHER;
        case 48: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_DEVICE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_DEVICE;
        case 49: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_INTERFACE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_INTERFACE;
        case 50: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_ENDPOINT UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_ENDPOINT;
        case 51: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_OTHER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_OTHER;
        case 52: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_DEVICE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_DEVICE;
        case 53: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_INTERFACE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_INTERFACE;
        case 54: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_ENDPOINT UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_ENDPOINT;
        case 55: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_OTHER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_OTHER;
        case 56: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_DEVICE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_DEVICE;
        case 57: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_INTERFACE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_INTERFACE;
        case 58: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_ENDPOINT UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_ENDPOINT;
        case 59: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_OTHER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_OTHER;
        case 60: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_CONFIGURATION UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_CONFIGURATION;
        case 61: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_INTERFACE UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_INTERFACE;
        case 62: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR;
        case 63: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ENDPOINT_STATE_MACHINE_TRANSITION UCX_ETW_EVENT_UCX_ENDPOINT_STATE_MACHINE_TRANSITION;
        case 64: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ENDPOINT_STATE_MACHINE_EVENT UCX_ETW_EVENT_UCX_ENDPOINT_STATE_MACHINE_EVENT;
        case 65: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_STATE_MACHINE_TRANSITION UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_STATE_MACHINE_TRANSITION;
        case 66: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_STATE_MACHINE_EVENT UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_STATE_MACHINE_EVENT;
        case 67: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_CONTROLLER_STATE_MACHINE_TRANSITION UCX_ETW_EVENT_UCX_CONTROLLER_STATE_MACHINE_TRANSITION;
        case 68: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_CONTROLLER_STATE_MACHINE_EVENT UCX_ETW_EVENT_UCX_CONTROLLER_STATE_MACHINE_EVENT;
        case 69: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_STATE_MACHINE_TRANSITION UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_STATE_MACHINE_TRANSITION;
        case 70: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_STATE_MACHINE_EVENT UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_STATE_MACHINE_EVENT;
        case 71: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_UCX_ROOTHUB_INITIATING_WAKE UCX_ETW_EVENT_UCX_ROOTHUB_INITIATING_WAKE;
        case 72: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SECURE_BULK_OR_INTERRUPT_TRANSFER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SECURE_BULK_OR_INTERRUPT_TRANSFER;
        case 73: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_SECURE_BULK_OR_INTERRUPT_TRANSFER UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_SECURE_BULK_OR_INTERRUPT_TRANSFER;
        case 74: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SECURE_ISOCH_TRANSFER UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SECURE_ISOCH_TRANSFER;
        case 75: [property.ETLSummary = this.ToString] UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_SECURE_ISOCH_TRANSFER UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_SECURE_ISOCH_TRANSFER;
        default: [property.ETLSummary = "Not exist EventID"]struct{};
    }
}
Struct UCX_ETW_EVENT_RUNDOWN_START = "Start Rundown" {}; // Empty Struct
Struct UCX_ETW_EVENT_RUNDOWN_COMPLETE = "Complete Rundown" {}; // Empty Struct
Struct UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_INFORMATION = FormatString("UCX Controller Information")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UnicodeString fid_DeviceInterfacePath;
}
Struct UCX_ETW_EVENT_RUNDOWN_UCX_ROOTHUB_INFORMATION = FormatString("UCX RootHub Information")
{
    UcxControllerPtr fid_UcxController;
    InitialUsbDevicePtr fid_UsbDevice;
    UnicodeString fid_DeviceInterfacePath;
}
Struct UCX_ETW_EVENT_RUNDOWN_UCX_DEVICE_INFORMATION = FormatString("UCX Device Information")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_HubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    UsbPortPath PortPath;
}
Struct UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_INFORMATION = FormatString("UCX Endpoint Information")
{
    UsbDevicePtr fid_UsbDevice;
    InitialUsbEndpointPtr fid_Endpoint;
    UsbPipeHandle fid_PipeHandle;
    struct  fid_UCX_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        [Global.InternalUsbTblEndpoint$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpoint$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointAddressFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        UINT8 fid_bEndpointAddress;
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBEndpointPtr] = EndpointType(this)]
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBPipeHandle] = EndpointType(this)]
        UINT8 fid_bmAttributes;
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT16 fid_wMaxPacketSize;
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT8 fid_bInterval;
    }
}
Struct UCX_ETW_EVENT_RUNDOWN_UCX_STATIC_STREAM_INFORMATION = FormatString("UCX Static Stream Information")
{
    UsbDevicePtr fid_UsbDevice;
    // Look up the endpoint (done within UsbPipeHandle)
    UsbPipeHandle fid_EndpointPipeHandle;
    UINT32 fid_StreamID;
    // Save endpoint address to this stream pipe handle, and show the stream's pipe handle as this
    // event's pipe handle.
    [Global.InternalUsbTblEndpoint$[fid_StreamPipeHandle.Ptr] = Property.UsbEndpoint]
    [Property.USBPipeHandle = fid_StreamPipeHandle.Ptr]
    EtlPtr fid_StreamPipeHandle;
}
Struct UCX_ETW_EVENT_UCX_CONTROLLER_CREATE = FormatString("UCX Controller Create")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UnicodeString fid_DeviceInterfacePath;
}
Struct UCX_ETW_EVENT_UCX_CONTROLLER_DELETE = FormatString("UCX Controller Delete")
{
    UcxControllerPtr fid_UcxController;
    UINT32 fid_ParentBusType = MapParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UnicodeString fid_DeviceInterfacePath;
}
[Post.Global.InternalUsbTblPortPath$[Property.USBDevicePtr] = "[-]"]
[Post.Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = "[-]"]
[Post.Global.InternalUsbTblVid$[Property.USBDevicePtr] = "[RH]"]
[Post.Global.InternalUsbTblPid$[Property.USBDevicePtr] = "[RH]"]
[Post.Global.InternalUsbTblDeviceDescription$[Property.USBDevicePtr] = "[RH]"]
Struct UCX_ETW_EVENT_UCX_ROOTHUB_CREATE = FormatString("UCX RootHub Create")
{
    UcxControllerPtr fid_UcxController;
    InitialUsbDevicePtr fid_UsbDevice;
    UnicodeString fid_DeviceInterfacePath;
}
Struct UCX_ETW_EVENT_UCX_ROOTHUB_DELETE = FormatString("UCX RootHub Delete")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UnicodeString fid_DeviceInterfacePath;
}
Struct UCX_ETW_EVENT_UCX_ROOTHUB_PREPARE = FormatString("UCX RootHub Prepare Hardware")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UnicodeString fid_DeviceInterfacePath;
}
Struct UCX_ETW_EVENT_UCX_ROOTHUB_RELEASE = FormatString("UCX RootHub Release Hardware")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UnicodeString fid_DeviceInterfacePath;
}
Struct UCX_ETW_EVENT_UCX_DEVICE_CREATE = FormatString("UCX Device Create")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_HubDevice;
    InitialUsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    UsbPortPath PortPath;
}
Struct UCX_ETW_EVENT_UCX_DEVICE_DELETE = FormatString("UCX Device Delete")
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 DeviceSpeed;
    UsbPortPath PortPath;
}
Struct UCX_ETW_EVENT_UCX_ENDPOINT_CREATE = FormatString("UCX Endpoint Create")
{
    UsbDevicePtr fid_UsbDevice;
    InitialUsbEndpointPtr fid_Endpoint;
    UsbPipeHandle fid_PipeHandle;
    struct  fid_UCX_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        [Global.InternalUsbTblEndpoint$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpoint$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointAddressFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        UINT8 fid_bEndpointAddress;
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBEndpointPtr] = EndpointType(this)]
        [Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBPipeHandle] = EndpointType(this)]
        UINT8 fid_bmAttributes;
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT16 fid_wMaxPacketSize;
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBEndpointPtr] = FormatString("0x%x", this)]
        [Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBPipeHandle] = FormatString("0x%x", this)]
        UINT8 fid_bInterval;
    }
}
Struct UCX_ETW_EVENT_UCX_ENDPOINT_DELETE = FormatString("UCX Endpoint Delete")
{
    UsbDevicePtr fid_UsbDevice;
    UsbEndpointPtr fid_Endpoint;
    UsbPipeHandle fid_PipeHandle;
    struct  fid_UCX_Endpoint_Descriptor
    {
        UINT8 fid_bLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bEndpointAddress;
        UINT8 fid_bmAttributes;
        UINT16 fid_wMaxPacketSize;
        UINT8 fid_bInterval;
    }
}
Struct UCX_ETW_EVENT_UCX_STATIC_STREAM_CREATE = FormatString("UCX Static Stream Create")
{
    UsbDevicePtr fid_UsbDevice;
    // Look up the endpoint (done within UsbPipeHandle).
    UsbPipeHandle fid_EndpointPipeHandle;
    UINT32 fid_StreamID;
    // Save endpoint address to this stream pipe handle, and show the stream's pipe handle as this
    // event's pipe handle.
    [Global.InternalUsbTblEndpoint$[fid_StreamPipeHandle.Ptr] = Property.UsbEndpoint]
    [Property.USBPipeHandle = fid_StreamPipeHandle.Ptr]
    EtlPtr fid_StreamPipeHandle;
}
Struct UCX_ETW_EVENT_UCX_STATIC_STREAM_DELETE = FormatString("UCX Static Stream Delete")
{
    UsbDevicePtr fid_UsbDevice;
    // Look up the endpoint (done within UsbPipeHandle).
    UsbPipeHandle fid_EndpointPipeHandle;
    UINT32 fid_StreamID;
    // Save endpoint address to this stream pipe handle, and show the stream's pipe handle as this
    // event's pipe handle.
    [Global.InternalUsbTblEndpoint$[fid_StreamPipeHandle.Ptr] = Property.UsbEndpoint]
    [Property.USBPipeHandle = fid_StreamPipeHandle.Ptr]
    EtlPtr fid_StreamPipeHandle;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CONTROL_TRANSFER = FormatString("Dispatch URB_FUNCTION_CONTROL_TRANSFER - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER = FormatString("Complete URB_FUNCTION_CONTROL_TRANSFER - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_DATA = FormatString("Complete URB_FUNCTION_CONTROL_TRANSFER with data - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP_AND_DATA fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CONTROL_TRANSFER_EX = FormatString("Dispatch URB_FUNCTION_CONTROL_TRANSFER_EX - %s", fid_UCX_URB_CONTROL_TRANSFER_EX.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER_EX;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_EX = FormatString("Complete URB_FUNCTION_CONTROL_TRANSFER_EX - %s", fid_UCX_URB_CONTROL_TRANSFER_EX.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER_EX;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_CONTROL_TRANSFER_EX_DATA = FormatString("Complete URB_FUNCTION_CONTROL_TRANSFER_EX with data - %s", fid_UCX_URB_CONTROL_TRANSFER_EX.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP_AND_DATA fid_UCX_URB_CONTROL_TRANSFER_EX;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER = FormatString("Dispatch URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    URB fid_UCX_URB_BULK_OR_INTERRUPT_TRANSFER;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER = FormatString("Complete URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    URB fid_UCX_URB_BULK_OR_INTERRUPT_TRANSFER;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_IRP_NtStatus;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_PARTIAL_DATA = FormatString("Complete URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER with partial data")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    URB fid_UCX_URB_BULK_OR_INTERRUPT_TRANSFER;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_IRP_NtStatus;
    UINT16 fid_URB_TransferDataLength;
    UINT8 fid_URB_TransferData[fid_URB_TransferDataLength];
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_FULL_DATA = FormatString("Complete URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER with full data")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    URB fid_UCX_URB_BULK_OR_INTERRUPT_TRANSFER;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_IRP_NtStatus;
    UINT16 fid_URB_TransferDataLength;
    UINT8 fid_URB_TransferData[fid_URB_TransferDataLength];
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_ISOCH_TRANSFER = FormatString("Dispatch URB_FUNCTION_ISOCH_TRANSFER")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    UINT16 fid_UCX_URB_NumberOfPackets;
    URB Urb;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER = FormatString("Complete URB_FUNCTION_ISOCH_TRANSFER")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    UINT16 fid_UCX_URB_NumberOfPackets;
    URB Urb;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_IRP_NtStatus;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER_PARTIAL_DATA = FormatString("Complete URB_FUNCTION_ISOCH_TRANSFER with partial data")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    UINT16 fid_UCX_URB_NumberOfPackets;
    URB Urb;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_IRP_NtStatus;
    UINT16 fid_URB_TransferDataLength;
    UINT8 fid_URB_TransferData[fid_URB_TransferDataLength];
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_ISOCH_TRANSFER_FULL_DATA = FormatString("Complete URB_FUNCTION_ISOCH_TRANSFER with full data")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    UINT16 fid_UCX_URB_NumberOfPackets;
    URB Urb;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_IRP_NtStatus;
    UINT16 fid_URB_TransferDataLength;
    UINT8 fid_URB_TransferData[fid_URB_TransferDataLength];
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE = FormatString("Dispatch URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE = FormatString("Dispatch URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT = FormatString("Dispatch URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE = FormatString("Dispatch URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE = FormatString("Dispatch URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT = FormatString("Dispatch URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_DEVICE = FormatString("Dispatch URB_FUNCTION_SET_FEATURE_TO_DEVICE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_INTERFACE = FormatString("Dispatch URB_FUNCTION_SET_FEATURE_TO_INTERFACE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_ENDPOINT = FormatString("Dispatch URB_FUNCTION_SET_FEATURE_TO_ENDPOINT - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SET_FEATURE_TO_OTHER = FormatString("Dispatch URB_FUNCTION_SET_FEATURE_TO_OTHER - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE = FormatString("Dispatch URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE = FormatString("Dispatch URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT = FormatString("Dispatch URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLEAR_FEATURE_TO_OTHER = FormatString("Dispatch URB_FUNCTION_CLEAR_FEATURE_TO_OTHER - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_DEVICE = FormatString("Dispatch URB_FUNCTION_GET_STATUS_FROM_DEVICE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_INTERFACE = FormatString("Dispatch URB_FUNCTION_GET_STATUS_FROM_INTERFACE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_ENDPOINT = FormatString("Dispatch URB_FUNCTION_GET_STATUS_FROM_ENDPOINT - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_STATUS_FROM_OTHER = FormatString("Dispatch URB_FUNCTION_GET_STATUS_FROM_OTHER - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_DEVICE = FormatString("Dispatch URB_FUNCTION_CLASS_DEVICE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_INTERFACE = FormatString("Dispatch URB_FUNCTION_CLASS_INTERFACE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_ENDPOINT = FormatString("Dispatch URB_FUNCTION_CLASS_ENDPOINT - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_CLASS_OTHER = FormatString("Dispatch URB_FUNCTION_CLASS_OTHER - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_DEVICE = FormatString("Dispatch URB_FUNCTION_VENDOR_DEVICE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_INTERFACE = FormatString("Dispatch URB_FUNCTION_VENDOR_INTERFACE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_ENDPOINT = FormatString("Dispatch URB_FUNCTION_VENDOR_ENDPOINT - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_VENDOR_OTHER = FormatString("Dispatch URB_FUNCTION_VENDOR_OTHER - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_CONFIGURATION = FormatString("Dispatch URB_FUNCTION_GET_CONFIGURATION - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_INTERFACE = FormatString("Dispatch URB_FUNCTION_GET_INTERFACE - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDeivce;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR = FormatString("Dispatch URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR - %s", fid_UCX_URB_CONTROL_TRANSFER.Urb.SetupPacket.ToString)
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    CONTROL_TRANSFER_URB_SETUP fid_UCX_URB_CONTROL_TRANSFER;
}
Struct UCX_ETW_EVENT_UCX_ENDPOINT_STATE_MACHINE_TRANSITION = FormatString("Endpoint State Machine Transition <%s> %s", UcxEndpointEvent(fid_Event), UcxEndpointState(fid_State))
{
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_URB_PipeHandle;
    UINT32 fid_Event;
    UINT32 fid_State;
}
Struct UCX_ETW_EVENT_UCX_ENDPOINT_STATE_MACHINE_EVENT = FormatString("Endpoint State Machine Event <%s>", UcxEndpointEvent(fid_Event))
{
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_URB_PipeHandle;
    UINT32 fid_Event;
}
Struct UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_STATE_MACHINE_TRANSITION = FormatString("Rundown Endpoint State Machine Transition <%s> %s", UcxEndpointEvent(fid_Event), UcxEndpointState(fid_State))
{
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_URB_PipeHandle;
    UINT32 fid_Event;
    UINT32 fid_State;
}
Struct UCX_ETW_EVENT_RUNDOWN_UCX_ENDPOINT_STATE_MACHINE_EVENT = FormatString("Rundown Endpoint State Machine Event <%s>", UcxEndpointEvent(fid_Event))
{
    UsbEndpointPtr fid_Endpoint;
    EtlPtr fid_URB_PipeHandle;
    UINT32 fid_Event;
}
Struct UCX_ETW_EVENT_UCX_CONTROLLER_STATE_MACHINE_TRANSITION = FormatString("Controller State Machine Transition <%s> %s", ControllerResetEvent(fid_Event), ControllerResetState(fid_State))
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_SmEngineContext;
    UINT32 fid_Event;
    UINT32 fid_State;
}
Struct UCX_ETW_EVENT_UCX_CONTROLLER_STATE_MACHINE_EVENT = FormatString("Controller State Machine Event <%s>", ControllerResetEvent(fid_Event))
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_SmEngineContext;
    UINT32 fid_Event;
}
Struct UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_STATE_MACHINE_TRANSITION = FormatString("Rundown Controller State Machine Transition <%s> %s", ControllerResetEvent(fid_Event), ControllerResetState(fid_State))
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_SmEngineContext;
    UINT32 fid_Event;
    UINT32 fid_State;
}
Struct UCX_ETW_EVENT_RUNDOWN_UCX_CONTROLLER_STATE_MACHINE_EVENT = FormatString("Rundown Controller State Machine Event <%s>", ControllerResetEvent(fid_Event))
{
    UcxControllerPtr fid_UcxController;
    EtlPtr fid_SmEngineContext;
    UINT32 fid_Event;
}
Struct UCX_ETW_EVENT_UCX_ROOTHUB_INITIATING_WAKE = FormatString("UCX RootHub Initiating Wake")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UnicodeString fid_DeviceInterfacePath;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SECURE_BULK_OR_INTERRUPT_TRANSFER = FormatString("Dispatch URB_FUNCTION_SECURE_BULK_OR_INTERRUPT_TRANSFER")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    URB fid_UCX_URB_SECURE_BULK_OR_INTERRUPT_TRANSFER;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_SECURE_BULK_OR_INTERRUPT_TRANSFER = FormatString("Complete URB_FUNCTION_SECURE_BULK_OR_INTERRUPT_TRANSFER")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    URB fid_UCX_URB_SECURE_BULK_OR_INTERRUPT_TRANSFER;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_IRP_NtStatus;
}
Struct UCX_ETW_EVENT_DISPATCH_URB_FUNCTION_SECURE_ISOCH_TRANSFER = FormatString("Dispatch URB_FUNCTION_SECURE_ISOCH_TRANSFER")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    UINT16 fid_UCX_URB_NumberOfPackets;
    URB fid_UCX_URB_SECURE_ISOCH_TRANSFER;
}
[Property.InternalUsbIsUrbCompletion = 1]
Struct UCX_ETW_EVENT_COMPLETE_URB_FUNCTION_SECURE_ISOCH_TRANSFER = FormatString("Complete URB_FUNCTION_SECURE_ISOCH_TRANSFER")
{
    UcxControllerPtr fid_UcxController;
    UsbDevicePtr fid_UsbDevice;
    UsbPipeHandle fid_PipeHandle;
    EtlPtr fid_IRP_Ptr;
    UsbUrbPtr fid_URB_Ptr;
    UINT16 fid_UCX_URB_NumberOfPackets;
    URB fid_UCX_URB_SECURE_ISOCH_TRANSFER;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_IRP_NtStatus;
}
// Array Struct
struct fid_UCX_URB_ISO_PACKETS = FormatString(
    "%s %d",
    fid_URB_Packet_Status != 0 ? fid_URB_Packet_Status.ToString : "",
    fid_URB_Packet_Length)
{
    UINT32 fid_URB_Packet_Offset;
    UINT32 fid_URB_Packet_Length;
    UINT32 fid_URB_Packet_Status = UsbdStatusTable(this);
}
[RegisterBefore(EventDescriptor.DefaultKeyword, MicrosoftWindowsUSBUCX_Keyword, "{36da592d-e43a-4e28-af6f-4bc57c5a11e8}")]
struct MicrosoftWindowsUSBUCX_Keyword
{
    UINT64 Default:1 = FormatString("            (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_DEFAULT":"");
    UINT64 USBError:1 = FormatString("           (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_USBERROR":"");
    UINT64 IRP:1 = FormatString("                (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_IRP":"");
    UINT64 Power:1 = FormatString("              (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_POWER":"");
    UINT64 PnP:1 = FormatString("                (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_PNP":"");
    UINT64 Performance:1 = FormatString("        (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_PERFORMANCE":"");
    UINT64 HeadersBusTrace:1 = FormatString("    (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_HEADERS_BUS_TRACE":"");
    UINT64 PartialDataBusTrace:1 = FormatString("(%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_PARTIAL_DATA_BUS_TRACE":"");
    UINT64 FullDataBusTrace:1 = FormatString("   (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_FULL_DATA_BUS_TRACE":"");
    UINT64 StateMachine:1 = FormatString("       (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_STATEMACHINE":"");
    UINT64 Enumeration:1 = FormatString("        (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_ENUMERATION":"");
    UINT64 VerifyDriver:1 = FormatString("       (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_VERIFYDRIVER":"");
    UINT64 HWVerifyHost:1 = FormatString("       (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_HW_VERIFYHOST":"");
    UINT64 HWVerifyHub:1 = FormatString("        (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_HW_VERIFYHUB":"");
    UINT64 HWVerifyDevice:1 = FormatString("     (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_HW_VERIFYDEVICE":"");
    UINT64 Rundown:1 = FormatString("            (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_RUNDOWN":"");
    UINT64 Device:1 = FormatString("             (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_DEVICE":"");
    UINT64 Hub:1 = FormatString("                (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_HUB":"");
    UINT64 Compat:1 = FormatString("             (%s) %s", this.ToBitString, this? "UCX_ETW_KEYWORD_COMPAT":"");
    UINT64 ControllerCommand:1 = FormatString("  (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_CONTROLLER_COMMAND":"");
    UINT64 Reserved1:44 = FormatString("          (%s)", this.ToBitString);
}
//#  (c) 2009 Microsoft Corporation
//#
//#  Title:                  Microsoft-Windows-usbhub3
//#
//#  Details:
//#
//#  Public References:      usbhub3.man
//#
//#  Comments:
//#
//#  Revision Class and Date:Minor, 6/6/2011
//#
//####
[RegisterBefore(NetEvent.UserData, UsbHub3, "{AC52AD17-CC01-4F85-8DF5-4DCE4333C99B}")]
Protocol UsbHub3 = property.ETLSummary
{
    [BuildConversationWithParent, conversation.ConversationDescription = ""]
    [Post.Property.USBIsError =
        ((
            (NetEvent.Header.Descriptor.Level == 0x2)
            OR
            (Property.USBDStatus != "success" && Property.USBDStatus != "" && Property.USBDStatus != "canceled" && Property.USBDStatus != "pending")
            OR
            (Property.USBNtStatus != "success" && Property.USBNtStatus != "Success" && Property.USBNtStatus != "" && Property.USBNtStatus != "0xC0000120 - STATUS_CANCELLED")
        ) ? 1 : 0)]
    switch(property.EventID)
    {
        case 1: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_RUNDOWN_START USBHUB3_ETW_EVENT_RUNDOWN_START;
        case 2: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_RUNDOWN_COMPLETE USBHUB3_ETW_EVENT_RUNDOWN_COMPLETE;
        case 3: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_RUNDOWN_USB30_HUB_INFORMATION USBHUB3_ETW_EVENT_RUNDOWN_USB30_HUB_INFORMATION;
        case 4: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_RUNDOWN_USB20_HUB_INFORMATION USBHUB3_ETW_EVENT_RUNDOWN_USB20_HUB_INFORMATION;
        case 5: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_RUNDOWN_ROOT_HUB_INFORMATION USBHUB3_ETW_EVENT_RUNDOWN_ROOT_HUB_INFORMATION;
        case 6:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION;
                case 1: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V1 USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V1;
                case 2: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V2 USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V2;
            }
        case 7:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_RUNDOWN_20_PORT USBHUB3_ETW_EVENT_RUNDOWN_20_PORT;
                case 1: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_RUNDOWN_20_PORT_V1 USBHUB3_ETW_EVENT_RUNDOWN_20_PORT_V1;
            }
        case 8:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_RUNDOWN_30_PORT USBHUB3_ETW_EVENT_RUNDOWN_30_PORT;
                case 1: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_RUNDOWN_30_PORT_V1 USBHUB3_ETW_EVENT_RUNDOWN_30_PORT_V1;
            }
        case 9: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_RUNDOWN_ACPI_UPC USBHUB3_ETW_EVENT_RUNDOWN_ACPI_UPC;
        case 10: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_RUNDOWN_ACPI_PLD USBHUB3_ETW_EVENT_RUNDOWN_ACPI_PLD;
        case 20: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_START USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_START;
        case 21: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_COMPLETE USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_COMPLETE;
        case 22: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_USB30_HUB_INFORMATION USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_USB30_HUB_INFORMATION;
        case 23: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_USB20_HUB_INFORMATION USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_USB20_HUB_INFORMATION;
        case 24: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ROOT_HUB_INFORMATION USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ROOT_HUB_INFORMATION;
        case 25:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_20_PORT USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_20_PORT;
                case 1: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_20_PORT_V1 USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_20_PORT_V1;
            }
        case 26:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_30_PORT USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_30_PORT;
                case 1: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_30_PORT_V1 USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_30_PORT_V1;
            }
        case 27: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ACPI_UPC USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ACPI_UPC;
        case 28: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ACPI_PLD USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ACPI_PLD;
        case 29: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_ADD_DEVICE_START USBHUB3_ETW_EVENT_HUB_ADD_DEVICE_START;
        case 30: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_ADD_DEVICE_COMPLETE USBHUB3_ETW_EVENT_HUB_ADD_DEVICE_COMPLETE;
        case 31: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_RELEASE_HARDWARE_START USBHUB3_ETW_EVENT_HUB_RELEASE_HARDWARE_START;
        case 32: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_RELEASE_HARDWARE_COMPLETE USBHUB3_ETW_EVENT_HUB_RELEASE_HARDWARE_COMPLETE;
        case 33: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_D0_ENTRY_START USBHUB3_ETW_EVENT_HUB_D0_ENTRY_START;
        case 34: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_D0_ENTRY_COMPLETE USBHUB3_ETW_EVENT_HUB_D0_ENTRY_COMPLETE;
        case 35: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_D0_EXIT_START USBHUB3_ETW_EVENT_HUB_D0_EXIT_START;
        case 36: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_D0_EXIT_COMPLETE USBHUB3_ETW_EVENT_HUB_D0_EXIT_COMPLETE;
        case 37: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_SURPRISE_REMOVAL_START USBHUB3_ETW_EVENT_HUB_SURPRISE_REMOVAL_START;
        case 38: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_SURPRISE_REMOVAL_COMPLETE USBHUB3_ETW_EVENT_HUB_SURPRISE_REMOVAL_COMPLETE;
        case 39: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_CLEANUP_START USBHUB3_ETW_EVENT_HUB_CLEANUP_START;
        case 40: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_CLEANUP_COMPLETE USBHUB3_ETW_EVENT_HUB_CLEANUP_COMPLETE;
        case 41: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_START USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_START;
        case 42: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_COMPLETE USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_COMPLETE;
        case 43:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION;
                case 1: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION_V1 USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION_V1;
                case 2: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION_V2 USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION_V2;
            }
        case 44: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_NESTED_TOO_DEEP USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_NESTED_TOO_DEEP;
        case 45: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_UNKNOWN_HUB_TYPE USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_UNKNOWN_HUB_TYPE;
        case 47: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ADD_DEVICE_START USBHUB3_ETW_EVENT_DEVICE_ADD_DEVICE_START;
        case 48: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ADD_DEVICE_COMPLETE USBHUB3_ETW_EVENT_DEVICE_ADD_DEVICE_COMPLETE;
        case 49: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_RELEASE_HARDWARE_START USBHUB3_ETW_EVENT_DEVICE_RELEASE_HARDWARE_START;
        case 50: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_RELEASE_HARDWARE_COMPLETE USBHUB3_ETW_EVENT_DEVICE_RELEASE_HARDWARE_COMPLETE;
        case 51: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_D0_ENTRY_START USBHUB3_ETW_EVENT_DEVICE_D0_ENTRY_START;
        case 52: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_D0_ENTRY_COMPLETE USBHUB3_ETW_EVENT_DEVICE_D0_ENTRY_COMPLETE;
        case 53: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_D0_EXIT_START USBHUB3_ETW_EVENT_DEVICE_D0_EXIT_START;
        case 54: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_D0_EXIT_COMPLETE USBHUB3_ETW_EVENT_DEVICE_D0_EXIT_COMPLETE;
        case 55: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_SURPRISE_REMOVAL_START USBHUB3_ETW_EVENT_DEVICE_SURPRISE_REMOVAL_START;
        case 56: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_SURPRISE_REMOVAL_COMPLETE USBHUB3_ETW_EVENT_DEVICE_SURPRISE_REMOVAL_COMPLETE;
        case 57: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_CLEANUP_START USBHUB3_ETW_EVENT_DEVICE_CLEANUP_START;
        case 58: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_CLEANUP_COMPLETE USBHUB3_ETW_EVENT_DEVICE_CLEANUP_COMPLETE;
        case 60: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_START USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_START;
        case 61: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_COMPLETE USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_COMPLETE;
        case 62: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_RETRY USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_RETRY;
        case 63: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_MAXIMUM_RETRY_COUNT_REACHED USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_MAXIMUM_RETRY_COUNT_REACHED;
        case 64: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_FAILED USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_FAILED;
        case 65: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_RESET_TIMEOUT USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_RESET_TIMEOUT;
        case 66: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_WAS_RESET_ON_RESUME USBHUB3_ETW_EVENT_HUB_WAS_RESET_ON_RESUME;
        case 70: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_PROPERTY_DESCRIPTOR_HEADER USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_PROPERTY_DESCRIPTOR_HEADER;
        case 71: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_PROPERTY_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_PROPERTY_DESCRIPTOR;
        case 72: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_BOS_DESCRIPTOR_HEADER USBHUB3_ETW_EVENT_INVALID_BOS_DESCRIPTOR_HEADER;
        case 73: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_BOS_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_BOS_DESCRIPTOR;
        case 74: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_CONFIGURATION_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_CONFIGURATION_DESCRIPTOR;
        case 75: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_DEVICE_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_DEVICE_DESCRIPTOR;
        case 76: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_DEVICE_QUALIFIER_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_DEVICE_QUALIFIER_DESCRIPTOR;
        case 77: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_LANGUAGE_ID_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_LANGUAGE_ID_DESCRIPTOR;
        case 78: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_MSOS_CONTAINER_ID_DESCRIPTOR_HEADER USBHUB3_ETW_EVENT_INVALID_MSOS_CONTAINER_ID_DESCRIPTOR_HEADER;
        case 79: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_MSOS_CONTAINER_ID_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_MSOS_CONTAINER_ID_DESCRIPTOR;
        case 80: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_MSOS_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_MSOS_DESCRIPTOR;
        case 81: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_CONFIGURATION_DESCRIPTOR_HEADER USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_CONFIGURATION_DESCRIPTOR_HEADER;
        case 82: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_CONFIGURATION_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_CONFIGURATION_DESCRIPTOR;
        case 83: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_PRODUCT_ID_STRING_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_PRODUCT_ID_STRING_DESCRIPTOR;
        case 84: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_SERIAL_NUMBER_STRING_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_SERIAL_NUMBER_STRING_DESCRIPTOR;
        case 85: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_MSOS20_DESCRIPTOR_SET USBHUB3_ETW_EVENT_INVALID_MSOS20_DESCRIPTOR_SET;
        case 90: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_INTERNAL_IOCTL_START USBHUB3_ETW_EVENT_DEVICE_INTERNAL_IOCTL_START;
        case 91: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_INTERNAL_IOCTL_COMPLETE USBHUB3_ETW_EVENT_DEVICE_INTERNAL_IOCTL_COMPLETE;
        case 92: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_URB_START USBHUB3_ETW_EVENT_DEVICE_URB_START;
        case 93: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_URB_COMPLETE USBHUB3_ETW_EVENT_DEVICE_URB_COMPLETE;
        case 94: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DISPATCH_URB_INVALID_HEADER_LENGTH_WARNING USBHUB3_ETW_EVENT_DISPATCH_URB_INVALID_HEADER_LENGTH_WARNING;
        case 95: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DISPATCH_URB_INVALID_FUNCTION USBHUB3_ETW_EVENT_DISPATCH_URB_INVALID_FUNCTION;
        case 96: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_SUBMIT_IDLE_NOTIFICATION_START USBHUB3_ETW_EVENT_DEVICE_SUBMIT_IDLE_NOTIFICATION_START;
        case 97: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_SUBMIT_IDLE_NOTIFICATION_COMPLETE USBHUB3_ETW_EVENT_DEVICE_SUBMIT_IDLE_NOTIFICATION_COMPLETE;
        case 98: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_IDLE_CALLBACK USBHUB3_ETW_EVENT_DEVICE_IDLE_CALLBACK;
        case 100: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_20_PORT_STATUS USBHUB3_ETW_EVENT_20_PORT_STATUS;
        case 101: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_30_PORT_STATUS USBHUB3_ETW_EVENT_30_PORT_STATUS;
        case 102: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PORT_ACPI_UPC_FAILURE USBHUB3_ETW_EVENT_HUB_PORT_ACPI_UPC_FAILURE;
        case 103: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_PORT_ACPI_PLD_FAILURE USBHUB3_ETW_EVENT_HUB_PORT_ACPI_PLD_FAILURE;
        case 110: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_STATE_MACHINE USBHUB3_ETW_EVENT_STATE_MACHINE;
        case 111: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_UNHANDLED_STATE_MACHINE_EVENT USBHUB3_ETW_EVENT_UNHANDLED_STATE_MACHINE_EVENT;
        case 120: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_RESET_REQUEST_START USBHUB3_ETW_EVENT_HUB_RESET_REQUEST_START;
        case 121: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_RESET_REQUEST_COMPLETE USBHUB3_ETW_EVENT_HUB_RESET_REQUEST_COMPLETE;
        case 122: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_RESET_DUE_TO_PORT_ERROR USBHUB3_ETW_EVENT_HUB_RESET_DUE_TO_PORT_ERROR;
        case 123:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_PORT_STATUS_ERROR USBHUB3_ETW_EVENT_PORT_STATUS_ERROR;
                case 1: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_PORT_STATUS_ERROR_V1 USBHUB3_ETW_EVENT_PORT_STATUS_ERROR_V1;
            }
        case 130: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_CONTROL_TRANSFER_ERROR USBHUB3_ETW_EVENT_HUB_CONTROL_TRANSFER_ERROR;
        case 131: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_PORT_CONTROL_TRANSFER_ERROR USBHUB3_ETW_EVENT_PORT_CONTROL_TRANSFER_ERROR;
        case 132: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_CONTROL_TRANSFER_ERROR USBHUB3_ETW_EVENT_DEVICE_CONTROL_TRANSFER_ERROR;
        case 133: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_PORT_INTERRUPT_TRANSFER_ERROR USBHUB3_ETW_EVENT_PORT_INTERRUPT_TRANSFER_ERROR;
        case 134: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_SELECTIVE_SUSPEND_NOT_SUPPORTED USBHUB3_ETW_EVENT_HUB_SELECTIVE_SUSPEND_NOT_SUPPORTED;
        case 140: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_INFORMATION_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_INFORMATION_COMPLETE;
        case 141: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME_COMPLETE;
        case 142: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_COMPLETE;
        case 143: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_COMPLETE;
        case 144: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES_COMPLETE;
        case 145: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_NAME_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_NAME_COMPLETE;
        case 146: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION_START USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION_START;
        case 147: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION_COMPLETE;
        case 148: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_CAPABILITIES_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_CAPABILITIES_COMPLETE;
        case 149: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_CAPABILITIES_EX_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_CAPABILITIES_EX_COMPLETE;
        case 150: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_HUB_CYCLE_PORT_START USBHUB3_ETW_EVENT_HUB_IOCTL_USB_HUB_CYCLE_PORT_START;
        case 151: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_HUB_CYCLE_PORT_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_HUB_CYCLE_PORT_COMPLETE;
        case 152: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_RESET_HUB_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_RESET_HUB_COMPLETE;
        case 153: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_UNSUPPORTED_IOCTL_COMPLETE USBHUB3_ETW_EVENT_HUB_UNSUPPORTED_IOCTL_COMPLETE;
        case 154: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES_COMPLETE;
        case 155: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_INFORMATION_EX_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_INFORMATION_EX_COMPLETE;
        case 156: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2_COMPLETE USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2_COMPLETE;
        case 157: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_UCX_IOCTL_FAILURE USBHUB3_ETW_EVENT_UCX_IOCTL_FAILURE;
        case 160: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_DESCRIPTOR_FAILURE USBHUB3_ETW_EVENT_DEVICE_DESCRIPTOR_FAILURE;
        case 161: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_SET_ADDRESS_FAILURE USBHUB3_ETW_EVENT_SET_ADDRESS_FAILURE;
        case 162: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_CONFIG_DESCRIPTOR_FAILURE USBHUB3_ETW_EVENT_CONFIG_DESCRIPTOR_FAILURE;
        case 163: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_SET_SEL_FAILURE USBHUB3_ETW_EVENT_SET_SEL_FAILURE;
        case 164: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_BOS_DESCRIPTOR_FAILURE USBHUB3_ETW_EVENT_BOS_DESCRIPTOR_FAILURE;
        case 165: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_QUALIFIER_DESCRIPTOR_FAILURE USBHUB3_ETW_EVENT_DEVICE_QUALIFIER_DESCRIPTOR_FAILURE;
        case 166: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_SERIAL_NUMBER_STRING_FAILURE USBHUB3_ETW_EVENT_SERIAL_NUMBER_STRING_FAILURE;
        case 167: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_PRODUCT_ID_STRING_FAILURE USBHUB3_ETW_EVENT_PRODUCT_ID_STRING_FAILURE;
        case 168: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_MS_EXT_CONFIG_DESCRIPTOR_FAILURE USBHUB3_ETW_EVENT_MS_EXT_CONFIG_DESCRIPTOR_FAILURE;
        case 169: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_MS_CONTAINER_ID_DESCRIPTOR_FAILURE USBHUB3_ETW_EVENT_MS_CONTAINER_ID_DESCRIPTOR_FAILURE;
        case 170: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_SET_ISOCH_DELAY_FAILURE USBHUB3_ETW_EVENT_SET_ISOCH_DELAY_FAILURE;
        case 171: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_LANGUAGE_ID_STRING_FAILURE USBHUB3_ETW_EVENT_LANGUAGE_ID_STRING_FAILURE;
        case 172: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_REGISTRY_FAILURE USBHUB3_ETW_EVENT_REGISTRY_FAILURE;
        case 173: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_SSDEVICE_CONNECTED_AT_LS USBHUB3_ETW_EVENT_SSDEVICE_CONNECTED_AT_LS;
        case 174: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_HUB_TOO_MANY_RESETS USBHUB3_ETW_EVENT_HUB_TOO_MANY_RESETS;
        case 175: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INTERFACE_WAKE_CAPABILITY_MISMATCH USBHUB3_ETW_EVENT_INTERFACE_WAKE_CAPABILITY_MISMATCH;
        case 176: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DESCRIPTOR_VALIDATION_FAILURE USBHUB3_ETW_EVENT_DESCRIPTOR_VALIDATION_FAILURE;
        case 177: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_BUS_RENUMERATION USBHUB3_ETW_EVENT_BUS_RENUMERATION;
        case 178: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_USBENUM_SERIAL_MISMATCH_ON_RENUMERATION USBHUB3_ETW_EVENT_USBENUM_SERIAL_MISMATCH_ON_RENUMERATION;
        case 179:
            Switch(property.EventVersion)
            {
                case 0: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_CLIENT_INITIATED_RECOVERY_ACTION USBHUB3_ETW_EVENT_CLIENT_INITIATED_RECOVERY_ACTION;
                case 1: [property.ETLSummary = this.ToString]USBHUB3_ETW_EVENT_CLIENT_INITIATED_RECOVERY_ACTION_V1 USBHUB3_ETW_EVENT_CLIENT_INITIATED_RECOVERY_ACTION_V1;
            }
        case 180: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_QUERY_USB_CAPABILITY USBHUB3_ETW_EVENT_DEVICE_QUERY_USB_CAPABILITY;
        case 181: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_MSOS20_DESCRIPTOR_FAILURE USBHUB3_ETW_EVENT_MSOS20_DESCRIPTOR_FAILURE;
        case 182: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_MSOS20_SET_ALT_ENUMERATION_FAILURE USBHUB3_ETW_EVENT_MSOS20_SET_ALT_ENUMERATION_FAILURE;
        case 183: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_SET_U1_ENABLE_FAILURE USBHUB3_ETW_EVENT_SET_U1_ENABLE_FAILURE;
        case 184: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_SET_U2_ENABLE_FAILURE USBHUB3_ETW_EVENT_SET_U2_ENABLE_FAILURE;
        case 185: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DESCRIPTOR_VALIDATION_WARNING USBHUB3_ETW_EVENT_DESCRIPTOR_VALIDATION_WARNING;
        case 186: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_BILLBOARD USBHUB3_ETW_EVENT_BILLBOARD;
        case 187: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_ALTERNATE_MODE_FAILED USBHUB3_ETW_EVENT_ALTERNATE_MODE_FAILED;
        case 188: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_ALTERNATE_MODE_ENTERED USBHUB3_ETW_EVENT_ALTERNATE_MODE_ENTERED;
        case 189: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_BILLBOARD_STRING_FAILURE USBHUB3_ETW_EVENT_BILLBOARD_STRING_FAILURE;
        case 190: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_ALTERNATE_MODE_STRING_FAILURE USBHUB3_ETW_EVENT_ALTERNATE_MODE_STRING_FAILURE;
        case 191: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_BILLBOARD_STRING_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_BILLBOARD_STRING_DESCRIPTOR;
        case 192: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_INVALID_ALTERNATE_MODE_STRING_DESCRIPTOR USBHUB3_ETW_EVENT_INVALID_ALTERNATE_MODE_STRING_DESCRIPTOR;
        case 194: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE;
        case 195: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE_PUBLISH_INFO USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE_PUBLISH_INFO;
        case 196: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE_PUBLISH_WARNING USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE_PUBLISH_WARNING;
        case 197: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_FAILURE USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_FAILURE;
        case 198: [property.ETLSummary = this.ToString] USBHUB3_ETW_EVENT_ILLEGAL_ENDPOINT_SHARING_ACROSS_INTERFACES USBHUB3_ETW_EVENT_ILLEGAL_ENDPOINT_SHARING_ACROSS_INTERFACES;
        default: [property.ETLSummary = "Not exist EventID"]struct{};
    }
}
Table MapControllerParentBusType(value)
{
    switch(value)
    {
        case 1: "ControllerParentBusTypePci";
        case 2: "ControllerParentBusTypeAcpi";
        case 3: "ControllerParentBusTypeMaUsb";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Table MapDripsWatchdogResult(value)
{
    switch(value)
    {
        case 0: "SurpriseRemovalInitiated";
        case 1: "SkippedAsDeviceIsAHub";
        case 2: "SkippedAsCouldNotReadSettings";
        case 3: "SkippedAsDisabledInSettingsPanel";
        case 4: "SkippedAsHackflagSet";
        case 5: "SkippedAsRecentIoObservered";
        case 6: "SkippedAsAlreadyMarkedForRemoval (Device vetoed previous attempt)";
        case 7: "SkippedAsUnableToRegisterIrCallback";
        case 8: "SkippedAsIoRequestDeviceRemovalForResetFailed";
        case 9: "SkippedAsAcquireRemoveLockFailed";
        case 10: "SkippedAsWorkItemCreateFailed";
        case 255: "UnknownState";
        default:
            FormatString("Unknown value: %d", value);
    }
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_START = "Start Rundown" {}; // Empty Struct
Struct USBHUB3_ETW_EVENT_RUNDOWN_COMPLETE = "Complete Rundown" {}; // Empty Struct
Struct USBHUB3_ETW_EVENT_RUNDOWN_USB30_HUB_INFORMATION = FormatString("USB 3.0 Hub Information")
{
    UsbDevicePtr fid_UsbDevice;
    struct  fid_USB30_HubDescriptor
    {
        UINT8 fid_bDescriptorLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bNumberOfPorts;
        UINT16 fid_wHubCharacteristics;
        UINT8 fid_bPowerOnToGood;
        UINT8 fid_bHubControlCurrent;
        UINT8 fid_bHubHdrDecLat;
        UINT16 fid_wHubDelay;
        UINT16 fid_DeviceRemovable;
    }
    UINT32 fid_CurrentWdfPowerDeviceState;
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_USB20_HUB_INFORMATION = FormatString("USB 2.0/1.1 Hub Information")
{
    UsbDevicePtr fid_UsbDevice;
    struct  fid_USB20_HubDescriptor
    {
        UINT8 fid_bDescriptorLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bNumberOfPorts;
        UINT16 fid_wHubCharacteristics;
        UINT8 fid_bPowerOnToGood;
        UINT8 fid_bHubControlCurrent;
        UINT8 fid_bRemoveAndPowerMask[64];
    }
    UINT32 fid_CurrentWdfPowerDeviceState;
}
[Post.Global.InternalUsbTblPortPath$[Property.USBDevicePtr] = "[-]"]
[Post.Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = "[-]"]
[Post.Global.InternalUsbTblVid$[Property.USBDevicePtr] = "[RH]"]
[Post.Global.InternalUsbTblPid$[Property.USBDevicePtr] = "[RH]"]
[Post.Global.InternalUsbTblDeviceDescription$[Property.USBDevicePtr] = "[RH]"]
Struct USBHUB3_ETW_EVENT_RUNDOWN_ROOT_HUB_INFORMATION = FormatString("USB Root Hub Information")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_CurrentWdfPowerDeviceState;
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION = FormatString("USB Device Information")
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    InternalUsbTblDeviceDescription fid_DeviceDescription;
    UnicodeString fid_DeviceInterfacePath;
    USB_DEVICE_DESCRIPTOR fid_DeviceDescriptor;
    [Property.InternalUsbDescriptorLength]
    UINT16 fid_ConfigurationDescriptorLength;
    USB_DESCRIPTORS ConfigurationDescriptor;
    UnicodeString fid_PdoName;
    UINT8 fid_Suspended;
    UINT32 fid_PortPathDepth;
    UINT32 fid_PortPath[6];
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    UINT32 fid_CurrentWdfPowerDeviceState;
    UINT32 fid_Usb20LpmStatus = Usb20LpmStatus(this);
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V1 = FormatString("USB Device Information")
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    InternalUsbTblDeviceDescription fid_DeviceDescription;
    UnicodeString fid_DeviceInterfacePath;
    USB_DEVICE_DESCRIPTOR fid_DeviceDescriptor;
    [Property.InternalUsbDescriptorLength]
    UINT16 fid_ConfigurationDescriptorLength;
    USB_DESCRIPTORS ConfigurationDescriptor;
    UnicodeString fid_PdoName;
    UINT8 fid_Suspended;
    UINT32 fid_PortPathDepth;
    UINT32 fid_PortPath[6];
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    UINT32 fid_CurrentWdfPowerDeviceState;
    UINT32 fid_Usb20LpmStatus = Usb20LpmStatus(this);
    UINT32 fid_ControllerParentBusType = MapControllerParentBusType(this);
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT8 fid_PortFlagAcpiUpcValid;
    UINT8 fid_PortConnectorType;
    UINT64 fid_UcmConnectorId;
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_DEVICE_INFORMATION_V2 = FormatString("USB Device Information")
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    InternalUsbTblDeviceDescription fid_DeviceDescription;
    UnicodeString fid_DeviceInterfacePath;
    USB_DEVICE_DESCRIPTOR fid_DeviceDescriptor;
    [Property.InternalUsbDescriptorLength]
    UINT16 fid_ConfigurationDescriptorLength;
    USB_DESCRIPTORS ConfigurationDescriptor;
    UnicodeString fid_PdoName;
    UINT8 fid_Suspended;
    UINT32 fid_PortPathDepth;
    UINT32 fid_PortPath[6];
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    UINT32 fid_CurrentWdfPowerDeviceState;
    UINT32 fid_Usb20LpmStatus = Usb20LpmStatus(this);
    UINT32 fid_ControllerParentBusType = MapControllerParentBusType(this);
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT8 fid_PortFlagAcpiUpcValid;
    UINT8 fid_PortConnectorType;
    UINT64 fid_UcmConnectorId;
    BOOL fid_GetFirmwareImageHashSupport;
    BOOL fid_DisallowFirmwareUpdateSupport;
    NTSTATUS fid_GetFirmwareHashNtStatus;
    USBD_STATUS fid_UsbdStatus;
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_20_PORT = FormatString("USB 2.0/1.1 Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_20_PORT_V1 = FormatString("USB 2.0/1.1 Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT8 fid_PortFlagAcpiUpcValid;
    UINT8 fid_PortConnectorType;
    UINT64 fid_UcmConnectorId;
    UINT32 fid_ControllerParentBusType = MapControllerParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_30_PORT = FormatString("USB 3.0 Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_30_PORT_V1 = FormatString("USB 3.0 Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT8 fid_PortFlagAcpiUpcValid;
    UINT8 fid_PortConnectorType;
    UINT64 fid_UcmConnectorId;
    UINT32 fid_ControllerParentBusType = MapControllerParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_ACPI_UPC = FormatString("ACPI _UPC Package for Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    struct  fid_USBHUB_Acpi_Upc_Package
    {
        UINT8 fid_PortIsConnectable;
        UINT8 fid_PortConnectorType;
        UINT32 fid_Reserved0;
        UINT32 fid_Reserved1;
    }
}
Struct USBHUB3_ETW_EVENT_RUNDOWN_ACPI_PLD = FormatString("ACPI _PLD Package for Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    struct  fid_USBHUB_Acpi_Pld
    {
        UINT64 fid_PortPath[2];
    }
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_START = FormatString("Start of EvtDevicePrepareHardware for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_COMPLETE = FormatString("Complete EvtDevicePrepareHardware for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_USB30_HUB_INFORMATION = FormatString("USB 3.0 Hub Information")
{
    UsbDevicePtr fid_UsbDevice;
    struct  fid_USB30_HubDescriptor
    {
        UINT8 fid_bDescriptorLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bNumberOfPorts;
        UINT16 fid_wHubCharacteristics;
        UINT8 fid_bPowerOnToGood;
        UINT8 fid_bHubControlCurrent;
        UINT8 fid_bHubHdrDecLat;
        UINT16 fid_wHubDelay;
        UINT16 fid_DeviceRemovable;
    }
    UINT32 fid_CurrentWdfPowerDeviceState;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_USB20_HUB_INFORMATION = FormatString("USB 2.0/1.1 Hub Information")
{
    UsbDevicePtr fid_UsbDevice;
    struct  fid_USB20_HubDescriptor
    {
        UINT8 fid_bDescriptorLength;
        UINT8 fid_bDescriptorType;
        UINT8 fid_bNumberOfPorts;
        UINT16 fid_wHubCharacteristics;
        UINT8 fid_bPowerOnToGood;
        UINT8 fid_bHubControlCurrent;
        UINT8 fid_bRemoveAndPowerMask[64];
    }
    UINT32 fid_CurrentWdfPowerDeviceState;
}
[Post.Global.InternalUsbTblPortPath$[Property.USBDevicePtr] = "[-]"]
[Post.Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr] = "[-]"]
[Post.Global.InternalUsbTblVid$[Property.USBDevicePtr] = "[RH]"]
[Post.Global.InternalUsbTblPid$[Property.USBDevicePtr] = "[RH]"]
[Post.Global.InternalUsbTblDeviceDescription$[Property.USBDevicePtr] = "[RH]"]
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ROOT_HUB_INFORMATION = FormatString("USB Root Hub Information")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_CurrentWdfPowerDeviceState;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_20_PORT = FormatString("USB 2.0/1.1 Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_20_PORT_V1 = FormatString("USB 2.0/1.1 Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT8 fid_PortFlagAcpiUpcValid;
    UINT8 fid_PortConnectorType;
    UINT64 fid_UcmConnectorId;
    UINT32 fid_ControllerParentBusType = MapControllerParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_30_PORT = FormatString("USB 3.0 Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_30_PORT_V1 = FormatString("USB 3.0 Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT8 fid_PortFlagAcpiUpcValid;
    UINT8 fid_PortConnectorType;
    UINT64 fid_UcmConnectorId;
    UINT32 fid_ControllerParentBusType = MapControllerParentBusType(this);
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ACPI_UPC = FormatString("ACPI _UPC Package for Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    struct  fid_USBHUB_Acpi_Upc_Package
    {
        UINT8 fid_PortIsConnectable;
        UINT8 fid_PortConnectorType;
        UINT32 fid_Reserved0;
        UINT32 fid_Reserved1;
    }
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_ACPI_PLD = FormatString("ACPI _PLD Package for Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    struct  fid_USBHUB_Acpi_Pld
    {
        UINT64 fid_PortPath[2];
    }
}
Struct USBHUB3_ETW_EVENT_HUB_ADD_DEVICE_START = "Start of EvtDeviceAdd for USB Hub" {}; // Empty Struct
Struct USBHUB3_ETW_EVENT_HUB_ADD_DEVICE_COMPLETE = FormatString("Complete EvtDeviceAdd for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_RELEASE_HARDWARE_START = FormatString("Start of EvtDeviceReleaseHardware for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_RELEASE_HARDWARE_COMPLETE = FormatString("Complete EvtDeviceReleaseHardware for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_D0_ENTRY_START = FormatString("Start of EvtDeviceD0Entry for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_TargetState;
    UINT32 fid_PowerAction;
    UINT16 fid_WaitWakePending;
}
Struct USBHUB3_ETW_EVENT_HUB_D0_ENTRY_COMPLETE = FormatString("Complete EvtDeviceD0Entry for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
    UINT32 fid_PowerAction;
}
Struct USBHUB3_ETW_EVENT_HUB_D0_EXIT_START = FormatString("Start of EvtDeviceD0Exit for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_TargetState;
    UINT32 fid_PowerAction;
    UINT16 fid_WaitWakePending;
}
Struct USBHUB3_ETW_EVENT_HUB_D0_EXIT_COMPLETE = FormatString("Complete EvtDeviceD0Exit for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
    UINT32 fid_PowerAction;
}
Struct USBHUB3_ETW_EVENT_HUB_SURPRISE_REMOVAL_START = FormatString("Start of EvtDeviceReleaseHardware for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_SURPRISE_REMOVAL_COMPLETE = FormatString("Complete EvtDeviceReleaseHardware for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_CLEANUP_START = FormatString("Start of EvtDeviceCleanup for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_CLEANUP_COMPLETE = FormatString("Complete EvtDeviceCleanup for USB Hub")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_START = FormatString("Start of EvtDevicePrepareHardware for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_COMPLETE = FormatString("Complete EvtDevicePrepareHardware for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION = FormatString("USB Device Information")
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    InternalUsbTblDeviceDescription fid_DeviceDescription;
    UnicodeString fid_DeviceInterfacePath;
    USB_DEVICE_DESCRIPTOR fid_DeviceDescriptor;
    [Property.InternalUsbDescriptorLength = this]
    UINT16 fid_ConfigurationDescriptorLength;
    USB_DESCRIPTORS ConfigurationDescriptor;
    UnicodeString fid_PdoName;
    UINT8 fid_Suspended;
    UINT32 fid_PortPathDepth;
    UINT32 fid_PortPath[6];
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    UINT32 fid_CurrentWdfPowerDeviceState;
    UINT32 fid_Usb20LpmStatus = Usb20LpmStatus(this);
}
Struct USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION_V1 = FormatString("USB Device Information v1")
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    InternalUsbTblDeviceDescription fid_DeviceDescription;
    UnicodeString fid_DeviceInterfacePath;
    USB_DEVICE_DESCRIPTOR fid_DeviceDescriptor;
    [Property.InternalUsbDescriptorLength = this]
    UINT16 fid_ConfigurationDescriptorLength;
    USB_DESCRIPTORS ConfigurationDescriptor;
    UnicodeString fid_PdoName;
    UINT8 fid_Suspended;
    UINT32 fid_PortPathDepth;
    UINT32 fid_PortPath[6];
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    UINT32 fid_CurrentWdfPowerDeviceState;
    UINT32 fid_Usb20LpmStatus = Usb20LpmStatus(this);
    UINT32 fid_ControllerParentBusType = MapControllerParentBusType(this);
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT8 fid_PortFlagAcpiUpcValid;
    UINT8 fid_PortConnectorType;
    UINT64 fid_UcmConnectorId;
}
Struct USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_DEVICE_INFORMATION_V2 = FormatString("USB Device Information v2")
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    InternalUsbTblDeviceDescription fid_DeviceDescription;
    UnicodeString fid_DeviceInterfacePath;
    USB_DEVICE_DESCRIPTOR fid_DeviceDescriptor;
    [Property.InternalUsbDescriptorLength = this]
    UINT16 fid_ConfigurationDescriptorLength;
    USB_DESCRIPTORS ConfigurationDescriptor;
    UnicodeString fid_PdoName;
    UINT8 fid_Suspended;
    UINT32 fid_PortPathDepth;
    UINT32 fid_PortPath[6];
    UINT32 fid_PciBus;
    UINT32 fid_PciDevice;
    UINT32 fid_PciFunction;
    UINT32 fid_PciVendorId;
    UINT32 fid_PciDeviceId;
    UINT32 fid_PciRevisionId;
    UINT32 fid_CurrentWdfPowerDeviceState;
    UINT32 fid_Usb20LpmStatus = Usb20LpmStatus(this);
    UINT32 fid_ControllerParentBusType = MapControllerParentBusType(this);
    AsciiString fid_AcpiVendorId;
    AsciiString fid_AcpiDeviceId;
    AsciiString fid_AcpiRevisionId;
    UINT8 fid_PortFlagAcpiUpcValid;
    UINT8 fid_PortConnectorType;
    UINT64 fid_UcmConnectorId;
    BOOL fid_GetFirmwareImageHashSupport;
    BOOL fid_DisallowFirmwareUpdateSupport;
    NTSTATUS fid_GetFirmwareHashNtStatus;
    USBD_STATUS fid_UsbdStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_PREPARE_HARDWARE_NESTED_TOO_DEEP = FormatString("USB Hub Nested Too Deeply")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_PREPARE_HARDWARE_UNKNOWN_HUB_TYPE = FormatString("Unknown USB Hub Type")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_ADD_DEVICE_START = "Start of EvtDeviceAdd for USB Device" {}; // Empty Struct
Struct USBHUB3_ETW_EVENT_DEVICE_ADD_DEVICE_COMPLETE = FormatString("Complete EvtDeviceAdd for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_RELEASE_HARDWARE_START = FormatString("Start of EvtDeviceReleaseHardware for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_RELEASE_HARDWARE_COMPLETE = FormatString("Complete EvtDeviceReleaseHardware for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_D0_ENTRY_START = FormatString("Start of EvtDeviceD0Entry for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_TargetState;
    UINT32 fid_PowerAction;
    UINT16 fid_WaitWakePending;
}
Struct USBHUB3_ETW_EVENT_DEVICE_D0_ENTRY_COMPLETE = FormatString("Complete EvtDeviceD0Entry for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
    UINT32 fid_PowerAction;
}
Struct USBHUB3_ETW_EVENT_DEVICE_D0_EXIT_START = FormatString("Start of EvtDeviceD0Exit for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_TargetState;
    UINT32 fid_PowerAction;
    UINT16 fid_WaitWakePending;
}
Struct USBHUB3_ETW_EVENT_DEVICE_D0_EXIT_COMPLETE = FormatString("Complete EvtDeviceD0Exit for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
    UINT32 fid_PowerAction;
}
Struct USBHUB3_ETW_EVENT_DEVICE_SURPRISE_REMOVAL_START = FormatString("Start of EvtDeviceReleaseHardware for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_SURPRISE_REMOVAL_COMPLETE = FormatString("Complete EvtDeviceReleaseHardware for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_CLEANUP_START = FormatString("Start of EvtDeviceCleanup for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_CLEANUP_COMPLETE = FormatString("Complete EvtDeviceCleanup for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_START = FormatString("Start of USB Device Enumeration")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
}
Struct USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_COMPLETE = FormatString("Completion of USB Device Enumeration")
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_RETRY = FormatString("Retry Enumeration")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_MAXIMUM_RETRY_COUNT_REACHED = FormatString("Maximum Enumeration Retry Count Reached")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_FAILED = FormatString("USB Device Enumeration Failed")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_RESET_TIMEOUT = FormatString("Port Reset Timed Out")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_WAS_RESET_ON_RESUME = FormatString("USB Hub Was Reset On Resume")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_PROPERTY_DESCRIPTOR_HEADER = FormatString("Validation Failure of MS OS Extended Property Descriptor Header")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_PROPERTY_DESCRIPTOR = FormatString("Validation Failure of MS OS Extended Property Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_BOS_DESCRIPTOR_HEADER = FormatString("Validation Failure of BOS Descriptor Header")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_BOS_DESCRIPTOR = FormatString("Validation Failure of BOS Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_CONFIGURATION_DESCRIPTOR = FormatString("Validation Failure of Configuration Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_DEVICE_DESCRIPTOR = FormatString("Validation Failure of Device Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_DEVICE_QUALIFIER_DESCRIPTOR = FormatString("Validation Failure of Device Qualifier Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_LANGUAGE_ID_DESCRIPTOR = FormatString("Validation Failure of Language ID String Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_MSOS_CONTAINER_ID_DESCRIPTOR_HEADER = FormatString("Validation Failure of MS OS Container ID Descriptor Header")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_MSOS_CONTAINER_ID_DESCRIPTOR = FormatString("Validation Failure of MS OS Container ID Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_MSOS_DESCRIPTOR = FormatString("Validation Failure of MS OS Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_CONFIGURATION_DESCRIPTOR_HEADER = FormatString("Validation Failure of MS OS Extended Configuration Descriptor Header")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_MSOS_EXTENDED_CONFIGURATION_DESCRIPTOR = FormatString("Validation Failure of MS OS Extended Configuration Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_PRODUCT_ID_STRING_DESCRIPTOR = FormatString("Validation Failure of Product ID String Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_SERIAL_NUMBER_STRING_DESCRIPTOR = FormatString("Validation Failure of Serial Number String Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_MSOS20_DESCRIPTOR_SET = FormatString("Validation Failure of MS OS 2.0 Descriptor Set")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_INTERNAL_IOCTL_START = FormatString("Start of %s for USB Device", UsbIoctlInternalTable(fid_IoctlCode))
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_IoctlCode = FormatString ("%s", UsbIoctlInternalTable(this), this);
}
Struct USBHUB3_ETW_EVENT_DEVICE_INTERNAL_IOCTL_COMPLETE = FormatString("Completion of %s for USB Device", UsbIoctlInternalTable(fid_IoctlCode))
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_IoctlCode = FormatString ("%s", UsbIoctlInternalTable(this), this);
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_URB_START = FormatString("Start URB Client Request for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_UrbFunction = FormatString("%s (0x%x)", USBPort_UsbUrbFunction(this), this);
}
Struct USBHUB3_ETW_EVENT_DEVICE_URB_COMPLETE = FormatString("Completion of URB Client Request for USB Device")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_UrbFunction = FormatString("%s (0x%x)", USBPort_UsbUrbFunction(this), this);
    USBD_STATUS fid_UsbdStatus;
}
Struct USBHUB3_ETW_EVENT_DISPATCH_URB_INVALID_HEADER_LENGTH_WARNING = FormatString("Invalid URB Header Length")
{
    UsbDevicePtr fid_UsbDevice;
    EtlPtr fid_URB_Ptr;
    struct  fid_USBPORT_URB_HEADER
    {
        [Property.USBLength]
        [Property.USBLengthRequested]
        UINT16 fid_URB_Hdr_Length;
        UINT16 fid_URB_Hdr_Function;
        UINT32 fid_URB_Hdr_Status;
        EtlPtr fid_URB_Hdr_UsbdDeviceHandle;
        EtlPtr fid_URB_Hdr_UsbdFlags;
    }
}
Struct USBHUB3_ETW_EVENT_DISPATCH_URB_INVALID_FUNCTION = FormatString("Invalid URB Function")
{
    UsbDevicePtr fid_UsbDevice;
    EtlPtr fid_URB_Ptr;
    struct  fid_USBPORT_URB_HEADER
    {
        [Property.USBLength]
        [Property.USBLengthRequested]
        UINT16 fid_URB_Hdr_Length;
        UINT16 fid_URB_Hdr_Function;
        UINT32 fid_URB_Hdr_Status;
        EtlPtr fid_URB_Hdr_UsbdDeviceHandle;
        EtlPtr fid_URB_Hdr_UsbdFlags;
    }
}
Struct USBHUB3_ETW_EVENT_DEVICE_SUBMIT_IDLE_NOTIFICATION_START = FormatString("Start IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_SUBMIT_IDLE_NOTIFICATION_COMPLETE = FormatString("Complete IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_IDLE_CALLBACK = FormatString("Invoking Idle Notification Callback")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_20_PORT_STATUS = FormatString("Port Status for 2.0 Port: %d, %s", fid_PortNumber, PortStatus.ToString)
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
//  UINT16 fid_PortStatus;
//  UINT16 fid_PortChange;
    Usb2PortStatus PortStatus;
}
Struct USBHUB3_ETW_EVENT_30_PORT_STATUS = FormatString("Port Status for 3.0 Port: %d, %s", fid_PortNumber, PortStatus.ToString)
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
//  UINT16 fid_PortStatus;
//  UINT16 fid_PortChange;
    Usb3PortStatus PortStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_PORT_ACPI_UPC_FAILURE = FormatString("Error Evaluating ACPI _UPC Method for Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_PORT_ACPI_PLD_FAILURE = FormatString("Error Evaluating ACPI _PLD Method for Port")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_STATE_MACHINE = FormatString("State Machine Transition <%s> %s", HubEvent(fid_Event), HubState(fid_State))
{
    UsbDevicePtr fid_UsbDevice;
    EtlPtr fid_Context;
    UINT32 fid_StartIndex;
    UINT32 fid_State;
    UINT32 fid_Event;
    UINT32 fid_Depth;
}
Struct USBHUB3_ETW_EVENT_UNHANDLED_STATE_MACHINE_EVENT = FormatString("Unhandled State Machine Event")
{
    UsbDevicePtr fid_UsbDevice;
    EtlPtr fid_Context;
    UINT32 fid_StartIndex;
    UINT32 fid_State;
    UINT32 fid_Event;
    UINT32 fid_Depth;
}
Struct USBHUB3_ETW_EVENT_HUB_RESET_REQUEST_START = FormatString("Start of Hub Reset Request")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_RESET_REQUEST_COMPLETE = FormatString("Completion of Start Hub Reset Request")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_RESET_DUE_TO_PORT_ERROR = FormatString("Hub Reset Request Due to Port Error")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
}
Struct USBHUB3_ETW_EVENT_PORT_STATUS_ERROR = FormatString("Failure during Port Change Request")
{
    UINT32 fid_PortNumber;
    UINT16 fid_PreviousPortStatus;
    UINT16 fid_CurrentPortStatus;
    UINT16 fid_CurrentPortChange;
    UINT32 fid_Event;
}
Struct USBHUB3_ETW_EVENT_PORT_STATUS_ERROR_V1 = FormatString("Failure during Port Change Request")
{
    UINT32 fid_PortNumber;
    UINT16 fid_PreviousPortStatus;
    UINT16 fid_CurrentPortStatus;
    UINT16 fid_CurrentPortChange;
    UINT32 fid_Event;
    UINT16 fid_idVendor;
    UINT16 fid_idProduct;
    UINT16 fid_bcdDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_CONTROL_TRANSFER_ERROR = FormatString("Hub Control Transfer Error")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    USBD_STATUS fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_PORT_CONTROL_TRANSFER_ERROR = FormatString("Port Control Transfer Error")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    USBD_STATUS fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_CONTROL_TRANSFER_ERROR = FormatString("Device Control Transfer Error")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    USBD_STATUS fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_PORT_INTERRUPT_TRANSFER_ERROR = FormatString("Status Change Interrupt Transfer Error")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_SELECTIVE_SUSPEND_NOT_SUPPORTED = FormatString("SuperSpeed Hub Entered Invalid Power State as It Does Not Support Remote Wake and Selective Suspend")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_INFORMATION_COMPLETE = FormatString("Completion of IOCTL_USB_GET_NODE_INFORMATION")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME_COMPLETE = FormatString("Completion of IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_COMPLETE = FormatString("Completion of IOCTL_USB_GET_NODE_CONNECTION_INFORMATION")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_COMPLETE = FormatString("Completion of IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES_COMPLETE = FormatString("Completion of IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_NAME_COMPLETE = FormatString("Completion of IOCTL_USB_GET_NODE_CONNECTION_NAME")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION_START = FormatString("Start of IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION_COMPLETE = FormatString("Completion of IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_CAPABILITIES_COMPLETE = FormatString("Completion of IOCTL_USB_GET_HUB_CAPABILITIES")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_CAPABILITIES_EX_COMPLETE = FormatString("Completion of IOCTL_USB_GET_HUB_CAPABILITIES_EX")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_HUB_CYCLE_PORT_START = FormatString("Start of IOCTL_USB_HUB_CYCLE_PORT")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_HUB_CYCLE_PORT_COMPLETE = FormatString("Completion of IOCTL_USB_HUB_CYCLE_PORT")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_RESET_HUB_COMPLETE = FormatString("Completion of IOCTL_USB_RESET_HUB")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_UNSUPPORTED_IOCTL_COMPLETE = FormatString("Completion of Unsuppported IOCTL")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES_COMPLETE = FormatString("Completion of IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES")
{
    UsbDevicePtr fid_UsbDeivce;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_HUB_INFORMATION_EX_COMPLETE = FormatString("Completion of IOCTL_USB_GET_HUB_INFORMATION_EX")
{
    UsbDevicePtr fid_UsbDeivce;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_HUB_IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2_COMPLETE = FormatString("Completion of IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_UCX_IOCTL_FAILURE = FormatString("UCX IOCTL Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_IoctlCode;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_DESCRIPTOR_FAILURE = FormatString("Request for Device Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_SET_ADDRESS_FAILURE = FormatString("Set Address Request Failed")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_CONFIG_DESCRIPTOR_FAILURE = FormatString("Request for Configuration Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_SET_SEL_FAILURE = FormatString("Set SEL Request Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_BOS_DESCRIPTOR_FAILURE = FormatString("Request for BOS Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DEVICE_QUALIFIER_DESCRIPTOR_FAILURE = FormatString("Request for Device Qualifier Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_SERIAL_NUMBER_STRING_FAILURE = FormatString("Request for Serial Number String Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_PRODUCT_ID_STRING_FAILURE = FormatString("Request for Product ID String Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_MS_EXT_CONFIG_DESCRIPTOR_FAILURE = FormatString("Request for Microsoft OS Extended Configuration Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_MS_CONTAINER_ID_DESCRIPTOR_FAILURE = FormatString("Request for Microsoft OS Container ID Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_SET_ISOCH_DELAY_FAILURE = FormatString("Device Control Transfer for Set Isoch Delay Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_LANGUAGE_ID_STRING_FAILURE = FormatString("Request for Language ID String Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_REGISTRY_FAILURE = FormatString("Unable to Access Registry")
{
    UsbDevicePtr fid_UsbDevice;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_SSDEVICE_CONNECTED_AT_LS = FormatString("SuperSpeed Device is Connected on the 2.0 Bus")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_HUB_TOO_MANY_RESETS = FormatString("Hub Exceeded Reset Limit. Declaring a PNP failure in the State Machine.")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INTERFACE_WAKE_CAPABILITY_MISMATCH = FormatString("Device Supports Remote Wake in Interface 0. But Does Not Report Remote Wake in the Configuration Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_DeviceIsComposite;
    UINT32 fid_DeviceWakeupSupport;
    UINT16 fid_InterfaceRemoteWakeupCapable;
}
Struct USBHUB3_ETW_EVENT_DESCRIPTOR_VALIDATION_FAILURE = FormatString("Descriptor validation failed for the device for the following reason: %s", DescriptorValidationError(fid_NtStatus))
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_NtStatus = FormatString ("%s", DescriptorValidationError(this), this);
}
Struct USBHUB3_ETW_EVENT_BUS_RENUMERATION = FormatString("Device getting Re-Enumerated. This Enumeration is not Visible to PnP Manager")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_USBENUM_SERIAL_MISMATCH_ON_RENUMERATION = FormatString("New Serial Number does not match Cached Serial Number")
{
    EtlPtr fid_HubDevice;
    AsciiString fid_CachedSerialNumber;
    UINT32 fid_CachedSerialNumberLength;
    UnicodeString fid_NewSerialNumber;
    UINT32 fid_NewSerialNumberLength;
}
Struct USBHUB3_ETW_EVENT_CLIENT_INITIATED_RECOVERY_ACTION = FormatString("Client Initiated Recovery Action")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_IoctlCode;
    UINT32 fid_UrbFunction;
}
Struct USBHUB3_ETW_EVENT_CLIENT_INITIATED_RECOVERY_ACTION_V1 = FormatString("Client Initiated Recovery Action")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_IoctlCode;
    UINT32 fid_UrbFunction;
    UINT16 fid_idVendor;
    UINT16 fid_idProduct;
    UINT16 fid_bcdDevice;
    UINT32 fid_EventCount;
}
Struct USBHUB3_ETW_EVENT_DEVICE_QUERY_USB_CAPABILITY = FormatString("Query USB capability for device")
{
    UsbDevicePtr fid_UsbDevice;
    GUID(true) fid_Capability;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_MSOS20_DESCRIPTOR_FAILURE = FormatString("Request for Microsoft OS 2.0 Descriptor Set Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_MSOS20_SET_ALT_ENUMERATION_FAILURE = FormatString("Microsoft OS 2.0 Set Alternate Enumeration Command Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_SET_U1_ENABLE_FAILURE = FormatString("Set Feature for U1 Enable Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_SET_U2_ENABLE_FAILURE = FormatString("Set Feature for U2 Enable failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    [Property.USBNtStatus = this.ToString] NTSTATUS fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_DESCRIPTOR_VALIDATION_WARNING = FormatString("Descriptor Validation Warning")
{
    EtlPtr fid_HubDevice;
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_BILLBOARD = FormatString("Billboard Detected")
{
    UsbDevicePtr fid_UsbDevice;
    UINT8 fid_bNumberOfAlternateModes;
    UINT8 fid_bPreferredAlternateMode;
    UINT16 fid_VconnPower;
    UnicodeString fid_AdditionalInfoUrlString;
}
Struct USBHUB3_ETW_EVENT_ALTERNATE_MODE_FAILED = FormatString("Alternate Mode Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT16 fid_Svid;
    UINT8 fid_AlternateMode;
    UnicodeString fid_AlternateModeString;
    UINT8 fid_ConfigurationStatus;
}
Struct USBHUB3_ETW_EVENT_ALTERNATE_MODE_ENTERED = FormatString("Alternate Mode Entered")
{
    UsbDevicePtr fid_UsbDevice;
    UINT16 fid_Svid;
    UINT8 fid_AlternateMode;
    UnicodeString fid_AlternateModeString;
    UINT8 fid_ConfigurationStatus;
}
Struct USBHUB3_ETW_EVENT_BILLBOARD_STRING_FAILURE = FormatString("Request for Billboard Additional Information Url String Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    UINT32 fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_ALTERNATE_MODE_STRING_FAILURE = FormatString("Request for Alternate Mode String Descriptor Failed")
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_PortNumber;
    UINT32 fid_UsbdStatus;
    UINT32 fid_NtStatus;
}
Struct USBHUB3_ETW_EVENT_INVALID_BILLBOARD_STRING_DESCRIPTOR = FormatString("Validation Failure of Billboard String Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_INVALID_ALTERNATE_MODE_STRING_DESCRIPTOR = FormatString("Validation Failure of Alternate Mode String Descriptor")
{
    UsbDevicePtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE = FormatString("USB device draining system power when system is idle.                            USB Device: VID: %s PID: %s REV: %s              Action taken: %s", fid_idVendor.ToString, fid_idProduct.ToString, fid_bcdDevice.ToString, fid_DripsWatchdogResult.ToString)
{
    UsbDevicePtr fid_UsbDevice;
    UINT32 fid_DripsWatchdogResult;
    UINT16 fid_idVendor;
    UINT16 fid_idProduct;
    UINT16 fid_bcdDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE_PUBLISH_INFO = FormatString("USB device draining system power when system is idle.                            USB Device: VID: %s PID: %s REV: %s              Action taken: %s", fid_idVendor.ToString, fid_idProduct.ToString, fid_bcdDevice.ToString, fid_DripsWatchdogResult.ToString)
{
    EtlPtr fid_UsbDevice;
    UINT32 fid_DripsWatchdogResult = MapDripsWatchdogResult(this);
    UINT16 fid_idVendor;
    UINT16 fid_idProduct;
    UINT16 fid_bcdDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_DRIPS_WATCHDOG_COMPLETE_PUBLISH_WARNING = FormatString("USB device draining system power when system is idle.                            USB Device: VID: %s PID: %s REV: %s              Removal action failed: %s", fid_idVendor.ToString, fid_idProduct.ToString, fid_bcdDevice.ToString, fid_DripsWatchdogResult.ToString)
{
    EtlPtr fid_UsbDevice;
    UINT32 fid_DripsWatchdogResult = MapDripsWatchdogResult(this);
    UINT16 fid_idVendor;
    UINT16 fid_idProduct;
    UINT16 fid_bcdDevice;
}
Struct USBHUB3_ETW_EVENT_DEVICE_ENUMERATION_FAILURE = FormatString("Device enumeration has failed.")
{
    EtlPtr fid_UsbDevice;
}
Struct USBHUB3_ETW_EVENT_ILLEGAL_ENDPOINT_SHARING_ACROSS_INTERFACES = FormatString("Illegal Endpoint Sharing Across Interfaces.")
{
    EtlPtr fid_UsbDevice;
}
[RegisterBefore(EventDescriptor.DefaultKeyword, MicrosoftWindowsUSBUSBHUB3_Keyword, "{AC52AD17-CC01-4F85-8DF5-4DCE4333C99B}")]
struct MicrosoftWindowsUSBUSBHUB3_Keyword
{
    UINT64 Default:1 = FormatString("            (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_DEFAULT":"");
    UINT64 USBError:1 = FormatString("           (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_USBERROR":"");
    UINT64 IRP:1 = FormatString("                (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_IRP":"");
    UINT64 Power:1 = FormatString("              (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_POWER":"");
    UINT64 PnP:1 = FormatString("                (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_PNP":"");
    UINT64 Performance:1 = FormatString("        (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_PERFORMANCE":"");
    UINT64 HeadersBusTrace:1 = FormatString("    (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_HEADERS_BUS_TRACE":"");
    UINT64 PartialDataBusTrace:1 = FormatString("(%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_PARTIAL_DATA_BUS_TRACE":"");
    UINT64 FullDataBusTrace:1 = FormatString("   (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_FULL_DATA_BUS_TRACE":"");
    UINT64 StateMachine:1 = FormatString("       (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_STATEMACHINE":"");
    UINT64 Enumeration:1 = FormatString("        (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_ENUMERATION":"");
    UINT64 VerifyDriver:1 = FormatString("       (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_VERIFYDRIVER":"");
    UINT64 HWVerifyHost:1 = FormatString("       (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_HW_VERIFYHOST":"");
    UINT64 HWVerifyHub:1 = FormatString("        (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_HW_VERIFYHUB":"");
    UINT64 HWVerifyDevice:1 = FormatString("     (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_HW_VERIFYDEVICE":"");
    UINT64 Rundown:1 = FormatString("            (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_RUNDOWN":"");
    UINT64 Device:1 = FormatString("             (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_DEVICE":"");
    UINT64 Hub:1 = FormatString("                (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_HUB":"");
    UINT64 Compat:1 = FormatString("             (%s) %s", this.ToBitString, this? "USBHUB3_ETW_KEYWORD_COMPAT":"");
    UINT64 ControllerCommand:1 = FormatString("  (%s) %s", this.ToBitString, this? "USBXHCI_ETW_KEYWORD_CONTROLLER_COMMAND":"");
    UINT64 Reserved1:44 = FormatString("          (%s)", this.ToBitString);
}

//
// Added structs
//

[Global.InternalUsbTblDeviceDescription$[Property.USBDevicePtr] = this.ToString]
Struct InternalUsbTblDeviceDescription = String.ToString
{
    UnicodeString String;
}

struct InitialUcxControllerPtr = Pointer.Ptr.ToString
{
    [Global.ControllerIndex = Global.ControllerIndex + 1]
    [Property.UcxControllerPtr = Pointer.Ptr.ToString]
    [Global.InternalUsbTblControllerIndex$[Pointer.Ptr.ToString] = Global.ControllerIndex]
    [Property.USBControllerIndex = Global.InternalUsbTblControllerIndex$[Pointer.Ptr.ToString]]
    [Property.USBHostController = Global.InternalUsbTblController$[Pointer.Ptr.ToString]]
    EtlPtr Pointer;
}

Struct UcxControllerPtr = Pointer.Ptr.ToString
{
    [Property.UcxControllerPtr = Pointer.Ptr.ToString]
    [Property.USBControllerIndex = Global.InternalUsbTblControllerIndex$[Pointer.Ptr.ToString]]
    [Property.USBHostController = Global.InternalUsbTblController$[Pointer.Ptr.ToString]]
    EtlPtr Pointer;
}

Struct InitialUsbDevicePtr = Pointer.Ptr.ToString
{
    [Property.USBDevicePtr = Pointer.Ptr.ToString]
    [Global.InternalUsbTblControllerFromDevice$[Pointer.Ptr.ToString] = Property.UcxControllerPtr]
    [Post.Property.UcxControllerPtr = Global.InternalUsbTblControllerFromDevice$[Pointer.Ptr.ToString]]
    [Post.Property.USBHostController = Global.InternalUsbTblController$[Property.UcxControllerPtr]]
    [Post.Property.USBControllerIndex = Global.InternalUsbTblControllerIndex$[Property.UcxControllerPtr]]

    EtlPtr Pointer;
}

Struct UsbDevicePtr = Pointer.Ptr.ToString
{
    [Property.USBDevicePtr = Pointer.Ptr.ToString]
    [Post.Property.UcxControllerPtr = Global.InternalUsbTblControllerFromDevice$[Pointer.Ptr.ToString]]
    [Post.Property.USBHostController = Global.InternalUsbTblController$[Property.UcxControllerPtr]]
    [Post.Property.USBControllerIndex = Global.InternalUsbTblControllerIndex$[Property.UcxControllerPtr]]

    // Get all device attributes from global tables into event properties
    // These can be filtered by the user, and used by the parser in processing subsequent frame data
    [Post.Property.USBVid = Global.InternalUsbTblVid$[Property.USBDevicePtr]]
    [Post.Property.USBPid = Global.InternalUsbTblPid$[Property.USBDevicePtr]]
    [Post.Property.USBSpeed = Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr]]
    [Post.Property.USBPortPath = Global.InternalUsbTblPortPath$[Property.USBDevicePtr]]
    [Post.Property.USBDeviceDescription = Global.InternalUsbTblDeviceDescription$[Property.USBDevicePtr]]
    [Post.Property.USBClass = Global.InternalUsbTblClass$[Property.USBDevicePtr]]
    [Post.Property.USBSubclass = Global.InternalUsbTblSubclass$[Property.USBDevicePtr]]
    [Post.Property.USBProtocol = Global.InternalUsbTblProtocol$[Property.USBDevicePtr]]
    EtlPtr Pointer;
}

struct InitialUsbEndpointPtr = Pointer.Ptr.ToString
{
    [Property.USBEndpointPtr = Pointer.Ptr.ToString]
    [Global.InternalUsbTblDeviceFromEndpoint$[Pointer.Ptr.ToString] = Property.USBDevicePtr]
    [Post.Property.USBDevicePtr = Global.InternalUsbTblDeviceFromEndpoint$[Pointer.Ptr.ToString]]
    [Post.Property.UcxControllerPtr = Global.InternalUsbTblControllerFromDevice$[Property.USBDevicePtr]]
    [Post.Property.USBHostController = Global.InternalUsbTblController$[Property.UcxControllerPtr]]
    [Post.Property.USBControllerIndex = Global.InternalUsbTblControllerIndex$[Property.UcxControllerPtr]]
    [Post.Property.USBEndpointAddress = Global.InternalUsbTblEndpointAddressFromEpPointer$[Pointer.Ptr.ToString]]
    [Post.Property.USBEndpointType = Global.InternalUsbTblEndpointTypeFromEpPointer$[Pointer.Ptr.ToString]]
    [Post.Property.USBEndpointMaxPacketSize = Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Pointer.Ptr.ToString]]
    [Post.Property.USBEndpointInterval = Global.InternalUsbTblEndpointIntervalFromEpPointer$[Pointer.Ptr.ToString]]
    EtlPtr Pointer;
}

// Some events have endpoint pointer, some have pipe handle, some have both
// The same properties are set on both of them

Struct UsbEndpointPtr = Pointer.Ptr.ToString
{
    [Property.USBEndpointPtr = Pointer.Ptr.ToString]

    [Post.Property.USBDevicePtr = Global.InternalUsbTblDeviceFromEndpoint$[Pointer.Ptr.ToString]]
    [Post.Property.UcxControllerPtr = Global.InternalUsbTblControllerFromDevice$[Property.USBDevicePtr]]
    [Post.Property.USBHostController = Global.InternalUsbTblController$[Property.UcxControllerPtr]]
    [Post.Property.USBControllerIndex = Global.InternalUsbTblControllerIndex$[Property.UcxControllerPtr]]

    [Post.Property.USBVid = Global.InternalUsbTblVid$[Property.USBDevicePtr]]
    [Post.Property.USBPid = Global.InternalUsbTblPid$[Property.USBDevicePtr]]
    [Post.Property.USBSpeed = Global.InternalUsbTblDeviceSpeedFromDeviceHandle$[Property.USBDevicePtr]]
    [Post.Property.USBPortPath = Global.InternalUsbTblPortPath$[Property.USBDevicePtr]]
    [Post.Property.USBDeviceDescription = Global.InternalUsbTblDeviceDescription$[Property.USBDevicePtr]]
    [Post.Property.USBClass = Global.InternalUsbTblClass$[Property.USBDevicePtr]]
    [Post.Property.USBSubclass = Global.InternalUsbTblSubclass$[Property.USBDevicePtr]]
    [Post.Property.USBProtocol = Global.InternalUsbTblProtocol$[Property.USBDevicePtr]]

    // Get all endpoint attributes from global tables into event properties
    [Global.InternalUsbTblFrameNumberToUSBEndpoint$[FrameNumber] = Global.InternalUsbTblEndpoint$[Pointer.Ptr]]
    [Post.Property.USBEndpoint = Global.InternalUsbTblFrameNumberToUSBEndpoint$[FrameNumber]]
    [Post.Property.USBEndpointAddress = Global.InternalUsbTblEndpointAddressFromEpPointer$[Pointer.Ptr.ToString]]
    [Post.Property.USBEndpointType = Global.InternalUsbTblEndpointTypeFromEpPointer$[Pointer.Ptr.ToString]]
    [Post.Property.USBEndpointMaxPacketSize = Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Pointer.Ptr.ToString]]
    [Post.Property.USBEndpointInterval = Global.InternalUsbTblEndpointIntervalFromEpPointer$[Pointer.Ptr.ToString]]
    EtlPtr Pointer;
}

// TODO: This can probably be reduced to a simple property once USB3 URB events have EndpointPtr. Also move UsbEndpointPtr to etl_usb3.npl and delete references to USBPipeHandle in that file.
Struct UsbPipeHandle = Pointer.Ptr.ToString
{
    [Property.USBPipeHandle = Pointer.Ptr]
    // Get all endpoint attributes from global tables into event properties
    // Don't overwrite USBEndpoint (address) if it's already been found
    [Global.InternalUsbTblFrameNumberToUSBEndpoint$[FrameNumber] = !IsValueNone(Global.InternalUsbTblFrameNumberToUSBEndpoint$[FrameNumber]) ? Global.InternalUsbTblFrameNumberToUSBEndpoint$[FrameNumber] : Global.InternalUsbTblEndpoint$[Pointer.Ptr]]
    [Post.Property.USBEndpoint = !IsValueNone(Property.USBEndpoint) ? Property.USBEndpoint : Global.InternalUsbTblFrameNumberToUSBEndpoint$[FrameNumber]]
    [Post.Property.USBEndpointAddress = !IsValueNone(Property.USBEndpointAddress) ? Property.USBEndpointAddress : Global.InternalUsbTblFrameNumberToUSBEndpoint$[FrameNumber]]
    [Post.Property.USBEndpointType = !IsValueNone(Property.USBEndpointType) ? Property.USBEndpointType :Global.InternalUsbTblEndpointTypeFromEpPointer$[Property.USBPipeHandle]]
    [Post.Property.USBEndpointMaxPacketSize = !IsValueNone(Property.USBEndpointMaxPacketSize) ? Property.USBEndpointMaxPacketSize :Global.InternalUsbTblEndpointMaxPacketSizeFromEpPointer$[Property.USBPipeHandle]]
    [Post.Property.USBEndpointInterval = !IsValueNone(Property.USBEndpointInterval) ? Property.USBEndpointInterval :Global.InternalUsbTblEndpointIntervalFromEpPointer$[Property.USBPipeHandle]]
    EtlPtr Pointer;
}

Struct Usb3PortStatus = FormatString("%s %s", wPortStatus.ToString, wPortChange.ToString)
{
    UINT16 wPortStatus = UsbPortLinkState(PORT_LINK_STATE)
    {
        UINT16 PORT_CONNECTION:1 = FormatString("  (%s) %s", this.ToBitString, this == 0 ? "" : "PORT_CONNECTION");
        UINT16 PORT_ENABLE:1 = FormatString("      (%s) %s", this.ToBitString, this == 0 ? "" : "PORT_ENABLE");
        UINT16 Reserved:1;
        UINT16 PORT_OVER_CURRENT:1 = FormatString("(%s) %s", this.ToBitString, this == 0 ? "" : "PORT_OVER_CURRENT");
        UINT16 PORT_RESET:1 = FormatString("       (%s) %s", this.ToBitString, this == 0 ? "" : "PORT_RESET");
        UINT16 PORT_LINK_STATE:4 = FormatString("  -- %s --", UsbPortLinkState(this));
        UINT16 PORT_POWER:1 = FormatString("       (%s) %s", this.ToBitString, this == 0 ? "" : "PORT_POWER");
        UINT16 PORT_SPEED:3 = FormatString("       -- %s --", UsbSuperSpeedSpeed(this));
        UINT16 Reserved2:3;
    }
    UINT16 wPortChange = UsbPortChangeBitsStringMap(this)
    {
        [Property.USBIsConnect = (this == 1 && wPortStatus.PORT_CONNECTION == 1) ? 1 : 0]
        [Property.USBIsDisconnect = (this == 1 && wPortStatus.PORT_CONNECTION == 0) ? 1 : 0]
        UINT16 C_PORT_CONNECTION:1 = FormatString("         (%s) %s", this.ToBitString, this == 0 ? "" : "C_PORT_CONNECTION");
        UINT16 Reserved:2;
        UINT16 C_PORT_OVER_CURRENT:1 = FormatString("       (%s) %s", this.ToBitString, this == 0 ? "" : "C_PORT_OVER_CURRENT");
        UINT16 C_PORT_RESET:1 = FormatString("              (%s) %s", this.ToBitString, this == 0 ? "" : "C_PORT_RESET");
        UINT16 C_BH_PORT_RESET:1 = FormatString("           (%s) %s", this.ToBitString, this == 0 ? "" : "C_BH_PORT_RESET");
        UINT16 C_PORT_LINK_STATE:1 = FormatString("         (%s) %s", this.ToBitString, this == 0 ? "" : "C_PORT_LINK_STATE");
        UINT16 C_PORT_CONFIG_ERROR:1 = FormatString("       (%s) %s", this.ToBitString, this == 0 ? "" : "C_PORT_CONFIG_ERROR");
        UINT16 Reserved2:8;
    }
}

Table UsbPortLinkState(value)
{
    switch (value)
    {
        case  0: "U0";
        case  1: "U1";
        case  2: "U2";
        case  3: "U3 (Device Suspended)";
        case  4: "SS.Disabled";
        case  5: "Rx.Detect";
        case  6: "SS.Inactive";
        case  7: "Polling";
        case  8: "Recovery";
        case  9: "Hot Reset";
        case 10: "Compliance Mode";
        case 11: "Loopback";
        case 12: "Reserved12";
        case 13: "Reserved13";
        case 14: "Reserved14";
        case 15: "Resume"; // xHCI PORTSC only, won't see this in hub ETW
        default: "UNKNOWN";
    }
}

// This is really for future use, defined as "Negotiated speed of the SuperSpeed Device Attached to this port"
Table UsbSuperSpeedSpeed(value)
{
    switch (value)
    {
        case 0: "5 Gbps";
        default: "UNKNOWN";
    }
}

// Descriptions for common values of hub port status change bits. Works for 2.0 and 3.0
Table UsbPortChangeBitsStringMap(value)
{
    switch (value)
    {
        case 0x0: "No change";
        case 0x1: "Changed PORT_CONNECTION";
        case 0x2: "Changed PORT_ENABLE";
        case 0x4: "Changed PORT_SUSPEND";
        case 0x8: "Changed PORT_OVER_CURRENT";
        case 0x10: "Changed PORT_RESET";
        case 0x20: "Changed BH_PORT_RESET";
        case 0x40: "Changed PORT_LINK_STATE";
        case 0x80: "Changed PORT_CONFIG_ERROR";
        default: FormatString("%s (Multiple changes, expand)", value.ToBitString);
    }
}

// TRB structure is defined in the xHCI specification
Struct TRB = GenericTrb.ToString
{
    // Currently we don't parse any specific TRB types. Just get the data common to all TRBs.
    GenericTrb GenericTrb;
}

Struct GenericTrb = TrbType.ToString
{
    UINT64 TypeDependentQword;
    UINT32 TypeDependentDword;
    UINT32 CycleBit:1;
    UINT32 TypeDependent1:9;
    UINT32 TrbType:6 = TrbType(this);
    UINT32 TypeDependent2:8;
    UINT32 TypeDependent3:8;
}

Table TrbType(value)
{
    switch (value)
    {
        case 0:  "RESERVED";
        case 1:  "NORMAL";
        case 2:  "SETUP_STAGE";
        case 3:  "DATA_STAGE";
        case 4:  "STATUS_STAGE";
        case 5:  "ISOCH";
        case 6:  "LINK";
        case 7:  "EVENT_DATA";
        case 9:  "ENABLE_SLOT_COMMAND";
        case 10: "DISABLE_SLOT_COMMAND";
        case 11: "ADDRESS_DEVICE_COMMAND";
        case 12: "CONFIGURE_ENDPOINT_COMMAND";
        case 13: "EVALUATE_CONTEXT_COMMAND";
        case 14: "RESET_ENDPOINT_COMMAND";
        case 15: "STOP_ENDPOINT_COMMAND";
        case 16: "SET_DEQUEUE_POINTER_COMMAND";
        case 17: "RESET_DEVICE_COMMAND";
        case 18: "FORCE_EVENT_COMMAND";
        case 19: "NEGOTIATE_BANDWIDTH_COMMAND";
        case 20: "SET_LATENCY_TOLERANCE_VALUE_COMMAND";
        case 21: "GET_PORT_BANDWIDTH_COMMAND";
        case 22: "FORCE_HEADER_COMMAND";
        case 23: "NO_OP_COMMAND";
        case 32: "TRANSFER_EVENT";
        case 33: "COMMAND_COMPLETION_EVENT";
        case 34: "PORT_STATUS_CHANGE_EVENT";
        case 35: "BANDWIDTH_REQUEST_EVENT";
        case 36: "DOORBELL_EVENT";
        case 37: "HOST_CONTROLLER_EVENT";
        case 38: "DEVICE_NOTIFICATION_EVENT";
        case 39: "MFINDEX_WRAP_EVENT";
        default: FormatString("Unknown TRB type %d", value);
    }
}

Table EndpointType(value)
{
    switch (value)
    {
        case 0x0: "Control";
        case 0x2: "Bulk";

        case 0x3: "Interrupt";
        case 0x13: "Interrupt (Notification)";

        case 0x01: "Isoch";
        case 0x05: "Isoch (Async, Data)";
        case 0x09: "Isoch (Adaptive, Data)";
        case 0x0D: "Isoch (Sync, Data)";

        case 0x11: "Isoch (Periodic, Feedback)";
        case 0x15: "Isoch (Async, Feedback)";
        case 0x19: "Isoch (Adaptive, Feedback)";
        case 0x1D: "Isoch (Sync, Feedback)";

        case 0x21: "Isoch (Periodic, Implicit Feedback Data)";
        case 0x25: "Isoch (Async, Implicit Feedback Data)";
        case 0x29: "Isoch (Adaptive, Implicit Feedback Data)";
        case 0x2D: "Isoch (Sync, Implicit Feedback Data)";

        default: FormatString("Unknown endpoint type");
    }
}

Table UsbDeviceSpeed (value)
{
    switch (value)
    {
        case 0: "LS";
        case 1: "FS";
        case 2: "HS";
        case 3: "SS";

        default: FormatString("Unknown speed");
    }
}