// 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.Devices.h"
#include "Windows.Devices.Gpio.Provider.h"
// Importing Collections header
#include "Windows.Foundation.Collections.h"

/* Forward Declarations */
#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioController_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioController_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioController __x_ABI_CWindows_CDevices_CGpio_CIGpioController;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioController_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2 __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioPin_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioPin_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioPin __x_ABI_CWindows_CDevices_CGpio_CIGpioPin;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioPin_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs __x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs_FWD_DEFINED__

// Parameterized interface forward declarations (C)

// Collection interface definitions

typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

#if !defined(____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

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

    typedef struct __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* put_Completed)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* handler);
    HRESULT (STDMETHODCALLTYPE* get_Completed)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController** result);
    HRESULT (STDMETHODCALLTYPE* GetResults)(__x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioController** result);

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl;

    interface __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

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

    typedef struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl;

    interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

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

    typedef struct __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_Current)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioController** result);
    HRESULT (STDMETHODCALLTYPE* get_HasCurrent)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        boolean* result);
    HRESULT (STDMETHODCALLTYPE* MoveNext)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        boolean* result);
    HRESULT (STDMETHODCALLTYPE* GetMany)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        UINT32 itemsLength,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioController** items,
        UINT32* result);

        END_INTERFACE
    } __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl;

    interface __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController
    {
        CONST_VTBL struct __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

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

    typedef struct __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* First)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioController** result);

        END_INTERFACE
    } __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl;

    interface __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController
    {
        CONST_VTBL struct __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

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

    typedef struct __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetAt)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        UINT32 index,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioController** result);
    HRESULT (STDMETHODCALLTYPE* get_Size)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        UINT32* result);
    HRESULT (STDMETHODCALLTYPE* IndexOf)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioController* value,
        UINT32* index,
        boolean* result);
    HRESULT (STDMETHODCALLTYPE* GetMany)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        UINT32 startIndex,
        UINT32 itemsLength,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioController** items,
        UINT32* result);

        END_INTERFACE
    } __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl;

    interface __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController
    {
        CONST_VTBL struct __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__
    
typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

#if !defined(____x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

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

    typedef struct __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* put_Completed)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* handler);
    HRESULT (STDMETHODCALLTYPE* get_Completed)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController** result);
    HRESULT (STDMETHODCALLTYPE* GetResults)(__x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController* This,
        __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController** result);

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl;

    interface __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController;

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

    typedef struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl;

    interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController_INTERFACE_DEFINED__
    
typedef struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord;

#if !defined(____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord;

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

    typedef struct __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_Current)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* result);
    HRESULT (STDMETHODCALLTYPE* get_HasCurrent)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        boolean* result);
    HRESULT (STDMETHODCALLTYPE* MoveNext)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        boolean* result);
    HRESULT (STDMETHODCALLTYPE* GetMany)(__x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 itemsLength,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* items,
        UINT32* result);

        END_INTERFACE
    } __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl;

    interface __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord
    {
        CONST_VTBL struct __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord;

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

    typedef struct __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* First)(__x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord** result);

        END_INTERFACE
    } __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl;

    interface __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord
    {
        CONST_VTBL struct __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord;

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

    typedef struct __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetAt)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 index,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* result);
    HRESULT (STDMETHODCALLTYPE* get_Size)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32* result);
    HRESULT (STDMETHODCALLTYPE* IndexOf)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord value,
        UINT32* index,
        boolean* result);
    HRESULT (STDMETHODCALLTYPE* GetMany)(__x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 startIndex,
        UINT32 itemsLength,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* items,
        UINT32* result);

        END_INTERFACE
    } __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl;

    interface __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord
    {
        CONST_VTBL struct __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord __x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord;

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

    typedef struct __x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetAt)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 index,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* result);
    HRESULT (STDMETHODCALLTYPE* get_Size)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32* result);
    HRESULT (STDMETHODCALLTYPE* GetView)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord** result);
    HRESULT (STDMETHODCALLTYPE* IndexOf)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord value,
        UINT32* index,
        boolean* result);
    HRESULT (STDMETHODCALLTYPE* SetAt)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 index,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord value);
    HRESULT (STDMETHODCALLTYPE* InsertAt)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 index,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord value);
    HRESULT (STDMETHODCALLTYPE* RemoveAt)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 index);
    HRESULT (STDMETHODCALLTYPE* Append)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord value);
    HRESULT (STDMETHODCALLTYPE* RemoveAtEnd)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
    HRESULT (STDMETHODCALLTYPE* Clear)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This);
    HRESULT (STDMETHODCALLTYPE* GetMany)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 startIndex,
        UINT32 itemsLength,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* items,
        UINT32* result);
    HRESULT (STDMETHODCALLTYPE* ReplaceAll)(__x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord* This,
        UINT32 itemsLength,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* items);

        END_INTERFACE
    } __x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl;

    interface __x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord
    {
        CONST_VTBL struct __x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecordVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs;

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

    typedef struct __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgsVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs* This);
        HRESULT (STDMETHODCALLTYPE* Invoke)(__x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs* This,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioPin* sender,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs* args);

        END_INTERFACE
    } __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgsVtbl;

    interface __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs
    {
        CONST_VTBL struct __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgsVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs_INTERFACE_DEFINED__
    
#ifndef ____x_ABI_CWindows_CDevices_CGpio_CProvider_CIGpioProvider_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CGpio_CProvider_CIGpioProvider_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CGpio_CProvider_CIGpioProvider __x_ABI_CWindows_CDevices_CGpio_CProvider_CIGpioProvider;

#endif // ____x_ABI_CWindows_CDevices_CGpio_CProvider_CIGpioProvider_FWD_DEFINED__

typedef enum __x_ABI_CWindows_CFoundation_CAsyncStatus __x_ABI_CWindows_CFoundation_CAsyncStatus;

#ifndef ____x_ABI_CWindows_CFoundation_CIAsyncAction_FWD_DEFINED__
#define ____x_ABI_CWindows_CFoundation_CIAsyncAction_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CFoundation_CIAsyncAction __x_ABI_CWindows_CFoundation_CIAsyncAction;

#endif // ____x_ABI_CWindows_CFoundation_CIAsyncAction_FWD_DEFINED__

#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_CFoundation_CIClosable_FWD_DEFINED__
#define ____x_ABI_CWindows_CFoundation_CIClosable_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CFoundation_CIClosable __x_ABI_CWindows_CFoundation_CIClosable;

#endif // ____x_ABI_CWindows_CFoundation_CIClosable_FWD_DEFINED__

typedef struct __x_ABI_CWindows_CFoundation_CTimeSpan __x_ABI_CWindows_CFoundation_CTimeSpan;

typedef enum __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity;

typedef enum __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus;

typedef enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode;

typedef enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinEdge __x_ABI_CWindows_CDevices_CGpio_CGpioPinEdge;

typedef enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinValue __x_ABI_CWindows_CDevices_CGpio_CGpioPinValue;

typedef enum __x_ABI_CWindows_CDevices_CGpio_CGpioSharingMode __x_ABI_CWindows_CDevices_CGpio_CGpioSharingMode;

typedef struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeCount __x_ABI_CWindows_CDevices_CGpio_CGpioChangeCount;

enum __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity
    {
        __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity_Falling = 0,
    __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity_Rising = 1,
    __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity_Both = 2,
};

enum __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus
    {
        __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus_PinOpened = 0,
    __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus_PinUnavailable = 1,
    __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus_SharingViolation = 2,
    __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus_MuxingConflict = 3,
    __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus_UnknownError = 4,
};

enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode
    {
        __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode_Input = 0,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode_Output = 1,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode_InputPullUp = 2,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode_InputPullDown = 3,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode_OutputOpenDrain = 4,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode_OutputOpenDrainPullUp = 5,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode_OutputOpenSource = 6,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode_OutputOpenSourcePullDown = 7,
};

enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinEdge
    {
        __x_ABI_CWindows_CDevices_CGpio_CGpioPinEdge_FallingEdge = 0,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinEdge_RisingEdge = 1,
};

enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinValue
    {
        __x_ABI_CWindows_CDevices_CGpio_CGpioPinValue_Low = 0,
    __x_ABI_CWindows_CDevices_CGpio_CGpioPinValue_High = 1,
};

enum __x_ABI_CWindows_CDevices_CGpio_CGpioSharingMode
    {
        __x_ABI_CWindows_CDevices_CGpio_CGpioSharingMode_Exclusive = 0,
    __x_ABI_CWindows_CDevices_CGpio_CGpioSharingMode_SharedReadOnly = 1,
};

struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeCount
    {
        UINT64 Count;
    struct __x_ABI_CWindows_CFoundation_CTimeSpan RelativeTime;
};

struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord
    {
        struct __x_ABI_CWindows_CFoundation_CTimeSpan RelativeTime;
    enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinEdge Edge;
};

#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* put_Polarity)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity value);
    HRESULT (STDMETHODCALLTYPE* get_Polarity)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity* value);
    HRESULT (STDMETHODCALLTYPE* get_IsStarted)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
        boolean* value);
    HRESULT (STDMETHODCALLTYPE* Start)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This);
    HRESULT (STDMETHODCALLTYPE* Stop)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This);
    HRESULT (STDMETHODCALLTYPE* Read)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeCount* value);
    HRESULT (STDMETHODCALLTYPE* Reset)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter* This,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeCount* value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterVtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactoryVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* Create)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory* This,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioPin* pin,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounter** value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactoryVtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactoryVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeCounterFactory_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_Capacity)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* get_Length)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* get_IsEmpty)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        boolean* value);
    HRESULT (STDMETHODCALLTYPE* get_IsOverflowed)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        boolean* value);
    HRESULT (STDMETHODCALLTYPE* put_Polarity)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity value);
    HRESULT (STDMETHODCALLTYPE* get_Polarity)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioChangePolarity* value);
    HRESULT (STDMETHODCALLTYPE* get_IsStarted)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        boolean* value);
    HRESULT (STDMETHODCALLTYPE* Start)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This);
    HRESULT (STDMETHODCALLTYPE* Stop)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This);
    HRESULT (STDMETHODCALLTYPE* Clear)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This);
    HRESULT (STDMETHODCALLTYPE* GetNextItem)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* value);
    HRESULT (STDMETHODCALLTYPE* PeekNextItem)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        struct __x_ABI_CWindows_CDevices_CGpio_CGpioChangeRecord* value);
    HRESULT (STDMETHODCALLTYPE* GetAllItems)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        __x_ABI_C__FIVector_1___x_ABI_CWindows__CDevices__CGpio__CGpioChangeRecord** value);
    HRESULT (STDMETHODCALLTYPE* WaitForItemsAsync)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader* This,
        INT32 count,
        __x_ABI_CWindows_CFoundation_CIAsyncAction** operation);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderVtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactoryVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* Create)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory* This,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioPin* pin,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader** value);
    HRESULT (STDMETHODCALLTYPE* CreateWithCapacity)(__x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory* This,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioPin* pin,
        INT32 minCapacity,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReader** value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactoryVtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactoryVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioChangeReaderFactory_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioController_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioController_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_PinCount)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* OpenPin)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This,
        INT32 pinNumber,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioPin** pin);
    HRESULT (STDMETHODCALLTYPE* OpenPinWithSharingMode)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This,
        INT32 pinNumber,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioSharingMode sharingMode,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioPin** pin);
    HRESULT (STDMETHODCALLTYPE* TryOpenPin)(__x_ABI_CWindows_CDevices_CGpio_CIGpioController* This,
        INT32 pinNumber,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioSharingMode sharingMode,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioPin** pin,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioOpenStatus* openStatus,
        boolean* succeeded);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerVtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioController
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioController;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioController_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStaticsVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetDefault)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics* This,
        __x_ABI_CWindows_CDevices_CGpio_CIGpioController** value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStaticsVtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStaticsVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2Vtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetControllersAsync)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2* This,
        __x_ABI_CWindows_CDevices_CGpio_CProvider_CIGpioProvider* provider,
        __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CGpio__CGpioController** operation);
    HRESULT (STDMETHODCALLTYPE* GetDefaultAsync)(__x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2* This,
        __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CGpio__CGpioController** operation);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2Vtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2Vtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioControllerStatics2_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioPin_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioPin_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioPinVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* add_ValueChanged)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        __x_ABI_C__FITypedEventHandler_2___x_ABI_CWindows__CDevices__CGpio__CGpioPin___x_ABI_CWindows__CDevices__CGpio__CGpioPinValueChangedEventArgs* handler,
        EventRegistrationToken* token);
    HRESULT (STDMETHODCALLTYPE* remove_ValueChanged)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        EventRegistrationToken token);
    HRESULT (STDMETHODCALLTYPE* get_DebounceTimeout)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        struct __x_ABI_CWindows_CFoundation_CTimeSpan* value);
    HRESULT (STDMETHODCALLTYPE* put_DebounceTimeout)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        struct __x_ABI_CWindows_CFoundation_CTimeSpan value);
    HRESULT (STDMETHODCALLTYPE* get_PinNumber)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* get_SharingMode)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioSharingMode* value);
    HRESULT (STDMETHODCALLTYPE* IsDriveModeSupported)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode driveMode,
        boolean* supported);
    HRESULT (STDMETHODCALLTYPE* GetDriveMode)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode* value);
    HRESULT (STDMETHODCALLTYPE* SetDriveMode)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinDriveMode value);
    HRESULT (STDMETHODCALLTYPE* Write)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinValue value);
    HRESULT (STDMETHODCALLTYPE* Read)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPin* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinValue* value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioPinVtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioPin
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioPinVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioPin;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioPin_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgsVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_Edge)(__x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs* This,
        enum __x_ABI_CWindows_CDevices_CGpio_CGpioPinEdge* value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgsVtbl;

    interface __x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgsVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs;
#endif /* !defined(____x_ABI_CWindows_CDevices_CGpio_CIGpioPinValueChangedEventArgs_INTERFACE_DEFINED__) */
    
