⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 error.cpp

📁 用测试OLE DB提供者的一个程序。能够测试出OEL DB提供者到底实现了哪些接口?很灵的。
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//-----------------------------------------------------------------------------
// Microsoft OLE DB RowsetViewer
// Copyright (C) 1994 - 1998 By Microsoft Corporation.
//
// @doc
//
// @module ERROR.CPP
//
//-----------------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////
// Includes
//
////////////////////////////////////////////////////////////////////////
#include "Common.h"
#include "Error.h"
#include "Property.h"
#include "DataSource.h"	//IID_IAggregate
#include <olectl.h>		//IConnectionPoints interface


////////////////////////////////////////////////////////////////////////
// Globals
//
////////////////////////////////////////////////////////////////////////
DWORD g_dwErrorPost = EP_ERRORINFO_FAILURE | EP_HRESULT_NOERRORINFO;
BOOL SetErrorPosting(ERRORPOST eErrorPost, BOOL fSet)
{ 
	if(fSet)
		g_dwErrorPost |= eErrorPost;
	else
		g_dwErrorPost &= ~eErrorPost;

	return TRUE;
};

BOOL GetErrorPosting(ERRORPOST eErrorPost) 
{ 
	return g_dwErrorPost & eErrorPost;
};


/////////////////////////////////////////////////////////////////////////////
// 	Interface Map
//
/////////////////////////////////////////////////////////////////////////////
const static GUIDMAP g_rgInterfaceMap[] =
{
	//TEnumerator
		& VALUE_CHAR(IID_IParseDisplayName),
		& VALUE_CHAR(IID_ISourcesRowset),

	//TDataSource
		& VALUE_CHAR(IID_IDBInitialize),
		& VALUE_CHAR(IID_IDBProperties),
		& VALUE_CHAR(IID_IDBCreateSession),
		& VALUE_CHAR(IID_IDBInfo),
		& VALUE_CHAR(IID_IPersist),
		& VALUE_CHAR(IID_IDBAsynchStatus),
		& VALUE_CHAR(IID_IDBDataSourceAdmin),
		& VALUE_CHAR(IID_IPersistFile),
		& VALUE_CHAR(IID_ISupportErrorInfo),

	//TSession
		& VALUE_CHAR(IID_IGetDataSource),
		& VALUE_CHAR(IID_IOpenRowset),
		& VALUE_CHAR(IID_ISessionProperties),
		& VALUE_CHAR(IID_IDBCreateCommand),
		& VALUE_CHAR(IID_IDBSchemaRowset),
		& VALUE_CHAR(IID_IIndexDefinition),
		& VALUE_CHAR(IID_ITableDefinition),
		& VALUE_CHAR(IID_ITransactionJoin),
		& VALUE_CHAR(IID_ITransactionLocal),
		& VALUE_CHAR(IID_ITransactionObject),

	//TCommand
		& VALUE_CHAR(IID_IAccessor),
		& VALUE_CHAR(IID_IColumnsInfo),
		& VALUE_CHAR(IID_ICommand),
		& VALUE_CHAR(IID_ICommandProperties),
		& VALUE_CHAR(IID_ICommandText),
		& VALUE_CHAR(IID_IConvertType),
		& VALUE_CHAR(IID_IColumnsRowset),
		& VALUE_CHAR(IID_ICommandPrepare),
		& VALUE_CHAR(IID_ICommandWithParameters),
	
	//TRowset
		& VALUE_CHAR(IID_IRowset),
		& VALUE_CHAR(IID_IRowsetInfo),
		& VALUE_CHAR(IID_IColumnsRowset),
		& VALUE_CHAR(IID_IConnectionPointContainer),
		& VALUE_CHAR(IID_IRowsetChange),
		& VALUE_CHAR(IID_IRowsetIdentity),
		& VALUE_CHAR(IID_IRowsetLocate),
		& VALUE_CHAR(IID_IRowsetFind),
		& VALUE_CHAR(IID_IRowsetView),
		& VALUE_CHAR(IID_IChapteredRowset),
		& VALUE_CHAR(IID_IRowsetResynch),
		& VALUE_CHAR(IID_IRowsetScroll),
		& VALUE_CHAR(IID_IRowsetUpdate),

	//TTransaction
		& VALUE_CHAR(IID_ITransaction),
		& VALUE_CHAR(IID_ITransactionOptions),

	//TMultipleResults
		& VALUE_CHAR(IID_IMultipleResults),

	//TView
		& VALUE_CHAR(IID_IViewChapter),
//		& VALUE_CHAR(IID_IViewFilter),
		& VALUE_CHAR(IID_IViewRowset),
		& VALUE_CHAR(IID_IViewSort),

	//TIndex
		& VALUE_CHAR(IID_IRowsetIndex),
	
	//TError
		& VALUE_CHAR(IID_IErrorInfo),
		& VALUE_CHAR(IID_IErrorRecords),
		& VALUE_CHAR(IID_ISQLErrorInfo),

	//Connection Points
		& VALUE_CHAR(IID_IConnectionPoint),
		& VALUE_CHAR(IID_IRowsetNotify),
		& VALUE_CHAR(IID_IDBAsynchNotify),
		& VALUE_CHAR(IID_IRowPositionChange),

	//Misc
		& VALUE_CHAR(IID_IRowPosition),
		& VALUE_CHAR(IID_ISequentialStream),

	//Service Components
		& VALUE_CHAR(IID_IDBPromptInitialize),
		& VALUE_CHAR(IID_IDataInitialize),

	//Aggregation
		& VALUE_CHAR(IID_IAggregate),

	//IUnknown
		& VALUE_CHAR(IID_IUnknown),
		& VALUE_CHAR(IID_NULL),
};
const static ULONG g_cInterfaceMaps = NUMELE(g_rgInterfaceMap);


////////////////////////////////////////////////////////////////////////
// rgDBTypes
//
////////////////////////////////////////////////////////////////////////
const static WIDENAMEMAP g_rgDBTypes[] = 
{
    VALUE_WCHAR(DBTYPE_EMPTY	),
	VALUE_WCHAR(DBTYPE_NULL	),
	VALUE_WCHAR(DBTYPE_I2	),
	VALUE_WCHAR(DBTYPE_I4	),
	VALUE_WCHAR(DBTYPE_R4	),
	VALUE_WCHAR(DBTYPE_R8	),
	VALUE_WCHAR(DBTYPE_CY	),
	VALUE_WCHAR(DBTYPE_DATE	),
	VALUE_WCHAR(DBTYPE_BSTR	),
	VALUE_WCHAR(DBTYPE_IDISPATCH	),
	VALUE_WCHAR(DBTYPE_ERROR	),
	VALUE_WCHAR(DBTYPE_BOOL	),
	VALUE_WCHAR(DBTYPE_VARIANT	),
	VALUE_WCHAR(DBTYPE_IUNKNOWN	),
	VALUE_WCHAR(DBTYPE_DECIMAL	),
	VALUE_WCHAR(DBTYPE_UI1	),
	VALUE_WCHAR(DBTYPE_ARRAY	),
	VALUE_WCHAR(DBTYPE_BYREF	),
	VALUE_WCHAR(DBTYPE_I1	),
	VALUE_WCHAR(DBTYPE_UI2	),
	VALUE_WCHAR(DBTYPE_UI4	),
	VALUE_WCHAR(DBTYPE_I8	),
	VALUE_WCHAR(DBTYPE_UI8	),
	VALUE_WCHAR(DBTYPE_GUID	),
	VALUE_WCHAR(DBTYPE_VECTOR	),
	VALUE_WCHAR(DBTYPE_RESERVED	),
	VALUE_WCHAR(DBTYPE_BYTES	),
	VALUE_WCHAR(DBTYPE_STR	),
	VALUE_WCHAR(DBTYPE_WSTR	),
	VALUE_WCHAR(DBTYPE_NUMERIC	),
	VALUE_WCHAR(DBTYPE_UDT	),
	VALUE_WCHAR(DBTYPE_DBDATE	),
	VALUE_WCHAR(DBTYPE_DBTIME	),
	VALUE_WCHAR(DBTYPE_DBTIMESTAMP	),
	VALUE_WCHAR(DBTYPE_HCHAPTER	),

	//2.0 Types
	VALUE_WCHAR(DBTYPE_FILETIME	),
	VALUE_WCHAR(DBTYPE_PROPVARIANT	),
	VALUE_WCHAR(DBTYPE_VARNUMERIC	),
};
const static ULONG g_cDBTypes = NUMELE(g_rgDBTypes);


////////////////////////////////////////////////////////////////////////
// rgVariantTypes
//
////////////////////////////////////////////////////////////////////////
const static NAMEMAP g_rgVariantTypes[] = 
{
    VALUE_CHAR(VT_EMPTY	),
	VALUE_CHAR(VT_NULL	),
	VALUE_CHAR(VT_I2	),
	VALUE_CHAR(VT_I4	),
	VALUE_CHAR(VT_R4	),
	VALUE_CHAR(VT_R8	),
	VALUE_CHAR(VT_CY	),
	VALUE_CHAR(VT_DATE	),
	VALUE_CHAR(VT_BSTR	),
	VALUE_CHAR(VT_DISPATCH	),
	VALUE_CHAR(VT_ERROR	),
	VALUE_CHAR(VT_BOOL	),
	VALUE_CHAR(VT_VARIANT	),
	VALUE_CHAR(VT_UNKNOWN	),
	VALUE_CHAR(VT_DECIMAL	),
	VALUE_CHAR(VT_I1	),
	VALUE_CHAR(VT_UI1	),
	VALUE_CHAR(VT_UI2	),
	VALUE_CHAR(VT_UI4	),
	VALUE_CHAR(VT_I8	),
	VALUE_CHAR(VT_UI8	),
	VALUE_CHAR(VT_INT	),
	VALUE_CHAR(VT_UINT	),
	VALUE_CHAR(VT_VOID	),
	VALUE_CHAR(VT_HRESULT	),
	VALUE_CHAR(VT_PTR	),
	VALUE_CHAR(VT_SAFEARRAY	),
	VALUE_CHAR(VT_CARRAY	),
	VALUE_CHAR(VT_USERDEFINED	),
	VALUE_CHAR(VT_LPSTR	),
	VALUE_CHAR(VT_LPWSTR	),
	VALUE_CHAR(VT_FILETIME	),
	VALUE_CHAR(VT_BLOB	),
	VALUE_CHAR(VT_STREAM	),
	VALUE_CHAR(VT_STORAGE	),
	VALUE_CHAR(VT_STREAMED_OBJECT	),
	VALUE_CHAR(VT_STORED_OBJECT	),
	VALUE_CHAR(VT_BLOB_OBJECT	),
	VALUE_CHAR(VT_CF	),
	VALUE_CHAR(VT_CLSID	),
	VALUE_CHAR(VT_VECTOR	),
	VALUE_CHAR(VT_ARRAY	),
	VALUE_CHAR(VT_BYREF	),
	VALUE_CHAR(VT_RESERVED	),
	VALUE_CHAR(VT_ILLEGAL	),
	VALUE_CHAR(VT_ILLEGALMASKED	),
	VALUE_CHAR(VT_TYPEMASK	),
};
const static ULONG g_cVariantTypes = NUMELE(g_rgVariantTypes);


////////////////////////////////////////////////////////////////////////
// ERRORMAP
//
////////////////////////////////////////////////////////////////////////
const static WIDENAMEMAP g_rgErrorMap[] =
{
	 //System Success
	 VALUE_WCHAR(S_OK),
	 VALUE_WCHAR(S_FALSE),

	 //System Errors
	 VALUE_WCHAR(E_FAIL),
	 VALUE_WCHAR(E_INVALIDARG),
	 VALUE_WCHAR(E_OUTOFMEMORY),
	 VALUE_WCHAR(E_NOINTERFACE),
	 VALUE_WCHAR(REGDB_E_CLASSNOTREG),
	 VALUE_WCHAR(CLASS_E_NOAGGREGATION),
     VALUE_WCHAR(E_UNEXPECTED),
     VALUE_WCHAR(E_NOTIMPL),
     VALUE_WCHAR(E_POINTER),
     VALUE_WCHAR(E_HANDLE),
     VALUE_WCHAR(E_ABORT),
     VALUE_WCHAR(E_ACCESSDENIED),
     VALUE_WCHAR(E_PENDING),

	 //OLE DB Warnings 1.1
     VALUE_WCHAR(DB_S_ROWLIMITEXCEEDED),
     VALUE_WCHAR(DB_S_COLUMNTYPEMISMATCH),
     VALUE_WCHAR(DB_S_TYPEINFOOVERRIDDEN),
     VALUE_WCHAR(DB_S_BOOKMARKSKIPPED),
     VALUE_WCHAR(DB_S_ENDOFROWSET),
     VALUE_WCHAR(DB_S_COMMANDREEXECUTED),
     VALUE_WCHAR(DB_S_BUFFERFULL),
     VALUE_WCHAR(DB_S_NORESULT),
     VALUE_WCHAR(DB_S_CANTRELEASE),
     VALUE_WCHAR(DB_S_DIALECTIGNORED),
     VALUE_WCHAR(DB_S_UNWANTEDPHASE),
     VALUE_WCHAR(DB_S_UNWANTEDREASON),
     VALUE_WCHAR(DB_S_COLUMNSCHANGED),
     VALUE_WCHAR(DB_S_ERRORSRETURNED),
     VALUE_WCHAR(DB_S_BADROWHANDLE),
     VALUE_WCHAR(DB_S_DELETEDROW),
     VALUE_WCHAR(DB_S_STOPLIMITREACHED),
     VALUE_WCHAR(DB_S_LOCKUPGRADED),
     VALUE_WCHAR(DB_S_PROPERTIESCHANGED),
     VALUE_WCHAR(DB_S_ERRORSOCCURRED),
     VALUE_WCHAR(DB_S_PARAMUNAVAILABLE),
     VALUE_WCHAR(DB_S_MULTIPLECHANGES),

	 //OLE DB Errors 1.1
     VALUE_WCHAR(DB_E_BADACCESSORHANDLE),
     VALUE_WCHAR(DB_E_ROWLIMITEXCEEDED),
     VALUE_WCHAR(DB_E_READONLYACCESSOR),
     VALUE_WCHAR(DB_E_SCHEMAVIOLATION),
     VALUE_WCHAR(DB_E_BADROWHANDLE),
     VALUE_WCHAR(DB_E_OBJECTOPEN),
     VALUE_WCHAR(DB_E_CANTCONVERTVALUE),
     VALUE_WCHAR(DB_E_BADBINDINFO),
     VALUE_WCHAR(DB_SEC_E_PERMISSIONDENIED),
     VALUE_WCHAR(DB_E_NOTAREFERENCECOLUMN),
     VALUE_WCHAR(DB_E_NOCOMMAND),
     VALUE_WCHAR(DB_E_BADBOOKMARK),
     VALUE_WCHAR(DB_E_BADLOCKMODE),
     VALUE_WCHAR(DB_E_PARAMNOTOPTIONAL),
     VALUE_WCHAR(DB_E_BADCOLUMNID),
     VALUE_WCHAR(DB_E_BADRATIO),
     VALUE_WCHAR(DB_E_ERRORSINCOMMAND),
     VALUE_WCHAR(DB_E_CANTCANCEL),
     VALUE_WCHAR(DB_E_DIALECTNOTSUPPORTED),
     VALUE_WCHAR(DB_E_DUPLICATEDATASOURCE),
     VALUE_WCHAR(DB_E_CANNOTRESTART),
     VALUE_WCHAR(DB_E_NOTFOUND),
     VALUE_WCHAR(DB_E_NEWLYINSERTED),
     VALUE_WCHAR(DB_E_UNSUPPORTEDCONVERSION),
     VALUE_WCHAR(DB_E_BADSTARTPOSITION),
     VALUE_WCHAR(DB_E_NOTREENTRANT),
     VALUE_WCHAR(DB_E_ERRORSOCCURRED),
     VALUE_WCHAR(DB_E_NOAGGREGATION),
     VALUE_WCHAR(DB_E_DELETEDROW),
     VALUE_WCHAR(DB_E_CANTFETCHBACKWARDS),
     VALUE_WCHAR(DB_E_ROWSNOTRELEASED),
     VALUE_WCHAR(DB_E_BADSTORAGEFLAG),
     VALUE_WCHAR(DB_E_BADSTATUSVALUE),
     VALUE_WCHAR(DB_E_CANTSCROLLBACKWARDS),
     VALUE_WCHAR(DB_E_MULTIPLESTATEMENTS),
     VALUE_WCHAR(DB_E_INTEGRITYVIOLATION),
     VALUE_WCHAR(DB_E_BADTYPENAME),
     VALUE_WCHAR(DB_E_ABORTLIMITREACHED),
     VALUE_WCHAR(DB_E_DUPLICATEINDEXID),
     VALUE_WCHAR(DB_E_NOINDEX),
     VALUE_WCHAR(DB_E_INDEXINUSE),
     VALUE_WCHAR(DB_E_NOTABLE),
     VALUE_WCHAR(DB_E_CONCURRENCYVIOLATION),
     VALUE_WCHAR(DB_E_BADCOPY),
     VALUE_WCHAR(DB_E_BADPRECISION),
     VALUE_WCHAR(DB_E_BADSCALE),
     VALUE_WCHAR(DB_E_BADID),
     VALUE_WCHAR(DB_E_BADTYPE),
     VALUE_WCHAR(DB_E_DUPLICATECOLUMNID),
     VALUE_WCHAR(DB_E_DUPLICATETABLEID),
     VALUE_WCHAR(DB_E_TABLEINUSE),
     VALUE_WCHAR(DB_E_NOLOCALE),
     VALUE_WCHAR(DB_E_BADRECORDNUM),
     VALUE_WCHAR(DB_E_BOOKMARKSKIPPED),
     VALUE_WCHAR(DB_E_BADPROPERTYVALUE),
     VALUE_WCHAR(DB_E_INVALID),
     VALUE_WCHAR(DB_E_BADACCESSORFLAGS),
     VALUE_WCHAR(DB_E_BADSTORAGEFLAGS),
     VALUE_WCHAR(DB_E_BYREFACCESSORNOTSUPPORTED),
     VALUE_WCHAR(DB_E_NULLACCESSORNOTSUPPORTED),
     VALUE_WCHAR(DB_E_NOTPREPARED),
     VALUE_WCHAR(DB_E_BADACCESSORTYPE),
     VALUE_WCHAR(DB_E_WRITEONLYACCESSOR),
     VALUE_WCHAR(DB_SEC_E_AUTH_FAILED),
     VALUE_WCHAR(DB_E_CANCELED),
     VALUE_WCHAR(DB_E_BADSOURCEHANDLE),
     VALUE_WCHAR(DB_E_PARAMUNAVAILABLE),
     VALUE_WCHAR(DB_E_ALREADYINITIALIZED),
     VALUE_WCHAR(DB_E_NOTSUPPORTED),
     VALUE_WCHAR(DB_E_MAXPENDCHANGESEXCEEDED),
     VALUE_WCHAR(DB_E_BADORDINAL),
     VALUE_WCHAR(DB_E_PENDINGCHANGES),
     VALUE_WCHAR(DB_E_DATAOVERFLOW),
     VALUE_WCHAR(DB_E_BADHRESULT),
     VALUE_WCHAR(DB_E_BADLOOKUPID),
     VALUE_WCHAR(DB_E_BADDYNAMICERRORID),
     VALUE_WCHAR(DB_E_PENDINGINSERT),
     VALUE_WCHAR(DB_E_BADCONVERTFLAG),
     VALUE_WCHAR(DB_E_BADPARAMETERNAME),
     VALUE_WCHAR(DB_E_MULTIPLESTORAGE),
     VALUE_WCHAR(DB_E_CANTFILTER),
     VALUE_WCHAR(DB_E_CANTORDER),

	 //OLE DB Warnings 1.5
     VALUE_WCHAR(DB_S_ASYNCHRONOUS),
     VALUE_WCHAR(DB_S_UNWANTEDOPERATION),

	 //OLE DB Errors 1.5
     VALUE_WCHAR(DB_E_BADCHAPTER),
	 VALUE_WCHAR(DB_E_BADCOMPAREOP),

	 //OLE DB Warnings 2.0
	 VALUE_WCHAR(DB_S_NONEXTROWSET),

	 //OLE DB Errors 2.0
	 VALUE_WCHAR(DB_E_BADVALUES),
	 VALUE_WCHAR(DB_E_NOQUERY),
	 VALUE_WCHAR(DB_E_ROWSETINCOMMAND),
	 VALUE_WCHAR(DB_E_CANTTRANSLATE),

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -