254 lines
8.8 KiB
C
254 lines
8.8 KiB
C
/***************************************************************************
|
|
* RBBINDER.H
|
|
*
|
|
* DSOFramer: Internet Publishing Provider (MSDAIPP) Compatible Header
|
|
*
|
|
* Copyright ©1999-2004; Microsoft Corporation. All rights reserved.
|
|
* Written by Microsoft Developer Support Office Integration (PSS DSOI)
|
|
*
|
|
* This code is provided via KB 311765 as a sample. It is not a formal
|
|
* product and has not been tested with all containers or servers. Use it
|
|
* for educational purposes only. See the EULA.TXT file included in the
|
|
* KB download for full terms of use and restrictions.
|
|
*
|
|
* THIS CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
|
|
* EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
|
|
*
|
|
***************************************************************************/
|
|
#ifndef DS_RBBINDER_H
|
|
#define DS_RBBINDER_H
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// The Microsoft OLEDB Provider for Internet Publishing (MSDAIPP) is now
|
|
// standard with MDAC 2.5. However, it will run with MDAC 2.1, so this
|
|
// header will allow us to safely compile without 2.5.
|
|
//
|
|
#define OLEDBVER 0x0250
|
|
|
|
#include <oledb.h>
|
|
#include <oledberr.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <pshpack2.h> // 2-byte structure packing
|
|
|
|
#ifndef BEGIN_INTERFACE
|
|
#define BEGIN_INTERFACE
|
|
#endif
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// MSDAIPP Specific GUIDs (not defined in OLEDB.H)
|
|
//
|
|
DEFINE_GUID(CLSID_MSDAIPP_DSO, 0xAF320921L, 0x9381, 0x11d1, 0x9C, 0x3C, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x61);
|
|
DEFINE_GUID(CLSID_MSDAIPP_BINDER, 0xE1D2BF40L, 0xA96B, 0x11d1, 0x9C, 0x6B, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x61);
|
|
DEFINE_GUID(DBPROPSET_MSDAIPP_INIT, 0x8F1033E3L, 0xB2CD, 0x11d1, 0x9C, 0x74, 0x00, 0x00, 0xF8, 0x75, 0xAC, 0x61);
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// OLEDB Additional defines -- included for machines with MDAC 2.0/2.1
|
|
//
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// OLEDB 2.5 GUIDS Redefined for use here; this is to avoid linker errors
|
|
// on machines that have different versions of MDAC libs.
|
|
//
|
|
DEFINE_GUID(IIDX_IBindResource, 0x0c733ab1L, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
|
|
DEFINE_GUID(IIDX_IDBBinderProperties, 0x0c733ab3L, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
|
|
DEFINE_GUID(IIDX_ICreateRow, 0x0c733ab2L, 0x2a1c, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
|
|
DEFINE_GUID(IIDX_IAuthenticate, 0x79eac9d0L, 0xbaf9, 0x11ce, 0x8c, 0x82, 0x00, 0xaa, 0x00, 0x4b, 0xa9, 0x0b);
|
|
DEFINE_GUID(DBGUIDX_STREAM, 0xc8b522f9L, 0x5cf3, 0x11ce, 0xad, 0xe5, 0x00, 0xaa, 0x00, 0x44, 0x77, 0x3d);
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////
|
|
// MSDAIPP Binding Interfaces (all this should be standard in MDAC 2.5)
|
|
//
|
|
#ifndef __IBindResource_FWD_DEFINED__
|
|
#define __IBindResource_FWD_DEFINED__
|
|
|
|
typedef interface IBindResource IBindResource;
|
|
|
|
typedef DWORD DBBINDURLFLAG;
|
|
enum DBBINDURLFLAGENUM
|
|
{
|
|
DBBINDURLFLAG_READ = 0x1L,
|
|
DBBINDURLFLAG_WRITE = 0x2L,
|
|
DBBINDURLFLAG_READWRITE = 0x3L,
|
|
DBBINDURLFLAG_SHARE_DENY_READ = 0x4L,
|
|
DBBINDURLFLAG_SHARE_DENY_WRITE = 0x8L,
|
|
DBBINDURLFLAG_SHARE_EXCLUSIVE = 0xcL,
|
|
DBBINDURLFLAG_SHARE_DENY_NONE = 0x10L,
|
|
DBBINDURLFLAG_ASYNCHRONOUS = 0x1000L,
|
|
DBBINDURLFLAG_COLLECTION = 0x2000L,
|
|
DBBINDURLFLAG_DELAYFETCHSTREAM = 0x4000L,
|
|
DBBINDURLFLAG_DELAYFETCHCOLUMNS = 0x8000L,
|
|
DBBINDURLFLAG_RECURSIVE = 0x400000L,
|
|
DBBINDURLFLAG_OUTPUT = 0x800000L,
|
|
DBBINDURLFLAG_WAITFORINIT = 0x1000000L,
|
|
DBBINDURLFLAG_OPENIFEXISTS = 0x2000000L,
|
|
DBBINDURLFLAG_OVERWRITE = 0x4000000L,
|
|
DBBINDURLFLAG_ISSTRUCTUREDDOCUMENT = 0x8000000L
|
|
};
|
|
|
|
typedef DWORD DBBINDURLSTATUS;
|
|
enum DBBINDURLSTATUSENUM
|
|
{
|
|
DBBINDURLSTATUS_S_OK = 0L,
|
|
DBBINDURLSTATUS_S_DENYNOTSUPPORTED = 0x1L,
|
|
DBBINDURLSTATUS_S_DENYTYPENOTSUPPORTED = 0x4L,
|
|
DBBINDURLSTATUS_S_REDIRECTED = 0x8L
|
|
};
|
|
|
|
enum DBPROP_OLEDB25_RB
|
|
{
|
|
DBPROP_INIT_BINDFLAGS = 0x10eL,
|
|
DBPROP_INIT_LOCKOWNER = 0x10fL
|
|
};
|
|
|
|
typedef ULONG DBCOUNTITEM;
|
|
|
|
typedef struct tagDBIMPLICITSESSION
|
|
{
|
|
IUnknown __RPC_FAR *pUnkOuter;
|
|
IID __RPC_FAR *piid;
|
|
IUnknown __RPC_FAR *pSession;
|
|
} DBIMPLICITSESSION;
|
|
|
|
#endif //__IBindResource_FWD_DEFINED__
|
|
|
|
|
|
#ifndef __IBindResource_INTERFACE_DEFINED__
|
|
#define __IBindResource_INTERFACE_DEFINED__
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IBindResource
|
|
DECLARE_INTERFACE_(IBindResource, IUnknown)
|
|
{
|
|
BEGIN_INTERFACE
|
|
#ifndef NO_BASEINTERFACE_FUNCS
|
|
/* IUnknown methods */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
#endif
|
|
/* IBindResource methods */
|
|
STDMETHOD(Bind)(THIS_
|
|
/* [in] */ IUnknown __RPC_FAR *pUnkOuter,
|
|
/* [in] */ LPCOLESTR pwszURL,
|
|
/* [in] */ DBBINDURLFLAG dwBindURLFlags,
|
|
/* [in] */ REFGUID rguid,
|
|
/* [in] */ REFIID riid,
|
|
/* [in] */ IAuthenticate __RPC_FAR *pAuthenticate,
|
|
/* [unique][out][in] */ DBIMPLICITSESSION __RPC_FAR *pImplSession,
|
|
/* [unique][out][in] */ DBBINDURLSTATUS __RPC_FAR *pdwBindStatus,
|
|
/* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk) PURE;
|
|
};
|
|
|
|
#endif //__IBindResource_INTERFACE_DEFINED__
|
|
|
|
|
|
|
|
#ifndef __ICreateRow_INTERFACE_DEFINED__
|
|
#define __ICreateRow_INTERFACE_DEFINED__
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE ICreateRow
|
|
DECLARE_INTERFACE_(ICreateRow, IUnknown)
|
|
{
|
|
BEGIN_INTERFACE
|
|
#ifndef NO_BASEINTERFACE_FUNCS
|
|
/* IUnknown methods */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
#endif
|
|
/* ICreateRow methods */
|
|
STDMETHOD(CreateRow)(THIS_
|
|
/* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
|
|
/* [in] */ LPCOLESTR pwszURL,
|
|
/* [in] */ DBBINDURLFLAG dwBindURLFlags,
|
|
/* [in] */ REFGUID rguid,
|
|
/* [in] */ REFIID riid,
|
|
/* [unique][in] */ IAuthenticate __RPC_FAR *pAuthenticate,
|
|
/* [unique][out][in] */ IUnknown __RPC_FAR *pImplSession,
|
|
/* [unique][out][in] */ DBBINDURLSTATUS __RPC_FAR *pdwBindStatus,
|
|
/* [out] */ LPOLESTR __RPC_FAR *ppwszNewURL,
|
|
/* [iid_is][out] */ IUnknown __RPC_FAR *__RPC_FAR *ppUnk) PURE;
|
|
};
|
|
|
|
#endif //__ICreateRow_INTERFACE_DEFINED__
|
|
|
|
|
|
#ifndef __IDBBinderProperties_INTERFACE_DEFINED__
|
|
#define __IDBBinderProperties_INTERFACE_DEFINED__
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IDBBinderProperties
|
|
DECLARE_INTERFACE_(IDBBinderProperties, IDBProperties)
|
|
{
|
|
BEGIN_INTERFACE
|
|
#ifndef NO_BASEINTERFACE_FUNCS
|
|
/* IDBProperties methods */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
|
|
STDMETHOD(GetProperties)(THIS_ ULONG cPropertyIDSets, const DBPROPIDSET __RPC_FAR rgPropertyIDSets[], ULONG __RPC_FAR *pcPropertySets, DBPROPSET __RPC_FAR *__RPC_FAR *prgPropertySets) PURE;
|
|
STDMETHOD(GetPropertyInfo)(THIS_ ULONG cPropertyIDSets, const DBPROPIDSET __RPC_FAR rgPropertyIDSets[], ULONG __RPC_FAR *pcPropertyInfoSets, DBPROPINFOSET __RPC_FAR *__RPC_FAR *prgPropertyInfoSets, OLECHAR __RPC_FAR *__RPC_FAR *ppDescBuffer) PURE;
|
|
STDMETHOD(SetProperties)(THIS_ ULONG cPropertySets, DBPROPSET __RPC_FAR rgPropertySets[]) PURE;
|
|
#endif
|
|
/* IDBBinderProperties methods */
|
|
STDMETHOD(Reset)(THIS) PURE;
|
|
};
|
|
|
|
#endif //__IDBBinderProperties_INTERFACE_DEFINED__
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// IAuthenticate (borrowed from urlmon.h to avoid extra includes)
|
|
//
|
|
#ifndef __IAuthenticate_INTERFACE_DEFINED__
|
|
#define __IAuthenticate_INTERFACE_DEFINED__
|
|
|
|
#undef INTERFACE
|
|
#define INTERFACE IAuthenticate
|
|
DECLARE_INTERFACE_(IAuthenticate, IUnknown)
|
|
{
|
|
BEGIN_INTERFACE
|
|
#ifndef NO_BASEINTERFACE_FUNCS
|
|
/* IUnknown methods */
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
|
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
|
#endif
|
|
/* IAuthenticate methods */
|
|
STDMETHOD(Authenticate)(THIS_ HWND __RPC_FAR *phwnd, LPWSTR __RPC_FAR *pszUsername, LPWSTR __RPC_FAR *pszPassword) PURE;
|
|
};
|
|
|
|
#endif //__IAuthenticate_INTERFACE_DEFINED__
|
|
|
|
//OLEDB 2.1 Error values
|
|
#ifndef DB_E_READONLY
|
|
#define DB_E_READONLY ((HRESULT)0x80040E94L)
|
|
#define DB_E_RESOURCELOCKED ((HRESULT)0x80040E92L)
|
|
#define DB_E_CANNOTCONNECT ((HRESULT)0x80040E96L)
|
|
#define DB_E_TIMEOUT ((HRESULT)0x80040E97L)
|
|
#define DB_E_RESOURCEEXISTS ((HRESULT)0x80040E98L)
|
|
#define DB_E_OUTOFSPACE ((HRESULT)0x80040E9AL)
|
|
#endif
|
|
|
|
//OLEDB 2.5 Error values
|
|
#ifndef DB_SEC_E_SAFEMODE_DENIED
|
|
#define DB_SEC_E_SAFEMODE_DENIED ((HRESULT)0x80040E9BL)
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
} //extern "C"
|
|
#endif
|
|
|
|
#endif // DS_RBBINDER_H
|
|
|