489 lines
13 KiB
C++
489 lines
13 KiB
C++
#ifndef _REPLDIST_H_
|
|
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
|
|
#define _REPLDIST_H_
|
|
|
|
// OLEDB header
|
|
#include "oledb.h"
|
|
|
|
#ifndef __IDistributionStore_FWD_DEFINED__
|
|
#define __IDistributionStore_FWD_DEFINED__
|
|
typedef interface IDistributionStore IDistributionStore;
|
|
#endif /* __IDistributionStore_FWD_DEFINED__ */
|
|
|
|
#ifndef __IDistributionStore_INTERFACE_DEFINED__
|
|
#define __IDistributionStore_INTERFACE_DEFINED__
|
|
|
|
// SQLDistributionStore's CLSID
|
|
// {16D9A8E2-C326-11d0-94E9-00C04FC2DB9C}
|
|
DEFINE_GUID(CLSID_SQLDistribution,
|
|
0x16d9a8e2, 0xc326, 0x11d0, 0x94, 0xe9, 0x0, 0xc0, 0x4f, 0xc2, 0xdb, 0x9c);
|
|
|
|
// {63797CA0-9684-11d0-94DD-00C04FC2DB9C}
|
|
DEFINE_GUID(IID_IDistributionStore,
|
|
0x63797ca0, 0x9684, 0x11d0, 0x94, 0xdd, 0x0, 0xc0, 0x4f, 0xc2, 0xdb, 0x9c);
|
|
|
|
// {074EACFD-A791-11d0-94E0-00C04FC2DB9C}
|
|
DEFINE_GUID(IID_IDistributionLog,
|
|
0x74eacfd, 0xa791, 0x11d0, 0x94, 0xe0, 0x0, 0xc0, 0x4f, 0xc2, 0xdb, 0x9c);
|
|
|
|
typedef DWORD DISTCMDTYPE;
|
|
|
|
class DistByteArray
|
|
{
|
|
private:
|
|
BYTE rgDistByteArray[16];
|
|
public:
|
|
DistByteArray(){memset(rgDistByteArray, 0, sizeof(rgDistByteArray));}
|
|
~DistByteArray(){}
|
|
|
|
BYTE* operator& ()
|
|
{
|
|
return rgDistByteArray;
|
|
}
|
|
|
|
// Pre-increment
|
|
DistByteArray& operator++ ()
|
|
{
|
|
return Increment();
|
|
}
|
|
|
|
// Post-increment
|
|
DistByteArray& operator++ (int dummy)
|
|
{
|
|
return Increment();
|
|
}
|
|
|
|
DistByteArray& Increment()
|
|
{
|
|
for (int i=sizeof(rgDistByteArray)-1; i>=0; i--)
|
|
{
|
|
UCHAR *pByte = ((UCHAR *) rgDistByteArray + i);
|
|
if (0xFF == *pByte)
|
|
{
|
|
*pByte = 0;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
(*pByte)++;
|
|
break;
|
|
}
|
|
}
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
enum DISTCMDTYPEENUM
|
|
{
|
|
DISTCMDTYPE_SQL = 1,
|
|
DISTCMDTYPE_SCRIPT = 2,
|
|
DISTCMDTYPE_NATIVE_BCP = 3,
|
|
DISTCMDTYPE_CHAR_BCP = 4,
|
|
DISTCMDTYPE_SQL_WORKINGDIR = 7
|
|
};
|
|
|
|
typedef struct tagDISTCOMMANDDESC
|
|
{
|
|
INT PublicationId;
|
|
INT ArticleId;
|
|
INT CommandId;
|
|
DISTCMDTYPE CommandType;
|
|
BOOL fPartialCommand;
|
|
LPSTR szCommand;
|
|
BYTE* pXactId;
|
|
BYTE* pXactSeqno;
|
|
LPSTR szOriginator;
|
|
LPSTR szOriginatorDB;
|
|
} DISTCOMMANDDESC;
|
|
|
|
|
|
// Error source type
|
|
typedef enum {
|
|
DIST_SOURCE_NULL = 0,
|
|
DIST_SOURCE_COMMAND = 1,
|
|
DIST_SOURCE_AGENT = 2,
|
|
DIST_SOURCE_OS = 3,
|
|
DIST_SOURCE_ODBC = 4,
|
|
DIST_SOURCE_SQLSERVER = 5
|
|
} DISTERRSRCTYPE;
|
|
|
|
|
|
typedef struct tagDISTERRORDESC
|
|
{
|
|
DISTERRSRCTYPE SourceType;
|
|
CHAR szSourceName[31];
|
|
CHAR szErrorCode[31];
|
|
BSTR bstrErrorText;
|
|
} DISTERRORDESC;
|
|
|
|
typedef DWORD DISTLOGSTATUS;
|
|
|
|
enum DISTLOGSTATUSENUM
|
|
{
|
|
DISTLOG_STARTUP = 1,
|
|
DISTLOG_SUCCESS = 2,
|
|
DISTLOG_INPROGRESS = 3,
|
|
DISTLOG_IDLE = 4,
|
|
DISTLOG_RETRY = 5,
|
|
DISTLOG_FAILURE = 6
|
|
};
|
|
|
|
typedef BYTE DISTAPPTYPE;
|
|
|
|
enum DISTTYPEENUM
|
|
{
|
|
DISTTYPE_SNAPSHOT = 0,
|
|
DISTTYPE_LOGREADER = 1
|
|
};
|
|
|
|
|
|
enum DISTPROPENUM
|
|
{ DBPROP_INIT_PUBLISHER_NAME = 0xFF1,
|
|
DBPROP_INIT_PUBLISHER_DATASOURCE = 0xFF2,
|
|
DBPROP_INIT_XACTID_SIZE = 0xFF3,
|
|
DBPROP_INIT_XACT_SEQNO_SIZE = 0xFF4,
|
|
DBPROP_PUBLICATION_NAME = 0xFF5,
|
|
DBPROP_APPLICATION_NAME = 0xFF6,
|
|
DBPROP_APPLICATION_TYPE = 0xFF7
|
|
};
|
|
|
|
EXTERN_C const IID IID_IDistributionStore;
|
|
|
|
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
|
|
interface IDistributionStore : public IUnknown
|
|
{
|
|
public:
|
|
virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE GetLastTransaction(
|
|
/* [out] */ BYTE* pXactId,
|
|
/* [out] */ BYTE* pXactSeqno) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE AddTransactionCommands(
|
|
/* [in] */ ULONG cCommandDescs,
|
|
/* [size_is][in] */ const DISTCOMMANDDESC __RPC_FAR rgCommandDescs[ ]) = 0;
|
|
virtual HRESULT STDMETHODCALLTYPE StartTransaction( void) = 0;
|
|
};
|
|
|
|
#else /* C style interface */
|
|
|
|
typedef struct IDistributionStoreVtbl
|
|
{
|
|
BEGIN_INTERFACE
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
|
|
IDistributionStore __RPC_FAR * This,
|
|
/* [in] */ REFIID riid,
|
|
/* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
|
|
|
|
ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
|
|
IDistributionStore __RPC_FAR * This);
|
|
|
|
ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
|
|
IDistributionStore __RPC_FAR * This);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Abort )(
|
|
IDistributionStore __RPC_FAR * This);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *Commit )(
|
|
IDistributionStore __RPC_FAR * This);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetLastTransaction )(
|
|
IDistributionStore __RPC_FAR * This,
|
|
/* [out] */ BYTE* pXactId,
|
|
/* [out] */ BYTE* pXactSeqno);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddTransactionCommands )(
|
|
IDistributionStore __RPC_FAR * This,
|
|
/* [in] */ ULONG cCommandDescs,
|
|
/* [size_is][in] */ const DISTCOMMANDDESC __RPC_FAR rgCommandDescs[ ]);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *StartTransaction )(
|
|
IDistributionStore __RPC_FAR * This);
|
|
|
|
END_INTERFACE
|
|
} IDistributionStoreVtbl;
|
|
|
|
interface IDistributionStore
|
|
{
|
|
CONST_VTBL struct IDistributionStoreVtbl __RPC_FAR *lpVtbl;
|
|
};
|
|
|
|
|
|
|
|
#ifdef COBJMACROS
|
|
|
|
#define IDistributionStore_QueryInterface(This,riid,ppvObject) \
|
|
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
|
|
|
#define IDistributionStore_AddRef(This) \
|
|
(This)->lpVtbl -> AddRef(This)
|
|
|
|
#define IDistributionStore_Release(This) \
|
|
(This)->lpVtbl -> Release(This)
|
|
|
|
#define IDistributionStore_Abort(This) \
|
|
(This)->lpVtbl -> Abort(This)
|
|
|
|
#define IDistributionStore_Commit(This) \
|
|
(This)->lpVtbl -> Commit(This)
|
|
|
|
#define IDistributionStore_GetLastTransaction(This) \
|
|
(This)->lpVtbl -> GetLastTransaction(This, pXactId, pXactSeqno)
|
|
|
|
#define IDistributionStore_AddTransactionCommands(This) \
|
|
(This)->lpVtbl -> AddTransactionCommands(This, cCommandDescs, rgCommandDescs)
|
|
|
|
#define IDistributionStore_StartTransaction(This) \
|
|
(This)->lpVtbl -> StartTransaction(This)
|
|
|
|
#endif /* COBJMACROS */
|
|
|
|
|
|
#endif /* C style interface */
|
|
|
|
|
|
|
|
HRESULT STDMETHODCALLTYPE IDistributionStore_Abort_Proxy(
|
|
IDistributionStore __RPC_FAR * This);
|
|
|
|
|
|
void __RPC_STUB IDistributionStore_Abort_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
HRESULT STDMETHODCALLTYPE IDistributionStore_Commit_Proxy(
|
|
IDistributionStore __RPC_FAR * This);
|
|
|
|
|
|
void __RPC_STUB IDistributionStore_Commit_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
|
|
HRESULT STDMETHODCALLTYPE IDistributionStore_GetLastTransaction_Proxy(
|
|
IDistributionStore __RPC_FAR * This,
|
|
BYTE* pXactId,
|
|
BYTE* pXactSeqno);
|
|
|
|
|
|
void __RPC_STUB IDistributionStore_GetLastTransaction_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
|
|
HRESULT STDMETHODCALLTYPE IDistributionStore_AddTransactionCommands_Proxy(
|
|
IDistributionStore __RPC_FAR * This,
|
|
ULONG cCommandDescs,
|
|
const DISTCOMMANDDESC __RPC_FAR rgCommandDescs[ ]);
|
|
|
|
|
|
void __RPC_STUB IDistributionStore_AddTransactionCommands_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
|
|
HRESULT STDMETHODCALLTYPE IDistributionStore_StartTransaction_Proxy(
|
|
IDistributionStore __RPC_FAR * This);
|
|
|
|
|
|
void __RPC_STUB IDistributionStore_StartTransaction_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
|
|
#endif /* __IDistributionStore_INTERFACE_DEFINED__ */
|
|
|
|
#ifndef __IDistributionLog_FWD_DEFINED__
|
|
#define __IDistributionLog_FWD_DEFINED__
|
|
typedef interface IDistributionLog IDistributionLog;
|
|
#endif /* __IDistributionLog_FWD_DEFINED__ */
|
|
|
|
#ifndef __IDistributionLog_INTERFACE_DEFINED__
|
|
#define __IDistributionLog_INTERFACE_DEFINED__
|
|
|
|
EXTERN_C const IID IID_IDistributionLog;
|
|
|
|
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
|
|
interface IDistributionLog : public IUnknown
|
|
{
|
|
public:
|
|
virtual HRESULT STDMETHODCALLTYPE AddLog(
|
|
/* [in] */ DWORD dwStatusId,
|
|
/* [in] */ LPSTR szComment,
|
|
/* [in] */ BYTE* pXactSeqno,
|
|
/* [in] */ ULONG ulTransactions,
|
|
/* [in] */ ULONG ulCommands,
|
|
/* [in] */ ULONG cErrorDescs,
|
|
/* [size_is][in] */ const DISTERRORDESC __RPC_FAR rgErrorDescs[ ]) = 0;
|
|
};
|
|
|
|
#else /* C style interface */
|
|
|
|
typedef struct IDistributionLogVtbl
|
|
{
|
|
BEGIN_INTERFACE
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
|
|
IDistributionLog __RPC_FAR * This,
|
|
/* [in] */ REFIID riid,
|
|
/* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
|
|
|
|
ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
|
|
IDistributionLog __RPC_FAR * This);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *AddLog )(
|
|
IDistributionLog __RPC_FAR * This,
|
|
/* [in] */ DWORD dwStatusId,
|
|
/* [in] */ LPSTR szComment,
|
|
/* [in] */ BYTE* pXactSeqno,
|
|
/* [in] */ ULONG ulTransactions,
|
|
/* [in] */ ULONG ulCommands,
|
|
/* [in] */ ULONG cErrorDescs,
|
|
/* [size_is][in] */ const DISTERRORDESC __RPC_FAR rgErrorDescs[ ]);
|
|
|
|
END_INTERFACE
|
|
} IDistributionLogVtbl;
|
|
|
|
interface IDistributionLog
|
|
{
|
|
CONST_VTBL struct IDistributionLogVtbl __RPC_FAR *lpVtbl;
|
|
};
|
|
|
|
|
|
|
|
#ifdef COBJMACROS
|
|
|
|
#define IDistributionLog_QueryInterface(This,riid,ppvObject) \
|
|
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
|
|
|
#define IDistributionLog_AddRef(This) \
|
|
(This)->lpVtbl -> AddRef(This)
|
|
|
|
#define IDistributionLog_Release(This) \
|
|
(This)->lpVtbl -> Release(This)
|
|
|
|
#define IDistributionLog_AddLog(This) \
|
|
(This)->lpVtbl -> AddLog(This, dwStatusId, szComment, pXactSeqno, cTransactions, cCommands, cErrorDescs, rgErrorDescs)
|
|
|
|
#endif /* COBJMACROS */
|
|
|
|
|
|
#endif /* C style interface */
|
|
|
|
|
|
HRESULT STDMETHODCALLTYPE IDistributionLog_AddLog_Proxy(
|
|
IDistributionLog __RPC_FAR * This,
|
|
DWORD dwStatusId,
|
|
LPSTR szComment,
|
|
BYTE* pXactSeqno,
|
|
ULONG ulTransactions,
|
|
ULONG ulCommands,
|
|
ULONG cErrorDescs,
|
|
const DISTERRORDESC __RPC_FAR rgErrorDescs[ ]);
|
|
|
|
|
|
void __RPC_STUB IDistributionLog_AddLog_Stub(
|
|
IRpcStubBuffer *This,
|
|
IRpcChannelBuffer *_pRpcChannelBuffer,
|
|
PRPC_MESSAGE _pRpcMessage,
|
|
DWORD *_pdwStubPhase);
|
|
|
|
#endif /* __IDistributionLog_INTERFACE_DEFINED__ */
|
|
|
|
|
|
#ifndef __IGetCustomErrorInfo_FWD_DEFINED__
|
|
#define __IGetCustomErrorInfo_FWD_DEFINED__
|
|
typedef interface IGetCustomErrorInfo IGetCustomErrorInfo ;
|
|
#endif /* __IGetCustomErrorInfo_FWD_DEFINED__ */
|
|
|
|
|
|
#ifndef __IGetCustomErrorInfo_INTERFACE_DEFINED__
|
|
#define __IGetCustomErrorInfo_INTERFACE_DEFINED__
|
|
|
|
// @msg IID_IGetCustomErrorInfo | {D83B7C8D-F22F-11d0-9AE8-00C04FB6B6EF}
|
|
// Interface ID to the IGetCustomErrorInfo interface
|
|
DEFINE_GUID(IID_IGetCustomErrorInfo, 0xd83b7c8d, 0xf22f, 0x11d0, 0x9a, 0xe8, 0x0, 0xc0, 0x4f, 0xb6, 0xb6, 0xef);
|
|
|
|
// @msg CLSID_DistErrorLookup | {246CBC55-F3E8-11d0-9AEB-00C04FB6B6EF}
|
|
// ID of the Distribution Error Lookup Service class
|
|
DEFINE_GUID(CLSID_DistErrorLookup,0x246cbc55, 0xf3e8, 0x11d0, 0x9a, 0xeb, 0x0, 0xc0, 0x4f, 0xb6, 0xb6, 0xef);
|
|
|
|
|
|
EXTERN_C const IID IID_IGetCustomErrorInfo;
|
|
|
|
#if defined(__cplusplus) && !defined(CINTERFACE)
|
|
|
|
interface IGetCustomErrorInfo : public IUnknown
|
|
{
|
|
public:
|
|
virtual HRESULT STDMETHODCALLTYPE GetCustomErrorInfo(DISTERRORDESC * pDistErrorDesc) = 0;
|
|
};
|
|
|
|
#else /* C style interface */
|
|
|
|
typedef struct IGetCustomErrorInfoVtbl
|
|
{
|
|
BEGIN_INTERFACE
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )(
|
|
IGetCustomErrorInfo __RPC_FAR * This,
|
|
/* [in] */ REFIID riid,
|
|
/* [out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
|
|
|
|
ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )(
|
|
IGetCustomErrorInfo __RPC_FAR * This);
|
|
|
|
ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )(
|
|
IGetCustomErrorInfo __RPC_FAR * This);
|
|
|
|
HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetCustomErrorInfo )(
|
|
IGetCustomErrorInfo __RPC_FAR * This,
|
|
/* out */ REPL_ERROR * pReplError);
|
|
|
|
END_INTERFACE
|
|
} IGetCustomErrorInfoVtbl;
|
|
|
|
interface IGetCustomErrorInfo
|
|
{
|
|
CONST_VTBL struct IGetCustomErrorInfoVtbl __RPC_FAR *lpVtbl;
|
|
};
|
|
|
|
|
|
|
|
#ifdef COBJMACROS
|
|
|
|
|
|
#define IGetCustomErrorInfo_QueryInterface(This,riid,ppvObject) \
|
|
(This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
|
|
|
|
#define IGetCustomErrorInfo_AddRef(This) \
|
|
(This)->lpVtbl -> AddRef(This)
|
|
|
|
#define IGetCustomErrorInfo_Release(This) \
|
|
(This)->lpVtbl -> Release(This)
|
|
|
|
#define IGetCustomErrorInfo_GetCustomErrorInfo(This,pReplError) \
|
|
(This)->lpVtbl -> GetCustomErrorInfo(This,pReplError)
|
|
|
|
#endif /* COBJMACROS */
|
|
|
|
|
|
#endif /* C style interface */
|
|
|
|
#endif /* __IGetCustomErrorInfo_INTERFACE_DEFINED__ */
|
|
|
|
#pragma option pop /*P_O_Pop*/
|
|
#endif // _REPLDIST_H_
|