// WARNING: Please don't edit this file. It was generated by Swift/WinRT v0.0.1

#pragma once
// Header files for imported files
#include <inspectable.h>
#include <EventToken.h>
#include <windowscontracts.h>
#include "Windows.Foundation.h"
#include "Windows.Gaming.Input.h"
#include "Windows.Storage.Streams.h"

/* Forward Declarations */
#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2 __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider;

#endif // ____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider_FWD_DEFINED__

// Parameterized interface forward declarations (C)

// Collection interface definitions

typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateProgress __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateProgress;

typedef interface __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress;

typedef interface __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress;

#if !defined(____x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress __x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress;

    //  Declare the parameterized interface IID.
    EXTERN_C const IID IID___x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress;

    typedef struct __x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This);
        HRESULT (STDMETHODCALLTYPE* Invoke)(__x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
        __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* asyncInfo,
        enum __x_ABI_CWindows_CFoundation_CAsyncStatus asyncStatus);

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl;

    interface __x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress;

    //  Declare the parameterized interface IID.
    EXTERN_C const IID IID___x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress;

    typedef struct __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* put_Progress)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
        __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* handler);
    HRESULT (STDMETHODCALLTYPE* get_Progress)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
        __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress** result);
    HRESULT (STDMETHODCALLTYPE* put_Completed)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
        __x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* handler);
    HRESULT (STDMETHODCALLTYPE* get_Completed)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
        __x_ABI_C__FIAsyncOperationWithProgressCompletedHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress** result);
    HRESULT (STDMETHODCALLTYPE* GetResults)(__x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
        __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult** result);

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl;

    interface __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress;

    //  Declare the parameterized interface IID.
    EXTERN_C const IID IID___x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress;

    typedef struct __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This);
        HRESULT (STDMETHODCALLTYPE* Invoke)(__x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* This,
        __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress* asyncInfo,
        struct __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateProgress progressInfo);

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl;

    interface __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgressVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperationProgressHandler_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress_INTERFACE_DEFINED__
    
typedef enum __x_ABI_CWindows_CFoundation_CAsyncStatus __x_ABI_CWindows_CFoundation_CAsyncStatus;

#ifndef ____x_ABI_CWindows_CFoundation_CIAsyncInfo_FWD_DEFINED__
#define ____x_ABI_CWindows_CFoundation_CIAsyncInfo_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CFoundation_CIAsyncInfo __x_ABI_CWindows_CFoundation_CIAsyncInfo;

#endif // ____x_ABI_CWindows_CFoundation_CIAsyncInfo_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CGaming_CInput_CIGameController_FWD_DEFINED__
#define ____x_ABI_CWindows_CGaming_CInput_CIGameController_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CGaming_CInput_CIGameController __x_ABI_CWindows_CGaming_CInput_CIGameController;

#endif // ____x_ABI_CWindows_CGaming_CInput_CIGameController_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CStorage_CStreams_CIInputStream_FWD_DEFINED__
#define ____x_ABI_CWindows_CStorage_CStreams_CIInputStream_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CStorage_CStreams_CIInputStream __x_ABI_CWindows_CStorage_CStreams_CIInputStream;

#endif // ____x_ABI_CWindows_CStorage_CStreams_CIInputStream_FWD_DEFINED__

typedef enum __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateStatus __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateStatus;

typedef enum __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass;

typedef enum __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype;

typedef enum __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceType __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceType;

typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CGameControllerVersionInfo __x_ABI_CWindows_CGaming_CInput_CCustom_CGameControllerVersionInfo;

enum __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateStatus
    {
        __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateStatus_Completed = 0,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateStatus_UpToDate = 1,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateStatus_Failed = 2,
};

enum __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass
    {
        __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass_Command = 0,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass_LowLatency = 1,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass_StandardLatency = 2,
};

enum __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype
    {
        __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_Unknown = 0,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_Gamepad = 1,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_ArcadePad = 2,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_ArcadeStick = 3,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_FlightStick = 4,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_Wheel = 5,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_Guitar = 6,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_GuitarAlternate = 7,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_GuitarBass = 8,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_DrumKit = 9,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype_DancePad = 10,
};

enum __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceType
    {
        __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceType_Unknown = 0,
    __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceType_Gamepad = 1,
};

struct __x_ABI_CWindows_CGaming_CInput_CCustom_CGameControllerVersionInfo
    {
        UINT16 Major;
    UINT16 Minor;
    UINT16 Build;
    UINT16 Revision;
};

struct __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateProgress
    {
        DOUBLE PercentCompleted;
    UINT32 CurrentComponentId;
};

#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactoryVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* CreateGameController)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This,
        __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* provider,
        IInspectable** value);
    HRESULT (STDMETHODCALLTYPE* OnGameControllerAdded)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This,
        __x_ABI_CWindows_CGaming_CInput_CIGameController* value);
    HRESULT (STDMETHODCALLTYPE* OnGameControllerRemoved)(__x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* This,
        __x_ABI_CWindows_CGaming_CInput_CIGameController* value);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactoryVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactoryVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStaticsVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* RegisterCustomFactoryForGipInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This,
        __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* factory,
        GUID interfaceId);
    HRESULT (STDMETHODCALLTYPE* RegisterCustomFactoryForHardwareId)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This,
        __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* factory,
        UINT16 hardwareVendorId,
        UINT16 hardwareProductId);
    HRESULT (STDMETHODCALLTYPE* RegisterCustomFactoryForXusbType)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics* This,
        __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* factory,
        enum __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceType xusbType,
        enum __x_ABI_CWindows_CGaming_CInput_CCustom_CXusbDeviceSubtype xusbSubtype);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStaticsVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStaticsVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2Vtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* TryGetFactoryControllerFromGameController)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2* This,
        __x_ABI_CWindows_CGaming_CInput_CCustom_CICustomGameControllerFactory* factory,
        __x_ABI_CWindows_CGaming_CInput_CIGameController* gameController,
        __x_ABI_CWindows_CGaming_CInput_CIGameController** factoryController);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2Vtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2Vtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerFactoryManagerStatics2_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSinkVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* OnInputResumed)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink* This,
        UINT64 timestamp);
    HRESULT (STDMETHODCALLTYPE* OnInputSuspended)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink* This,
        UINT64 timestamp);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSinkVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSinkVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerInputSink_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProviderVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_FirmwareVersionInfo)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
        struct __x_ABI_CWindows_CGaming_CInput_CCustom_CGameControllerVersionInfo* value);
    HRESULT (STDMETHODCALLTYPE* get_HardwareProductId)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
        UINT16* value);
    HRESULT (STDMETHODCALLTYPE* get_HardwareVendorId)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
        UINT16* value);
    HRESULT (STDMETHODCALLTYPE* get_HardwareVersionInfo)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
        struct __x_ABI_CWindows_CGaming_CInput_CCustom_CGameControllerVersionInfo* value);
    HRESULT (STDMETHODCALLTYPE* get_IsConnected)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider* This,
        boolean* value);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProviderVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProviderVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGameControllerProvider_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResultVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_ExtendedErrorCode)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This,
        UINT32* value);
    HRESULT (STDMETHODCALLTYPE* get_FinalComponentId)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This,
        UINT32* value);
    HRESULT (STDMETHODCALLTYPE* get_Status)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult* This,
        enum __x_ABI_CWindows_CGaming_CInput_CCustom_CGipFirmwareUpdateStatus* value);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResultVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResultVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipFirmwareUpdateResult_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSinkVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* OnKeyReceived)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink* This,
        UINT64 timestamp,
        BYTE keyCode,
        boolean isPressed);
    HRESULT (STDMETHODCALLTYPE* OnMessageReceived)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink* This,
        UINT64 timestamp,
        enum __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass messageClass,
        BYTE messageId,
        BYTE sequenceId,
        UINT32 messageBufferLength,
        BYTE* messageBuffer);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSinkVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSinkVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerInputSink_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProviderVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* SendMessage)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This,
        enum __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass messageClass,
        BYTE messageId,
        UINT32 messageBufferLength,
        BYTE* messageBuffer);
    HRESULT (STDMETHODCALLTYPE* SendReceiveMessage)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This,
        enum __x_ABI_CWindows_CGaming_CInput_CCustom_CGipMessageClass messageClass,
        BYTE messageId,
        UINT32 requestMessageBufferLength,
        BYTE* requestMessageBuffer,
        UINT32 responseMessageBufferLength,
        BYTE* responseMessageBuffer);
    HRESULT (STDMETHODCALLTYPE* UpdateFirmwareAsync)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider* This,
        __x_ABI_CWindows_CStorage_CStreams_CIInputStream* firmwareImage,
        __x_ABI_C__FIAsyncOperationWithProgress_2___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateResult___x_ABI_CWindows__CGaming__CInput__CCustom__CGipFirmwareUpdateProgress** result);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProviderVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProviderVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIGipGameControllerProvider_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSinkVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* OnInputReportReceived)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink* This,
        UINT64 timestamp,
        BYTE reportId,
        UINT32 reportBufferLength,
        BYTE* reportBuffer);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSinkVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSinkVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerInputSink_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProviderVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_UsageId)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
        UINT16* value);
    HRESULT (STDMETHODCALLTYPE* get_UsagePage)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
        UINT16* value);
    HRESULT (STDMETHODCALLTYPE* GetFeatureReport)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
        BYTE reportId,
        UINT32 reportBufferLength,
        BYTE* reportBuffer);
    HRESULT (STDMETHODCALLTYPE* SendFeatureReport)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
        BYTE reportId,
        UINT32 reportBufferLength,
        BYTE* reportBuffer);
    HRESULT (STDMETHODCALLTYPE* SendOutputReport)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider* This,
        BYTE reportId,
        UINT32 reportBufferLength,
        BYTE* reportBuffer);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProviderVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProviderVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIHidGameControllerProvider_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSinkVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* OnInputReceived)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink* This,
        UINT64 timestamp,
        BYTE reportId,
        UINT32 inputBufferLength,
        BYTE* inputBuffer);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSinkVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSinkVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerInputSink_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProviderVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* SetVibration)(__x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider* This,
        DOUBLE lowFrequencyMotorSpeed,
        DOUBLE highFrequencyMotorSpeed);

        END_INTERFACE
    } __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProviderVtbl;

    interface __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider
    {
        CONST_VTBL struct __x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProviderVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider;
#endif /* !defined(____x_ABI_CWindows_CGaming_CInput_CCustom_CIXusbGameControllerProvider_INTERFACE_DEFINED__) */
    
