

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings for EhStorAPI.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __EhStorAPI_h__
#define __EhStorAPI_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IEnumEnhancedStorageACT_FWD_DEFINED__
#define __IEnumEnhancedStorageACT_FWD_DEFINED__
typedef interface IEnumEnhancedStorageACT IEnumEnhancedStorageACT;
#endif 	/* __IEnumEnhancedStorageACT_FWD_DEFINED__ */


#ifndef __IEnhancedStorageACT_FWD_DEFINED__
#define __IEnhancedStorageACT_FWD_DEFINED__
typedef interface IEnhancedStorageACT IEnhancedStorageACT;
#endif 	/* __IEnhancedStorageACT_FWD_DEFINED__ */


#ifndef __IEnhancedStorageACT2_FWD_DEFINED__
#define __IEnhancedStorageACT2_FWD_DEFINED__
typedef interface IEnhancedStorageACT2 IEnhancedStorageACT2;
#endif 	/* __IEnhancedStorageACT2_FWD_DEFINED__ */


#ifndef __IEnhancedStorageSilo_FWD_DEFINED__
#define __IEnhancedStorageSilo_FWD_DEFINED__
typedef interface IEnhancedStorageSilo IEnhancedStorageSilo;
#endif 	/* __IEnhancedStorageSilo_FWD_DEFINED__ */


#ifndef __IEnhancedStorageSiloAction_FWD_DEFINED__
#define __IEnhancedStorageSiloAction_FWD_DEFINED__
typedef interface IEnhancedStorageSiloAction IEnhancedStorageSiloAction;
#endif 	/* __IEnhancedStorageSiloAction_FWD_DEFINED__ */


#ifndef __EnumEnhancedStorageACT_FWD_DEFINED__
#define __EnumEnhancedStorageACT_FWD_DEFINED__

#ifdef __cplusplus
typedef class EnumEnhancedStorageACT EnumEnhancedStorageACT;
#else
typedef struct EnumEnhancedStorageACT EnumEnhancedStorageACT;
#endif /* __cplusplus */

#endif 	/* __EnumEnhancedStorageACT_FWD_DEFINED__ */


#ifndef __EnhancedStorageACT_FWD_DEFINED__
#define __EnhancedStorageACT_FWD_DEFINED__

#ifdef __cplusplus
typedef class EnhancedStorageACT EnhancedStorageACT;
#else
typedef struct EnhancedStorageACT EnhancedStorageACT;
#endif /* __cplusplus */

#endif 	/* __EnhancedStorageACT_FWD_DEFINED__ */


#ifndef __EnhancedStorageSilo_FWD_DEFINED__
#define __EnhancedStorageSilo_FWD_DEFINED__

#ifdef __cplusplus
typedef class EnhancedStorageSilo EnhancedStorageSilo;
#else
typedef struct EnhancedStorageSilo EnhancedStorageSilo;
#endif /* __cplusplus */

#endif 	/* __EnhancedStorageSilo_FWD_DEFINED__ */


#ifndef __EnhancedStorageSiloAction_FWD_DEFINED__
#define __EnhancedStorageSiloAction_FWD_DEFINED__

#ifdef __cplusplus
typedef class EnhancedStorageSiloAction EnhancedStorageSiloAction;
#else
typedef struct EnhancedStorageSiloAction EnhancedStorageSiloAction;
#endif /* __cplusplus */

#endif 	/* __EnhancedStorageSiloAction_FWD_DEFINED__ */


/* header files for imported files */
#include "unknwn.h"
#include "objidl.h"
#include "ocidl.h"
#include "propidl.h"
#include "portabledeviceapi.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_EhStorAPI_0000_0000 */
/* [local] */ 

#if (_WIN32_WINNT >= 0x0501) // XP and later





typedef struct _ACT_AUTHORIZATION_STATE
    {
    ULONG ulState;
    } 	ACT_AUTHORIZATION_STATE;

typedef struct _SILO_INFO
    {
    ULONG ulSTID;
    UCHAR SpecificationMajor;
    UCHAR SpecificationMinor;
    UCHAR ImplementationMajor;
    UCHAR ImplementationMinor;
    UCHAR type;
    UCHAR capabilities;
    } 	SILO_INFO;



extern RPC_IF_HANDLE __MIDL_itf_EhStorAPI_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_EhStorAPI_0000_0000_v0_0_s_ifspec;

#ifndef __IEnumEnhancedStorageACT_INTERFACE_DEFINED__
#define __IEnumEnhancedStorageACT_INTERFACE_DEFINED__

/* interface IEnumEnhancedStorageACT */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IEnumEnhancedStorageACT;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("09b224bd-1335-4631-a7ff-cfd3a92646d7")
    IEnumEnhancedStorageACT : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetACTs( 
            /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcEnhancedStorageACTs) IEnhancedStorageACT ***pppIEnhancedStorageACTs,
            /* [out] */ __RPC__out ULONG *pcEnhancedStorageACTs) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetMatchingACT( 
            /* [in] */ __RPC__in LPCWSTR szVolume,
            /* [out] */ __RPC__deref_out_opt IEnhancedStorageACT **ppIEnhancedStorageACT) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnumEnhancedStorageACTVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IEnumEnhancedStorageACT * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IEnumEnhancedStorageACT * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IEnumEnhancedStorageACT * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetACTs )( 
            __RPC__in IEnumEnhancedStorageACT * This,
            /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcEnhancedStorageACTs) IEnhancedStorageACT ***pppIEnhancedStorageACTs,
            /* [out] */ __RPC__out ULONG *pcEnhancedStorageACTs);
        
        HRESULT ( STDMETHODCALLTYPE *GetMatchingACT )( 
            __RPC__in IEnumEnhancedStorageACT * This,
            /* [in] */ __RPC__in LPCWSTR szVolume,
            /* [out] */ __RPC__deref_out_opt IEnhancedStorageACT **ppIEnhancedStorageACT);
        
        END_INTERFACE
    } IEnumEnhancedStorageACTVtbl;

    interface IEnumEnhancedStorageACT
    {
        CONST_VTBL struct IEnumEnhancedStorageACTVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnumEnhancedStorageACT_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnumEnhancedStorageACT_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnumEnhancedStorageACT_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnumEnhancedStorageACT_GetACTs(This,pppIEnhancedStorageACTs,pcEnhancedStorageACTs)	\
    ( (This)->lpVtbl -> GetACTs(This,pppIEnhancedStorageACTs,pcEnhancedStorageACTs) ) 

#define IEnumEnhancedStorageACT_GetMatchingACT(This,szVolume,ppIEnhancedStorageACT)	\
    ( (This)->lpVtbl -> GetMatchingACT(This,szVolume,ppIEnhancedStorageACT) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnumEnhancedStorageACT_INTERFACE_DEFINED__ */


#ifndef __IEnhancedStorageACT_INTERFACE_DEFINED__
#define __IEnhancedStorageACT_INTERFACE_DEFINED__

/* interface IEnhancedStorageACT */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IEnhancedStorageACT;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("6e7781f4-e0f2-4239-b976-a01abab52930")
    IEnhancedStorageACT : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Authorize( 
            /* [in] */ DWORD hwndParent,
            /* [in] */ DWORD dwFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Unauthorize( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAuthorizationState( 
            /* [out] */ __RPC__out ACT_AUTHORIZATION_STATE *pState) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetMatchingVolume( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszVolume) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetUniqueIdentity( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszIdentity) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSilos( 
            /* [size_is][size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcEnhancedStorageSilos) IEnhancedStorageSilo ***pppIEnhancedStorageSilos,
            /* [out] */ __RPC__out ULONG *pcEnhancedStorageSilos) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnhancedStorageACTVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IEnhancedStorageACT * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IEnhancedStorageACT * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IEnhancedStorageACT * This);
        
        HRESULT ( STDMETHODCALLTYPE *Authorize )( 
            __RPC__in IEnhancedStorageACT * This,
            /* [in] */ DWORD hwndParent,
            /* [in] */ DWORD dwFlags);
        
        HRESULT ( STDMETHODCALLTYPE *Unauthorize )( 
            __RPC__in IEnhancedStorageACT * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetAuthorizationState )( 
            __RPC__in IEnhancedStorageACT * This,
            /* [out] */ __RPC__out ACT_AUTHORIZATION_STATE *pState);
        
        HRESULT ( STDMETHODCALLTYPE *GetMatchingVolume )( 
            __RPC__in IEnhancedStorageACT * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszVolume);
        
        HRESULT ( STDMETHODCALLTYPE *GetUniqueIdentity )( 
            __RPC__in IEnhancedStorageACT * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszIdentity);
        
        HRESULT ( STDMETHODCALLTYPE *GetSilos )( 
            __RPC__in IEnhancedStorageACT * This,
            /* [size_is][size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcEnhancedStorageSilos) IEnhancedStorageSilo ***pppIEnhancedStorageSilos,
            /* [out] */ __RPC__out ULONG *pcEnhancedStorageSilos);
        
        END_INTERFACE
    } IEnhancedStorageACTVtbl;

    interface IEnhancedStorageACT
    {
        CONST_VTBL struct IEnhancedStorageACTVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnhancedStorageACT_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnhancedStorageACT_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnhancedStorageACT_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnhancedStorageACT_Authorize(This,hwndParent,dwFlags)	\
    ( (This)->lpVtbl -> Authorize(This,hwndParent,dwFlags) ) 

#define IEnhancedStorageACT_Unauthorize(This)	\
    ( (This)->lpVtbl -> Unauthorize(This) ) 

#define IEnhancedStorageACT_GetAuthorizationState(This,pState)	\
    ( (This)->lpVtbl -> GetAuthorizationState(This,pState) ) 

#define IEnhancedStorageACT_GetMatchingVolume(This,ppwszVolume)	\
    ( (This)->lpVtbl -> GetMatchingVolume(This,ppwszVolume) ) 

#define IEnhancedStorageACT_GetUniqueIdentity(This,ppwszIdentity)	\
    ( (This)->lpVtbl -> GetUniqueIdentity(This,ppwszIdentity) ) 

#define IEnhancedStorageACT_GetSilos(This,pppIEnhancedStorageSilos,pcEnhancedStorageSilos)	\
    ( (This)->lpVtbl -> GetSilos(This,pppIEnhancedStorageSilos,pcEnhancedStorageSilos) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnhancedStorageACT_INTERFACE_DEFINED__ */


#ifndef __IEnhancedStorageACT2_INTERFACE_DEFINED__
#define __IEnhancedStorageACT2_INTERFACE_DEFINED__

/* interface IEnhancedStorageACT2 */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IEnhancedStorageACT2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("4DA57D2E-8EB3-41f6-A07E-98B52B88242B")
    IEnhancedStorageACT2 : public IEnhancedStorageACT
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetDeviceName( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszDeviceName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsDeviceRemovable( 
            /* [out] */ __RPC__out BOOL *pIsDeviceRemovable) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnhancedStorageACT2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IEnhancedStorageACT2 * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IEnhancedStorageACT2 * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IEnhancedStorageACT2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *Authorize )( 
            __RPC__in IEnhancedStorageACT2 * This,
            /* [in] */ DWORD hwndParent,
            /* [in] */ DWORD dwFlags);
        
        HRESULT ( STDMETHODCALLTYPE *Unauthorize )( 
            __RPC__in IEnhancedStorageACT2 * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetAuthorizationState )( 
            __RPC__in IEnhancedStorageACT2 * This,
            /* [out] */ __RPC__out ACT_AUTHORIZATION_STATE *pState);
        
        HRESULT ( STDMETHODCALLTYPE *GetMatchingVolume )( 
            __RPC__in IEnhancedStorageACT2 * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszVolume);
        
        HRESULT ( STDMETHODCALLTYPE *GetUniqueIdentity )( 
            __RPC__in IEnhancedStorageACT2 * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszIdentity);
        
        HRESULT ( STDMETHODCALLTYPE *GetSilos )( 
            __RPC__in IEnhancedStorageACT2 * This,
            /* [size_is][size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcEnhancedStorageSilos) IEnhancedStorageSilo ***pppIEnhancedStorageSilos,
            /* [out] */ __RPC__out ULONG *pcEnhancedStorageSilos);
        
        HRESULT ( STDMETHODCALLTYPE *GetDeviceName )( 
            __RPC__in IEnhancedStorageACT2 * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszDeviceName);
        
        HRESULT ( STDMETHODCALLTYPE *IsDeviceRemovable )( 
            __RPC__in IEnhancedStorageACT2 * This,
            /* [out] */ __RPC__out BOOL *pIsDeviceRemovable);
        
        END_INTERFACE
    } IEnhancedStorageACT2Vtbl;

    interface IEnhancedStorageACT2
    {
        CONST_VTBL struct IEnhancedStorageACT2Vtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnhancedStorageACT2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnhancedStorageACT2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnhancedStorageACT2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnhancedStorageACT2_Authorize(This,hwndParent,dwFlags)	\
    ( (This)->lpVtbl -> Authorize(This,hwndParent,dwFlags) ) 

#define IEnhancedStorageACT2_Unauthorize(This)	\
    ( (This)->lpVtbl -> Unauthorize(This) ) 

#define IEnhancedStorageACT2_GetAuthorizationState(This,pState)	\
    ( (This)->lpVtbl -> GetAuthorizationState(This,pState) ) 

#define IEnhancedStorageACT2_GetMatchingVolume(This,ppwszVolume)	\
    ( (This)->lpVtbl -> GetMatchingVolume(This,ppwszVolume) ) 

#define IEnhancedStorageACT2_GetUniqueIdentity(This,ppwszIdentity)	\
    ( (This)->lpVtbl -> GetUniqueIdentity(This,ppwszIdentity) ) 

#define IEnhancedStorageACT2_GetSilos(This,pppIEnhancedStorageSilos,pcEnhancedStorageSilos)	\
    ( (This)->lpVtbl -> GetSilos(This,pppIEnhancedStorageSilos,pcEnhancedStorageSilos) ) 


#define IEnhancedStorageACT2_GetDeviceName(This,ppwszDeviceName)	\
    ( (This)->lpVtbl -> GetDeviceName(This,ppwszDeviceName) ) 

#define IEnhancedStorageACT2_IsDeviceRemovable(This,pIsDeviceRemovable)	\
    ( (This)->lpVtbl -> IsDeviceRemovable(This,pIsDeviceRemovable) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnhancedStorageACT2_INTERFACE_DEFINED__ */


#ifndef __IEnhancedStorageSilo_INTERFACE_DEFINED__
#define __IEnhancedStorageSilo_INTERFACE_DEFINED__

/* interface IEnhancedStorageSilo */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IEnhancedStorageSilo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("5aef78c6-2242-4703-bf49-44b29357a359")
    IEnhancedStorageSilo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetInfo( 
            /* [out] */ __RPC__out SILO_INFO *pSiloInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetActions( 
            /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcEnhancedStorageSiloActions) IEnhancedStorageSiloAction ***pppIEnhancedStorageSiloActions,
            /* [out] */ __RPC__out ULONG *pcEnhancedStorageSiloActions) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SendCommand( 
            /* [in] */ UCHAR Command,
            /* [size_is][in] */ __RPC__in_ecount_full(cbCommandBuffer) BYTE *pbCommandBuffer,
            /* [in] */ ULONG cbCommandBuffer,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcbResponseBuffer) BYTE *pbResponseBuffer,
            /* [out][in] */ __RPC__inout ULONG *pcbResponseBuffer) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPortableDevice( 
            /* [out] */ __RPC__deref_out_opt IPortableDevice **ppIPortableDevice) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDevicePath( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszSiloDevicePath) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnhancedStorageSiloVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IEnhancedStorageSilo * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IEnhancedStorageSilo * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IEnhancedStorageSilo * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetInfo )( 
            __RPC__in IEnhancedStorageSilo * This,
            /* [out] */ __RPC__out SILO_INFO *pSiloInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetActions )( 
            __RPC__in IEnhancedStorageSilo * This,
            /* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*pcEnhancedStorageSiloActions) IEnhancedStorageSiloAction ***pppIEnhancedStorageSiloActions,
            /* [out] */ __RPC__out ULONG *pcEnhancedStorageSiloActions);
        
        HRESULT ( STDMETHODCALLTYPE *SendCommand )( 
            __RPC__in IEnhancedStorageSilo * This,
            /* [in] */ UCHAR Command,
            /* [size_is][in] */ __RPC__in_ecount_full(cbCommandBuffer) BYTE *pbCommandBuffer,
            /* [in] */ ULONG cbCommandBuffer,
            /* [size_is][out] */ __RPC__out_ecount_full(*pcbResponseBuffer) BYTE *pbResponseBuffer,
            /* [out][in] */ __RPC__inout ULONG *pcbResponseBuffer);
        
        HRESULT ( STDMETHODCALLTYPE *GetPortableDevice )( 
            __RPC__in IEnhancedStorageSilo * This,
            /* [out] */ __RPC__deref_out_opt IPortableDevice **ppIPortableDevice);
        
        HRESULT ( STDMETHODCALLTYPE *GetDevicePath )( 
            __RPC__in IEnhancedStorageSilo * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszSiloDevicePath);
        
        END_INTERFACE
    } IEnhancedStorageSiloVtbl;

    interface IEnhancedStorageSilo
    {
        CONST_VTBL struct IEnhancedStorageSiloVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnhancedStorageSilo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnhancedStorageSilo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnhancedStorageSilo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnhancedStorageSilo_GetInfo(This,pSiloInfo)	\
    ( (This)->lpVtbl -> GetInfo(This,pSiloInfo) ) 

#define IEnhancedStorageSilo_GetActions(This,pppIEnhancedStorageSiloActions,pcEnhancedStorageSiloActions)	\
    ( (This)->lpVtbl -> GetActions(This,pppIEnhancedStorageSiloActions,pcEnhancedStorageSiloActions) ) 

#define IEnhancedStorageSilo_SendCommand(This,Command,pbCommandBuffer,cbCommandBuffer,pbResponseBuffer,pcbResponseBuffer)	\
    ( (This)->lpVtbl -> SendCommand(This,Command,pbCommandBuffer,cbCommandBuffer,pbResponseBuffer,pcbResponseBuffer) ) 

#define IEnhancedStorageSilo_GetPortableDevice(This,ppIPortableDevice)	\
    ( (This)->lpVtbl -> GetPortableDevice(This,ppIPortableDevice) ) 

#define IEnhancedStorageSilo_GetDevicePath(This,ppwszSiloDevicePath)	\
    ( (This)->lpVtbl -> GetDevicePath(This,ppwszSiloDevicePath) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnhancedStorageSilo_INTERFACE_DEFINED__ */


#ifndef __IEnhancedStorageSiloAction_INTERFACE_DEFINED__
#define __IEnhancedStorageSiloAction_INTERFACE_DEFINED__

/* interface IEnhancedStorageSiloAction */
/* [unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IEnhancedStorageSiloAction;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("b6f7f311-206f-4ff8-9c4b-27efee77a86f")
    IEnhancedStorageSiloAction : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetName( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszActionName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDescription( 
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszActionDescription) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Invoke( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IEnhancedStorageSiloActionVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            __RPC__in IEnhancedStorageSiloAction * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            __RPC__in IEnhancedStorageSiloAction * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            __RPC__in IEnhancedStorageSiloAction * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetName )( 
            __RPC__in IEnhancedStorageSiloAction * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszActionName);
        
        HRESULT ( STDMETHODCALLTYPE *GetDescription )( 
            __RPC__in IEnhancedStorageSiloAction * This,
            /* [out] */ __RPC__deref_out_opt LPWSTR *ppwszActionDescription);
        
        HRESULT ( STDMETHODCALLTYPE *Invoke )( 
            __RPC__in IEnhancedStorageSiloAction * This);
        
        END_INTERFACE
    } IEnhancedStorageSiloActionVtbl;

    interface IEnhancedStorageSiloAction
    {
        CONST_VTBL struct IEnhancedStorageSiloActionVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IEnhancedStorageSiloAction_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IEnhancedStorageSiloAction_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IEnhancedStorageSiloAction_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IEnhancedStorageSiloAction_GetName(This,ppwszActionName)	\
    ( (This)->lpVtbl -> GetName(This,ppwszActionName) ) 

#define IEnhancedStorageSiloAction_GetDescription(This,ppwszActionDescription)	\
    ( (This)->lpVtbl -> GetDescription(This,ppwszActionDescription) ) 

#define IEnhancedStorageSiloAction_Invoke(This)	\
    ( (This)->lpVtbl -> Invoke(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IEnhancedStorageSiloAction_INTERFACE_DEFINED__ */



#ifndef __EnhancedStorageAPILib_LIBRARY_DEFINED__
#define __EnhancedStorageAPILib_LIBRARY_DEFINED__

/* library EnhancedStorageAPILib */
/* [helpstring][version][uuid] */ 


EXTERN_C const IID LIBID_EnhancedStorageAPILib;

EXTERN_C const CLSID CLSID_EnumEnhancedStorageACT;

#ifdef __cplusplus

class DECLSPEC_UUID("fe841493-835c-4fa3-b6cc-b4b2d4719848")
EnumEnhancedStorageACT;
#endif

EXTERN_C const CLSID CLSID_EnhancedStorageACT;

#ifdef __cplusplus

class DECLSPEC_UUID("af076a15-2ece-4ad4-bb21-29f040e176d8")
EnhancedStorageACT;
#endif

EXTERN_C const CLSID CLSID_EnhancedStorageSilo;

#ifdef __cplusplus

class DECLSPEC_UUID("cb25220c-76c7-4fee-842b-f3383cd022bc")
EnhancedStorageSilo;
#endif

EXTERN_C const CLSID CLSID_EnhancedStorageSiloAction;

#ifdef __cplusplus

class DECLSPEC_UUID("886D29DD-B506-466B-9FBF-B44FF383FB3F")
EnhancedStorageSiloAction;
#endif
#endif /* __EnhancedStorageAPILib_LIBRARY_DEFINED__ */

/* interface __MIDL_itf_EhStorAPI_0000_0005 */
/* [local] */ 

#endif


extern RPC_IF_HANDLE __MIDL_itf_EhStorAPI_0000_0005_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_EhStorAPI_0000_0005_v0_0_s_ifspec;

/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



