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

/* Forward Declarations */
#ifndef ____x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo __x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo;

#endif // ____x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings;

#endif // ____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory;

#endif // ____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CSpi_CISpiController_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CSpi_CISpiController_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CSpi_CISpiController __x_ABI_CWindows_CDevices_CSpi_CISpiController;

#endif // ____x_ABI_CWindows_CDevices_CSpi_CISpiController_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics __x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics;

#endif // ____x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CSpi_CISpiDevice_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CSpi_CISpiDevice_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CSpi_CISpiDevice __x_ABI_CWindows_CDevices_CSpi_CISpiDevice;

#endif // ____x_ABI_CWindows_CDevices_CSpi_CISpiDevice_FWD_DEFINED__

#ifndef ____x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics;

#endif // ____x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics_FWD_DEFINED__

// Parameterized interface forward declarations (C)

// Collection interface definitions

typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

#if !defined(____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

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

    typedef struct __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl;

    interface __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiController
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

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

    typedef struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl;

    interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiController
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__
    
typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice;

#if !defined(____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice;

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

    typedef struct __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDeviceVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDeviceVtbl;

    interface __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDeviceVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice;

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

    typedef struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDeviceVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDeviceVtbl;

    interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDeviceVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

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

    typedef struct __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl;

    interface __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiController
    {
        CONST_VTBL struct __x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIIterator_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

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

    typedef struct __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl;

    interface __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiController
    {
        CONST_VTBL struct __x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIIterable_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

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

    typedef struct __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl;

    interface __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController
    {
        CONST_VTBL struct __x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__
    
typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

#if !defined(____x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

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

    typedef struct __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl;

    interface __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController;

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

    typedef struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl;

    interface __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController
    {
        CONST_VTBL struct __x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiControllerVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIAsyncOperationCompletedHandler_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIIterator_1_int_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIIterator_1_int_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIIterator_1_int __x_ABI_C__FIIterator_1_int;

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

    typedef struct __x_ABI_C__FIIterator_1_intVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIIterator_1_intVtbl;

    interface __x_ABI_C__FIIterator_1_int
    {
        CONST_VTBL struct __x_ABI_C__FIIterator_1_intVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIIterator_1_int_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIIterable_1_int_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIIterable_1_int_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIIterable_1_int __x_ABI_C__FIIterable_1_int;

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

    typedef struct __x_ABI_C__FIIterable_1_intVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIIterable_1_intVtbl;

    interface __x_ABI_C__FIIterable_1_int
    {
        CONST_VTBL struct __x_ABI_C__FIIterable_1_intVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIIterable_1_int_INTERFACE_DEFINED__
    
#if !defined(____x_ABI_C__FIVectorView_1_int_INTERFACE_DEFINED__)
    #define ____x_ABI_C__FIVectorView_1_int_INTERFACE_DEFINED__

    typedef interface __x_ABI_C__FIVectorView_1_int __x_ABI_C__FIVectorView_1_int;

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

    typedef struct __x_ABI_C__FIVectorView_1_intVtbl
    {
        BEGIN_INTERFACE

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

        END_INTERFACE
    } __x_ABI_C__FIVectorView_1_intVtbl;

    interface __x_ABI_C__FIVectorView_1_int
    {
        CONST_VTBL struct __x_ABI_C__FIVectorView_1_intVtbl* lpVtbl;
    };

    
    #endif // ____x_ABI_C__FIVectorView_1_int_INTERFACE_DEFINED__
    
#ifndef ____x_ABI_CWindows_CDevices_CSpi_CProvider_CISpiProvider_FWD_DEFINED__
#define ____x_ABI_CWindows_CDevices_CSpi_CProvider_CISpiProvider_FWD_DEFINED__
    typedef interface __x_ABI_CWindows_CDevices_CSpi_CProvider_CISpiProvider __x_ABI_CWindows_CDevices_CSpi_CProvider_CISpiProvider;

#endif // ____x_ABI_CWindows_CDevices_CSpi_CProvider_CISpiProvider_FWD_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_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 enum __x_ABI_CWindows_CDevices_CSpi_CSpiMode __x_ABI_CWindows_CDevices_CSpi_CSpiMode;

typedef enum __x_ABI_CWindows_CDevices_CSpi_CSpiSharingMode __x_ABI_CWindows_CDevices_CSpi_CSpiSharingMode;

enum __x_ABI_CWindows_CDevices_CSpi_CSpiMode
    {
        __x_ABI_CWindows_CDevices_CSpi_CSpiMode_Mode0 = 0,
    __x_ABI_CWindows_CDevices_CSpi_CSpiMode_Mode1 = 1,
    __x_ABI_CWindows_CDevices_CSpi_CSpiMode_Mode2 = 2,
    __x_ABI_CWindows_CDevices_CSpi_CSpiMode_Mode3 = 3,
};

enum __x_ABI_CWindows_CDevices_CSpi_CSpiSharingMode
    {
        __x_ABI_CWindows_CDevices_CSpi_CSpiSharingMode_Exclusive = 0,
    __x_ABI_CWindows_CDevices_CSpi_CSpiSharingMode_Shared = 1,
};

#if !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CSpi_CISpiBusInfoVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_ChipSelectLineCount)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* get_MinClockFrequency)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* get_MaxClockFrequency)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* get_SupportedDataBitLengths)(__x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo* This,
        __x_ABI_C__FIVectorView_1_int** value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CSpi_CISpiBusInfoVtbl;

    interface __x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CSpi_CISpiBusInfoVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo;
#endif /* !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_ChipSelectLine)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* put_ChipSelectLine)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        INT32 value);
    HRESULT (STDMETHODCALLTYPE* get_Mode)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        enum __x_ABI_CWindows_CDevices_CSpi_CSpiMode* value);
    HRESULT (STDMETHODCALLTYPE* put_Mode)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        enum __x_ABI_CWindows_CDevices_CSpi_CSpiMode value);
    HRESULT (STDMETHODCALLTYPE* get_DataBitLength)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* put_DataBitLength)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        INT32 value);
    HRESULT (STDMETHODCALLTYPE* get_ClockFrequency)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        INT32* value);
    HRESULT (STDMETHODCALLTYPE* put_ClockFrequency)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        INT32 value);
    HRESULT (STDMETHODCALLTYPE* get_SharingMode)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        enum __x_ABI_CWindows_CDevices_CSpi_CSpiSharingMode* value);
    HRESULT (STDMETHODCALLTYPE* put_SharingMode)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* This,
        enum __x_ABI_CWindows_CDevices_CSpi_CSpiSharingMode value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsVtbl;

    interface __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings;
#endif /* !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactoryVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* Create)(__x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory* This,
        INT32 chipSelectLine,
        __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings** value);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactoryVtbl;

    interface __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactoryVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory;
#endif /* !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettingsFactory_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiController_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CSpi_CISpiController_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CSpi_CISpiControllerVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CSpi_CISpiController* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CSpi_CISpiController* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CSpi_CISpiController* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CSpi_CISpiController* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CSpi_CISpiController* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CSpi_CISpiController* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetDevice)(__x_ABI_CWindows_CDevices_CSpi_CISpiController* This,
        __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* settings,
        __x_ABI_CWindows_CDevices_CSpi_CISpiDevice** device);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CSpi_CISpiControllerVtbl;

    interface __x_ABI_CWindows_CDevices_CSpi_CISpiController
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CSpi_CISpiControllerVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CSpi_CISpiController;
#endif /* !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiController_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CSpi_CISpiControllerStaticsVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetDefaultAsync)(__x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics* This,
        __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiController** operation);
    HRESULT (STDMETHODCALLTYPE* GetControllersAsync)(__x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics* This,
        __x_ABI_CWindows_CDevices_CSpi_CProvider_CISpiProvider* provider,
        __x_ABI_C__FIAsyncOperation_1___x_ABI_C__FIVectorView_1___x_ABI_CWindows__CDevices__CSpi__CSpiController** operation);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CSpi_CISpiControllerStaticsVtbl;

    interface __x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CSpi_CISpiControllerStaticsVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics;
#endif /* !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiControllerStatics_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiDevice_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CSpi_CISpiDevice_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* get_DeviceId)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
        HSTRING* value);
    HRESULT (STDMETHODCALLTYPE* get_ConnectionSettings)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
        __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings** value);
    HRESULT (STDMETHODCALLTYPE* Write)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
        UINT32 bufferLength,
        BYTE* buffer);
    HRESULT (STDMETHODCALLTYPE* Read)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
        UINT32 bufferLength,
        BYTE* buffer);
    HRESULT (STDMETHODCALLTYPE* TransferSequential)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
        UINT32 writeBufferLength,
        BYTE* writeBuffer,
        UINT32 readBufferLength,
        BYTE* readBuffer);
    HRESULT (STDMETHODCALLTYPE* TransferFullDuplex)(__x_ABI_CWindows_CDevices_CSpi_CISpiDevice* This,
        UINT32 writeBufferLength,
        BYTE* writeBuffer,
        UINT32 readBufferLength,
        BYTE* readBuffer);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceVtbl;

    interface __x_ABI_CWindows_CDevices_CSpi_CISpiDevice
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CSpi_CISpiDevice;
#endif /* !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiDevice_INTERFACE_DEFINED__) */
    
#if !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics_INTERFACE_DEFINED__)
    #define ____x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics_INTERFACE_DEFINED__
    typedef struct __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStaticsVtbl
    {
        BEGIN_INTERFACE

        HRESULT (STDMETHODCALLTYPE* QueryInterface)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This,
            REFIID riid,
            void** ppvObject);
        ULONG (STDMETHODCALLTYPE* AddRef)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This);
        ULONG (STDMETHODCALLTYPE* Release)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This);
        HRESULT (STDMETHODCALLTYPE* GetIids)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This,
            ULONG* iidCount,
            IID** iids);
        HRESULT (STDMETHODCALLTYPE* GetRuntimeClassName)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This,
            HSTRING* className);
        HRESULT (STDMETHODCALLTYPE* GetTrustLevel)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This,
            TrustLevel* trustLevel);
        HRESULT (STDMETHODCALLTYPE* GetDeviceSelector)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This,
        HSTRING* value);
    HRESULT (STDMETHODCALLTYPE* GetDeviceSelectorFromFriendlyName)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This,
        HSTRING friendlyName,
        HSTRING* value);
    HRESULT (STDMETHODCALLTYPE* GetBusInfo)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This,
        HSTRING busId,
        __x_ABI_CWindows_CDevices_CSpi_CISpiBusInfo** busInfo);
    HRESULT (STDMETHODCALLTYPE* FromIdAsync)(__x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics* This,
        HSTRING busId,
        __x_ABI_CWindows_CDevices_CSpi_CISpiConnectionSettings* settings,
        __x_ABI_C__FIAsyncOperation_1___x_ABI_CWindows__CDevices__CSpi__CSpiDevice** operation);

        END_INTERFACE
    } __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStaticsVtbl;

    interface __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics
    {
        CONST_VTBL struct __x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStaticsVtbl* lpVtbl;
    };

    
    EXTERN_C const IID IID___x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics;
#endif /* !defined(____x_ABI_CWindows_CDevices_CSpi_CISpiDeviceStatics_INTERFACE_DEFINED__) */
    
