/*** Autogenerated by WIDL 0.9.22 from oledb.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_OLEDB_H
#define __WIDL_OLEDB_H
#ifdef __cplusplus
extern "C" {
#endif
#include <wtypes.h>
#include <oaidl.h>
#include <ocidl.h>
#include <propidl.h>
typedef ULONG DBBYTEOFFSET;
#ifndef __IDBInitialize_FWD_DEFINED__
#define __IDBInitialize_FWD_DEFINED__
typedef interface IDBInitialize IDBInitialize;
#endif

/*****************************************************************************
 * IDBInitialize interface
 */
#ifndef __IDBInitialize_INTERFACE_DEFINED__
#define __IDBInitialize_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBInitialize, 0x0c733a8b, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBInitialize : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Uninitialize(
        ) = 0;

};
#else
typedef struct IDBInitializeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBInitialize methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IDBInitialize* This);

    HRESULT (STDMETHODCALLTYPE *Uninitialize)(
        IDBInitialize* This);

    END_INTERFACE
} IDBInitializeVtbl;
interface IDBInitialize {
    const IDBInitializeVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBInitialize_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDBInitialize_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDBInitialize_Release(p) (p)->lpVtbl->Release(p)
/*** IDBInitialize methods ***/
#define IDBInitialize_Initialize(p) (p)->lpVtbl->Initialize(p)
#define IDBInitialize_Uninitialize(p) (p)->lpVtbl->Uninitialize(p)
#endif

#endif

HRESULT CALLBACK IDBInitialize_RemoteInitialize_Proxy(
    IDBInitialize* This,
    IErrorInfo** ppErrorInfoRem);
void __RPC_STUB IDBInitialize_RemoteInitialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBInitialize_Initialize_Proxy(
    IDBInitialize* This);
HRESULT __RPC_STUB IDBInitialize_Initialize_Stub(
    IDBInitialize* This,
    IErrorInfo** ppErrorInfoRem);
HRESULT CALLBACK IDBInitialize_RemoteUninitialize_Proxy(
    IDBInitialize* This,
    IErrorInfo** ppErrorInfoRem);
void __RPC_STUB IDBInitialize_RemoteUninitialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBInitialize_Uninitialize_Proxy(
    IDBInitialize* This);
HRESULT __RPC_STUB IDBInitialize_Uninitialize_Stub(
    IDBInitialize* This,
    IErrorInfo** ppErrorInfoRem);

#endif  /* __IDBInitialize_INTERFACE_DEFINED__ */

typedef DWORD DBKIND;
enum DBKINDENUM {
    DBKIND_GUID_NAME = 0,
    DBKIND_GUID_PROPID = 1,
    DBKIND_NAME = 2,
    DBKIND_PGUID_NAME = 3,
    DBKIND_PGUID_PROPID = 4,
    DBKIND_PROPID = 5,
    DBKIND_GUID = 6
};

typedef struct tagDBID {
    union {
        GUID guid;
        GUID *pguid;
    } uGuid;
    DBKIND eKind;
    union {
        LPOLESTR pwszName;
        ULONG ulPropid;
    } uName;
} DBID;
typedef DWORD DBPROPID;
typedef struct tagDBPROPIDSET {
    DBPROPID *rgPropertyIDs;
    ULONG cPropertyIDs;
    GUID guidPropertySet;
} DBPROPIDSET;
typedef DWORD DBPROPOPTIONS;
enum DBPROPOPTIONENUM {
    DBPROPOPTIONS_REQUIRED = 0,
    DBPROPOPTIONS_SETIFCHEAP = 1,
    DBPROPOPTIONS_OPTIONAL = 1
};

typedef DWORD DBPROPSTATUS;
typedef struct tagDBPROP {
    DBPROPID dwPropertyID;
    DBPROPOPTIONS dwOptions;
    DBPROPSTATUS dwStatus;
    DBID colid;
    VARIANT vValue;
} DBPROP;
typedef struct tagDBPROPSET {
    DBPROP *rgProperties;
    ULONG cProperties;
    GUID guidPropertySet;
} DBPROPSET;
typedef DWORD DBPROPFLAGS;
typedef struct tagDBPROPINFO {
    LPOLESTR pwszDescription;
    DBPROPID dwPropertyID;
    DBPROPFLAGS dwFlags;
    VARTYPE vtType;
    VARIANT vValues;
} DBPROPINFO;
typedef DBPROPINFO *PDBPROPINFO;
typedef struct tagDBPROPINFOSET {
    PDBPROPINFO rgPropertyInfos;
    ULONG cPropertyInfos;
    GUID guidPropertySet;
} DBPROPINFOSET;
#ifndef __IDBProperties_FWD_DEFINED__
#define __IDBProperties_FWD_DEFINED__
typedef interface IDBProperties IDBProperties;
#endif

/*****************************************************************************
 * IDBProperties interface
 */
#ifndef __IDBProperties_INTERFACE_DEFINED__
#define __IDBProperties_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDBProperties, 0x0c733a8a, 0x2a1c, 0x11ce, 0xad,0xe5, 0x00,0xaa,0x00,0x44,0x77,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDBProperties : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProperties(
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG* pcPropertySets,
        DBPROPSET** prgPropertySets) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyInfo(
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG* pcPropertyInfoSets,
        DBPROPINFOSET** prgPropertyInfoSets) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProperties(
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[]) = 0;

};
#else
typedef struct IDBPropertiesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDBProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProperties)(
        IDBProperties* This,
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG* pcPropertySets,
        DBPROPSET** prgPropertySets);

    HRESULT (STDMETHODCALLTYPE *GetPropertyInfo)(
        IDBProperties* This,
        ULONG cPropertyIDSets,
        const DBPROPIDSET rgPropertyIDSets[],
        ULONG* pcPropertyInfoSets,
        DBPROPINFOSET** prgPropertyInfoSets);

    HRESULT (STDMETHODCALLTYPE *SetProperties)(
        IDBProperties* This,
        ULONG cPropertySets,
        DBPROPSET rgPropertySets[]);

    END_INTERFACE
} IDBPropertiesVtbl;
interface IDBProperties {
    const IDBPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDBProperties_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDBProperties_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDBProperties_Release(p) (p)->lpVtbl->Release(p)
/*** IDBProperties methods ***/
#define IDBProperties_GetProperties(p,a,b,c,d) (p)->lpVtbl->GetProperties(p,a,b,c,d)
#define IDBProperties_GetPropertyInfo(p,a,b,c,d) (p)->lpVtbl->GetPropertyInfo(p,a,b,c,d)
#define IDBProperties_SetProperties(p,a,b) (p)->lpVtbl->SetProperties(p,a,b)
#endif

#endif

HRESULT CALLBACK IDBProperties_RemoteGetProperties_Proxy(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG* pcPropertySets,
    DBPROPSET** prgPropertySets,
    IErrorInfo** ppErrorInfoRem);
void __RPC_STUB IDBProperties_RemoteGetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBProperties_GetProperties_Proxy(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG* pcPropertySets,
    DBPROPSET** prgPropertySets);
HRESULT __RPC_STUB IDBProperties_GetProperties_Stub(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG* pcPropertySets,
    DBPROPSET** prgPropertySets,
    IErrorInfo** ppErrorInfoRem);
HRESULT CALLBACK IDBProperties_RemoteGetPropertyInfo_Proxy(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET* rgPropertyIDSets,
    ULONG* pcPropertyInfoSets,
    DBPROPINFOSET** prgPropertyInfoSets,
    ULONG* pcOffsets,
    DBBYTEOFFSET** prgDescOffsets,
    ULONG* pcbDescBuffer,
    OLECHAR** ppDescBuffer,
    IErrorInfo** ppErrorInfoRem);
void __RPC_STUB IDBProperties_RemoteGetPropertyInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBProperties_GetPropertyInfo_Proxy(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET rgPropertyIDSets[],
    ULONG* pcPropertyInfoSets,
    DBPROPINFOSET** prgPropertyInfoSets);
HRESULT __RPC_STUB IDBProperties_GetPropertyInfo_Stub(
    IDBProperties* This,
    ULONG cPropertyIDSets,
    const DBPROPIDSET* rgPropertyIDSets,
    ULONG* pcPropertyInfoSets,
    DBPROPINFOSET** prgPropertyInfoSets,
    ULONG* pcOffsets,
    DBBYTEOFFSET** prgDescOffsets,
    ULONG* pcbDescBuffer,
    OLECHAR** ppDescBuffer,
    IErrorInfo** ppErrorInfoRem);
HRESULT CALLBACK IDBProperties_RemoteSetProperties_Proxy(
    IDBProperties* This,
    ULONG cPropertySets,
    DBPROPSET* rgPropertySets,
    ULONG cTotalProps,
    DBPROPSTATUS* rgPropStatus,
    IErrorInfo** ppErrorInfoRem);
void __RPC_STUB IDBProperties_RemoteSetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDBProperties_SetProperties_Proxy(
    IDBProperties* This,
    ULONG cPropertySets,
    DBPROPSET rgPropertySets[]);
HRESULT __RPC_STUB IDBProperties_SetProperties_Stub(
    IDBProperties* This,
    ULONG cPropertySets,
    DBPROPSET* rgPropertySets,
    ULONG cTotalProps,
    DBPROPSTATUS* rgPropStatus,
    IErrorInfo** ppErrorInfoRem);

#endif  /* __IDBProperties_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

unsigned long   __RPC_USER BSTR_UserSize     (unsigned long *, unsigned long,   BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (unsigned long *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (unsigned long *, BSTR *);
unsigned long   __RPC_USER VARIANT_UserSize     (unsigned long *, unsigned long,   VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (unsigned long *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (unsigned long *, VARIANT *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif
#endif /* __WIDL_OLEDB_H */
