/*** Autogenerated by WIDL 11.0 from /home/runner/.termux-build/wine-stable/src/include/windows.devices.usb.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __windows_devices_usb_h__
#define __windows_devices_usb_h__

/* Forward declarations */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor ABI::Windows::Devices::Usb::IUsbBulkInEndpointDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbBulkInEndpointDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe ABI::Windows::Devices::Usb::IUsbBulkInPipe
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbBulkInPipe;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor ABI::Windows::Devices::Usb::IUsbBulkOutEndpointDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbBulkOutEndpointDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe ABI::Windows::Devices::Usb::IUsbBulkOutPipe
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbBulkOutPipe;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration ABI::Windows::Devices::Usb::IUsbConfiguration
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbConfiguration;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor ABI::Windows::Devices::Usb::IUsbConfigurationDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbConfigurationDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics ABI::Windows::Devices::Usb::IUsbConfigurationDescriptorStatics
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbConfigurationDescriptorStatics;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType ABI::Windows::Devices::Usb::IUsbControlRequestType
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbControlRequestType;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor ABI::Windows::Devices::Usb::IUsbDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice ABI::Windows::Devices::Usb::IUsbDevice
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDevice;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass ABI::Windows::Devices::Usb::IUsbDeviceClass
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDeviceClass;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor ABI::Windows::Devices::Usb::IUsbDeviceDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDeviceDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics ABI::Windows::Devices::Usb::IUsbDeviceStatics
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDeviceStatics;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface ABI::Windows::Devices::Usb::IUsbInterface
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterface;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor ABI::Windows::Devices::Usb::IUsbInterfaceDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterfaceDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics ABI::Windows::Devices::Usb::IUsbInterfaceDescriptorStatics
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterfaceDescriptorStatics;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting ABI::Windows::Devices::Usb::IUsbInterfaceSetting
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterfaceSetting;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor ABI::Windows::Devices::Usb::IUsbInterruptInEndpointDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptInEndpointDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs ABI::Windows::Devices::Usb::IUsbInterruptInEventArgs
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptInEventArgs;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe ABI::Windows::Devices::Usb::IUsbInterruptInPipe
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptInPipe;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor ABI::Windows::Devices::Usb::IUsbInterruptOutEndpointDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptOutEndpointDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe ABI::Windows::Devices::Usb::IUsbInterruptOutPipe
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptOutPipe;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket ABI::Windows::Devices::Usb::IUsbSetupPacket
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbSetupPacket;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkInEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkInEndpointDescriptor_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbBulkInEndpointDescriptor;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbBulkInEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CUsbBulkInEndpointDescriptor;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkInEndpointDescriptor_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkInPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkInPipe_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbBulkInPipe;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbBulkInPipe __x_ABI_CWindows_CDevices_CUsb_CUsbBulkInPipe;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkInPipe_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutEndpointDescriptor_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbBulkOutEndpointDescriptor;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutEndpointDescriptor;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutEndpointDescriptor_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutPipe_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbBulkOutPipe;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutPipe __x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutPipe;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbBulkOutPipe_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbConfiguration_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbConfiguration_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbConfiguration;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbConfiguration __x_ABI_CWindows_CDevices_CUsb_CUsbConfiguration;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbConfiguration_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbConfigurationDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbConfigurationDescriptor_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbConfigurationDescriptor;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbConfigurationDescriptor __x_ABI_CWindows_CDevices_CUsb_CUsbConfigurationDescriptor;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbConfigurationDescriptor_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbControlRequestType_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbControlRequestType_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbControlRequestType;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbControlRequestType __x_ABI_CWindows_CDevices_CUsb_CUsbControlRequestType;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbControlRequestType_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbDescriptor_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbDescriptor;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbDescriptor __x_ABI_CWindows_CDevices_CUsb_CUsbDescriptor;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbDescriptor_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbDevice_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbDevice_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbDevice;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbDevice __x_ABI_CWindows_CDevices_CUsb_CUsbDevice;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbDevice_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbDeviceClass_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbDeviceClass_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbDeviceClass;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbDeviceClass __x_ABI_CWindows_CDevices_CUsb_CUsbDeviceClass;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbDeviceClass_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbDeviceDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbDeviceDescriptor_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbDeviceDescriptor;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbDeviceDescriptor __x_ABI_CWindows_CDevices_CUsb_CUsbDeviceDescriptor;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbDeviceDescriptor_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbInterface_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbInterface_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbInterface;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbInterface __x_ABI_CWindows_CDevices_CUsb_CUsbInterface;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbInterface_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceDescriptor_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbInterfaceDescriptor;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceDescriptor __x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceDescriptor;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceDescriptor_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceSetting_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceSetting_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbInterfaceSetting;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceSetting __x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceSetting;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbInterfaceSetting_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEventArgs_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEventArgs_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbInterruptInEventArgs;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEventArgs __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEventArgs;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEventArgs_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEndpointDescriptor_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbInterruptInEndpointDescriptor;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEndpointDescriptor;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInEndpointDescriptor_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInPipe_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbInterruptInPipe;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInPipe __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInPipe;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptInPipe_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbInterruptOutEndpointDescriptor;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutEndpointDescriptor;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutEndpointDescriptor_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutPipe_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbInterruptOutPipe;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutPipe __x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutPipe;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbInterruptOutPipe_FWD_DEFINED__ */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbSetupPacket_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbSetupPacket_FWD_DEFINED__
#ifdef __cplusplus
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                class UsbSetupPacket;
            }
        }
    }
}
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CUsbSetupPacket __x_ABI_CWindows_CDevices_CUsb_CUsbSetupPacket;
#endif /* defined __cplusplus */
#endif /* defined ____x_ABI_CWindows_CDevices_CUsb_CUsbSetupPacket_FWD_DEFINED__ */

#ifndef ____FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_FWD_DEFINED__
#define ____FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_FWD_DEFINED__
typedef interface __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice;
#ifdef __cplusplus
#define __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice ABI::Windows::Foundation::IAsyncOperationCompletedHandler<ABI::Windows::Devices::Usb::UsbDevice* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkInPipe* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutPipe* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterface* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterfaceSetting* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInPipe* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutPipe* >
#endif /* __cplusplus */
#endif

#ifndef ____FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_FWD_DEFINED__
#define ____FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_FWD_DEFINED__
typedef interface __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice;
#ifdef __cplusplus
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Devices::Usb::UsbDevice* >
#endif /* __cplusplus */
#endif

#ifndef ____FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_FWD_DEFINED__
#define ____FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_FWD_DEFINED__
typedef interface __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs;
#ifdef __cplusplus
#define __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs ABI::Windows::Foundation::ITypedEventHandler<ABI::Windows::Devices::Usb::UsbInterruptInPipe*,ABI::Windows::Devices::Usb::UsbInterruptInEventArgs* >
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <inspectable.h>
#include <asyncinfo.h>
#include <eventtoken.h>
#include <windowscontracts.h>
#include <windows.foundation.h>
#include <windows.storage.streams.h>

#ifdef __cplusplus
extern "C" {
#endif

#if !defined(WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION)
#define WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION 0xe0000
#endif // defined(WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION)

#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient_ENUM_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient_ENUM_DEFINED__
#ifdef __cplusplus
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                enum UsbControlRecipient {
                    UsbControlRecipient_Device = 0,
                    UsbControlRecipient_SpecifiedInterface = 1,
                    UsbControlRecipient_Endpoint = 2,
                    UsbControlRecipient_Other = 3,
                    UsbControlRecipient_DefaultInterface = 4
                };
            }
        }
    }
}
extern "C" {
#else
enum __x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient {
    UsbControlRecipient_Device = 0,
    UsbControlRecipient_SpecifiedInterface = 1,
    UsbControlRecipient_Endpoint = 2,
    UsbControlRecipient_Other = 3,
    UsbControlRecipient_DefaultInterface = 4
};
#ifdef WIDL_using_Windows_Devices_Usb
#define UsbControlRecipient __x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif /* ____x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient_ENUM_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
#ifndef __cplusplus
typedef enum __x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient __x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient;
#endif /* __cplusplus */

#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType_ENUM_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType_ENUM_DEFINED__
#ifdef __cplusplus
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                enum UsbControlTransferType {
                    UsbControlTransferType_Standard = 0,
                    UsbControlTransferType_Class = 1,
                    UsbControlTransferType_Vendor = 2
                };
            }
        }
    }
}
extern "C" {
#else
enum __x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType {
    UsbControlTransferType_Standard = 0,
    UsbControlTransferType_Class = 1,
    UsbControlTransferType_Vendor = 2
};
#ifdef WIDL_using_Windows_Devices_Usb
#define UsbControlTransferType __x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif /* ____x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType_ENUM_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
#ifndef __cplusplus
typedef enum __x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType __x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType;
#endif /* __cplusplus */

#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions_ENUM_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions_ENUM_DEFINED__
#ifdef __cplusplus
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                enum UsbReadOptions {
                    UsbReadOptions_None = 0x0,
                    UsbReadOptions_AutoClearStall = 0x1,
                    UsbReadOptions_OverrideAutomaticBufferManagement = 0x2,
                    UsbReadOptions_IgnoreShortPacket = 0x4,
                    UsbReadOptions_AllowPartialReads = 0x8
                };
            }
        }
    }
}
extern "C" {
#else
enum __x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions {
    UsbReadOptions_None = 0x0,
    UsbReadOptions_AutoClearStall = 0x1,
    UsbReadOptions_OverrideAutomaticBufferManagement = 0x2,
    UsbReadOptions_IgnoreShortPacket = 0x4,
    UsbReadOptions_AllowPartialReads = 0x8
};
#ifdef WIDL_using_Windows_Devices_Usb
#define UsbReadOptions __x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif /* ____x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions_ENUM_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
#ifndef __cplusplus
typedef enum __x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions __x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions;
#endif /* __cplusplus */

#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection_ENUM_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection_ENUM_DEFINED__
#ifdef __cplusplus
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                enum UsbTransferDirection {
                    UsbTransferDirection_Out = 0,
                    UsbTransferDirection_In = 1
                };
            }
        }
    }
}
extern "C" {
#else
enum __x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection {
    UsbTransferDirection_Out = 0,
    UsbTransferDirection_In = 1
};
#ifdef WIDL_using_Windows_Devices_Usb
#define UsbTransferDirection __x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif /* ____x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection_ENUM_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
#ifndef __cplusplus
typedef enum __x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection __x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection;
#endif /* __cplusplus */

#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions_ENUM_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions_ENUM_DEFINED__
#ifdef __cplusplus
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                enum UsbWriteOptions {
                    UsbWriteOptions_None = 0x0,
                    UsbWriteOptions_AutoClearStall = 0x1,
                    UsbWriteOptions_ShortPacketTerminate = 0x2
                };
            }
        }
    }
}
extern "C" {
#else
enum __x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions {
    UsbWriteOptions_None = 0x0,
    UsbWriteOptions_AutoClearStall = 0x1,
    UsbWriteOptions_ShortPacketTerminate = 0x2
};
#ifdef WIDL_using_Windows_Devices_Usb
#define UsbWriteOptions __x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif /* ____x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions_ENUM_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */
#ifndef __cplusplus
typedef enum __x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions __x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions;
#endif /* __cplusplus */

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor ABI::Windows::Devices::Usb::IUsbBulkInEndpointDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbBulkInEndpointDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe ABI::Windows::Devices::Usb::IUsbBulkInPipe
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbBulkInPipe;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice ABI::Windows::Devices::Usb::IUsbDevice
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDevice;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass ABI::Windows::Devices::Usb::IUsbDeviceClass
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDeviceClass;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration ABI::Windows::Devices::Usb::IUsbConfiguration
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbConfiguration;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor ABI::Windows::Devices::Usb::IUsbConfigurationDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbConfigurationDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics ABI::Windows::Devices::Usb::IUsbConfigurationDescriptorStatics
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbConfigurationDescriptorStatics;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType ABI::Windows::Devices::Usb::IUsbControlRequestType
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbControlRequestType;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor ABI::Windows::Devices::Usb::IUsbDeviceDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDeviceDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics ABI::Windows::Devices::Usb::IUsbDeviceStatics
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbDeviceStatics;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface ABI::Windows::Devices::Usb::IUsbInterface
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterface;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor ABI::Windows::Devices::Usb::IUsbInterfaceDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterfaceDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics ABI::Windows::Devices::Usb::IUsbInterfaceDescriptorStatics
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterfaceDescriptorStatics;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor ABI::Windows::Devices::Usb::IUsbInterruptInEndpointDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptInEndpointDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs ABI::Windows::Devices::Usb::IUsbInterruptInEventArgs
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptInEventArgs;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe ABI::Windows::Devices::Usb::IUsbInterruptInPipe
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptInPipe;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor ABI::Windows::Devices::Usb::IUsbInterruptOutEndpointDescriptor
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptOutEndpointDescriptor;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe ABI::Windows::Devices::Usb::IUsbInterruptOutPipe
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbInterruptOutPipe;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket ABI::Windows::Devices::Usb::IUsbSetupPacket
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbSetupPacket;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketFactory_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketFactory_FWD_DEFINED__
typedef interface __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketFactory __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketFactory;
#ifdef __cplusplus
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketFactory ABI::Windows::Devices::Usb::IUsbSetupPacketFactory
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                interface IUsbSetupPacketFactory;
            }
        }
    }
}
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkInPipe* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutPipe* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterface* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterfaceSetting* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInPipe* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor* >
#endif /* __cplusplus */
#endif

#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_FWD_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_FWD_DEFINED__
typedef interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe;
#ifdef __cplusplus
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutPipe* >
#endif /* __cplusplus */
#endif

#ifndef ____FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_FWD_DEFINED__
#define ____FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_FWD_DEFINED__
typedef interface __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice;
#ifdef __cplusplus
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Devices::Usb::UsbDevice* >
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IUsbBulkInEndpointDescriptor interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor, 0x3c6e4846, 0x06cf, 0x42a9, 0x9d,0xc2, 0x97,0x1c,0x1b,0x14,0xb6,0xe3);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("3c6e4846-06cf-42a9-9dc2-971c1b14b6e3")
                IUsbBulkInEndpointDescriptor : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_MaxPacketSize(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_EndpointNumber(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Pipe(
                        ABI::Windows::Devices::Usb::IUsbBulkInPipe **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor, 0x3c6e4846, 0x06cf, 0x42a9, 0x9d,0xc2, 0x97,0x1c,0x1b,0x14,0xb6,0xe3)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This,
        TrustLevel *trustLevel);

    /*** IUsbBulkInEndpointDescriptor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_MaxPacketSize)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_EndpointNumber)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_Pipe)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptorVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbBulkInEndpointDescriptor methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_MaxPacketSize(This,value) (This)->lpVtbl->get_MaxPacketSize(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_EndpointNumber(This,value) (This)->lpVtbl->get_EndpointNumber(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_Pipe(This,value) (This)->lpVtbl->get_Pipe(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbBulkInEndpointDescriptor methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_MaxPacketSize(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_MaxPacketSize(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_EndpointNumber(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_EndpointNumber(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_Pipe(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe **value) {
    return This->lpVtbl->get_Pipe(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbBulkInEndpointDescriptor IID___x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor
#define IUsbBulkInEndpointDescriptorVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptorVtbl
#define IUsbBulkInEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor
#define IUsbBulkInEndpointDescriptor_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_QueryInterface
#define IUsbBulkInEndpointDescriptor_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_AddRef
#define IUsbBulkInEndpointDescriptor_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_Release
#define IUsbBulkInEndpointDescriptor_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetIids
#define IUsbBulkInEndpointDescriptor_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetRuntimeClassName
#define IUsbBulkInEndpointDescriptor_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_GetTrustLevel
#define IUsbBulkInEndpointDescriptor_get_MaxPacketSize __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_MaxPacketSize
#define IUsbBulkInEndpointDescriptor_get_EndpointNumber __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_EndpointNumber
#define IUsbBulkInEndpointDescriptor_get_Pipe __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_get_Pipe
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbBulkInPipe interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe, 0xf01d2d3b, 0x4548, 0x4d50, 0xb3,0x26, 0xd8,0x2c,0xda,0xbe,0x12,0x20);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("f01d2d3b-4548-4d50-b326-d82cdabe1220")
                IUsbBulkInPipe : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_MaxTransferSizeBytes(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_EndpointDescriptor(
                        ABI::Windows::Devices::Usb::IUsbBulkInEndpointDescriptor **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE ClearStallAsync(
                        ABI::Windows::Foundation::IAsyncAction **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_ReadOptions(
                        ABI::Windows::Devices::Usb::UsbReadOptions value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_ReadOptions(
                        ABI::Windows::Devices::Usb::UsbReadOptions *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE FlushBuffer(
                        ) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InputStream(
                        ABI::Windows::Storage::Streams::IInputStream **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe, 0xf01d2d3b, 0x4548, 0x4d50, 0xb3,0x26, 0xd8,0x2c,0xda,0xbe,0x12,0x20)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        TrustLevel *trustLevel);

    /*** IUsbBulkInPipe methods ***/
    HRESULT (STDMETHODCALLTYPE *get_MaxTransferSizeBytes)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_EndpointDescriptor)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *ClearStallAsync)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        __x_ABI_CWindows_CFoundation_CIAsyncAction **operation);

    HRESULT (STDMETHODCALLTYPE *put_ReadOptions)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions value);

    HRESULT (STDMETHODCALLTYPE *get_ReadOptions)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions *value);

    HRESULT (STDMETHODCALLTYPE *FlushBuffer)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This);

    HRESULT (STDMETHODCALLTYPE *get_InputStream)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *This,
        __x_ABI_CWindows_CStorage_CStreams_CIInputStream **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipeVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbBulkInPipe methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_MaxTransferSizeBytes(This,value) (This)->lpVtbl->get_MaxTransferSizeBytes(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_EndpointDescriptor(This,value) (This)->lpVtbl->get_EndpointDescriptor(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_ClearStallAsync(This,operation) (This)->lpVtbl->ClearStallAsync(This,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_put_ReadOptions(This,value) (This)->lpVtbl->put_ReadOptions(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_ReadOptions(This,value) (This)->lpVtbl->get_ReadOptions(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_FlushBuffer(This) (This)->lpVtbl->FlushBuffer(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_InputStream(This,value) (This)->lpVtbl->get_InputStream(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbBulkInPipe methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_MaxTransferSizeBytes(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,UINT32 *value) {
    return This->lpVtbl->get_MaxTransferSizeBytes(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_EndpointDescriptor(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor **value) {
    return This->lpVtbl->get_EndpointDescriptor(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_ClearStallAsync(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,__x_ABI_CWindows_CFoundation_CIAsyncAction **operation) {
    return This->lpVtbl->ClearStallAsync(This,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_put_ReadOptions(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,__x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions value) {
    return This->lpVtbl->put_ReadOptions(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_ReadOptions(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,__x_ABI_CWindows_CDevices_CUsb_CUsbReadOptions *value) {
    return This->lpVtbl->get_ReadOptions(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_FlushBuffer(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This) {
    return This->lpVtbl->FlushBuffer(This);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_InputStream(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe* This,__x_ABI_CWindows_CStorage_CStreams_CIInputStream **value) {
    return This->lpVtbl->get_InputStream(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbBulkInPipe IID___x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe
#define IUsbBulkInPipeVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipeVtbl
#define IUsbBulkInPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe
#define IUsbBulkInPipe_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_QueryInterface
#define IUsbBulkInPipe_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_AddRef
#define IUsbBulkInPipe_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_Release
#define IUsbBulkInPipe_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetIids
#define IUsbBulkInPipe_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetRuntimeClassName
#define IUsbBulkInPipe_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_GetTrustLevel
#define IUsbBulkInPipe_get_MaxTransferSizeBytes __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_MaxTransferSizeBytes
#define IUsbBulkInPipe_get_EndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_EndpointDescriptor
#define IUsbBulkInPipe_ClearStallAsync __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_ClearStallAsync
#define IUsbBulkInPipe_put_ReadOptions __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_put_ReadOptions
#define IUsbBulkInPipe_get_ReadOptions __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_ReadOptions
#define IUsbBulkInPipe_FlushBuffer __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_FlushBuffer
#define IUsbBulkInPipe_get_InputStream __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_get_InputStream
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbBulkOutEndpointDescriptor interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor, 0x2820847a, 0xffee, 0x4f60, 0x9b,0xe1, 0x95,0x6c,0xac,0x3e,0xcb,0x65);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("2820847a-ffee-4f60-9be1-956cac3ecb65")
                IUsbBulkOutEndpointDescriptor : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_MaxPacketSize(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_EndpointNumber(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Pipe(
                        ABI::Windows::Devices::Usb::IUsbBulkOutPipe **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor, 0x2820847a, 0xffee, 0x4f60, 0x9b,0xe1, 0x95,0x6c,0xac,0x3e,0xcb,0x65)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This,
        TrustLevel *trustLevel);

    /*** IUsbBulkOutEndpointDescriptor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_MaxPacketSize)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_EndpointNumber)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_Pipe)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptorVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbBulkOutEndpointDescriptor methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_MaxPacketSize(This,value) (This)->lpVtbl->get_MaxPacketSize(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_EndpointNumber(This,value) (This)->lpVtbl->get_EndpointNumber(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_Pipe(This,value) (This)->lpVtbl->get_Pipe(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbBulkOutEndpointDescriptor methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_MaxPacketSize(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_MaxPacketSize(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_EndpointNumber(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_EndpointNumber(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_Pipe(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe **value) {
    return This->lpVtbl->get_Pipe(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbBulkOutEndpointDescriptor IID___x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor
#define IUsbBulkOutEndpointDescriptorVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptorVtbl
#define IUsbBulkOutEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor
#define IUsbBulkOutEndpointDescriptor_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_QueryInterface
#define IUsbBulkOutEndpointDescriptor_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_AddRef
#define IUsbBulkOutEndpointDescriptor_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_Release
#define IUsbBulkOutEndpointDescriptor_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetIids
#define IUsbBulkOutEndpointDescriptor_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetRuntimeClassName
#define IUsbBulkOutEndpointDescriptor_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_GetTrustLevel
#define IUsbBulkOutEndpointDescriptor_get_MaxPacketSize __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_MaxPacketSize
#define IUsbBulkOutEndpointDescriptor_get_EndpointNumber __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_EndpointNumber
#define IUsbBulkOutEndpointDescriptor_get_Pipe __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_get_Pipe
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbBulkOutPipe interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe, 0xa8e9ee6e, 0x0115, 0x45aa, 0x8b,0x21, 0x37,0xb2,0x25,0xbc,0xce,0xe7);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("a8e9ee6e-0115-45aa-8b21-37b225bccee7")
                IUsbBulkOutPipe : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_EndpointDescriptor(
                        ABI::Windows::Devices::Usb::IUsbBulkOutEndpointDescriptor **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE ClearStallAsync(
                        ABI::Windows::Foundation::IAsyncAction **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_WriteOptions(
                        ABI::Windows::Devices::Usb::UsbWriteOptions value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_WriteOptions(
                        ABI::Windows::Devices::Usb::UsbWriteOptions *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_OutputStream(
                        ABI::Windows::Storage::Streams::IOutputStream **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe, 0xa8e9ee6e, 0x0115, 0x45aa, 0x8b,0x21, 0x37,0xb2,0x25,0xbc,0xce,0xe7)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        TrustLevel *trustLevel);

    /*** IUsbBulkOutPipe methods ***/
    HRESULT (STDMETHODCALLTYPE *get_EndpointDescriptor)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *ClearStallAsync)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        __x_ABI_CWindows_CFoundation_CIAsyncAction **operation);

    HRESULT (STDMETHODCALLTYPE *put_WriteOptions)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions value);

    HRESULT (STDMETHODCALLTYPE *get_WriteOptions)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions *value);

    HRESULT (STDMETHODCALLTYPE *get_OutputStream)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *This,
        __x_ABI_CWindows_CStorage_CStreams_CIOutputStream **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipeVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbBulkOutPipe methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_EndpointDescriptor(This,value) (This)->lpVtbl->get_EndpointDescriptor(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_ClearStallAsync(This,operation) (This)->lpVtbl->ClearStallAsync(This,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_put_WriteOptions(This,value) (This)->lpVtbl->put_WriteOptions(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_WriteOptions(This,value) (This)->lpVtbl->get_WriteOptions(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_OutputStream(This,value) (This)->lpVtbl->get_OutputStream(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbBulkOutPipe methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_EndpointDescriptor(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor **value) {
    return This->lpVtbl->get_EndpointDescriptor(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_ClearStallAsync(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,__x_ABI_CWindows_CFoundation_CIAsyncAction **operation) {
    return This->lpVtbl->ClearStallAsync(This,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_put_WriteOptions(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,__x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions value) {
    return This->lpVtbl->put_WriteOptions(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_WriteOptions(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,__x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions *value) {
    return This->lpVtbl->get_WriteOptions(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_OutputStream(__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe* This,__x_ABI_CWindows_CStorage_CStreams_CIOutputStream **value) {
    return This->lpVtbl->get_OutputStream(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbBulkOutPipe IID___x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe
#define IUsbBulkOutPipeVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipeVtbl
#define IUsbBulkOutPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe
#define IUsbBulkOutPipe_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_QueryInterface
#define IUsbBulkOutPipe_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_AddRef
#define IUsbBulkOutPipe_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_Release
#define IUsbBulkOutPipe_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetIids
#define IUsbBulkOutPipe_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetRuntimeClassName
#define IUsbBulkOutPipe_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_GetTrustLevel
#define IUsbBulkOutPipe_get_EndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_EndpointDescriptor
#define IUsbBulkOutPipe_ClearStallAsync __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_ClearStallAsync
#define IUsbBulkOutPipe_put_WriteOptions __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_put_WriteOptions
#define IUsbBulkOutPipe_get_WriteOptions __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_WriteOptions
#define IUsbBulkOutPipe_get_OutputStream __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_get_OutputStream
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbConfiguration interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration, 0x68177429, 0x36a9, 0x46d7, 0xb8,0x73, 0xfc,0x68,0x92,0x51,0xec,0x30);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("68177429-36a9-46d7-b873-fc689251ec30")
                IUsbConfiguration : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_UsbInterfaces(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterface* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_ConfigurationDescriptor(
                        ABI::Windows::Devices::Usb::IUsbConfigurationDescriptor **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Descriptors(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* > **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration, 0x68177429, 0x36a9, 0x46d7, 0xb8,0x73, 0xfc,0x68,0x92,0x51,0xec,0x30)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This,
        TrustLevel *trustLevel);

    /*** IUsbConfiguration methods ***/
    HRESULT (STDMETHODCALLTYPE *get_UsbInterfaces)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface **value);

    HRESULT (STDMETHODCALLTYPE *get_ConfigurationDescriptor)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Descriptors)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbConfiguration methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_UsbInterfaces(This,value) (This)->lpVtbl->get_UsbInterfaces(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_ConfigurationDescriptor(This,value) (This)->lpVtbl->get_ConfigurationDescriptor(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_Descriptors(This,value) (This)->lpVtbl->get_Descriptors(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbConfiguration methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_UsbInterfaces(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface **value) {
    return This->lpVtbl->get_UsbInterfaces(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_ConfigurationDescriptor(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor **value) {
    return This->lpVtbl->get_ConfigurationDescriptor(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_Descriptors(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor **value) {
    return This->lpVtbl->get_Descriptors(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbConfiguration IID___x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration
#define IUsbConfigurationVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationVtbl
#define IUsbConfiguration __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration
#define IUsbConfiguration_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_QueryInterface
#define IUsbConfiguration_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_AddRef
#define IUsbConfiguration_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_Release
#define IUsbConfiguration_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetIids
#define IUsbConfiguration_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetRuntimeClassName
#define IUsbConfiguration_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_GetTrustLevel
#define IUsbConfiguration_get_UsbInterfaces __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_UsbInterfaces
#define IUsbConfiguration_get_ConfigurationDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_ConfigurationDescriptor
#define IUsbConfiguration_get_Descriptors __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_get_Descriptors
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbConfigurationDescriptor interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor, 0xf2176d92, 0xb442, 0x407a, 0x82,0x07, 0x7d,0x64,0x6c,0x03,0x85,0xf3);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("f2176d92-b442-407a-8207-7d646c0385f3")
                IUsbConfigurationDescriptor : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_ConfigurationValue(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_MaxPowerMilliamps(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_SelfPowered(
                        boolean *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_RemoteWakeup(
                        boolean *value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor, 0xf2176d92, 0xb442, 0x407a, 0x82,0x07, 0x7d,0x64,0x6c,0x03,0x85,0xf3)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This,
        TrustLevel *trustLevel);

    /*** IUsbConfigurationDescriptor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ConfigurationValue)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_MaxPowerMilliamps)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_SelfPowered)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This,
        boolean *value);

    HRESULT (STDMETHODCALLTYPE *get_RemoteWakeup)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor *This,
        boolean *value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbConfigurationDescriptor methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_ConfigurationValue(This,value) (This)->lpVtbl->get_ConfigurationValue(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_MaxPowerMilliamps(This,value) (This)->lpVtbl->get_MaxPowerMilliamps(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_SelfPowered(This,value) (This)->lpVtbl->get_SelfPowered(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_RemoteWakeup(This,value) (This)->lpVtbl->get_RemoteWakeup(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbConfigurationDescriptor methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_ConfigurationValue(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_ConfigurationValue(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_MaxPowerMilliamps(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_MaxPowerMilliamps(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_SelfPowered(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This,boolean *value) {
    return This->lpVtbl->get_SelfPowered(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_RemoteWakeup(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor* This,boolean *value) {
    return This->lpVtbl->get_RemoteWakeup(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbConfigurationDescriptor IID___x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor
#define IUsbConfigurationDescriptorVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorVtbl
#define IUsbConfigurationDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor
#define IUsbConfigurationDescriptor_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_QueryInterface
#define IUsbConfigurationDescriptor_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_AddRef
#define IUsbConfigurationDescriptor_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_Release
#define IUsbConfigurationDescriptor_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetIids
#define IUsbConfigurationDescriptor_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetRuntimeClassName
#define IUsbConfigurationDescriptor_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_GetTrustLevel
#define IUsbConfigurationDescriptor_get_ConfigurationValue __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_ConfigurationValue
#define IUsbConfigurationDescriptor_get_MaxPowerMilliamps __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_MaxPowerMilliamps
#define IUsbConfigurationDescriptor_get_SelfPowered __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_SelfPowered
#define IUsbConfigurationDescriptor_get_RemoteWakeup __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_get_RemoteWakeup
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbConfigurationDescriptorStatics interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics, 0x424ced93, 0xe740, 0x40a1, 0x92,0xbd, 0xda,0x12,0x0e,0xa0,0x49,0x14);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("424ced93-e740-40a1-92bd-da120ea04914")
                IUsbConfigurationDescriptorStatics : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE TryParse(
                        ABI::Windows::Devices::Usb::IUsbDescriptor *descriptor,
                        ABI::Windows::Devices::Usb::IUsbConfigurationDescriptor **parsed,
                        boolean *success) = 0;

                    virtual HRESULT STDMETHODCALLTYPE Parse(
                        ABI::Windows::Devices::Usb::IUsbDescriptor *descriptor,
                        ABI::Windows::Devices::Usb::IUsbConfigurationDescriptor **parsed) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics, 0x424ced93, 0xe740, 0x40a1, 0x92,0xbd, 0xda,0x12,0x0e,0xa0,0x49,0x14)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStaticsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics *This,
        TrustLevel *trustLevel);

    /*** IUsbConfigurationDescriptorStatics methods ***/
    HRESULT (STDMETHODCALLTYPE *TryParse)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *descriptor,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor **parsed,
        boolean *success);

    HRESULT (STDMETHODCALLTYPE *Parse)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *descriptor,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor **parsed);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStaticsVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStaticsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbConfigurationDescriptorStatics methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_TryParse(This,descriptor,parsed,success) (This)->lpVtbl->TryParse(This,descriptor,parsed,success)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_Parse(This,descriptor,parsed) (This)->lpVtbl->Parse(This,descriptor,parsed)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbConfigurationDescriptorStatics methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_TryParse(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *descriptor,__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor **parsed,boolean *success) {
    return This->lpVtbl->TryParse(This,descriptor,parsed,success);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_Parse(__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *descriptor,__x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptor **parsed) {
    return This->lpVtbl->Parse(This,descriptor,parsed);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbConfigurationDescriptorStatics IID___x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics
#define IUsbConfigurationDescriptorStaticsVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStaticsVtbl
#define IUsbConfigurationDescriptorStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics
#define IUsbConfigurationDescriptorStatics_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_QueryInterface
#define IUsbConfigurationDescriptorStatics_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_AddRef
#define IUsbConfigurationDescriptorStatics_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_Release
#define IUsbConfigurationDescriptorStatics_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetIids
#define IUsbConfigurationDescriptorStatics_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetRuntimeClassName
#define IUsbConfigurationDescriptorStatics_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_GetTrustLevel
#define IUsbConfigurationDescriptorStatics_TryParse __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_TryParse
#define IUsbConfigurationDescriptorStatics_Parse __x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_Parse
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbConfigurationDescriptorStatics_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbControlRequestType interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType, 0x8e9465a6, 0xd73d, 0x46de, 0x94,0xbe, 0xaa,0xe7,0xf0,0x7c,0x0f,0x5c);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("8e9465a6-d73d-46de-94be-aae7f07c0f5c")
                IUsbControlRequestType : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_Direction(
                        ABI::Windows::Devices::Usb::UsbTransferDirection *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_Direction(
                        ABI::Windows::Devices::Usb::UsbTransferDirection value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_ControlTransferType(
                        ABI::Windows::Devices::Usb::UsbControlTransferType *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_ControlTransferType(
                        ABI::Windows::Devices::Usb::UsbControlTransferType value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Recipient(
                        ABI::Windows::Devices::Usb::UsbControlRecipient *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_Recipient(
                        ABI::Windows::Devices::Usb::UsbControlRecipient value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_AsByte(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_AsByte(
                        BYTE value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType, 0x8e9465a6, 0xd73d, 0x46de, 0x94,0xbe, 0xaa,0xe7,0xf0,0x7c,0x0f,0x5c)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestTypeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        TrustLevel *trustLevel);

    /*** IUsbControlRequestType methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Direction)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection *value);

    HRESULT (STDMETHODCALLTYPE *put_Direction)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection value);

    HRESULT (STDMETHODCALLTYPE *get_ControlTransferType)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType *value);

    HRESULT (STDMETHODCALLTYPE *put_ControlTransferType)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType value);

    HRESULT (STDMETHODCALLTYPE *get_Recipient)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient *value);

    HRESULT (STDMETHODCALLTYPE *put_Recipient)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient value);

    HRESULT (STDMETHODCALLTYPE *get_AsByte)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *put_AsByte)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *This,
        BYTE value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestTypeVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestTypeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbControlRequestType methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_Direction(This,value) (This)->lpVtbl->get_Direction(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_Direction(This,value) (This)->lpVtbl->put_Direction(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_ControlTransferType(This,value) (This)->lpVtbl->get_ControlTransferType(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_ControlTransferType(This,value) (This)->lpVtbl->put_ControlTransferType(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_Recipient(This,value) (This)->lpVtbl->get_Recipient(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_Recipient(This,value) (This)->lpVtbl->put_Recipient(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_AsByte(This,value) (This)->lpVtbl->get_AsByte(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_AsByte(This,value) (This)->lpVtbl->put_AsByte(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbControlRequestType methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_Direction(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,__x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection *value) {
    return This->lpVtbl->get_Direction(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_Direction(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,__x_ABI_CWindows_CDevices_CUsb_CUsbTransferDirection value) {
    return This->lpVtbl->put_Direction(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_ControlTransferType(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,__x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType *value) {
    return This->lpVtbl->get_ControlTransferType(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_ControlTransferType(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,__x_ABI_CWindows_CDevices_CUsb_CUsbControlTransferType value) {
    return This->lpVtbl->put_ControlTransferType(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_Recipient(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,__x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient *value) {
    return This->lpVtbl->get_Recipient(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_Recipient(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,__x_ABI_CWindows_CDevices_CUsb_CUsbControlRecipient value) {
    return This->lpVtbl->put_Recipient(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_AsByte(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,BYTE *value) {
    return This->lpVtbl->get_AsByte(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_AsByte(__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType* This,BYTE value) {
    return This->lpVtbl->put_AsByte(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbControlRequestType IID___x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType
#define IUsbControlRequestTypeVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestTypeVtbl
#define IUsbControlRequestType __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType
#define IUsbControlRequestType_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_QueryInterface
#define IUsbControlRequestType_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_AddRef
#define IUsbControlRequestType_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_Release
#define IUsbControlRequestType_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetIids
#define IUsbControlRequestType_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetRuntimeClassName
#define IUsbControlRequestType_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_GetTrustLevel
#define IUsbControlRequestType_get_Direction __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_Direction
#define IUsbControlRequestType_put_Direction __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_Direction
#define IUsbControlRequestType_get_ControlTransferType __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_ControlTransferType
#define IUsbControlRequestType_put_ControlTransferType __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_ControlTransferType
#define IUsbControlRequestType_get_Recipient __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_Recipient
#define IUsbControlRequestType_put_Recipient __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_Recipient
#define IUsbControlRequestType_get_AsByte __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_get_AsByte
#define IUsbControlRequestType_put_AsByte __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_put_AsByte
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbDescriptor interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor, 0x0a89f216, 0x5f9d, 0x4874, 0x89,0x04, 0xda,0x9a,0xd3,0xf5,0x52,0x8f);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("0a89f216-5f9d-4874-8904-da9ad3f5528f")
                IUsbDescriptor : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_Length(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_DescriptorType(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE ReadDescriptorBuffer(
                        ABI::Windows::Storage::Streams::IBuffer *buffer) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor, 0x0a89f216, 0x5f9d, 0x4874, 0x89,0x04, 0xda,0x9a,0xd3,0xf5,0x52,0x8f)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This,
        TrustLevel *trustLevel);

    /*** IUsbDescriptor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Length)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_DescriptorType)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *ReadDescriptorBuffer)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *This,
        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptorVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbDescriptor methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_get_Length(This,value) (This)->lpVtbl->get_Length(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_get_DescriptorType(This,value) (This)->lpVtbl->get_DescriptorType(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_ReadDescriptorBuffer(This,buffer) (This)->lpVtbl->ReadDescriptorBuffer(This,buffer)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbDescriptor methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_get_Length(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_Length(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_get_DescriptorType(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_DescriptorType(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_ReadDescriptorBuffer(__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor* This,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer) {
    return This->lpVtbl->ReadDescriptorBuffer(This,buffer);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbDescriptor IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor
#define IUsbDescriptorVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptorVtbl
#define IUsbDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor
#define IUsbDescriptor_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_QueryInterface
#define IUsbDescriptor_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_AddRef
#define IUsbDescriptor_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_Release
#define IUsbDescriptor_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetIids
#define IUsbDescriptor_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetRuntimeClassName
#define IUsbDescriptor_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_GetTrustLevel
#define IUsbDescriptor_get_Length __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_get_Length
#define IUsbDescriptor_get_DescriptorType __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_get_DescriptorType
#define IUsbDescriptor_ReadDescriptorBuffer __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_ReadDescriptorBuffer
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbDevice interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDevice, 0x5249b992, 0xc456, 0x44d5, 0xad,0x5e, 0x24,0xf5,0xa0,0x89,0xf6,0x3b);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("5249b992-c456-44d5-ad5e-24f5a089f63b")
                IUsbDevice : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE SendControlOutTransferAsync(
                        ABI::Windows::Devices::Usb::IUsbSetupPacket *packet,
                        ABI::Windows::Storage::Streams::IBuffer *buffer,
                        ABI::Windows::Foundation::IAsyncOperation<UINT32 > **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE SendControlOutTransferAsyncNoBuffer(
                        ABI::Windows::Devices::Usb::IUsbSetupPacket *packet,
                        ABI::Windows::Foundation::IAsyncOperation<UINT32 > **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE SendControlInTransferAsync(
                        ABI::Windows::Devices::Usb::IUsbSetupPacket *packet,
                        ABI::Windows::Storage::Streams::IBuffer *buffer,
                        ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Storage::Streams::IBuffer* > **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE SendControlInTransferAsyncNoBuffer(
                        ABI::Windows::Devices::Usb::IUsbSetupPacket *packet,
                        ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Storage::Streams::IBuffer* > **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_DefaultInterface(
                        ABI::Windows::Devices::Usb::IUsbInterface **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_DeviceDescriptor(
                        ABI::Windows::Devices::Usb::IUsbDeviceDescriptor **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Configuration(
                        ABI::Windows::Devices::Usb::IUsbConfiguration **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice, 0x5249b992, 0xc456, 0x44d5, 0xad,0x5e, 0x24,0xf5,0xa0,0x89,0xf6,0x3b)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        TrustLevel *trustLevel);

    /*** IUsbDevice methods ***/
    HRESULT (STDMETHODCALLTYPE *SendControlOutTransferAsync)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *packet,
        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,
        __FIAsyncOperation_1_UINT32 **operation);

    HRESULT (STDMETHODCALLTYPE *SendControlOutTransferAsyncNoBuffer)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *packet,
        __FIAsyncOperation_1_UINT32 **operation);

    HRESULT (STDMETHODCALLTYPE *SendControlInTransferAsync)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *packet,
        __x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,
        __FIAsyncOperation_1_Windows__CStorage__CStreams__CIBuffer **operation);

    HRESULT (STDMETHODCALLTYPE *SendControlInTransferAsyncNoBuffer)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *packet,
        __FIAsyncOperation_1_Windows__CStorage__CStreams__CIBuffer **operation);

    HRESULT (STDMETHODCALLTYPE *get_DefaultInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface **value);

    HRESULT (STDMETHODCALLTYPE *get_DeviceDescriptor)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Configuration)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbDevice methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlOutTransferAsync(This,packet,buffer,operation) (This)->lpVtbl->SendControlOutTransferAsync(This,packet,buffer,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlOutTransferAsyncNoBuffer(This,packet,operation) (This)->lpVtbl->SendControlOutTransferAsyncNoBuffer(This,packet,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlInTransferAsync(This,packet,buffer,operation) (This)->lpVtbl->SendControlInTransferAsync(This,packet,buffer,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlInTransferAsyncNoBuffer(This,packet,operation) (This)->lpVtbl->SendControlInTransferAsyncNoBuffer(This,packet,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_DefaultInterface(This,value) (This)->lpVtbl->get_DefaultInterface(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_DeviceDescriptor(This,value) (This)->lpVtbl->get_DeviceDescriptor(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_Configuration(This,value) (This)->lpVtbl->get_Configuration(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbDevice methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlOutTransferAsync(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *packet,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,__FIAsyncOperation_1_UINT32 **operation) {
    return This->lpVtbl->SendControlOutTransferAsync(This,packet,buffer,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlOutTransferAsyncNoBuffer(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *packet,__FIAsyncOperation_1_UINT32 **operation) {
    return This->lpVtbl->SendControlOutTransferAsyncNoBuffer(This,packet,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlInTransferAsync(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *packet,__x_ABI_CWindows_CStorage_CStreams_CIBuffer *buffer,__FIAsyncOperation_1_Windows__CStorage__CStreams__CIBuffer **operation) {
    return This->lpVtbl->SendControlInTransferAsync(This,packet,buffer,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlInTransferAsyncNoBuffer(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *packet,__FIAsyncOperation_1_Windows__CStorage__CStreams__CIBuffer **operation) {
    return This->lpVtbl->SendControlInTransferAsyncNoBuffer(This,packet,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_DefaultInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface **value) {
    return This->lpVtbl->get_DefaultInterface(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_DeviceDescriptor(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor **value) {
    return This->lpVtbl->get_DeviceDescriptor(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_Configuration(__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbConfiguration **value) {
    return This->lpVtbl->get_Configuration(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbDevice IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDevice
#define IUsbDeviceVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceVtbl
#define IUsbDevice __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice
#define IUsbDevice_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_QueryInterface
#define IUsbDevice_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_AddRef
#define IUsbDevice_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_Release
#define IUsbDevice_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetIids
#define IUsbDevice_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetRuntimeClassName
#define IUsbDevice_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_GetTrustLevel
#define IUsbDevice_SendControlOutTransferAsync __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlOutTransferAsync
#define IUsbDevice_SendControlOutTransferAsyncNoBuffer __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlOutTransferAsyncNoBuffer
#define IUsbDevice_SendControlInTransferAsync __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlInTransferAsync
#define IUsbDevice_SendControlInTransferAsyncNoBuffer __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_SendControlInTransferAsyncNoBuffer
#define IUsbDevice_get_DefaultInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_DefaultInterface
#define IUsbDevice_get_DeviceDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_DeviceDescriptor
#define IUsbDevice_get_Configuration __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_get_Configuration
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbDevice_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbDeviceClass interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass, 0x051942f9, 0x845e, 0x47eb, 0xb1,0x2a, 0x38,0xf2,0xf6,0x17,0xaf,0xe7);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("051942f9-845e-47eb-b12a-38f2f617afe7")
                IUsbDeviceClass : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_ClassCode(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_ClassCode(
                        BYTE value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_SubclassCode(
                        ABI::Windows::Foundation::IReference<BYTE > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_SubclassCode(
                        ABI::Windows::Foundation::IReference<BYTE > *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_ProtocolCode(
                        ABI::Windows::Foundation::IReference<BYTE > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_ProtocolCode(
                        ABI::Windows::Foundation::IReference<BYTE > *value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass, 0x051942f9, 0x845e, 0x47eb, 0xb1,0x2a, 0x38,0xf2,0xf6,0x17,0xaf,0xe7)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClassVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        TrustLevel *trustLevel);

    /*** IUsbDeviceClass methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ClassCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *put_ClassCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        BYTE value);

    HRESULT (STDMETHODCALLTYPE *get_SubclassCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        __FIReference_1_BYTE **value);

    HRESULT (STDMETHODCALLTYPE *put_SubclassCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        __FIReference_1_BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_ProtocolCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        __FIReference_1_BYTE **value);

    HRESULT (STDMETHODCALLTYPE *put_ProtocolCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *This,
        __FIReference_1_BYTE *value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClassVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClassVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbDeviceClass methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_ClassCode(This,value) (This)->lpVtbl->get_ClassCode(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_ClassCode(This,value) (This)->lpVtbl->put_ClassCode(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_SubclassCode(This,value) (This)->lpVtbl->get_SubclassCode(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_SubclassCode(This,value) (This)->lpVtbl->put_SubclassCode(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_ProtocolCode(This,value) (This)->lpVtbl->get_ProtocolCode(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_ProtocolCode(This,value) (This)->lpVtbl->put_ProtocolCode(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbDeviceClass methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_ClassCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,BYTE *value) {
    return This->lpVtbl->get_ClassCode(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_ClassCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,BYTE value) {
    return This->lpVtbl->put_ClassCode(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_SubclassCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,__FIReference_1_BYTE **value) {
    return This->lpVtbl->get_SubclassCode(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_SubclassCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,__FIReference_1_BYTE *value) {
    return This->lpVtbl->put_SubclassCode(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_ProtocolCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,__FIReference_1_BYTE **value) {
    return This->lpVtbl->get_ProtocolCode(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_ProtocolCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass* This,__FIReference_1_BYTE *value) {
    return This->lpVtbl->put_ProtocolCode(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbDeviceClass IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass
#define IUsbDeviceClassVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClassVtbl
#define IUsbDeviceClass __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass
#define IUsbDeviceClass_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_QueryInterface
#define IUsbDeviceClass_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_AddRef
#define IUsbDeviceClass_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_Release
#define IUsbDeviceClass_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetIids
#define IUsbDeviceClass_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetRuntimeClassName
#define IUsbDeviceClass_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_GetTrustLevel
#define IUsbDeviceClass_get_ClassCode __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_ClassCode
#define IUsbDeviceClass_put_ClassCode __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_ClassCode
#define IUsbDeviceClass_get_SubclassCode __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_SubclassCode
#define IUsbDeviceClass_put_SubclassCode __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_SubclassCode
#define IUsbDeviceClass_get_ProtocolCode __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_get_ProtocolCode
#define IUsbDeviceClass_put_ProtocolCode __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_put_ProtocolCode
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbDeviceDescriptor interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor, 0x1f48d1f6, 0xba97, 0x4322, 0xb9,0x2c, 0xb5,0xb1,0x89,0x21,0x65,0x88);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("1f48d1f6-ba97-4322-b92c-b5b189216588")
                IUsbDeviceDescriptor : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_BcdUsb(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_MaxPacketSize0(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_VendorId(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_ProductId(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_BcdDeviceRevision(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_NumberOfConfigurations(
                        BYTE *value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor, 0x1f48d1f6, 0xba97, 0x4322, 0xb9,0x2c, 0xb5,0xb1,0x89,0x21,0x65,0x88)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        TrustLevel *trustLevel);

    /*** IUsbDeviceDescriptor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BcdUsb)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_MaxPacketSize0)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_VendorId)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_ProductId)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_BcdDeviceRevision)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_NumberOfConfigurations)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor *This,
        BYTE *value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptorVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbDeviceDescriptor methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_BcdUsb(This,value) (This)->lpVtbl->get_BcdUsb(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_MaxPacketSize0(This,value) (This)->lpVtbl->get_MaxPacketSize0(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_VendorId(This,value) (This)->lpVtbl->get_VendorId(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_ProductId(This,value) (This)->lpVtbl->get_ProductId(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_BcdDeviceRevision(This,value) (This)->lpVtbl->get_BcdDeviceRevision(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_NumberOfConfigurations(This,value) (This)->lpVtbl->get_NumberOfConfigurations(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbDeviceDescriptor methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_BcdUsb(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_BcdUsb(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_MaxPacketSize0(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_MaxPacketSize0(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_VendorId(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_VendorId(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_ProductId(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_ProductId(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_BcdDeviceRevision(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_BcdDeviceRevision(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_NumberOfConfigurations(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_NumberOfConfigurations(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbDeviceDescriptor IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor
#define IUsbDeviceDescriptorVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptorVtbl
#define IUsbDeviceDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor
#define IUsbDeviceDescriptor_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_QueryInterface
#define IUsbDeviceDescriptor_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_AddRef
#define IUsbDeviceDescriptor_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_Release
#define IUsbDeviceDescriptor_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetIids
#define IUsbDeviceDescriptor_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetRuntimeClassName
#define IUsbDeviceDescriptor_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_GetTrustLevel
#define IUsbDeviceDescriptor_get_BcdUsb __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_BcdUsb
#define IUsbDeviceDescriptor_get_MaxPacketSize0 __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_MaxPacketSize0
#define IUsbDeviceDescriptor_get_VendorId __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_VendorId
#define IUsbDeviceDescriptor_get_ProductId __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_ProductId
#define IUsbDeviceDescriptor_get_BcdDeviceRevision __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_BcdDeviceRevision
#define IUsbDeviceDescriptor_get_NumberOfConfigurations __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_get_NumberOfConfigurations
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceDescriptor_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbDeviceStatics interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics, 0x066b85a2, 0x09b7, 0x4446, 0x85,0x02, 0x6f,0xe6,0xdc,0xaa,0x73,0x09);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("066b85a2-09b7-4446-8502-6fe6dcaa7309")
                IUsbDeviceStatics : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE GetDeviceSelector(
                        UINT32 vendor,
                        UINT32 product,
                        GUID class,
                        HSTRING *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE GetDeviceSelectorGuidOnly(
                        GUID class,
                        HSTRING *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE GetDeviceSelectorVidPidOnly(
                        UINT32 vendor,
                        UINT32 product,
                        HSTRING *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE GetDeviceClassSelector(
                        ABI::Windows::Devices::Usb::IUsbDeviceClass *class,
                        HSTRING *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE FromIdAsync(
                        HSTRING id,
                        ABI::Windows::Foundation::IAsyncOperation<ABI::Windows::Devices::Usb::UsbDevice* > **operation) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics, 0x066b85a2, 0x09b7, 0x4446, 0x85,0x02, 0x6f,0xe6,0xdc,0xaa,0x73,0x09)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStaticsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        TrustLevel *trustLevel);

    /*** IUsbDeviceStatics methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDeviceSelector)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        UINT32 vendor,
        UINT32 product,
        GUID class,
        HSTRING *value);

    HRESULT (STDMETHODCALLTYPE *GetDeviceSelectorGuidOnly)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        GUID class,
        HSTRING *value);

    HRESULT (STDMETHODCALLTYPE *GetDeviceSelectorVidPidOnly)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        UINT32 vendor,
        UINT32 product,
        HSTRING *value);

    HRESULT (STDMETHODCALLTYPE *GetDeviceClassSelector)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *class,
        HSTRING *value);

    HRESULT (STDMETHODCALLTYPE *FromIdAsync)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics *This,
        HSTRING id,
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice **operation);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStaticsVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStaticsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbDeviceStatics methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelector(This,vendor,product,class,value) (This)->lpVtbl->GetDeviceSelector(This,vendor,product,class,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelectorGuidOnly(This,class,value) (This)->lpVtbl->GetDeviceSelectorGuidOnly(This,class,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelectorVidPidOnly(This,vendor,product,value) (This)->lpVtbl->GetDeviceSelectorVidPidOnly(This,vendor,product,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceClassSelector(This,class,value) (This)->lpVtbl->GetDeviceClassSelector(This,class,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_FromIdAsync(This,id,operation) (This)->lpVtbl->FromIdAsync(This,id,operation)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbDeviceStatics methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelector(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,UINT32 vendor,UINT32 product,GUID class,HSTRING *value) {
    return This->lpVtbl->GetDeviceSelector(This,vendor,product,class,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelectorGuidOnly(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,GUID class,HSTRING *value) {
    return This->lpVtbl->GetDeviceSelectorGuidOnly(This,class,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelectorVidPidOnly(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,UINT32 vendor,UINT32 product,HSTRING *value) {
    return This->lpVtbl->GetDeviceSelectorVidPidOnly(This,vendor,product,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceClassSelector(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceClass *class,HSTRING *value) {
    return This->lpVtbl->GetDeviceClassSelector(This,class,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_FromIdAsync(__x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics* This,HSTRING id,__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice **operation) {
    return This->lpVtbl->FromIdAsync(This,id,operation);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbDeviceStatics IID___x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics
#define IUsbDeviceStaticsVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStaticsVtbl
#define IUsbDeviceStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics
#define IUsbDeviceStatics_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_QueryInterface
#define IUsbDeviceStatics_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_AddRef
#define IUsbDeviceStatics_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_Release
#define IUsbDeviceStatics_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetIids
#define IUsbDeviceStatics_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetRuntimeClassName
#define IUsbDeviceStatics_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetTrustLevel
#define IUsbDeviceStatics_GetDeviceSelector __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelector
#define IUsbDeviceStatics_GetDeviceSelectorGuidOnly __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelectorGuidOnly
#define IUsbDeviceStatics_GetDeviceSelectorVidPidOnly __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceSelectorVidPidOnly
#define IUsbDeviceStatics_GetDeviceClassSelector __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_GetDeviceClassSelector
#define IUsbDeviceStatics_FromIdAsync __x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_FromIdAsync
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbDeviceStatics_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterface interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterface, 0xa0322b95, 0x7f47, 0x48ab, 0xa7,0x27, 0x67,0x8c,0x25,0xbe,0x21,0x12);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("a0322b95-7f47-48ab-a727-678c25be2112")
                IUsbInterface : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_BulkInPipes(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkInPipe* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InterruptInPipes(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInPipe* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_BulkOutPipes(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutPipe* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InterruptOutPipes(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutPipe* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InterfaceSettings(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterfaceSetting* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InterfaceNumber(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Descriptors(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* > **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface, 0xa0322b95, 0x7f47, 0x48ab, 0xa7,0x27, 0x67,0x8c,0x25,0xbe,0x21,0x12)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        TrustLevel *trustLevel);

    /*** IUsbInterface methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BulkInPipes)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe **value);

    HRESULT (STDMETHODCALLTYPE *get_InterruptInPipes)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe **value);

    HRESULT (STDMETHODCALLTYPE *get_BulkOutPipes)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe **value);

    HRESULT (STDMETHODCALLTYPE *get_InterruptOutPipes)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe **value);

    HRESULT (STDMETHODCALLTYPE *get_InterfaceSettings)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting **value);

    HRESULT (STDMETHODCALLTYPE *get_InterfaceNumber)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_Descriptors)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterface methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_BulkInPipes(This,value) (This)->lpVtbl->get_BulkInPipes(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterruptInPipes(This,value) (This)->lpVtbl->get_InterruptInPipes(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_BulkOutPipes(This,value) (This)->lpVtbl->get_BulkOutPipes(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterruptOutPipes(This,value) (This)->lpVtbl->get_InterruptOutPipes(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterfaceSettings(This,value) (This)->lpVtbl->get_InterfaceSettings(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterfaceNumber(This,value) (This)->lpVtbl->get_InterfaceNumber(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_Descriptors(This,value) (This)->lpVtbl->get_Descriptors(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterface methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_BulkInPipes(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe **value) {
    return This->lpVtbl->get_BulkInPipes(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterruptInPipes(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe **value) {
    return This->lpVtbl->get_InterruptInPipes(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_BulkOutPipes(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe **value) {
    return This->lpVtbl->get_BulkOutPipes(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterruptOutPipes(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe **value) {
    return This->lpVtbl->get_InterruptOutPipes(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterfaceSettings(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting **value) {
    return This->lpVtbl->get_InterfaceSettings(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterfaceNumber(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,BYTE *value) {
    return This->lpVtbl->get_InterfaceNumber(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_Descriptors(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor **value) {
    return This->lpVtbl->get_Descriptors(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterface IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterface
#define IUsbInterfaceVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceVtbl
#define IUsbInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface
#define IUsbInterface_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_QueryInterface
#define IUsbInterface_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_AddRef
#define IUsbInterface_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_Release
#define IUsbInterface_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetIids
#define IUsbInterface_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetRuntimeClassName
#define IUsbInterface_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_GetTrustLevel
#define IUsbInterface_get_BulkInPipes __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_BulkInPipes
#define IUsbInterface_get_InterruptInPipes __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterruptInPipes
#define IUsbInterface_get_BulkOutPipes __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_BulkOutPipes
#define IUsbInterface_get_InterruptOutPipes __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterruptOutPipes
#define IUsbInterface_get_InterfaceSettings __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterfaceSettings
#define IUsbInterface_get_InterfaceNumber __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_InterfaceNumber
#define IUsbInterface_get_Descriptors __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_get_Descriptors
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterface_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterfaceDescriptor interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor, 0x199670c7, 0xb7ee, 0x4f90, 0x8c,0xd5, 0x94,0xa2,0xe2,0x57,0x59,0x8a);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("199670c7-b7ee-4f90-8cd5-94a2e257598a")
                IUsbInterfaceDescriptor : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_ClassCode(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_SubclassCode(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_ProtocolCode(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_AlternateSettingNumber(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InterfaceNumber(
                        BYTE *value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor, 0x199670c7, 0xb7ee, 0x4f90, 0x8c,0xd5, 0x94,0xa2,0xe2,0x57,0x59,0x8a)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        TrustLevel *trustLevel);

    /*** IUsbInterfaceDescriptor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ClassCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_SubclassCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_ProtocolCode)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_AlternateSettingNumber)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_InterfaceNumber)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor *This,
        BYTE *value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterfaceDescriptor methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_ClassCode(This,value) (This)->lpVtbl->get_ClassCode(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_SubclassCode(This,value) (This)->lpVtbl->get_SubclassCode(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_ProtocolCode(This,value) (This)->lpVtbl->get_ProtocolCode(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_AlternateSettingNumber(This,value) (This)->lpVtbl->get_AlternateSettingNumber(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_InterfaceNumber(This,value) (This)->lpVtbl->get_InterfaceNumber(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterfaceDescriptor methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_ClassCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_ClassCode(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_SubclassCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_SubclassCode(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_ProtocolCode(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_ProtocolCode(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_AlternateSettingNumber(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_AlternateSettingNumber(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_InterfaceNumber(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_InterfaceNumber(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterfaceDescriptor IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor
#define IUsbInterfaceDescriptorVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorVtbl
#define IUsbInterfaceDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor
#define IUsbInterfaceDescriptor_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_QueryInterface
#define IUsbInterfaceDescriptor_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_AddRef
#define IUsbInterfaceDescriptor_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_Release
#define IUsbInterfaceDescriptor_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetIids
#define IUsbInterfaceDescriptor_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetRuntimeClassName
#define IUsbInterfaceDescriptor_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_GetTrustLevel
#define IUsbInterfaceDescriptor_get_ClassCode __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_ClassCode
#define IUsbInterfaceDescriptor_get_SubclassCode __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_SubclassCode
#define IUsbInterfaceDescriptor_get_ProtocolCode __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_ProtocolCode
#define IUsbInterfaceDescriptor_get_AlternateSettingNumber __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_AlternateSettingNumber
#define IUsbInterfaceDescriptor_get_InterfaceNumber __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_get_InterfaceNumber
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterfaceDescriptorStatics interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics, 0xe34a9ff5, 0x77d6, 0x48b6, 0xb0,0xbe, 0x16,0xc6,0x42,0x23,0x16,0xfe);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("e34a9ff5-77d6-48b6-b0be-16c6422316fe")
                IUsbInterfaceDescriptorStatics : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE TryParse(
                        ABI::Windows::Devices::Usb::IUsbDescriptor *descriptor,
                        ABI::Windows::Devices::Usb::IUsbInterfaceDescriptor **parsed,
                        boolean *success) = 0;

                    virtual HRESULT STDMETHODCALLTYPE Parse(
                        ABI::Windows::Devices::Usb::IUsbDescriptor *descriptor,
                        ABI::Windows::Devices::Usb::IUsbInterfaceDescriptor **parsed) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics, 0xe34a9ff5, 0x77d6, 0x48b6, 0xb0,0xbe, 0x16,0xc6,0x42,0x23,0x16,0xfe)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStaticsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics *This,
        TrustLevel *trustLevel);

    /*** IUsbInterfaceDescriptorStatics methods ***/
    HRESULT (STDMETHODCALLTYPE *TryParse)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *descriptor,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor **parsed,
        boolean *success);

    HRESULT (STDMETHODCALLTYPE *Parse)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *descriptor,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor **parsed);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStaticsVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStaticsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterfaceDescriptorStatics methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_TryParse(This,descriptor,parsed,success) (This)->lpVtbl->TryParse(This,descriptor,parsed,success)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_Parse(This,descriptor,parsed) (This)->lpVtbl->Parse(This,descriptor,parsed)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterfaceDescriptorStatics methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_TryParse(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *descriptor,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor **parsed,boolean *success) {
    return This->lpVtbl->TryParse(This,descriptor,parsed,success);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_Parse(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *descriptor,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor **parsed) {
    return This->lpVtbl->Parse(This,descriptor,parsed);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterfaceDescriptorStatics IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics
#define IUsbInterfaceDescriptorStaticsVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStaticsVtbl
#define IUsbInterfaceDescriptorStatics __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics
#define IUsbInterfaceDescriptorStatics_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_QueryInterface
#define IUsbInterfaceDescriptorStatics_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_AddRef
#define IUsbInterfaceDescriptorStatics_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_Release
#define IUsbInterfaceDescriptorStatics_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetIids
#define IUsbInterfaceDescriptorStatics_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetRuntimeClassName
#define IUsbInterfaceDescriptorStatics_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_GetTrustLevel
#define IUsbInterfaceDescriptorStatics_TryParse __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_TryParse
#define IUsbInterfaceDescriptorStatics_Parse __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_Parse
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptorStatics_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterfaceSetting interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting, 0x1827bba7, 0x8da7, 0x4af7, 0x8f,0x4c, 0x7f,0x30,0x32,0xe7,0x81,0xf5);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("1827bba7-8da7-4af7-8f4c-7f3032e781f5")
                IUsbInterfaceSetting : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_BulkInEndpoints(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InterruptInEndpoints(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_BulkOutEndpoints(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InterruptOutEndpoints(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor* > **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Selected(
                        boolean *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE SelectSettingAsync(
                        ABI::Windows::Foundation::IAsyncAction **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_InterfaceDescriptor(
                        ABI::Windows::Devices::Usb::IUsbInterfaceDescriptor **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Descriptors(
                        ABI::Windows::Foundation::Collections::IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* > **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting, 0x1827bba7, 0x8da7, 0x4af7, 0x8f,0x4c, 0x7f,0x30,0x32,0xe7,0x81,0xf5)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSettingVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        TrustLevel *trustLevel);

    /*** IUsbInterfaceSetting methods ***/
    HRESULT (STDMETHODCALLTYPE *get_BulkInEndpoints)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_InterruptInEndpoints)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_BulkOutEndpoints)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_InterruptOutEndpoints)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Selected)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        boolean *value);

    HRESULT (STDMETHODCALLTYPE *SelectSettingAsync)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        __x_ABI_CWindows_CFoundation_CIAsyncAction **operation);

    HRESULT (STDMETHODCALLTYPE *get_InterfaceDescriptor)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Descriptors)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *This,
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSettingVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSettingVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterfaceSetting methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_BulkInEndpoints(This,value) (This)->lpVtbl->get_BulkInEndpoints(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterruptInEndpoints(This,value) (This)->lpVtbl->get_InterruptInEndpoints(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_BulkOutEndpoints(This,value) (This)->lpVtbl->get_BulkOutEndpoints(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterruptOutEndpoints(This,value) (This)->lpVtbl->get_InterruptOutEndpoints(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_Selected(This,value) (This)->lpVtbl->get_Selected(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_SelectSettingAsync(This,operation) (This)->lpVtbl->SelectSettingAsync(This,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterfaceDescriptor(This,value) (This)->lpVtbl->get_InterfaceDescriptor(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_Descriptors(This,value) (This)->lpVtbl->get_Descriptors(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterfaceSetting methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_BulkInEndpoints(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor **value) {
    return This->lpVtbl->get_BulkInEndpoints(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterruptInEndpoints(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor **value) {
    return This->lpVtbl->get_InterruptInEndpoints(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_BulkOutEndpoints(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor **value) {
    return This->lpVtbl->get_BulkOutEndpoints(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterruptOutEndpoints(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor **value) {
    return This->lpVtbl->get_InterruptOutEndpoints(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_Selected(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,boolean *value) {
    return This->lpVtbl->get_Selected(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_SelectSettingAsync(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,__x_ABI_CWindows_CFoundation_CIAsyncAction **operation) {
    return This->lpVtbl->SelectSettingAsync(This,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterfaceDescriptor(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceDescriptor **value) {
    return This->lpVtbl->get_InterfaceDescriptor(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_Descriptors(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting* This,__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor **value) {
    return This->lpVtbl->get_Descriptors(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterfaceSetting IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting
#define IUsbInterfaceSettingVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSettingVtbl
#define IUsbInterfaceSetting __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting
#define IUsbInterfaceSetting_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_QueryInterface
#define IUsbInterfaceSetting_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_AddRef
#define IUsbInterfaceSetting_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_Release
#define IUsbInterfaceSetting_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetIids
#define IUsbInterfaceSetting_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetRuntimeClassName
#define IUsbInterfaceSetting_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_GetTrustLevel
#define IUsbInterfaceSetting_get_BulkInEndpoints __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_BulkInEndpoints
#define IUsbInterfaceSetting_get_InterruptInEndpoints __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterruptInEndpoints
#define IUsbInterfaceSetting_get_BulkOutEndpoints __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_BulkOutEndpoints
#define IUsbInterfaceSetting_get_InterruptOutEndpoints __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterruptOutEndpoints
#define IUsbInterfaceSetting_get_Selected __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_Selected
#define IUsbInterfaceSetting_SelectSettingAsync __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_SelectSettingAsync
#define IUsbInterfaceSetting_get_InterfaceDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_InterfaceDescriptor
#define IUsbInterfaceSetting_get_Descriptors __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_get_Descriptors
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterruptInEndpointDescriptor interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor, 0xc0528967, 0xc911, 0x4c3a, 0x86,0xb2, 0x41,0x9c,0x2d,0xa8,0x90,0x39);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("c0528967-c911-4c3a-86b2-419c2da89039")
                IUsbInterruptInEndpointDescriptor : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_MaxPacketSize(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_EndpointNumber(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Interval(
                        ABI::Windows::Foundation::TimeSpan *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Pipe(
                        ABI::Windows::Devices::Usb::IUsbInterruptInPipe **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor, 0xc0528967, 0xc911, 0x4c3a, 0x86,0xb2, 0x41,0x9c,0x2d,0xa8,0x90,0x39)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This,
        TrustLevel *trustLevel);

    /*** IUsbInterruptInEndpointDescriptor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_MaxPacketSize)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_EndpointNumber)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_Interval)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This,
        __x_ABI_CWindows_CFoundation_CTimeSpan *value);

    HRESULT (STDMETHODCALLTYPE *get_Pipe)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptorVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterruptInEndpointDescriptor methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_MaxPacketSize(This,value) (This)->lpVtbl->get_MaxPacketSize(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_EndpointNumber(This,value) (This)->lpVtbl->get_EndpointNumber(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_Interval(This,value) (This)->lpVtbl->get_Interval(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_Pipe(This,value) (This)->lpVtbl->get_Pipe(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterruptInEndpointDescriptor methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_MaxPacketSize(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_MaxPacketSize(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_EndpointNumber(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_EndpointNumber(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_Interval(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This,__x_ABI_CWindows_CFoundation_CTimeSpan *value) {
    return This->lpVtbl->get_Interval(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_Pipe(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe **value) {
    return This->lpVtbl->get_Pipe(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterruptInEndpointDescriptor IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor
#define IUsbInterruptInEndpointDescriptorVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptorVtbl
#define IUsbInterruptInEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor
#define IUsbInterruptInEndpointDescriptor_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_QueryInterface
#define IUsbInterruptInEndpointDescriptor_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_AddRef
#define IUsbInterruptInEndpointDescriptor_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_Release
#define IUsbInterruptInEndpointDescriptor_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetIids
#define IUsbInterruptInEndpointDescriptor_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetRuntimeClassName
#define IUsbInterruptInEndpointDescriptor_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_GetTrustLevel
#define IUsbInterruptInEndpointDescriptor_get_MaxPacketSize __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_MaxPacketSize
#define IUsbInterruptInEndpointDescriptor_get_EndpointNumber __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_EndpointNumber
#define IUsbInterruptInEndpointDescriptor_get_Interval __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_Interval
#define IUsbInterruptInEndpointDescriptor_get_Pipe __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_get_Pipe
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterruptInEventArgs interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs, 0xb7b04092, 0x1418, 0x4936, 0x82,0x09, 0x29,0x9c,0xf5,0x60,0x55,0x83);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("b7b04092-1418-4936-8209-299cf5605583")
                IUsbInterruptInEventArgs : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_InterruptData(
                        ABI::Windows::Storage::Streams::IBuffer **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs, 0xb7b04092, 0x1418, 0x4936, 0x82,0x09, 0x29,0x9c,0xf5,0x60,0x55,0x83)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *This,
        TrustLevel *trustLevel);

    /*** IUsbInterruptInEventArgs methods ***/
    HRESULT (STDMETHODCALLTYPE *get_InterruptData)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *This,
        __x_ABI_CWindows_CStorage_CStreams_CIBuffer **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgsVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterruptInEventArgs methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_get_InterruptData(This,value) (This)->lpVtbl->get_InterruptData(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterruptInEventArgs methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_get_InterruptData(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs* This,__x_ABI_CWindows_CStorage_CStreams_CIBuffer **value) {
    return This->lpVtbl->get_InterruptData(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterruptInEventArgs IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs
#define IUsbInterruptInEventArgsVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgsVtbl
#define IUsbInterruptInEventArgs __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs
#define IUsbInterruptInEventArgs_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_QueryInterface
#define IUsbInterruptInEventArgs_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_AddRef
#define IUsbInterruptInEventArgs_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_Release
#define IUsbInterruptInEventArgs_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetIids
#define IUsbInterruptInEventArgs_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetRuntimeClassName
#define IUsbInterruptInEventArgs_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_GetTrustLevel
#define IUsbInterruptInEventArgs_get_InterruptData __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_get_InterruptData
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterruptInPipe interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe, 0xfa007116, 0x84d7, 0x48c7, 0x8a,0x3f, 0x4c,0x0b,0x23,0x5f,0x2e,0xa6);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("fa007116-84d7-48c7-8a3f-4c0b235f2ea6")
                IUsbInterruptInPipe : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_EndpointDescriptor(
                        ABI::Windows::Devices::Usb::IUsbInterruptInEndpointDescriptor **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE ClearStallAsync(
                        ABI::Windows::Foundation::IAsyncAction **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE add_DataReceived(
                        ABI::Windows::Foundation::ITypedEventHandler<ABI::Windows::Devices::Usb::UsbInterruptInPipe*,ABI::Windows::Devices::Usb::UsbInterruptInEventArgs* > *handler,
                        EventRegistrationToken *token) = 0;

                    virtual HRESULT STDMETHODCALLTYPE remove_DataReceived(
                        EventRegistrationToken token) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe, 0xfa007116, 0x84d7, 0x48c7, 0x8a,0x3f, 0x4c,0x0b,0x23,0x5f,0x2e,0xa6)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This,
        TrustLevel *trustLevel);

    /*** IUsbInterruptInPipe methods ***/
    HRESULT (STDMETHODCALLTYPE *get_EndpointDescriptor)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *ClearStallAsync)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This,
        __x_ABI_CWindows_CFoundation_CIAsyncAction **operation);

    HRESULT (STDMETHODCALLTYPE *add_DataReceived)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This,
        __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs *handler,
        EventRegistrationToken *token);

    HRESULT (STDMETHODCALLTYPE *remove_DataReceived)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *This,
        EventRegistrationToken token);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipeVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterruptInPipe methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_get_EndpointDescriptor(This,value) (This)->lpVtbl->get_EndpointDescriptor(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_ClearStallAsync(This,operation) (This)->lpVtbl->ClearStallAsync(This,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_add_DataReceived(This,handler,token) (This)->lpVtbl->add_DataReceived(This,handler,token)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_remove_DataReceived(This,token) (This)->lpVtbl->remove_DataReceived(This,token)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterruptInPipe methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_get_EndpointDescriptor(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor **value) {
    return This->lpVtbl->get_EndpointDescriptor(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_ClearStallAsync(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This,__x_ABI_CWindows_CFoundation_CIAsyncAction **operation) {
    return This->lpVtbl->ClearStallAsync(This,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_add_DataReceived(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This,__FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs *handler,EventRegistrationToken *token) {
    return This->lpVtbl->add_DataReceived(This,handler,token);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_remove_DataReceived(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe* This,EventRegistrationToken token) {
    return This->lpVtbl->remove_DataReceived(This,token);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterruptInPipe IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe
#define IUsbInterruptInPipeVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipeVtbl
#define IUsbInterruptInPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe
#define IUsbInterruptInPipe_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_QueryInterface
#define IUsbInterruptInPipe_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_AddRef
#define IUsbInterruptInPipe_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_Release
#define IUsbInterruptInPipe_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetIids
#define IUsbInterruptInPipe_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetRuntimeClassName
#define IUsbInterruptInPipe_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_GetTrustLevel
#define IUsbInterruptInPipe_get_EndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_get_EndpointDescriptor
#define IUsbInterruptInPipe_ClearStallAsync __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_ClearStallAsync
#define IUsbInterruptInPipe_add_DataReceived __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_add_DataReceived
#define IUsbInterruptInPipe_remove_DataReceived __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_remove_DataReceived
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterruptOutEndpointDescriptor interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor, 0xcc9fed81, 0x10ca, 0x4533, 0x95,0x2d, 0x9e,0x27,0x83,0x41,0xe8,0x0f);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("cc9fed81-10ca-4533-952d-9e278341e80f")
                IUsbInterruptOutEndpointDescriptor : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_MaxPacketSize(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_EndpointNumber(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Interval(
                        ABI::Windows::Foundation::TimeSpan *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Pipe(
                        ABI::Windows::Devices::Usb::IUsbInterruptOutPipe **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor, 0xcc9fed81, 0x10ca, 0x4533, 0x95,0x2d, 0x9e,0x27,0x83,0x41,0xe8,0x0f)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This,
        TrustLevel *trustLevel);

    /*** IUsbInterruptOutEndpointDescriptor methods ***/
    HRESULT (STDMETHODCALLTYPE *get_MaxPacketSize)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *get_EndpointNumber)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *get_Interval)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This,
        __x_ABI_CWindows_CFoundation_CTimeSpan *value);

    HRESULT (STDMETHODCALLTYPE *get_Pipe)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptorVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterruptOutEndpointDescriptor methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_MaxPacketSize(This,value) (This)->lpVtbl->get_MaxPacketSize(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_EndpointNumber(This,value) (This)->lpVtbl->get_EndpointNumber(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_Interval(This,value) (This)->lpVtbl->get_Interval(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_Pipe(This,value) (This)->lpVtbl->get_Pipe(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterruptOutEndpointDescriptor methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_MaxPacketSize(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_MaxPacketSize(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_EndpointNumber(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This,BYTE *value) {
    return This->lpVtbl->get_EndpointNumber(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_Interval(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This,__x_ABI_CWindows_CFoundation_CTimeSpan *value) {
    return This->lpVtbl->get_Interval(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_Pipe(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe **value) {
    return This->lpVtbl->get_Pipe(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterruptOutEndpointDescriptor IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor
#define IUsbInterruptOutEndpointDescriptorVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptorVtbl
#define IUsbInterruptOutEndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor
#define IUsbInterruptOutEndpointDescriptor_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_QueryInterface
#define IUsbInterruptOutEndpointDescriptor_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_AddRef
#define IUsbInterruptOutEndpointDescriptor_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_Release
#define IUsbInterruptOutEndpointDescriptor_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetIids
#define IUsbInterruptOutEndpointDescriptor_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetRuntimeClassName
#define IUsbInterruptOutEndpointDescriptor_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_GetTrustLevel
#define IUsbInterruptOutEndpointDescriptor_get_MaxPacketSize __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_MaxPacketSize
#define IUsbInterruptOutEndpointDescriptor_get_EndpointNumber __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_EndpointNumber
#define IUsbInterruptOutEndpointDescriptor_get_Interval __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_Interval
#define IUsbInterruptOutEndpointDescriptor_get_Pipe __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_get_Pipe
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbInterruptOutPipe interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe, 0xe984c8a9, 0xaaf9, 0x49d0, 0xb9,0x6c, 0xf6,0x61,0xab,0x4a,0x7f,0x95);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("e984c8a9-aaf9-49d0-b96c-f661ab4a7f95")
                IUsbInterruptOutPipe : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_EndpointDescriptor(
                        ABI::Windows::Devices::Usb::IUsbInterruptOutEndpointDescriptor **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE ClearStallAsync(
                        ABI::Windows::Foundation::IAsyncAction **operation) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_WriteOptions(
                        ABI::Windows::Devices::Usb::UsbWriteOptions value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_WriteOptions(
                        ABI::Windows::Devices::Usb::UsbWriteOptions *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_OutputStream(
                        ABI::Windows::Storage::Streams::IOutputStream **value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe, 0xe984c8a9, 0xaaf9, 0x49d0, 0xb9,0x6c, 0xf6,0x61,0xab,0x4a,0x7f,0x95)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        TrustLevel *trustLevel);

    /*** IUsbInterruptOutPipe methods ***/
    HRESULT (STDMETHODCALLTYPE *get_EndpointDescriptor)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *ClearStallAsync)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        __x_ABI_CWindows_CFoundation_CIAsyncAction **operation);

    HRESULT (STDMETHODCALLTYPE *put_WriteOptions)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions value);

    HRESULT (STDMETHODCALLTYPE *get_WriteOptions)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions *value);

    HRESULT (STDMETHODCALLTYPE *get_OutputStream)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *This,
        __x_ABI_CWindows_CStorage_CStreams_CIOutputStream **value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipeVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbInterruptOutPipe methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_EndpointDescriptor(This,value) (This)->lpVtbl->get_EndpointDescriptor(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_ClearStallAsync(This,operation) (This)->lpVtbl->ClearStallAsync(This,operation)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_put_WriteOptions(This,value) (This)->lpVtbl->put_WriteOptions(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_WriteOptions(This,value) (This)->lpVtbl->get_WriteOptions(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_OutputStream(This,value) (This)->lpVtbl->get_OutputStream(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbInterruptOutPipe methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_EndpointDescriptor(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor **value) {
    return This->lpVtbl->get_EndpointDescriptor(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_ClearStallAsync(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,__x_ABI_CWindows_CFoundation_CIAsyncAction **operation) {
    return This->lpVtbl->ClearStallAsync(This,operation);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_put_WriteOptions(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,__x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions value) {
    return This->lpVtbl->put_WriteOptions(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_WriteOptions(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,__x_ABI_CWindows_CDevices_CUsb_CUsbWriteOptions *value) {
    return This->lpVtbl->get_WriteOptions(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_OutputStream(__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe* This,__x_ABI_CWindows_CStorage_CStreams_CIOutputStream **value) {
    return This->lpVtbl->get_OutputStream(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbInterruptOutPipe IID___x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe
#define IUsbInterruptOutPipeVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipeVtbl
#define IUsbInterruptOutPipe __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe
#define IUsbInterruptOutPipe_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_QueryInterface
#define IUsbInterruptOutPipe_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_AddRef
#define IUsbInterruptOutPipe_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_Release
#define IUsbInterruptOutPipe_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetIids
#define IUsbInterruptOutPipe_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetRuntimeClassName
#define IUsbInterruptOutPipe_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_GetTrustLevel
#define IUsbInterruptOutPipe_get_EndpointDescriptor __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_EndpointDescriptor
#define IUsbInterruptOutPipe_ClearStallAsync __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_ClearStallAsync
#define IUsbInterruptOutPipe_put_WriteOptions __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_put_WriteOptions
#define IUsbInterruptOutPipe_get_WriteOptions __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_WriteOptions
#define IUsbInterruptOutPipe_get_OutputStream __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_get_OutputStream
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IUsbSetupPacket interface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_INTERFACE_DEFINED__
#define ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID___x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket, 0x104ba132, 0xc78f, 0x4c51, 0xb6,0x54, 0xe4,0x9d,0x02,0xf2,0xcb,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Devices {
            namespace Usb {
                MIDL_INTERFACE("104ba132-c78f-4c51-b654-e49d02f2cb03")
                IUsbSetupPacket : public IInspectable
                {
                    virtual HRESULT STDMETHODCALLTYPE get_RequestType(
                        ABI::Windows::Devices::Usb::IUsbControlRequestType **value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_RequestType(
                        ABI::Windows::Devices::Usb::IUsbControlRequestType *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Request(
                        BYTE *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_Request(
                        BYTE value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Value(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_Value(
                        UINT32 value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Index(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_Index(
                        UINT32 value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE get_Length(
                        UINT32 *value) = 0;

                    virtual HRESULT STDMETHODCALLTYPE put_Length(
                        UINT32 value) = 0;

                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket, 0x104ba132, 0xc78f, 0x4c51, 0xb6,0x54, 0xe4,0x9d,0x02,0xf2,0xcb,0x03)
#endif
#else
typedef struct __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        TrustLevel *trustLevel);

    /*** IUsbSetupPacket methods ***/
    HRESULT (STDMETHODCALLTYPE *get_RequestType)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType **value);

    HRESULT (STDMETHODCALLTYPE *put_RequestType)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *value);

    HRESULT (STDMETHODCALLTYPE *get_Request)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        BYTE *value);

    HRESULT (STDMETHODCALLTYPE *put_Request)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        BYTE value);

    HRESULT (STDMETHODCALLTYPE *get_Value)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *put_Value)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        UINT32 value);

    HRESULT (STDMETHODCALLTYPE *get_Index)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *put_Index)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        UINT32 value);

    HRESULT (STDMETHODCALLTYPE *get_Length)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *put_Length)(
        __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket *This,
        UINT32 value);

    END_INTERFACE
} __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketVtbl;

interface __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket {
    CONST_VTBL __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IUsbSetupPacket methods ***/
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_RequestType(This,value) (This)->lpVtbl->get_RequestType(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_RequestType(This,value) (This)->lpVtbl->put_RequestType(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Request(This,value) (This)->lpVtbl->get_Request(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Request(This,value) (This)->lpVtbl->put_Request(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Value(This,value) (This)->lpVtbl->get_Value(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Value(This,value) (This)->lpVtbl->put_Value(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Index(This,value) (This)->lpVtbl->get_Index(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Index(This,value) (This)->lpVtbl->put_Index(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Length(This,value) (This)->lpVtbl->get_Length(This,value)
#define __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Length(This,value) (This)->lpVtbl->put_Length(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_QueryInterface(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_AddRef(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_Release(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetIids(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetRuntimeClassName(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetTrustLevel(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IUsbSetupPacket methods ***/
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_RequestType(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType **value) {
    return This->lpVtbl->get_RequestType(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_RequestType(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbControlRequestType *value) {
    return This->lpVtbl->put_RequestType(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Request(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,BYTE *value) {
    return This->lpVtbl->get_Request(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Request(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,BYTE value) {
    return This->lpVtbl->put_Request(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Value(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,UINT32 *value) {
    return This->lpVtbl->get_Value(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Value(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,UINT32 value) {
    return This->lpVtbl->put_Value(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Index(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,UINT32 *value) {
    return This->lpVtbl->get_Index(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Index(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,UINT32 value) {
    return This->lpVtbl->put_Index(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Length(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,UINT32 *value) {
    return This->lpVtbl->get_Length(This,value);
}
static inline HRESULT __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Length(__x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket* This,UINT32 value) {
    return This->lpVtbl->put_Length(This,value);
}
#endif
#ifdef WIDL_using_Windows_Devices_Usb
#define IID_IUsbSetupPacket IID___x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket
#define IUsbSetupPacketVtbl __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacketVtbl
#define IUsbSetupPacket __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket
#define IUsbSetupPacket_QueryInterface __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_QueryInterface
#define IUsbSetupPacket_AddRef __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_AddRef
#define IUsbSetupPacket_Release __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_Release
#define IUsbSetupPacket_GetIids __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetIids
#define IUsbSetupPacket_GetRuntimeClassName __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetRuntimeClassName
#define IUsbSetupPacket_GetTrustLevel __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_GetTrustLevel
#define IUsbSetupPacket_get_RequestType __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_RequestType
#define IUsbSetupPacket_put_RequestType __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_RequestType
#define IUsbSetupPacket_get_Request __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Request
#define IUsbSetupPacket_put_Request __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Request
#define IUsbSetupPacket_get_Value __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Value
#define IUsbSetupPacket_put_Value __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Value
#define IUsbSetupPacket_get_Index __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Index
#define IUsbSetupPacket_put_Index __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Index
#define IUsbSetupPacket_get_Length __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_get_Length
#define IUsbSetupPacket_put_Length __x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_put_Length
#endif /* WIDL_using_Windows_Devices_Usb */
#endif

#endif

#endif  /* ____x_ABI_CWindows_CDevices_CUsb_CIUsbSetupPacket_INTERFACE_DEFINED__ */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbBulkInEndpointDescriptor
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbBulkInEndpointDescriptor_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbBulkInEndpointDescriptor_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkInEndpointDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','B','u','l','k','I','n','E','n','d','p','o','i','n','t','D','e','s','c','r','i','p','t','o','r',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkInEndpointDescriptor[] = L"Windows.Devices.Usb.UsbBulkInEndpointDescriptor";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkInEndpointDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','B','u','l','k','I','n','E','n','d','p','o','i','n','t','D','e','s','c','r','i','p','t','o','r',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbBulkInEndpointDescriptor_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbBulkInPipe
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbBulkInPipe_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbBulkInPipe_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkInPipe[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','B','u','l','k','I','n','P','i','p','e',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkInPipe[] = L"Windows.Devices.Usb.UsbBulkInPipe";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkInPipe[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','B','u','l','k','I','n','P','i','p','e',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbBulkInPipe_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbBulkOutEndpointDescriptor
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbBulkOutEndpointDescriptor_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbBulkOutEndpointDescriptor_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkOutEndpointDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','B','u','l','k','O','u','t','E','n','d','p','o','i','n','t','D','e','s','c','r','i','p','t','o','r',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkOutEndpointDescriptor[] = L"Windows.Devices.Usb.UsbBulkOutEndpointDescriptor";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkOutEndpointDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','B','u','l','k','O','u','t','E','n','d','p','o','i','n','t','D','e','s','c','r','i','p','t','o','r',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbBulkOutEndpointDescriptor_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbBulkOutPipe
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbBulkOutPipe_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbBulkOutPipe_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkOutPipe[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','B','u','l','k','O','u','t','P','i','p','e',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkOutPipe[] = L"Windows.Devices.Usb.UsbBulkOutPipe";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbBulkOutPipe[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','B','u','l','k','O','u','t','P','i','p','e',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbBulkOutPipe_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbConfiguration
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbConfiguration_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbConfiguration_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbConfiguration[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','C','o','n','f','i','g','u','r','a','t','i','o','n',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbConfiguration[] = L"Windows.Devices.Usb.UsbConfiguration";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbConfiguration[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','C','o','n','f','i','g','u','r','a','t','i','o','n',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbConfiguration_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbConfigurationDescriptor
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbConfigurationDescriptor_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbConfigurationDescriptor_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbConfigurationDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','C','o','n','f','i','g','u','r','a','t','i','o','n','D','e','s','c','r','i','p','t','o','r',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbConfigurationDescriptor[] = L"Windows.Devices.Usb.UsbConfigurationDescriptor";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbConfigurationDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','C','o','n','f','i','g','u','r','a','t','i','o','n','D','e','s','c','r','i','p','t','o','r',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbConfigurationDescriptor_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbControlRequestType
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbControlRequestType_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbControlRequestType_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbControlRequestType[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','C','o','n','t','r','o','l','R','e','q','u','e','s','t','T','y','p','e',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbControlRequestType[] = L"Windows.Devices.Usb.UsbControlRequestType";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbControlRequestType[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','C','o','n','t','r','o','l','R','e','q','u','e','s','t','T','y','p','e',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbControlRequestType_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbDescriptor
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbDescriptor_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbDescriptor_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','D','e','s','c','r','i','p','t','o','r',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbDescriptor[] = L"Windows.Devices.Usb.UsbDescriptor";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','D','e','s','c','r','i','p','t','o','r',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbDescriptor_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbDevice
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbDevice_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbDevice_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbDevice[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','D','e','v','i','c','e',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbDevice[] = L"Windows.Devices.Usb.UsbDevice";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbDevice[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','D','e','v','i','c','e',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbDevice_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbDeviceClass
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbDeviceClass_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbDeviceClass_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbDeviceClass[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','D','e','v','i','c','e','C','l','a','s','s',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbDeviceClass[] = L"Windows.Devices.Usb.UsbDeviceClass";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbDeviceClass[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','D','e','v','i','c','e','C','l','a','s','s',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbDeviceClass_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbDeviceDescriptor
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbDeviceDescriptor_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbDeviceDescriptor_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbDeviceDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','D','e','v','i','c','e','D','e','s','c','r','i','p','t','o','r',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbDeviceDescriptor[] = L"Windows.Devices.Usb.UsbDeviceDescriptor";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbDeviceDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','D','e','v','i','c','e','D','e','s','c','r','i','p','t','o','r',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbDeviceDescriptor_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbInterface
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbInterface_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbInterface_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterface[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','f','a','c','e',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterface[] = L"Windows.Devices.Usb.UsbInterface";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterface[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','f','a','c','e',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbInterface_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbInterfaceDescriptor
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbInterfaceDescriptor_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbInterfaceDescriptor_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterfaceDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','f','a','c','e','D','e','s','c','r','i','p','t','o','r',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterfaceDescriptor[] = L"Windows.Devices.Usb.UsbInterfaceDescriptor";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterfaceDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','f','a','c','e','D','e','s','c','r','i','p','t','o','r',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbInterfaceDescriptor_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbInterfaceSetting
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbInterfaceSetting_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbInterfaceSetting_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterfaceSetting[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','f','a','c','e','S','e','t','t','i','n','g',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterfaceSetting[] = L"Windows.Devices.Usb.UsbInterfaceSetting";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterfaceSetting[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','f','a','c','e','S','e','t','t','i','n','g',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbInterfaceSetting_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbInterruptInEventArgs
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInEventArgs_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInEventArgs_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInEventArgs[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','I','n','E','v','e','n','t','A','r','g','s',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInEventArgs[] = L"Windows.Devices.Usb.UsbInterruptInEventArgs";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInEventArgs[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','I','n','E','v','e','n','t','A','r','g','s',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInEventArgs_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbInterruptInEndpointDescriptor
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInEndpointDescriptor_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInEndpointDescriptor_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInEndpointDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','I','n','E','n','d','p','o','i','n','t','D','e','s','c','r','i','p','t','o','r',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInEndpointDescriptor[] = L"Windows.Devices.Usb.UsbInterruptInEndpointDescriptor";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInEndpointDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','I','n','E','n','d','p','o','i','n','t','D','e','s','c','r','i','p','t','o','r',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInEndpointDescriptor_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbInterruptInPipe
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInPipe_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInPipe_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInPipe[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','I','n','P','i','p','e',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInPipe[] = L"Windows.Devices.Usb.UsbInterruptInPipe";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptInPipe[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','I','n','P','i','p','e',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptInPipe_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbInterruptOutEndpointDescriptor
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptOutEndpointDescriptor_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptOutEndpointDescriptor_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptOutEndpointDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','O','u','t','E','n','d','p','o','i','n','t','D','e','s','c','r','i','p','t','o','r',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptOutEndpointDescriptor[] = L"Windows.Devices.Usb.UsbInterruptOutEndpointDescriptor";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptOutEndpointDescriptor[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','O','u','t','E','n','d','p','o','i','n','t','D','e','s','c','r','i','p','t','o','r',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptOutEndpointDescriptor_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbInterruptOutPipe
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptOutPipe_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptOutPipe_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptOutPipe[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','O','u','t','P','i','p','e',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptOutPipe[] = L"Windows.Devices.Usb.UsbInterruptOutPipe";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbInterruptOutPipe[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','I','n','t','e','r','r','u','p','t','O','u','t','P','i','p','e',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbInterruptOutPipe_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*
 * Class Windows.Devices.Usb.UsbSetupPacket
 */
#if WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000
#ifndef RUNTIMECLASS_Windows_Devices_Usb_UsbSetupPacket_DEFINED
#define RUNTIMECLASS_Windows_Devices_Usb_UsbSetupPacket_DEFINED
#if !defined(_MSC_VER) && !defined(__MINGW32__)
static const WCHAR RuntimeClass_Windows_Devices_Usb_UsbSetupPacket[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','S','e','t','u','p','P','a','c','k','e','t',0};
#elif defined(__GNUC__) && !defined(__cplusplus)
const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbSetupPacket[] = L"Windows.Devices.Usb.UsbSetupPacket";
#else
extern const DECLSPEC_SELECTANY WCHAR RuntimeClass_Windows_Devices_Usb_UsbSetupPacket[] = {'W','i','n','d','o','w','s','.','D','e','v','i','c','e','s','.','U','s','b','.','U','s','b','S','e','t','u','p','P','a','c','k','e','t',0};
#endif
#endif /* RUNTIMECLASS_Windows_Devices_Usb_UsbSetupPacket_DEFINED */
#endif /* WINDOWS_FOUNDATION_UNIVERSALAPICONTRACT_VERSION >= 0x10000 */

/*****************************************************************************
 * IAsyncOperationCompletedHandler<ABI::Windows::Devices::Usb::UsbDevice* > interface
 */
#ifndef ____FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_INTERFACE_DEFINED__
#define ____FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice, 0x7331254f, 0x6caf, 0x587d, 0x9c,0x2a, 0x01,0x8c,0x66,0xd3,0x12,0xdb);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            template<>
            MIDL_INTERFACE("7331254f-6caf-587d-9c2a-018c66d312db")
            IAsyncOperationCompletedHandler<ABI::Windows::Devices::Usb::UsbDevice* > : IAsyncOperationCompletedHandler_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbDevice*, ABI::Windows::Devices::Usb::IUsbDevice* > >
            {
            };
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice, 0x7331254f, 0x6caf, 0x587d, 0x9c,0x2a, 0x01,0x8c,0x66,0xd3,0x12,0xdb)
#endif
#else
typedef struct __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDeviceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice *This);

    /*** IAsyncOperationCompletedHandler<ABI::Windows::Devices::Usb::UsbDevice* > methods ***/
    HRESULT (STDMETHODCALLTYPE *Invoke)(
        __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice *This,
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *info,
        AsyncStatus status);

    END_INTERFACE
} __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDeviceVtbl;

interface __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice {
    CONST_VTBL __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDeviceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_Release(This) (This)->lpVtbl->Release(This)
/*** IAsyncOperationCompletedHandler<ABI::Windows::Devices::Usb::UsbDevice* > methods ***/
#define __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_Invoke(This,info,status) (This)->lpVtbl->Invoke(This,info,status)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_QueryInterface(__FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_AddRef(__FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_Release(__FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice* This) {
    return This->lpVtbl->Release(This);
}
/*** IAsyncOperationCompletedHandler<ABI::Windows::Devices::Usb::UsbDevice* > methods ***/
static inline HRESULT __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_Invoke(__FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice* This,__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *info,AsyncStatus status) {
    return This->lpVtbl->Invoke(This,info,status);
}
#endif
#ifdef WIDL_using_Windows_Foundation
#define IID_IAsyncOperationCompletedHandler_UsbDevice IID___FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice
#define IAsyncOperationCompletedHandler_UsbDeviceVtbl __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDeviceVtbl
#define IAsyncOperationCompletedHandler_UsbDevice __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice
#define IAsyncOperationCompletedHandler_UsbDevice_QueryInterface __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_QueryInterface
#define IAsyncOperationCompletedHandler_UsbDevice_AddRef __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_AddRef
#define IAsyncOperationCompletedHandler_UsbDevice_Release __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_Release
#define IAsyncOperationCompletedHandler_UsbDevice_Invoke __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_Invoke
#endif /* WIDL_using_Windows_Foundation */
#endif

#endif

#endif  /* ____FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor, 0x9c69ac78, 0x309e, 0x5763, 0xaf,0x26, 0x97,0x06,0xff,0xa4,0x7e,0xc0);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("9c69ac78-309e-5763-af26-9706ffa47ec0")
                IVectorView<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor*, ABI::Windows::Devices::Usb::IUsbBulkInEndpointDescriptor* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor, 0x9c69ac78, 0x309e, 0x5763, 0xaf,0x26, 0x97,0x06,0xff,0xa4,0x7e,0xc0)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptorVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkInEndpointDescriptor* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInEndpointDescriptor **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbBulkInEndpointDescriptor IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor
#define IVectorView_UsbBulkInEndpointDescriptorVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptorVtbl
#define IVectorView_UsbBulkInEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor
#define IVectorView_UsbBulkInEndpointDescriptor_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_QueryInterface
#define IVectorView_UsbBulkInEndpointDescriptor_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_AddRef
#define IVectorView_UsbBulkInEndpointDescriptor_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_Release
#define IVectorView_UsbBulkInEndpointDescriptor_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetIids
#define IVectorView_UsbBulkInEndpointDescriptor_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetRuntimeClassName
#define IVectorView_UsbBulkInEndpointDescriptor_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetTrustLevel
#define IVectorView_UsbBulkInEndpointDescriptor_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetAt
#define IVectorView_UsbBulkInEndpointDescriptor_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_get_Size
#define IVectorView_UsbBulkInEndpointDescriptor_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_IndexOf
#define IVectorView_UsbBulkInEndpointDescriptor_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInEndpointDescriptor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbBulkInPipe* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe, 0xa93c84bc, 0x6484, 0x5959, 0xb6,0x1a, 0x70,0x3c,0xc7,0x11,0x5f,0x6f);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("a93c84bc-6484-5959-b61a-703cc7115f6f")
                IVectorView<ABI::Windows::Devices::Usb::UsbBulkInPipe* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbBulkInPipe*, ABI::Windows::Devices::Usb::IUsbBulkInPipe* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe, 0xa93c84bc, 0x6484, 0x5959, 0xb6,0x1a, 0x70,0x3c,0xc7,0x11,0x5f,0x6f)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkInPipe* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipeVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkInPipe* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkInPipe* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkInPipe **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbBulkInPipe IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe
#define IVectorView_UsbBulkInPipeVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipeVtbl
#define IVectorView_UsbBulkInPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe
#define IVectorView_UsbBulkInPipe_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_QueryInterface
#define IVectorView_UsbBulkInPipe_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_AddRef
#define IVectorView_UsbBulkInPipe_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_Release
#define IVectorView_UsbBulkInPipe_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetIids
#define IVectorView_UsbBulkInPipe_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetRuntimeClassName
#define IVectorView_UsbBulkInPipe_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetTrustLevel
#define IVectorView_UsbBulkInPipe_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetAt
#define IVectorView_UsbBulkInPipe_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_get_Size
#define IVectorView_UsbBulkInPipe_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_IndexOf
#define IVectorView_UsbBulkInPipe_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkInPipe_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor, 0x22a53676, 0xa3ea, 0x5dcd, 0xbb,0x39, 0xb2,0x8a,0x53,0x27,0xc4,0xa3);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("22a53676-a3ea-5dcd-bb39-b28a5327c4a3")
                IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor*, ABI::Windows::Devices::Usb::IUsbBulkOutEndpointDescriptor* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor, 0x22a53676, 0xa3ea, 0x5dcd, 0xbb,0x39, 0xb2,0x8a,0x53,0x27,0xc4,0xa3)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptorVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutEndpointDescriptor* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutEndpointDescriptor **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbBulkOutEndpointDescriptor IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor
#define IVectorView_UsbBulkOutEndpointDescriptorVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptorVtbl
#define IVectorView_UsbBulkOutEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor
#define IVectorView_UsbBulkOutEndpointDescriptor_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_QueryInterface
#define IVectorView_UsbBulkOutEndpointDescriptor_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_AddRef
#define IVectorView_UsbBulkOutEndpointDescriptor_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_Release
#define IVectorView_UsbBulkOutEndpointDescriptor_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetIids
#define IVectorView_UsbBulkOutEndpointDescriptor_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetRuntimeClassName
#define IVectorView_UsbBulkOutEndpointDescriptor_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetTrustLevel
#define IVectorView_UsbBulkOutEndpointDescriptor_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetAt
#define IVectorView_UsbBulkOutEndpointDescriptor_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_get_Size
#define IVectorView_UsbBulkOutEndpointDescriptor_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_IndexOf
#define IVectorView_UsbBulkOutEndpointDescriptor_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutEndpointDescriptor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutPipe* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe, 0x0a873512, 0x15f1, 0x5e8e, 0xa7,0x2a, 0x04,0x5c,0xfd,0x7a,0x5e,0x83);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("0a873512-15f1-5e8e-a72a-045cfd7a5e83")
                IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutPipe* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbBulkOutPipe*, ABI::Windows::Devices::Usb::IUsbBulkOutPipe* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe, 0x0a873512, 0x15f1, 0x5e8e, 0xa7,0x2a, 0x04,0x5c,0xfd,0x7a,0x5e,0x83)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutPipe* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipeVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutPipe* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbBulkOutPipe* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbBulkOutPipe **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbBulkOutPipe IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe
#define IVectorView_UsbBulkOutPipeVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipeVtbl
#define IVectorView_UsbBulkOutPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe
#define IVectorView_UsbBulkOutPipe_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_QueryInterface
#define IVectorView_UsbBulkOutPipe_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_AddRef
#define IVectorView_UsbBulkOutPipe_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_Release
#define IVectorView_UsbBulkOutPipe_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetIids
#define IVectorView_UsbBulkOutPipe_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetRuntimeClassName
#define IVectorView_UsbBulkOutPipe_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetTrustLevel
#define IVectorView_UsbBulkOutPipe_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetAt
#define IVectorView_UsbBulkOutPipe_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_get_Size
#define IVectorView_UsbBulkOutPipe_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_IndexOf
#define IVectorView_UsbBulkOutPipe_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbBulkOutPipe_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor, 0x5408baa2, 0x291e, 0x537a, 0xb6,0x1f, 0x13,0x70,0x62,0xf7,0xff,0x7d);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("5408baa2-291e-537a-b61f-137062f7ff7d")
                IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbDescriptor*, ABI::Windows::Devices::Usb::IUsbDescriptor* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor, 0x5408baa2, 0x291e, 0x537a, 0xb6,0x1f, 0x13,0x70,0x62,0xf7,0xff,0x7d)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptorVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbDescriptor* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbDescriptor **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbDescriptor IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor
#define IVectorView_UsbDescriptorVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptorVtbl
#define IVectorView_UsbDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor
#define IVectorView_UsbDescriptor_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_QueryInterface
#define IVectorView_UsbDescriptor_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_AddRef
#define IVectorView_UsbDescriptor_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_Release
#define IVectorView_UsbDescriptor_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetIids
#define IVectorView_UsbDescriptor_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetRuntimeClassName
#define IVectorView_UsbDescriptor_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetTrustLevel
#define IVectorView_UsbDescriptor_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetAt
#define IVectorView_UsbDescriptor_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_get_Size
#define IVectorView_UsbDescriptor_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_IndexOf
#define IVectorView_UsbDescriptor_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbDescriptor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbInterface* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface, 0x9c69ec7f, 0x2e42, 0x58cd, 0xa7,0x4a, 0xf4,0x97,0x48,0x11,0x13,0x4d);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("9c69ec7f-2e42-58cd-a74a-f4974811134d")
                IVectorView<ABI::Windows::Devices::Usb::UsbInterface* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbInterface*, ABI::Windows::Devices::Usb::IUsbInterface* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface, 0x9c69ec7f, 0x2e42, 0x58cd, 0xa7,0x4a, 0xf4,0x97,0x48,0x11,0x13,0x4d)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbInterface* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterface **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterface* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterface* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterface **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbInterface IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface
#define IVectorView_UsbInterfaceVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceVtbl
#define IVectorView_UsbInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface
#define IVectorView_UsbInterface_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_QueryInterface
#define IVectorView_UsbInterface_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_AddRef
#define IVectorView_UsbInterface_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_Release
#define IVectorView_UsbInterface_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetIids
#define IVectorView_UsbInterface_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetRuntimeClassName
#define IVectorView_UsbInterface_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetTrustLevel
#define IVectorView_UsbInterface_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetAt
#define IVectorView_UsbInterface_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_get_Size
#define IVectorView_UsbInterface_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_IndexOf
#define IVectorView_UsbInterface_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterface_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbInterfaceSetting* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting, 0x71194af7, 0x77c2, 0x54d5, 0xa1,0x16, 0x28,0x7f,0x0b,0x7f,0xd5,0x3f);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("71194af7-77c2-54d5-a116-287f0b7fd53f")
                IVectorView<ABI::Windows::Devices::Usb::UsbInterfaceSetting* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbInterfaceSetting*, ABI::Windows::Devices::Usb::IUsbInterfaceSetting* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting, 0x71194af7, 0x77c2, 0x54d5, 0xa1,0x16, 0x28,0x7f,0x0b,0x7f,0xd5,0x3f)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSettingVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbInterfaceSetting* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSettingVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSettingVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterfaceSetting* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterfaceSetting* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterfaceSetting **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbInterfaceSetting IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting
#define IVectorView_UsbInterfaceSettingVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSettingVtbl
#define IVectorView_UsbInterfaceSetting __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting
#define IVectorView_UsbInterfaceSetting_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_QueryInterface
#define IVectorView_UsbInterfaceSetting_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_AddRef
#define IVectorView_UsbInterfaceSetting_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_Release
#define IVectorView_UsbInterfaceSetting_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetIids
#define IVectorView_UsbInterfaceSetting_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetRuntimeClassName
#define IVectorView_UsbInterfaceSetting_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetTrustLevel
#define IVectorView_UsbInterfaceSetting_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetAt
#define IVectorView_UsbInterfaceSetting_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_get_Size
#define IVectorView_UsbInterfaceSetting_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_IndexOf
#define IVectorView_UsbInterfaceSetting_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterfaceSetting_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor, 0x3fc7f890, 0x218e, 0x5057, 0x90,0x4d, 0x63,0x87,0xc5,0x91,0xcc,0x93);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("3fc7f890-218e-5057-904d-6387c591cc93")
                IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor*, ABI::Windows::Devices::Usb::IUsbInterruptInEndpointDescriptor* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor, 0x3fc7f890, 0x218e, 0x5057, 0x90,0x4d, 0x63,0x87,0xc5,0x91,0xcc,0x93)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptorVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInEndpointDescriptor* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEndpointDescriptor **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbInterruptInEndpointDescriptor IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor
#define IVectorView_UsbInterruptInEndpointDescriptorVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptorVtbl
#define IVectorView_UsbInterruptInEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor
#define IVectorView_UsbInterruptInEndpointDescriptor_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_QueryInterface
#define IVectorView_UsbInterruptInEndpointDescriptor_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_AddRef
#define IVectorView_UsbInterruptInEndpointDescriptor_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_Release
#define IVectorView_UsbInterruptInEndpointDescriptor_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetIids
#define IVectorView_UsbInterruptInEndpointDescriptor_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetRuntimeClassName
#define IVectorView_UsbInterruptInEndpointDescriptor_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetTrustLevel
#define IVectorView_UsbInterruptInEndpointDescriptor_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetAt
#define IVectorView_UsbInterruptInEndpointDescriptor_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_get_Size
#define IVectorView_UsbInterruptInEndpointDescriptor_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_IndexOf
#define IVectorView_UsbInterruptInEndpointDescriptor_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInEndpointDescriptor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInPipe* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe, 0x37469574, 0xb4c5, 0x5ba0, 0x96,0x16, 0x89,0x4d,0xd8,0x22,0xff,0x5b);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("37469574-b4c5-5ba0-9616-894dd822ff5b")
                IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInPipe* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbInterruptInPipe*, ABI::Windows::Devices::Usb::IUsbInterruptInPipe* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe, 0x37469574, 0xb4c5, 0x5ba0, 0x96,0x16, 0x89,0x4d,0xd8,0x22,0xff,0x5b)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInPipe* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipeVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInPipe* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptInPipe* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbInterruptInPipe IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe
#define IVectorView_UsbInterruptInPipeVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipeVtbl
#define IVectorView_UsbInterruptInPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe
#define IVectorView_UsbInterruptInPipe_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_QueryInterface
#define IVectorView_UsbInterruptInPipe_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_AddRef
#define IVectorView_UsbInterruptInPipe_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_Release
#define IVectorView_UsbInterruptInPipe_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetIids
#define IVectorView_UsbInterruptInPipe_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetRuntimeClassName
#define IVectorView_UsbInterruptInPipe_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetTrustLevel
#define IVectorView_UsbInterruptInPipe_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetAt
#define IVectorView_UsbInterruptInPipe_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_get_Size
#define IVectorView_UsbInterruptInPipe_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_IndexOf
#define IVectorView_UsbInterruptInPipe_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptInPipe_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor, 0x984e7e15, 0xc5ac, 0x5140, 0xa3,0xc0, 0xb5,0x83,0x19,0x00,0x85,0xd7);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("984e7e15-c5ac-5140-a3c0-b583190085d7")
                IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor*, ABI::Windows::Devices::Usb::IUsbInterruptOutEndpointDescriptor* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor, 0x984e7e15, 0xc5ac, 0x5140, 0xa3,0xc0, 0xb5,0x83,0x19,0x00,0x85,0xd7)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptorVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutEndpointDescriptor **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbInterruptOutEndpointDescriptor IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor
#define IVectorView_UsbInterruptOutEndpointDescriptorVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptorVtbl
#define IVectorView_UsbInterruptOutEndpointDescriptor __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor
#define IVectorView_UsbInterruptOutEndpointDescriptor_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_QueryInterface
#define IVectorView_UsbInterruptOutEndpointDescriptor_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_AddRef
#define IVectorView_UsbInterruptOutEndpointDescriptor_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_Release
#define IVectorView_UsbInterruptOutEndpointDescriptor_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetIids
#define IVectorView_UsbInterruptOutEndpointDescriptor_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetRuntimeClassName
#define IVectorView_UsbInterruptOutEndpointDescriptor_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetTrustLevel
#define IVectorView_UsbInterruptOutEndpointDescriptor_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetAt
#define IVectorView_UsbInterruptOutEndpointDescriptor_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_get_Size
#define IVectorView_UsbInterruptOutEndpointDescriptor_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_IndexOf
#define IVectorView_UsbInterruptOutEndpointDescriptor_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutEndpointDescriptor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutPipe* > interface
 */
#ifndef ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_INTERFACE_DEFINED__
#define ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe, 0x748196c8, 0x83bf, 0x5ec3, 0x8d,0x28, 0xa3,0x11,0x2b,0x3e,0xe3,0xcc);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            namespace Collections {
                template<>
                MIDL_INTERFACE("748196c8-83bf-5ec3-8d28-a3112b3ee3cc")
                IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutPipe* > : IVectorView_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbInterruptOutPipe*, ABI::Windows::Devices::Usb::IUsbInterruptOutPipe* > >
                {
                };
            }
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe, 0x748196c8, 0x83bf, 0x5ec3, 0x8d,0x28, 0xa3,0x11,0x2b,0x3e,0xe3,0xcc)
#endif
#else
typedef struct __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This,
        TrustLevel *trustLevel);

    /*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutPipe* > methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAt)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe **value);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This,
        UINT32 *value);

    HRESULT (STDMETHODCALLTYPE *IndexOf)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *element,
        UINT32 *index,
        BOOLEAN *value);

    HRESULT (STDMETHODCALLTYPE *GetMany)(
        __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe *This,
        UINT32 start_index,
        UINT32 items_size,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe **items,
        UINT32 *value);

    END_INTERFACE
} __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipeVtbl;

interface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe {
    CONST_VTBL __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutPipe* > methods ***/
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetAt(This,index,value) (This)->lpVtbl->GetAt(This,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_get_Size(This,value) (This)->lpVtbl->get_Size(This,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_IndexOf(This,element,index,value) (This)->lpVtbl->IndexOf(This,element,index,value)
#define __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetMany(This,start_index,items_size,items,value) (This)->lpVtbl->GetMany(This,start_index,items_size,items,value)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_QueryInterface(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_AddRef(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_Release(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetIids(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetRuntimeClassName(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetTrustLevel(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IVectorView<ABI::Windows::Devices::Usb::UsbInterruptOutPipe* > methods ***/
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetAt(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This,UINT32 index,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe **value) {
    return This->lpVtbl->GetAt(This,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_get_Size(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This,UINT32 *value) {
    return This->lpVtbl->get_Size(This,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_IndexOf(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe *element,UINT32 *index,BOOLEAN *value) {
    return This->lpVtbl->IndexOf(This,element,index,value);
}
static inline HRESULT __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetMany(__FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe* This,UINT32 start_index,UINT32 items_size,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptOutPipe **items,UINT32 *value) {
    return This->lpVtbl->GetMany(This,start_index,items_size,items,value);
}
#endif
#ifdef WIDL_using_Windows_Foundation_Collections
#define IID_IVectorView_UsbInterruptOutPipe IID___FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe
#define IVectorView_UsbInterruptOutPipeVtbl __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipeVtbl
#define IVectorView_UsbInterruptOutPipe __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe
#define IVectorView_UsbInterruptOutPipe_QueryInterface __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_QueryInterface
#define IVectorView_UsbInterruptOutPipe_AddRef __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_AddRef
#define IVectorView_UsbInterruptOutPipe_Release __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_Release
#define IVectorView_UsbInterruptOutPipe_GetIids __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetIids
#define IVectorView_UsbInterruptOutPipe_GetRuntimeClassName __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetRuntimeClassName
#define IVectorView_UsbInterruptOutPipe_GetTrustLevel __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetTrustLevel
#define IVectorView_UsbInterruptOutPipe_GetAt __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetAt
#define IVectorView_UsbInterruptOutPipe_get_Size __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_get_Size
#define IVectorView_UsbInterruptOutPipe_IndexOf __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_IndexOf
#define IVectorView_UsbInterruptOutPipe_GetMany __FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_GetMany
#endif /* WIDL_using_Windows_Foundation_Collections */
#endif

#endif

#endif  /* ____FIVectorView_1_Windows__CDevices__CUsb__CUsbInterruptOutPipe_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAsyncOperation<ABI::Windows::Devices::Usb::UsbDevice* > interface
 */
#ifndef ____FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_INTERFACE_DEFINED__
#define ____FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_INTERFACE_DEFINED__

DEFINE_GUID(IID___FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice, 0x2138c5ed, 0xb71a, 0x5166, 0x99,0x48, 0xd5,0x57,0x92,0x74,0x8f,0x5c);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            template<>
            MIDL_INTERFACE("2138c5ed-b71a-5166-9948-d55792748f5c")
            IAsyncOperation<ABI::Windows::Devices::Usb::UsbDevice* > : IAsyncOperation_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbDevice*, ABI::Windows::Devices::Usb::IUsbDevice* > >
            {
            };
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice, 0x2138c5ed, 0xb71a, 0x5166, 0x99,0x48, 0xd5,0x57,0x92,0x74,0x8f,0x5c)
#endif
#else
typedef struct __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDeviceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This);

    /*** IInspectable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIids)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This,
        ULONG *iidCount,
        IID **iids);

    HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This,
        HSTRING *className);

    HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This,
        TrustLevel *trustLevel);

    /*** IAsyncOperation<ABI::Windows::Devices::Usb::UsbDevice* > methods ***/
    HRESULT (STDMETHODCALLTYPE *put_Completed)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This,
        __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice *handler);

    HRESULT (STDMETHODCALLTYPE *get_Completed)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This,
        __FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice **handler);

    HRESULT (STDMETHODCALLTYPE *GetResults)(
        __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbDevice **results);

    END_INTERFACE
} __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDeviceVtbl;

interface __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice {
    CONST_VTBL __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDeviceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_Release(This) (This)->lpVtbl->Release(This)
/*** IInspectable methods ***/
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetIids(This,iidCount,iids) (This)->lpVtbl->GetIids(This,iidCount,iids)
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetRuntimeClassName(This,className) (This)->lpVtbl->GetRuntimeClassName(This,className)
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetTrustLevel(This,trustLevel) (This)->lpVtbl->GetTrustLevel(This,trustLevel)
/*** IAsyncOperation<ABI::Windows::Devices::Usb::UsbDevice* > methods ***/
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_put_Completed(This,handler) (This)->lpVtbl->put_Completed(This,handler)
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_get_Completed(This,handler) (This)->lpVtbl->get_Completed(This,handler)
#define __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetResults(This,results) (This)->lpVtbl->GetResults(This,results)
#else
/*** IUnknown methods ***/
static inline HRESULT __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_QueryInterface(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_AddRef(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_Release(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This) {
    return This->lpVtbl->Release(This);
}
/*** IInspectable methods ***/
static inline HRESULT __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetIids(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This,ULONG *iidCount,IID **iids) {
    return This->lpVtbl->GetIids(This,iidCount,iids);
}
static inline HRESULT __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetRuntimeClassName(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This,HSTRING *className) {
    return This->lpVtbl->GetRuntimeClassName(This,className);
}
static inline HRESULT __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetTrustLevel(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This,TrustLevel *trustLevel) {
    return This->lpVtbl->GetTrustLevel(This,trustLevel);
}
/*** IAsyncOperation<ABI::Windows::Devices::Usb::UsbDevice* > methods ***/
static inline HRESULT __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_put_Completed(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This,__FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice *handler) {
    return This->lpVtbl->put_Completed(This,handler);
}
static inline HRESULT __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_get_Completed(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This,__FIAsyncOperationCompletedHandler_1_Windows__CDevices__CUsb__CUsbDevice **handler) {
    return This->lpVtbl->get_Completed(This,handler);
}
static inline HRESULT __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetResults(__FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbDevice **results) {
    return This->lpVtbl->GetResults(This,results);
}
#endif
#ifdef WIDL_using_Windows_Foundation
#define IID_IAsyncOperation_UsbDevice IID___FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice
#define IAsyncOperation_UsbDeviceVtbl __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDeviceVtbl
#define IAsyncOperation_UsbDevice __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice
#define IAsyncOperation_UsbDevice_QueryInterface __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_QueryInterface
#define IAsyncOperation_UsbDevice_AddRef __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_AddRef
#define IAsyncOperation_UsbDevice_Release __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_Release
#define IAsyncOperation_UsbDevice_GetIids __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetIids
#define IAsyncOperation_UsbDevice_GetRuntimeClassName __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetRuntimeClassName
#define IAsyncOperation_UsbDevice_GetTrustLevel __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetTrustLevel
#define IAsyncOperation_UsbDevice_put_Completed __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_put_Completed
#define IAsyncOperation_UsbDevice_get_Completed __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_get_Completed
#define IAsyncOperation_UsbDevice_GetResults __FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_GetResults
#endif /* WIDL_using_Windows_Foundation */
#endif

#endif

#endif  /* ____FIAsyncOperation_1_Windows__CDevices__CUsb__CUsbDevice_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITypedEventHandler<ABI::Windows::Devices::Usb::UsbInterruptInPipe*,ABI::Windows::Devices::Usb::UsbInterruptInEventArgs* > interface
 */
#ifndef ____FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_INTERFACE_DEFINED__
#define ____FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_INTERFACE_DEFINED__

DEFINE_GUID(IID___FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs, 0xe6db9449, 0xf36a, 0x50f2, 0x92,0x6c, 0x2a,0xfd,0x85,0xc4,0x9f,0x01);
#if defined(__cplusplus) && !defined(CINTERFACE)
} /* extern "C" */
namespace ABI {
    namespace Windows {
        namespace Foundation {
            template<>
            MIDL_INTERFACE("e6db9449-f36a-50f2-926c-2afd85c49f01")
            ITypedEventHandler<ABI::Windows::Devices::Usb::UsbInterruptInPipe*,ABI::Windows::Devices::Usb::UsbInterruptInEventArgs* > : ITypedEventHandler_impl<ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbInterruptInPipe*, ABI::Windows::Devices::Usb::IUsbInterruptInPipe* >, ABI::Windows::Foundation::Internal::AggregateType<ABI::Windows::Devices::Usb::UsbInterruptInEventArgs*, ABI::Windows::Devices::Usb::IUsbInterruptInEventArgs* > >
            {
            };
        }
    }
}
extern "C" {
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(__FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs, 0xe6db9449, 0xf36a, 0x50f2, 0x92,0x6c, 0x2a,0xfd,0x85,0xc4,0x9f,0x01)
#endif
#else
typedef struct __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs *This);

    /*** ITypedEventHandler<ABI::Windows::Devices::Usb::UsbInterruptInPipe*,ABI::Windows::Devices::Usb::UsbInterruptInEventArgs* > methods ***/
    HRESULT (STDMETHODCALLTYPE *Invoke)(
        __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs *This,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *sender,
        __x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *args);

    END_INTERFACE
} __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgsVtbl;

interface __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs {
    CONST_VTBL __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_AddRef(This) (This)->lpVtbl->AddRef(This)
#define __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_Release(This) (This)->lpVtbl->Release(This)
/*** ITypedEventHandler<ABI::Windows::Devices::Usb::UsbInterruptInPipe*,ABI::Windows::Devices::Usb::UsbInterruptInEventArgs* > methods ***/
#define __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_Invoke(This,sender,args) (This)->lpVtbl->Invoke(This,sender,args)
#else
/*** IUnknown methods ***/
static inline HRESULT __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_QueryInterface(__FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_AddRef(__FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_Release(__FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs* This) {
    return This->lpVtbl->Release(This);
}
/*** ITypedEventHandler<ABI::Windows::Devices::Usb::UsbInterruptInPipe*,ABI::Windows::Devices::Usb::UsbInterruptInEventArgs* > methods ***/
static inline HRESULT __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_Invoke(__FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs* This,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInPipe *sender,__x_ABI_CWindows_CDevices_CUsb_CIUsbInterruptInEventArgs *args) {
    return This->lpVtbl->Invoke(This,sender,args);
}
#endif
#ifdef WIDL_using_Windows_Foundation
#define IID_ITypedEventHandler_UsbInterruptInPipe_UsbInterruptInEventArgs IID___FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs
#define ITypedEventHandler_UsbInterruptInPipe_UsbInterruptInEventArgsVtbl __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgsVtbl
#define ITypedEventHandler_UsbInterruptInPipe_UsbInterruptInEventArgs __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs
#define ITypedEventHandler_UsbInterruptInPipe_UsbInterruptInEventArgs_QueryInterface __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_QueryInterface
#define ITypedEventHandler_UsbInterruptInPipe_UsbInterruptInEventArgs_AddRef __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_AddRef
#define ITypedEventHandler_UsbInterruptInPipe_UsbInterruptInEventArgs_Release __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_Release
#define ITypedEventHandler_UsbInterruptInPipe_UsbInterruptInEventArgs_Invoke __FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_Invoke
#endif /* WIDL_using_Windows_Foundation */
#endif

#endif

#endif  /* ____FITypedEventHandler_2_Windows__CDevices__CUsb__CUsbInterruptInPipe_Windows__CDevices__CUsb__CUsbInterruptInEventArgs_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER HSTRING_UserSize     (ULONG *, ULONG, HSTRING *);
unsigned char * __RPC_USER HSTRING_UserMarshal  (ULONG *, unsigned char *, HSTRING *);
unsigned char * __RPC_USER HSTRING_UserUnmarshal(ULONG *, unsigned char *, HSTRING *);
void            __RPC_USER HSTRING_UserFree     (ULONG *, HSTRING *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __windows_devices_usb_h__ */
