//----------------------------------------------------------------------------- // Microsoft OLE DB RowsetViewer // Copyright (C) 1994 - 1999 By Microsoft Corporation. // // @doc // // @module ERROR.CPP // //----------------------------------------------------------------------------------- //////////////////////////////////////////////////////////////////////// // Includes // //////////////////////////////////////////////////////////////////////// #include "Headers.h" //////////////////////////////////////////////////////////////////////// // Globals // //////////////////////////////////////////////////////////////////////// DWORD g_dwErrorPost = EP_ERRORINFO_FAILURE | EP_HRESULT_NOERRORINFO; DWORD g_dwBreakID = 0; 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 WIDEGUIDMAP g_rgInterfaceMaps[] = { //TEnumerator VALUE_PWCHAR(IID_IParseDisplayName), VALUE_PWCHAR(IID_ISourcesRowset), //TDataSource VALUE_PWCHAR(IID_IDBInitialize), VALUE_PWCHAR(IID_IDBProperties), VALUE_PWCHAR(IID_IDBCreateSession), VALUE_PWCHAR(IID_IDBInfo), VALUE_PWCHAR(IID_IPersist), VALUE_PWCHAR(IID_IDBAsynchStatus), VALUE_PWCHAR(IID_IDBDataSourceAdmin), VALUE_PWCHAR(IID_IPersistFile), VALUE_PWCHAR(IID_ISupportErrorInfo), VALUE_PWCHAR(IID_IServiceProvider), VALUE_PWCHAR(IID_ISpecifyPropertyPages), //TSession VALUE_PWCHAR(IID_IGetDataSource), VALUE_PWCHAR(IID_IOpenRowset), VALUE_PWCHAR(IID_ISessionProperties), VALUE_PWCHAR(IID_IDBCreateCommand), VALUE_PWCHAR(IID_IDBSchemaRowset), VALUE_PWCHAR(IID_IIndexDefinition), VALUE_PWCHAR(IID_IAlterIndex), VALUE_PWCHAR(IID_IAlterTable), VALUE_PWCHAR(IID_ITableDefinition), VALUE_PWCHAR(IID_ITransactionJoin), VALUE_PWCHAR(IID_ITransactionLocal), VALUE_PWCHAR(IID_ITransactionObject), //TCommand VALUE_PWCHAR(IID_IAccessor), VALUE_PWCHAR(IID_IColumnsInfo), VALUE_PWCHAR(IID_ICommand), VALUE_PWCHAR(IID_ICommandProperties), VALUE_PWCHAR(IID_ICommandText), VALUE_PWCHAR(IID_IConvertType), VALUE_PWCHAR(IID_IColumnsRowset), VALUE_PWCHAR(IID_ICommandPrepare), VALUE_PWCHAR(IID_ICommandPersist), VALUE_PWCHAR(IID_ICommandStream), VALUE_PWCHAR(IID_ICommandWithParameters), //TRowset VALUE_PWCHAR(IID_IRowset), VALUE_PWCHAR(IID_IRowsetInfo), VALUE_PWCHAR(IID_IConnectionPointContainer), VALUE_PWCHAR(IID_IRowsetChange), VALUE_PWCHAR(IID_IRowsetIdentity), VALUE_PWCHAR(IID_IRowsetLocate), VALUE_PWCHAR(IID_IRowsetFind), VALUE_PWCHAR(IID_IRowsetView), VALUE_PWCHAR(IID_IChapteredRowset), VALUE_PWCHAR(IID_IRowsetResynch), VALUE_PWCHAR(IID_IRowsetRefresh), VALUE_PWCHAR(IID_IRowsetScroll), VALUE_PWCHAR(IID_IRowsetUpdate), VALUE_PWCHAR(IID_IRowsetBookmark), VALUE_PWCHAR(IID_IParentRowset), VALUE_PWCHAR(IID_IGetRow), //TRow VALUE_PWCHAR(IID_IRow), VALUE_PWCHAR(IID_IGetSession), VALUE_PWCHAR(IID_IColumnsInfo2), VALUE_PWCHAR(IID_IRowChange), VALUE_PWCHAR(IID_IRowSchemaChange), VALUE_PWCHAR(IID_ICreateRow), VALUE_PWCHAR(IID_IScopedOperations), //TTransaction VALUE_PWCHAR(IID_ITransaction), VALUE_PWCHAR(IID_ITransactionOptions), //TMultipleResults VALUE_PWCHAR(IID_IMultipleResults), //TView VALUE_PWCHAR(IID_IViewChapter), VALUE_PWCHAR(IID_IViewFilter), VALUE_PWCHAR(IID_IViewRowset), VALUE_PWCHAR(IID_IViewSort), //TIndex VALUE_PWCHAR(IID_IRowsetIndex), //TError VALUE_PWCHAR(IID_IErrorInfo), VALUE_PWCHAR(IID_IErrorRecords), VALUE_PWCHAR(IID_ISQLErrorInfo), //Connection Points VALUE_PWCHAR(IID_IConnectionPoint), VALUE_PWCHAR(IID_IRowsetNotify), VALUE_PWCHAR(IID_IDBAsynchNotify), VALUE_PWCHAR(IID_IRowPositionChange), //Misc VALUE_PWCHAR(IID_IRowPosition), VALUE_PWCHAR(IID_ISequentialStream), VALUE_PWCHAR(IID_IStream), VALUE_PWCHAR(IID_IStorage), VALUE_PWCHAR(IID_ILockBytes), //MD VALUE_PWCHAR(IID_IMDDataset), VALUE_PWCHAR(IID_IMDFind), VALUE_PWCHAR(IID_IMDRangeRowset), //Security VALUE_PWCHAR(IID_ITrusteeAdmin), VALUE_PWCHAR(IID_ITrusteeGroupAdmin), VALUE_PWCHAR(IID_IObjectAccessControl), VALUE_PWCHAR(IID_ISecurityInfo), //Table Creation VALUE_PWCHAR(IID_ITableDefinitionWithConstraints), VALUE_PWCHAR(IID_ITableCreation), //TBinder VALUE_PWCHAR(IID_IBindResource), VALUE_PWCHAR(IID_IDBBinderProperties), VALUE_PWCHAR(IID_IRegisterProvider), //TStream VALUE_PWCHAR(IID_IGetSourceRow), //Service Components VALUE_PWCHAR(IID_IDBPromptInitialize), VALUE_PWCHAR(IID_IDataInitialize), //Aggregation VALUE_PWCHAR(IID_IAggregate), //IUnknown VALUE_PWCHAR(IID_IUnknown), VALUE_PWCHAR(IID_NULL), }; const static ULONG g_cInterfaceMaps = NUMELE(g_rgInterfaceMaps); //////////////////////////////////////////////////////////////////////// // 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 WIDENAMEMAP g_rgVariantTypes[] = { VALUE_WCHAR(VT_EMPTY ), VALUE_WCHAR(VT_NULL ), VALUE_WCHAR(VT_I2 ), VALUE_WCHAR(VT_I4 ), VALUE_WCHAR(VT_R4 ), VALUE_WCHAR(VT_R8 ), VALUE_WCHAR(VT_CY ), VALUE_WCHAR(VT_DATE ), VALUE_WCHAR(VT_BSTR ), VALUE_WCHAR(VT_DISPATCH ), VALUE_WCHAR(VT_ERROR ), VALUE_WCHAR(VT_BOOL ), VALUE_WCHAR(VT_VARIANT ), VALUE_WCHAR(VT_UNKNOWN ), VALUE_WCHAR(VT_DECIMAL ), VALUE_WCHAR(VT_I1 ), VALUE_WCHAR(VT_UI1 ), VALUE_WCHAR(VT_UI2 ), VALUE_WCHAR(VT_UI4 ), VALUE_WCHAR(VT_I8 ), VALUE_WCHAR(VT_UI8 ), VALUE_WCHAR(VT_INT ), VALUE_WCHAR(VT_UINT ), VALUE_WCHAR(VT_VOID ), VALUE_WCHAR(VT_HRESULT ), VALUE_WCHAR(VT_PTR ), VALUE_WCHAR(VT_SAFEARRAY ), VALUE_WCHAR(VT_CARRAY ), VALUE_WCHAR(VT_USERDEFINED ), VALUE_WCHAR(VT_LPSTR ), VALUE_WCHAR(VT_LPWSTR ), VALUE_WCHAR(VT_FILETIME ), VALUE_WCHAR(VT_BLOB ), VALUE_WCHAR(VT_STREAM ), VALUE_WCHAR(VT_STORAGE ), VALUE_WCHAR(VT_STREAMED_OBJECT ), VALUE_WCHAR(VT_STORED_OBJECT ), VALUE_WCHAR(VT_BLOB_OBJECT ), VALUE_WCHAR(VT_CF ), VALUE_WCHAR(VT_CLSID ), VALUE_WCHAR(VT_VECTOR ), VALUE_WCHAR(VT_ARRAY ), VALUE_WCHAR(VT_BYREF ), VALUE_WCHAR(VT_RESERVED ), VALUE_WCHAR(VT_ILLEGAL ), VALUE_WCHAR(VT_ILLEGALMASKED ), VALUE_WCHAR(VT_TYPEMASK ), }; const static ULONG g_cVariantTypes = NUMELE(g_rgVariantTypes); //////////////////////////////////////////////////////////////////////// // ERRORMAP // //////////////////////////////////////////////////////////////////////// const static NAMEMAP g_rgErrorMap[] = { //System Success VALUE_CHAR(S_OK), VALUE_CHAR(S_FALSE), VALUE_CHAR(CO_S_NOTALLINTERFACES), //System Errors VALUE_CHAR(E_FAIL), VALUE_CHAR(E_INVALIDARG), VALUE_CHAR(E_OUTOFMEMORY), VALUE_CHAR(E_NOINTERFACE), VALUE_CHAR(REGDB_E_CLASSNOTREG), VALUE_CHAR(CLASS_E_NOAGGREGATION), VALUE_CHAR(E_UNEXPECTED), VALUE_CHAR(E_NOTIMPL), VALUE_CHAR(E_POINTER), VALUE_CHAR(E_HANDLE), VALUE_CHAR(E_ABORT), VALUE_CHAR(E_ACCESSDENIED), VALUE_CHAR(E_PENDING), //OLE DB Warnings 1.1 VALUE_CHAR(DB_S_ROWLIMITEXCEEDED), VALUE_CHAR(DB_S_COLUMNTYPEMISMATCH), VALUE_CHAR(DB_S_TYPEINFOOVERRIDDEN), VALUE_CHAR(DB_S_BOOKMARKSKIPPED), VALUE_CHAR(DB_S_ENDOFROWSET), VALUE_CHAR(DB_S_COMMANDREEXECUTED), VALUE_CHAR(DB_S_BUFFERFULL), VALUE_CHAR(DB_S_NORESULT), VALUE_CHAR(DB_S_CANTRELEASE), VALUE_CHAR(DB_S_DIALECTIGNORED), VALUE_CHAR(DB_S_UNWANTEDPHASE), VALUE_CHAR(DB_S_UNWANTEDREASON), VALUE_CHAR(DB_S_COLUMNSCHANGED), VALUE_CHAR(DB_S_ERRORSRETURNED), VALUE_CHAR(DB_S_BADROWHANDLE), VALUE_CHAR(DB_S_DELETEDROW), VALUE_CHAR(DB_S_STOPLIMITREACHED), VALUE_CHAR(DB_S_LOCKUPGRADED), VALUE_CHAR(DB_S_PROPERTIESCHANGED), VALUE_CHAR(DB_S_ERRORSOCCURRED), VALUE_CHAR(DB_S_PARAMUNAVAILABLE), VALUE_CHAR(DB_S_MULTIPLECHANGES), //OLE DB Errors 1.1 VALUE_CHAR(DB_E_BADACCESSORHANDLE), VALUE_CHAR(DB_E_ROWLIMITEXCEEDED), VALUE_CHAR(DB_E_READONLYACCESSOR), VALUE_CHAR(DB_E_SCHEMAVIOLATION), VALUE_CHAR(DB_E_BADROWHANDLE), VALUE_CHAR(DB_E_OBJECTOPEN), VALUE_CHAR(DB_E_CANTCONVERTVALUE), VALUE_CHAR(DB_E_BADBINDINFO), VALUE_CHAR(DB_SEC_E_PERMISSIONDENIED), VALUE_CHAR(DB_E_NOTAREFERENCECOLUMN), VALUE_CHAR(DB_E_NOCOMMAND), VALUE_CHAR(DB_E_BADBOOKMARK), VALUE_CHAR(DB_E_BADLOCKMODE), VALUE_CHAR(DB_E_PARAMNOTOPTIONAL), VALUE_CHAR(DB_E_BADCOLUMNID), VALUE_CHAR(DB_E_BADRATIO), VALUE_CHAR(DB_E_ERRORSINCOMMAND), VALUE_CHAR(DB_E_CANTCANCEL), VALUE_CHAR(DB_E_DIALECTNOTSUPPORTED), VALUE_CHAR(DB_E_DUPLICATEDATASOURCE), VALUE_CHAR(DB_E_CANNOTRESTART), VALUE_CHAR(DB_E_NOTFOUND), VALUE_CHAR(DB_E_NEWLYINSERTED), VALUE_CHAR(DB_E_UNSUPPORTEDCONVERSION), VALUE_CHAR(DB_E_BADSTARTPOSITION), VALUE_CHAR(DB_E_NOTREENTRANT), VALUE_CHAR(DB_E_ERRORSOCCURRED), VALUE_CHAR(DB_E_NOAGGREGATION), VALUE_CHAR(DB_E_DELETEDROW), VALUE_CHAR(DB_E_CANTFETCHBACKWARDS), VALUE_CHAR(DB_E_ROWSNOTRELEASED), VALUE_CHAR(DB_E_BADSTORAGEFLAG), VALUE_CHAR(DB_E_BADSTATUSVALUE), VALUE_CHAR(DB_E_CANTSCROLLBACKWARDS), VALUE_CHAR(DB_E_MULTIPLESTATEMENTS), VALUE_CHAR(DB_E_INTEGRITYVIOLATION), VALUE_CHAR(DB_E_BADTYPENAME), VALUE_CHAR(DB_E_ABORTLIMITREACHED), VALUE_CHAR(DB_E_DUPLICATEINDEXID), VALUE_CHAR(DB_E_NOINDEX), VALUE_CHAR(DB_E_INDEXINUSE), VALUE_CHAR(DB_E_NOTABLE), VALUE_CHAR(DB_E_CONCURRENCYVIOLATION), VALUE_CHAR(DB_E_BADCOPY), VALUE_CHAR(DB_E_BADPRECISION), VALUE_CHAR(DB_E_BADSCALE), VALUE_CHAR(DB_E_BADID), VALUE_CHAR(DB_E_BADTYPE), VALUE_CHAR(DB_E_DUPLICATECOLUMNID), VALUE_CHAR(DB_E_DUPLICATETABLEID), VALUE_CHAR(DB_E_TABLEINUSE), VALUE_CHAR(DB_E_NOLOCALE), VALUE_CHAR(DB_E_BADRECORDNUM), VALUE_CHAR(DB_E_BOOKMARKSKIPPED), VALUE_CHAR(DB_E_BADPROPERTYVALUE), VALUE_CHAR(DB_E_INVALID), VALUE_CHAR(DB_E_BADACCESSORFLAGS), VALUE_CHAR(DB_E_BADSTORAGEFLAGS), VALUE_CHAR(DB_E_BYREFACCESSORNOTSUPPORTED), VALUE_CHAR(DB_E_NULLACCESSORNOTSUPPORTED), VALUE_CHAR(DB_E_NOTPREPARED), VALUE_CHAR(DB_E_BADACCESSORTYPE), VALUE_CHAR(DB_E_WRITEONLYACCESSOR), VALUE_CHAR(DB_SEC_E_AUTH_FAILED), VALUE_CHAR(DB_E_CANCELED), VALUE_CHAR(DB_E_BADSOURCEHANDLE), VALUE_CHAR(DB_E_PARAMUNAVAILABLE), VALUE_CHAR(DB_E_ALREADYINITIALIZED), VALUE_CHAR(DB_E_NOTSUPPORTED), VALUE_CHAR(DB_E_MAXPENDCHANGESEXCEEDED), VALUE_CHAR(DB_E_BADORDINAL), VALUE_CHAR(DB_E_PENDINGCHANGES), VALUE_CHAR(DB_E_DATAOVERFLOW), VALUE_CHAR(DB_E_BADHRESULT), VALUE_CHAR(DB_E_BADLOOKUPID), VALUE_CHAR(DB_E_BADDYNAMICERRORID), VALUE_CHAR(DB_E_PENDINGINSERT), VALUE_CHAR(DB_E_BADCONVERTFLAG), VALUE_CHAR(DB_E_BADPARAMETERNAME), VALUE_CHAR(DB_E_MULTIPLESTORAGE), VALUE_CHAR(DB_E_CANTFILTER), VALUE_CHAR(DB_E_CANTORDER), //OLE DB Warnings 1.5 VALUE_CHAR(DB_S_ASYNCHRONOUS), VALUE_CHAR(DB_S_UNWANTEDOPERATION), //OLE DB Warnings 2.0 VALUE_CHAR(DB_S_NONEXTROWSET), //OLE DB Warnings 2.1 VALUE_CHAR(DB_S_NOTSINGLETON), VALUE_CHAR(DB_S_NOROWSPECIFICCOLUMNS), //OLE DB Warnings 2.5 VALUE_CHAR(DB_S_GOALCHANGED), VALUE_CHAR(DB_S_TOOMANYCHANGES), //OLE DB Errors 1.5 VALUE_CHAR(DB_E_BADCHAPTER), VALUE_CHAR(DB_E_BADCOMPAREOP), //OLE DB Errors 2.0 VALUE_CHAR(DB_E_BADVALUES), VALUE_CHAR(DB_E_NOQUERY), VALUE_CHAR(DB_E_ROWSETINCOMMAND), VALUE_CHAR(DB_E_CANTTRANSLATE), VALUE_CHAR(DB_E_CHAPTERNOTRELEASED), VALUE_CHAR(MD_E_BADTUPLE), VALUE_CHAR(MD_E_BADCOORDINATE), VALUE_CHAR(MD_E_INVALIDAXIS), VALUE_CHAR(MD_E_INVALIDCELLRANGE), VALUE_CHAR(DB_E_NOCOLUMN), VALUE_CHAR(DB_E_COMMANDNOTPERSISTED), VALUE_CHAR(DB_E_DUPLICATEID), VALUE_CHAR(DB_E_OBJECTCREATIONLIMITREACHED), VALUE_CHAR(DB_E_BADINDEXID), VALUE_CHAR(DB_E_BADCOMMANDID), //OLE DB Errors 2.1 VALUE_CHAR(SEC_E_PERMISSIONDENIED), VALUE_CHAR(SEC_E_BADTRUSTEEID ), VALUE_CHAR(SEC_E_NOTRUSTEEID ), VALUE_CHAR(SEC_E_NOMEMBERSHIPSUPPORT ), VALUE_CHAR(SEC_E_INVALIDOBJECT ), VALUE_CHAR(SEC_E_NOOWNER ), VALUE_CHAR(SEC_E_INVALIDACCESSENTRYLIST ), VALUE_CHAR(SEC_E_INVALIDOWNER ), VALUE_CHAR(SEC_E_INVALIDACCESSENTRY ), VALUE_CHAR(DB_E_BADCONSTRAINTTYPE ), VALUE_CHAR(DB_E_BADCONSTRAINTFORM ), VALUE_CHAR(DB_E_BADDEFERRABILITY ), VALUE_CHAR(DB_E_BADMATCHTYPE ), VALUE_CHAR(DB_E_BADUPDATEDELETERULE ), VALUE_CHAR(DB_E_BADCONSTRAINTID ), VALUE_CHAR(DB_E_BADCOMMANDFLAGS ), VALUE_CHAR(DB_E_OBJECTMISMATCH ), VALUE_CHAR(DB_E_NOSOURCEOBJECT ), VALUE_CHAR(DB_E_RESOURCELOCKED ), VALUE_CHAR(DB_E_NOTCOLLECTION ), VALUE_CHAR(DB_E_READONLY ), VALUE_CHAR(DB_E_ASYNCNOTSUPPORTED ), VALUE_CHAR(DB_E_CANNOTCONNECT ), VALUE_CHAR(DB_E_TIMEOUT ), VALUE_CHAR(DB_E_RESOURCEEXISTS ), VALUE_CHAR(DB_E_RESOURCEOUTOFSCOPE ), VALUE_CHAR(DB_E_DROPRESTRICTED ), VALUE_CHAR(DB_E_DUPLICATECONSTRAINTID ), //OLE DB Errors 2.5 VALUE_CHAR(DB_SEC_E_SAFEMODE_DENIED ), VALUE_CHAR(DB_E_LIMITREJECTED), VALUE_CHAR(DB_E_COSTLIMIT), VALUE_CHAR(DB_E_CANNOTFREE), VALUE_CHAR(DB_E_GOALREJECTED), VALUE_CHAR(DB_E_BADREGIONHANDLE), VALUE_CHAR(DB_E_NONCONTIGUOUSRANGE), VALUE_CHAR(DB_E_INVALIDTRANSITION), VALUE_CHAR(DB_E_NOTASUBREGION), //OLE DB Errors 2.6 VALUE_CHAR(DB_E_NOSTATISTIC ), VALUE_CHAR(DB_E_ALTERRESTRICTED ), VALUE_CHAR(DB_E_RESOURCENOTSUPPORTED ), VALUE_CHAR(DB_E_NOCONSTRAINT ), VALUE_CHAR(DB_E_COLUMNUNAVAILABLE ), //Transactions VALUE_CHAR(XACT_E_ABORTED ), VALUE_CHAR(XACT_E_ALREADYOTHERSINGLEPHASE ), VALUE_CHAR(XACT_E_ALREADYINPROGRESS ), VALUE_CHAR(XACT_E_CANTRETAIN ), VALUE_CHAR(XACT_E_COMMITFAILED ), VALUE_CHAR(XACT_E_COMMITPREVENTED ), VALUE_CHAR(XACT_E_CONNECTION_DENIED ), VALUE_CHAR(XACT_E_CONNECTION_DOWN ), VALUE_CHAR(XACT_E_HEURISTICABORT ), VALUE_CHAR(XACT_E_HEURISTICCOMMIT ), VALUE_CHAR(XACT_E_HEURISTICDAMAGE ), VALUE_CHAR(XACT_E_HEURISTICDANGER ), VALUE_CHAR(XACT_E_INDOUBT ), VALUE_CHAR(XACT_E_INVALIDCOOKIE ), VALUE_CHAR(XACT_E_ISOLATIONLEVEL ), VALUE_CHAR(XACT_E_LOGFULL ), VALUE_CHAR(XACT_E_NOASYNC ), VALUE_CHAR(XACT_E_NOENLIST ), VALUE_CHAR(XACT_E_NOIMPORTOBJECT ), VALUE_CHAR(XACT_E_NOISORETAIN ), VALUE_CHAR(XACT_E_NORESOURCE ), VALUE_CHAR(XACT_E_NOTCURRENT ), VALUE_CHAR(XACT_E_NOTIMEOUT ), VALUE_CHAR(XACT_E_NOTRANSACTION ), VALUE_CHAR(XACT_E_NOTSUPPORTED ), VALUE_CHAR(XACT_E_REENLISTTIMEOUT ), VALUE_CHAR(XACT_E_TMNOTAVAILABLE ), VALUE_CHAR(XACT_E_UNKNOWNRMGRID ), VALUE_CHAR(XACT_E_WRONGSTATE ), VALUE_CHAR(XACT_E_WRONGUOW ), VALUE_CHAR(XACT_E_XTIONEXISTS ), VALUE_CHAR(XACT_S_ABORTING ), VALUE_CHAR(XACT_S_ALLNORETAIN ), VALUE_CHAR(XACT_S_ASYNC ), VALUE_CHAR(XACT_S_DEFECT ), VALUE_CHAR(XACT_S_OKINFORM ), VALUE_CHAR(XACT_S_MADECHANGESCONTENT ), VALUE_CHAR(XACT_S_MADECHANGESINFORM ), VALUE_CHAR(XACT_S_READONLY ), VALUE_CHAR(XACT_S_SINGLEPHASE ), VALUE_CHAR(XACT_S_SOMENORETAIN ), //Com Errors VALUE_CHAR(CO_E_NOTINITIALIZED ), VALUE_CHAR(CO_E_ALREADYINITIALIZED ), VALUE_CHAR(CO_E_CANTDETERMINECLASS ), VALUE_CHAR(CO_E_CLASSSTRING ), VALUE_CHAR(CO_E_IIDSTRING ), VALUE_CHAR(CO_E_APPNOTFOUND ), VALUE_CHAR(CO_E_APPSINGLEUSE ), VALUE_CHAR(CO_E_ERRORINAPP ), VALUE_CHAR(CO_E_DLLNOTFOUND ), VALUE_CHAR(CO_E_ERRORINDLL ), VALUE_CHAR(CO_E_WRONGOSFORAPP ), VALUE_CHAR(CO_E_OBJNOTREG ), VALUE_CHAR(CO_E_OBJISREG ), VALUE_CHAR(CO_E_OBJNOTCONNECTED ), VALUE_CHAR(CO_E_APPDIDNTREG ), VALUE_CHAR(CO_E_RELEASED ), //Moniker Errors VALUE_CHAR(MK_E_CONNECTMANUALLY ), VALUE_CHAR(MK_E_EXCEEDEDDEADLINE ), VALUE_CHAR(MK_E_NEEDGENERIC ), VALUE_CHAR(MK_E_UNAVAILABLE ), VALUE_CHAR(MK_E_SYNTAX ), VALUE_CHAR(MK_E_NOOBJECT ), VALUE_CHAR(MK_E_INVALIDEXTENSION ), VALUE_CHAR(MK_E_INTERMEDIATEINTERFACENOTSUPPORTED ), VALUE_CHAR(MK_E_NOTBINDABLE ), VALUE_CHAR(MK_E_NOTBOUND ), VALUE_CHAR(MK_E_CANTOPENFILE ), VALUE_CHAR(MK_E_MUSTBOTHERUSER ), VALUE_CHAR(MK_E_NOINVERSE ), VALUE_CHAR(MK_E_NOSTORAGE ), VALUE_CHAR(MK_E_NOPREFIX ), VALUE_CHAR(MK_E_ENUMERATION_FAILED ), //Connection Points VALUE_CHAR(CONNECT_E_NOCONNECTION), VALUE_CHAR(CONNECT_E_ADVISELIMIT), VALUE_CHAR(CONNECT_E_CANNOTCONNECT), VALUE_CHAR(CONNECT_E_OVERRIDDEN), //Dispatch/Variant Errors VALUE_CHAR(DISP_E_UNKNOWNINTERFACE), VALUE_CHAR(DISP_E_MEMBERNOTFOUND), VALUE_CHAR(DISP_E_PARAMNOTFOUND), VALUE_CHAR(DISP_E_TYPEMISMATCH), VALUE_CHAR(DISP_E_UNKNOWNNAME), VALUE_CHAR(DISP_E_NONAMEDARGS), VALUE_CHAR(DISP_E_BADVARTYPE), VALUE_CHAR(DISP_E_EXCEPTION), VALUE_CHAR(DISP_E_OVERFLOW), VALUE_CHAR(DISP_E_BADINDEX), VALUE_CHAR(DISP_E_UNKNOWNLCID), VALUE_CHAR(DISP_E_ARRAYISLOCKED), VALUE_CHAR(DISP_E_BADPARAMCOUNT), VALUE_CHAR(DISP_E_PARAMNOTOPTIONAL), VALUE_CHAR(DISP_E_BADCALLEE), VALUE_CHAR(DISP_E_NOTACOLLECTION), //DataSource Locator Errors VALUE_CHAR(DB_E_BADINITSTRING), VALUE_CHAR(DB_E_NOPROVIDERSREGISTERED), VALUE_CHAR(DB_E_MISMATCHEDPROVIDER), //STG Errors VALUE_CHAR(STG_E_INVALIDFUNCTION ), VALUE_CHAR(STG_E_FILENOTFOUND ), VALUE_CHAR(STG_E_PATHNOTFOUND ), VALUE_CHAR(STG_E_TOOMANYOPENFILES ), VALUE_CHAR(STG_E_ACCESSDENIED ), VALUE_CHAR(STG_E_INVALIDHANDLE ), VALUE_CHAR(STG_E_INSUFFICIENTMEMORY ), VALUE_CHAR(STG_E_INVALIDPOINTER ), VALUE_CHAR(STG_E_NOMOREFILES ), VALUE_CHAR(STG_E_DISKISWRITEPROTECTED ), VALUE_CHAR(STG_E_SEEKERROR ), VALUE_CHAR(STG_E_WRITEFAULT ), VALUE_CHAR(STG_E_READFAULT ), VALUE_CHAR(STG_E_SHAREVIOLATION ), VALUE_CHAR(STG_E_LOCKVIOLATION ), VALUE_CHAR(STG_E_FILEALREADYEXISTS ), VALUE_CHAR(STG_E_INVALIDPARAMETER ), VALUE_CHAR(STG_E_MEDIUMFULL ), VALUE_CHAR(STG_E_PROPSETMISMATCHED ), VALUE_CHAR(STG_E_ABNORMALAPIEXIT ), VALUE_CHAR(STG_E_INVALIDHEADER ), VALUE_CHAR(STG_E_INVALIDNAME ), VALUE_CHAR(STG_E_UNKNOWN ), VALUE_CHAR(STG_E_UNIMPLEMENTEDFUNCTION ), VALUE_CHAR(STG_E_INVALIDFLAG ), VALUE_CHAR(STG_E_INUSE ), VALUE_CHAR(STG_E_NOTCURRENT ), VALUE_CHAR(STG_E_REVERTED ), VALUE_CHAR(STG_E_CANTSAVE ), VALUE_CHAR(STG_E_OLDFORMAT ), VALUE_CHAR(STG_E_OLDDLL ), VALUE_CHAR(STG_E_SHAREREQUIRED ), VALUE_CHAR(STG_E_NOTFILEBASEDSTORAGE ), VALUE_CHAR(STG_E_EXTANTMARSHALLINGS ), VALUE_CHAR(STG_E_DOCFILECORRUPT ), VALUE_CHAR(STG_E_BADBASEADDRESS ), VALUE_CHAR(STG_E_INCOMPLETE ), VALUE_CHAR(STG_E_TERMINATED ), VALUE_CHAR(STG_S_CONVERTED ), VALUE_CHAR(STG_S_BLOCK ), VALUE_CHAR(STG_S_RETRYNOW ), VALUE_CHAR(STG_S_MONITORING ), //RPC Errors VALUE_CHAR( CO_E_INIT_TLS ), VALUE_CHAR( CO_E_INIT_SHARED_ALLOCATOR ), VALUE_CHAR( CO_E_INIT_MEMORY_ALLOCATOR ), VALUE_CHAR( CO_E_INIT_CLASS_CACHE ), VALUE_CHAR( CO_E_INIT_RPC_CHANNEL ), VALUE_CHAR( CO_E_INIT_TLS_SET_CHANNEL_CONTROL ), VALUE_CHAR( CO_E_INIT_TLS_CHANNEL_CONTROL ), VALUE_CHAR( CO_E_INIT_UNACCEPTED_USER_ALLOCATOR ), VALUE_CHAR( CO_E_INIT_SCM_MUTEX_EXISTS ), VALUE_CHAR( CO_E_INIT_SCM_FILE_MAPPING_EXISTS ), VALUE_CHAR( CO_E_INIT_SCM_MAP_VIEW_OF_FILE ), VALUE_CHAR( CO_E_INIT_SCM_EXEC_FAILURE ), VALUE_CHAR( CO_E_INIT_ONLY_SINGLE_THREADED ), VALUE_CHAR( CO_E_CANT_REMOTE ), VALUE_CHAR( CO_E_BAD_SERVER_NAME ), VALUE_CHAR( CO_E_WRONG_SERVER_IDENTITY ), VALUE_CHAR( CO_E_OLE1DDE_DISABLED ), VALUE_CHAR( CO_E_RUNAS_SYNTAX ), VALUE_CHAR( CO_E_CREATEPROCESS_FAILURE ), VALUE_CHAR( CO_E_RUNAS_CREATEPROCESS_FAILURE ), VALUE_CHAR( CO_E_RUNAS_LOGON_FAILURE ), VALUE_CHAR( CO_E_LAUNCH_PERMSSION_DENIED ), VALUE_CHAR( CO_E_START_SERVICE_FAILURE ), VALUE_CHAR( CO_E_REMOTE_COMMUNICATION_FAILURE ), VALUE_CHAR( CO_E_SERVER_START_TIMEOUT ), VALUE_CHAR( CO_E_CLSREG_INCONSISTENT ), VALUE_CHAR( CO_E_IIDREG_INCONSISTENT ), VALUE_CHAR( CO_E_NOT_SUPPORTED ), //RPC Errors VALUE_CHAR_HR(ERROR_BAD_FORMAT ), VALUE_CHAR_HR(ERROR_INVALID_ACCESS ), VALUE_CHAR_HR(ERROR_INVALID_DATA ), VALUE_CHAR_HR(ERROR_OUTOFMEMORY ), VALUE_CHAR_HR(ERROR_INVALID_DRIVE ), VALUE_CHAR_HR(ERROR_CURRENT_DIRECTORY ), VALUE_CHAR_HR(ERROR_NOT_SAME_DEVICE ), VALUE_CHAR_HR(ERROR_NO_MORE_FILES ), VALUE_CHAR_HR(ERROR_WRITE_PROTECT ), VALUE_CHAR_HR(ERROR_BAD_UNIT ), VALUE_CHAR_HR(ERROR_NOT_READY ), VALUE_CHAR_HR(ERROR_BAD_COMMAND ), VALUE_CHAR_HR(ERROR_CRC ), VALUE_CHAR_HR(ERROR_BAD_LENGTH ), VALUE_CHAR_HR(ERROR_SEEK ), VALUE_CHAR_HR(ERROR_NOT_DOS_DISK ), VALUE_CHAR_HR(ERROR_SECTOR_NOT_FOUND ), VALUE_CHAR_HR(ERROR_OUT_OF_PAPER ), VALUE_CHAR_HR(ERROR_WRITE_FAULT ), VALUE_CHAR_HR(ERROR_READ_FAULT ), VALUE_CHAR_HR(ERROR_GEN_FAILURE ), VALUE_CHAR_HR(ERROR_SHARING_VIOLATION ), VALUE_CHAR_HR(ERROR_LOCK_VIOLATION ), VALUE_CHAR_HR(ERROR_WRONG_DISK ), VALUE_CHAR_HR(ERROR_SHARING_BUFFER_EXCEEDED ), VALUE_CHAR_HR(ERROR_HANDLE_EOF ), VALUE_CHAR_HR(ERROR_HANDLE_DISK_FULL ), VALUE_CHAR_HR(ERROR_NOT_SUPPORTED ), VALUE_CHAR_HR(ERROR_REM_NOT_LIST ), VALUE_CHAR_HR(ERROR_DUP_NAME ), VALUE_CHAR_HR(ERROR_BAD_NETPATH ), VALUE_CHAR_HR(ERROR_NETWORK_BUSY ), VALUE_CHAR_HR(ERROR_DEV_NOT_EXIST ), VALUE_CHAR_HR(ERROR_TOO_MANY_CMDS ), VALUE_CHAR_HR(ERROR_ADAP_HDW_ERR ), VALUE_CHAR_HR(ERROR_BAD_NET_RESP ), VALUE_CHAR_HR(ERROR_UNEXP_NET_ERR ), VALUE_CHAR_HR(ERROR_BAD_REM_ADAP ), VALUE_CHAR_HR(ERROR_PRINTQ_FULL ), VALUE_CHAR_HR(ERROR_NO_SPOOL_SPACE ), VALUE_CHAR_HR(ERROR_PRINT_CANCELLED ), VALUE_CHAR_HR(ERROR_NETNAME_DELETED ), VALUE_CHAR_HR(ERROR_NETWORK_ACCESS_DENIED ), VALUE_CHAR_HR(ERROR_BAD_DEV_TYPE ), VALUE_CHAR_HR(ERROR_BAD_NET_NAME ), VALUE_CHAR_HR(ERROR_TOO_MANY_NAMES ), VALUE_CHAR_HR(ERROR_TOO_MANY_SESS ), VALUE_CHAR_HR(ERROR_SHARING_PAUSED ), VALUE_CHAR_HR(ERROR_REQ_NOT_ACCEP ), VALUE_CHAR_HR(ERROR_REDIR_PAUSED ), VALUE_CHAR_HR(ERROR_FILE_EXISTS ), VALUE_CHAR_HR(ERROR_CANNOT_MAKE ), VALUE_CHAR_HR(ERROR_FAIL_I24 ), VALUE_CHAR_HR(ERROR_OUT_OF_STRUCTURES ), VALUE_CHAR_HR(ERROR_ALREADY_ASSIGNED ), VALUE_CHAR_HR(ERROR_INVALID_PASSWORD ), VALUE_CHAR_HR(ERROR_INVALID_PARAMETER ), VALUE_CHAR_HR(ERROR_NET_WRITE_FAULT ), VALUE_CHAR_HR(ERROR_NO_PROC_SLOTS ), VALUE_CHAR_HR(ERROR_TOO_MANY_SEMAPHORES ), VALUE_CHAR_HR(ERROR_EXCL_SEM_ALREADY_OWNED ), VALUE_CHAR_HR(ERROR_SEM_IS_SET ), VALUE_CHAR_HR(ERROR_TOO_MANY_SEM_REQUESTS ), VALUE_CHAR_HR(ERROR_INVALID_AT_INTERRUPT_TIME ), VALUE_CHAR_HR(ERROR_SEM_OWNER_DIED ), VALUE_CHAR_HR(ERROR_SEM_USER_LIMIT ), VALUE_CHAR_HR(ERROR_DISK_CHANGE ), VALUE_CHAR_HR(ERROR_DRIVE_LOCKED ), VALUE_CHAR_HR(ERROR_BROKEN_PIPE ), VALUE_CHAR_HR(ERROR_OPEN_FAILED ), VALUE_CHAR_HR(ERROR_BUFFER_OVERFLOW ), VALUE_CHAR_HR(ERROR_DISK_FULL ), VALUE_CHAR_HR(ERROR_NO_MORE_SEARCH_HANDLES ), VALUE_CHAR_HR(ERROR_INVALID_TARGET_HANDLE ), VALUE_CHAR_HR(ERROR_INVALID_CATEGORY ), VALUE_CHAR_HR(ERROR_INVALID_VERIFY_SWITCH ), VALUE_CHAR_HR(ERROR_BAD_DRIVER_LEVEL ), VALUE_CHAR_HR(ERROR_CALL_NOT_IMPLEMENTED ), VALUE_CHAR_HR(ERROR_SEM_TIMEOUT ), VALUE_CHAR_HR(ERROR_INSUFFICIENT_BUFFER ), VALUE_CHAR_HR(ERROR_INVALID_NAME ), VALUE_CHAR_HR(ERROR_INVALID_LEVEL ), VALUE_CHAR_HR(ERROR_NO_VOLUME_LABEL ), VALUE_CHAR_HR(ERROR_MOD_NOT_FOUND ), VALUE_CHAR_HR(ERROR_PROC_NOT_FOUND ), VALUE_CHAR_HR(ERROR_WAIT_NO_CHILDREN ), VALUE_CHAR_HR(ERROR_CHILD_NOT_COMPLETE ), VALUE_CHAR_HR(ERROR_DIRECT_ACCESS_HANDLE ), VALUE_CHAR_HR(ERROR_NEGATIVE_SEEK ), VALUE_CHAR_HR(ERROR_SEEK_ON_DEVICE ), VALUE_CHAR_HR(ERROR_IS_JOIN_TARGET ), VALUE_CHAR_HR(ERROR_IS_JOINED ), VALUE_CHAR_HR(ERROR_IS_SUBSTED ), VALUE_CHAR_HR(ERROR_NOT_JOINED ), VALUE_CHAR_HR(ERROR_NOT_SUBSTED ), VALUE_CHAR_HR(ERROR_JOIN_TO_JOIN ), VALUE_CHAR_HR(ERROR_SUBST_TO_SUBST ), VALUE_CHAR_HR(ERROR_JOIN_TO_SUBST ), VALUE_CHAR_HR(ERROR_SUBST_TO_JOIN ), VALUE_CHAR_HR(ERROR_BUSY_DRIVE ), VALUE_CHAR_HR(ERROR_SAME_DRIVE ), VALUE_CHAR_HR(ERROR_DIR_NOT_ROOT ), VALUE_CHAR_HR(ERROR_DIR_NOT_EMPTY ), VALUE_CHAR_HR(ERROR_IS_SUBST_PATH ), VALUE_CHAR_HR(ERROR_IS_JOIN_PATH ), VALUE_CHAR_HR(ERROR_PATH_BUSY ), VALUE_CHAR_HR(ERROR_IS_SUBST_TARGET ), VALUE_CHAR_HR(ERROR_SYSTEM_TRACE ), VALUE_CHAR_HR(ERROR_INVALID_EVENT_COUNT ), VALUE_CHAR_HR(ERROR_TOO_MANY_MUXWAITERS ), VALUE_CHAR_HR(ERROR_INVALID_LIST_FORMAT ), VALUE_CHAR_HR(ERROR_LABEL_TOO_LONG ), VALUE_CHAR_HR(ERROR_TOO_MANY_TCBS ), VALUE_CHAR_HR(ERROR_SIGNAL_REFUSED ), VALUE_CHAR_HR(ERROR_DISCARDED ), VALUE_CHAR_HR(ERROR_NOT_LOCKED ), VALUE_CHAR_HR(ERROR_BAD_THREADID_ADDR ), VALUE_CHAR_HR(ERROR_BAD_ARGUMENTS ), VALUE_CHAR_HR(ERROR_BAD_PATHNAME ), VALUE_CHAR_HR(ERROR_SIGNAL_PENDING ), VALUE_CHAR_HR(ERROR_MAX_THRDS_REACHED ), VALUE_CHAR_HR(ERROR_LOCK_FAILED ), VALUE_CHAR_HR(ERROR_BUSY ), VALUE_CHAR_HR(ERROR_CANCEL_VIOLATION ), VALUE_CHAR_HR(ERROR_ATOMIC_LOCKS_NOT_SUPPORTED ), VALUE_CHAR_HR(ERROR_INVALID_SEGMENT_NUMBER ), VALUE_CHAR_HR(ERROR_INVALID_ORDINAL ), VALUE_CHAR_HR(ERROR_ALREADY_EXISTS ), VALUE_CHAR_HR(ERROR_INVALID_FLAG_NUMBER ), VALUE_CHAR_HR(ERROR_SEM_NOT_FOUND ), VALUE_CHAR_HR(ERROR_INVALID_STARTING_CODESEG ), VALUE_CHAR_HR(ERROR_INVALID_STACKSEG ), VALUE_CHAR_HR(ERROR_INVALID_MODULETYPE ), VALUE_CHAR_HR(ERROR_INVALID_EXE_SIGNATURE ), VALUE_CHAR_HR(ERROR_EXE_MARKED_INVALID ), VALUE_CHAR_HR(ERROR_BAD_EXE_FORMAT ), VALUE_CHAR_HR(ERROR_ITERATED_DATA_EXCEEDS_64k ), VALUE_CHAR_HR(ERROR_INVALID_MINALLOCSIZE ), VALUE_CHAR_HR(ERROR_DYNLINK_FROM_INVALID_RING ), VALUE_CHAR_HR(ERROR_IOPL_NOT_ENABLED ), VALUE_CHAR_HR(ERROR_INVALID_SEGDPL ), VALUE_CHAR_HR(ERROR_AUTODATASEG_EXCEEDS_64k ), VALUE_CHAR_HR(ERROR_RING2SEG_MUST_BE_MOVABLE ), VALUE_CHAR_HR(ERROR_RELOC_CHAIN_XEEDS_SEGLIM ), VALUE_CHAR_HR(ERROR_INFLOOP_IN_RELOC_CHAIN ), VALUE_CHAR_HR(ERROR_ENVVAR_NOT_FOUND ), VALUE_CHAR_HR(ERROR_NO_SIGNAL_SENT ), VALUE_CHAR_HR(ERROR_FILENAME_EXCED_RANGE ), VALUE_CHAR_HR(ERROR_RING2_STACK_IN_USE ), VALUE_CHAR_HR(ERROR_META_EXPANSION_TOO_LONG ), VALUE_CHAR_HR(ERROR_INVALID_SIGNAL_NUMBER ), VALUE_CHAR_HR(ERROR_THREAD_1_INACTIVE ), VALUE_CHAR_HR(ERROR_LOCKED ), VALUE_CHAR_HR(ERROR_TOO_MANY_MODULES ), VALUE_CHAR_HR(ERROR_NESTING_NOT_ALLOWED ), VALUE_CHAR_HR(ERROR_EXE_MACHINE_TYPE_MISMATCH ), VALUE_CHAR_HR(ERROR_BAD_PIPE ), VALUE_CHAR_HR(ERROR_PIPE_BUSY ), VALUE_CHAR_HR(ERROR_NO_DATA ), VALUE_CHAR_HR(ERROR_PIPE_NOT_CONNECTED ), VALUE_CHAR_HR(ERROR_MORE_DATA ), VALUE_CHAR_HR(ERROR_VC_DISCONNECTED ), VALUE_CHAR_HR(ERROR_INVALID_EA_NAME ), VALUE_CHAR_HR(ERROR_EA_LIST_INCONSISTENT ), VALUE_CHAR_HR(ERROR_NO_MORE_ITEMS ), VALUE_CHAR_HR(ERROR_CANNOT_COPY ), VALUE_CHAR_HR(ERROR_DIRECTORY ), VALUE_CHAR_HR(ERROR_EAS_DIDNT_FIT ), VALUE_CHAR_HR(ERROR_EA_FILE_CORRUPT ), VALUE_CHAR_HR(ERROR_EA_TABLE_FULL ), VALUE_CHAR_HR(ERROR_INVALID_EA_HANDLE ), VALUE_CHAR_HR(ERROR_EAS_NOT_SUPPORTED ), VALUE_CHAR_HR(ERROR_NOT_OWNER ), VALUE_CHAR_HR(ERROR_TOO_MANY_POSTS ), VALUE_CHAR_HR(ERROR_PARTIAL_COPY ), VALUE_CHAR_HR(ERROR_MR_MID_NOT_FOUND ), VALUE_CHAR_HR(ERROR_INVALID_ADDRESS ), VALUE_CHAR_HR(ERROR_ARITHMETIC_OVERFLOW ), VALUE_CHAR_HR(ERROR_PIPE_CONNECTED ), VALUE_CHAR_HR(ERROR_PIPE_LISTENING ), VALUE_CHAR_HR(ERROR_EA_ACCESS_DENIED ), VALUE_CHAR_HR(ERROR_OPERATION_ABORTED ), VALUE_CHAR_HR(ERROR_IO_INCOMPLETE ), VALUE_CHAR_HR(ERROR_IO_PENDING ), VALUE_CHAR_HR(ERROR_NOACCESS ), VALUE_CHAR_HR(ERROR_SWAPERROR ), VALUE_CHAR_HR(ERROR_STACK_OVERFLOW ), VALUE_CHAR_HR(ERROR_INVALID_MESSAGE ), VALUE_CHAR_HR(ERROR_CAN_NOT_COMPLETE ), VALUE_CHAR_HR(ERROR_INVALID_FLAGS ), VALUE_CHAR_HR(ERROR_UNRECOGNIZED_VOLUME ), VALUE_CHAR_HR(ERROR_FILE_INVALID ), VALUE_CHAR_HR(ERROR_FULLSCREEN_MODE ), VALUE_CHAR_HR(ERROR_NO_TOKEN ), VALUE_CHAR_HR(ERROR_BADDB ), VALUE_CHAR_HR(ERROR_BADKEY ), VALUE_CHAR_HR(ERROR_CANTOPEN ), VALUE_CHAR_HR(ERROR_CANTREAD ), VALUE_CHAR_HR(ERROR_CANTWRITE ), VALUE_CHAR_HR(ERROR_REGISTRY_RECOVERED ), VALUE_CHAR_HR(ERROR_REGISTRY_CORRUPT ), VALUE_CHAR_HR(ERROR_REGISTRY_IO_FAILED ), VALUE_CHAR_HR(ERROR_NOT_REGISTRY_FILE ), VALUE_CHAR_HR(ERROR_KEY_DELETED ), VALUE_CHAR_HR(ERROR_NO_LOG_SPACE ), VALUE_CHAR_HR(ERROR_KEY_HAS_CHILDREN ), VALUE_CHAR_HR(ERROR_CHILD_MUST_BE_VOLATILE ), VALUE_CHAR_HR(ERROR_NOTIFY_ENUM_DIR ), VALUE_CHAR_HR(ERROR_DEPENDENT_SERVICES_RUNNING ), VALUE_CHAR_HR(ERROR_INVALID_SERVICE_CONTROL ), VALUE_CHAR_HR(ERROR_SERVICE_REQUEST_TIMEOUT ), VALUE_CHAR_HR(ERROR_SERVICE_NO_THREAD ), VALUE_CHAR_HR(ERROR_SERVICE_DATABASE_LOCKED ), VALUE_CHAR_HR(ERROR_SERVICE_ALREADY_RUNNING ), VALUE_CHAR_HR(ERROR_INVALID_SERVICE_ACCOUNT ), VALUE_CHAR_HR(ERROR_SERVICE_DISABLED ), VALUE_CHAR_HR(ERROR_CIRCULAR_DEPENDENCY ), VALUE_CHAR_HR(ERROR_SERVICE_DOES_NOT_EXIST ), VALUE_CHAR_HR(ERROR_SERVICE_CANNOT_ACCEPT_CTRL ), VALUE_CHAR_HR(ERROR_SERVICE_NOT_ACTIVE ), VALUE_CHAR_HR(ERROR_FAILED_SERVICE_CONTROLLER_CONNECT ), VALUE_CHAR_HR(ERROR_EXCEPTION_IN_SERVICE ), VALUE_CHAR_HR(ERROR_DATABASE_DOES_NOT_EXIST ), VALUE_CHAR_HR(ERROR_SERVICE_SPECIFIC_ERROR ), VALUE_CHAR_HR(ERROR_PROCESS_ABORTED ), VALUE_CHAR_HR(ERROR_SERVICE_DEPENDENCY_FAIL ), VALUE_CHAR_HR(ERROR_SERVICE_LOGON_FAILED ), VALUE_CHAR_HR(ERROR_SERVICE_START_HANG ), VALUE_CHAR_HR(ERROR_INVALID_SERVICE_LOCK ), VALUE_CHAR_HR(ERROR_SERVICE_MARKED_FOR_DELETE ), VALUE_CHAR_HR(ERROR_SERVICE_EXISTS ), VALUE_CHAR_HR(ERROR_ALREADY_RUNNING_LKG ), VALUE_CHAR_HR(ERROR_SERVICE_DEPENDENCY_DELETED ), VALUE_CHAR_HR(ERROR_BOOT_ALREADY_ACCEPTED ), VALUE_CHAR_HR(ERROR_SERVICE_NEVER_STARTED ), VALUE_CHAR_HR(ERROR_DUPLICATE_SERVICE_NAME ), VALUE_CHAR_HR(ERROR_DIFFERENT_SERVICE_ACCOUNT ), VALUE_CHAR_HR(ERROR_END_OF_MEDIA ), VALUE_CHAR_HR(ERROR_FILEMARK_DETECTED ), VALUE_CHAR_HR(ERROR_BEGINNING_OF_MEDIA ), VALUE_CHAR_HR(ERROR_SETMARK_DETECTED ), VALUE_CHAR_HR(ERROR_NO_DATA_DETECTED ), VALUE_CHAR_HR(ERROR_PARTITION_FAILURE ), VALUE_CHAR_HR(ERROR_INVALID_BLOCK_LENGTH ), VALUE_CHAR_HR(ERROR_DEVICE_NOT_PARTITIONED ), VALUE_CHAR_HR(ERROR_UNABLE_TO_LOCK_MEDIA ), VALUE_CHAR_HR(ERROR_UNABLE_TO_UNLOAD_MEDIA ), VALUE_CHAR_HR(ERROR_MEDIA_CHANGED ), VALUE_CHAR_HR(ERROR_BUS_RESET ), VALUE_CHAR_HR(ERROR_NO_MEDIA_IN_DRIVE ), VALUE_CHAR_HR(ERROR_NO_UNICODE_TRANSLATION ), VALUE_CHAR_HR(ERROR_DLL_INIT_FAILED ), VALUE_CHAR_HR(ERROR_SHUTDOWN_IN_PROGRESS ), VALUE_CHAR_HR(ERROR_NO_SHUTDOWN_IN_PROGRESS ), VALUE_CHAR_HR(ERROR_IO_DEVICE ), VALUE_CHAR_HR(ERROR_SERIAL_NO_DEVICE ), VALUE_CHAR_HR(ERROR_IRQ_BUSY ), VALUE_CHAR_HR(ERROR_MORE_WRITES ), VALUE_CHAR_HR(ERROR_COUNTER_TIMEOUT ), VALUE_CHAR_HR(ERROR_FLOPPY_ID_MARK_NOT_FOUND ), VALUE_CHAR_HR(ERROR_FLOPPY_WRONG_CYLINDER ), VALUE_CHAR_HR(ERROR_FLOPPY_UNKNOWN_ERROR ), VALUE_CHAR_HR(ERROR_FLOPPY_BAD_REGISTERS ), VALUE_CHAR_HR(ERROR_DISK_RECALIBRATE_FAILED ), VALUE_CHAR_HR(ERROR_DISK_OPERATION_FAILED ), VALUE_CHAR_HR(ERROR_DISK_RESET_FAILED ), VALUE_CHAR_HR(ERROR_EOM_OVERFLOW ), VALUE_CHAR_HR(ERROR_NOT_ENOUGH_SERVER_MEMORY ), VALUE_CHAR_HR(ERROR_POSSIBLE_DEADLOCK ), VALUE_CHAR_HR(ERROR_MAPPED_ALIGNMENT ), VALUE_CHAR_HR(ERROR_SET_POWER_STATE_VETOED ), VALUE_CHAR_HR(ERROR_SET_POWER_STATE_FAILED ), VALUE_CHAR_HR(ERROR_TOO_MANY_LINKS ), VALUE_CHAR_HR(ERROR_OLD_WIN_VERSION ), VALUE_CHAR_HR(ERROR_APP_WRONG_OS ), VALUE_CHAR_HR(ERROR_SINGLE_INSTANCE_APP ), VALUE_CHAR_HR(ERROR_RMODE_APP ), VALUE_CHAR_HR(ERROR_INVALID_DLL ), VALUE_CHAR_HR(ERROR_NO_ASSOCIATION ), VALUE_CHAR_HR(ERROR_DDE_FAIL ), VALUE_CHAR_HR(ERROR_DLL_NOT_FOUND ), VALUE_CHAR_HR(ERROR_BAD_USERNAME ), VALUE_CHAR_HR(ERROR_NOT_CONNECTED ), VALUE_CHAR_HR(ERROR_OPEN_FILES ), VALUE_CHAR_HR(ERROR_ACTIVE_CONNECTIONS ), VALUE_CHAR_HR(ERROR_DEVICE_IN_USE ), VALUE_CHAR_HR(ERROR_BAD_DEVICE ), VALUE_CHAR_HR(ERROR_CONNECTION_UNAVAIL ), VALUE_CHAR_HR(ERROR_DEVICE_ALREADY_REMEMBERED ), VALUE_CHAR_HR(ERROR_NO_NET_OR_BAD_PATH ), VALUE_CHAR_HR(ERROR_BAD_PROVIDER ), VALUE_CHAR_HR(ERROR_CANNOT_OPEN_PROFILE ), VALUE_CHAR_HR(ERROR_BAD_PROFILE ), VALUE_CHAR_HR(ERROR_NOT_CONTAINER ), VALUE_CHAR_HR(ERROR_EXTENDED_ERROR ), VALUE_CHAR_HR(ERROR_INVALID_GROUPNAME ), VALUE_CHAR_HR(ERROR_INVALID_COMPUTERNAME ), VALUE_CHAR_HR(ERROR_INVALID_EVENTNAME ), VALUE_CHAR_HR(ERROR_INVALID_DOMAINNAME ), VALUE_CHAR_HR(ERROR_INVALID_SERVICENAME ), VALUE_CHAR_HR(ERROR_INVALID_NETNAME ), VALUE_CHAR_HR(ERROR_INVALID_SHARENAME ), VALUE_CHAR_HR(ERROR_INVALID_PASSWORDNAME ), VALUE_CHAR_HR(ERROR_INVALID_MESSAGENAME ), VALUE_CHAR_HR(ERROR_INVALID_MESSAGEDEST ), VALUE_CHAR_HR(ERROR_SESSION_CREDENTIAL_CONFLICT ), VALUE_CHAR_HR(ERROR_REMOTE_SESSION_LIMIT_EXCEEDED ), VALUE_CHAR_HR(ERROR_DUP_DOMAINNAME ), VALUE_CHAR_HR(ERROR_NO_NETWORK ), VALUE_CHAR_HR(ERROR_CANCELLED ), VALUE_CHAR_HR(ERROR_USER_MAPPED_FILE ), VALUE_CHAR_HR(ERROR_CONNECTION_REFUSED ), VALUE_CHAR_HR(ERROR_GRACEFUL_DISCONNECT ), VALUE_CHAR_HR(ERROR_ADDRESS_ALREADY_ASSOCIATED ), VALUE_CHAR_HR(ERROR_ADDRESS_NOT_ASSOCIATED ), VALUE_CHAR_HR(ERROR_CONNECTION_INVALID ), VALUE_CHAR_HR(ERROR_CONNECTION_ACTIVE ), VALUE_CHAR_HR(ERROR_NETWORK_UNREACHABLE ), VALUE_CHAR_HR(ERROR_HOST_UNREACHABLE ), VALUE_CHAR_HR(ERROR_PROTOCOL_UNREACHABLE ), VALUE_CHAR_HR(ERROR_PORT_UNREACHABLE ), VALUE_CHAR_HR(ERROR_REQUEST_ABORTED ), VALUE_CHAR_HR(ERROR_CONNECTION_ABORTED ), VALUE_CHAR_HR(ERROR_RETRY ), VALUE_CHAR_HR(ERROR_CONNECTION_COUNT_LIMIT ), VALUE_CHAR_HR(ERROR_LOGIN_TIME_RESTRICTION ), VALUE_CHAR_HR(ERROR_LOGIN_WKSTA_RESTRICTION ), VALUE_CHAR_HR(ERROR_INCORRECT_ADDRESS ), VALUE_CHAR_HR(ERROR_ALREADY_REGISTERED ), VALUE_CHAR_HR(ERROR_SERVICE_NOT_FOUND ), VALUE_CHAR_HR(ERROR_NOT_AUTHENTICATED ), VALUE_CHAR_HR(ERROR_NOT_LOGGED_ON ), VALUE_CHAR_HR(ERROR_CONTINUE ), VALUE_CHAR_HR(ERROR_ALREADY_INITIALIZED ), VALUE_CHAR_HR(ERROR_NO_MORE_DEVICES ), VALUE_CHAR_HR(ERROR_NOT_ALL_ASSIGNED ), VALUE_CHAR_HR(ERROR_SOME_NOT_MAPPED ), VALUE_CHAR_HR(ERROR_NO_QUOTAS_FOR_ACCOUNT ), VALUE_CHAR_HR(ERROR_LOCAL_USER_SESSION_KEY ), VALUE_CHAR_HR(ERROR_NULL_LM_PASSWORD ), VALUE_CHAR_HR(ERROR_UNKNOWN_REVISION ), VALUE_CHAR_HR(ERROR_REVISION_MISMATCH ), VALUE_CHAR_HR(ERROR_INVALID_OWNER ), VALUE_CHAR_HR(ERROR_INVALID_PRIMARY_GROUP ), VALUE_CHAR_HR(ERROR_NO_IMPERSONATION_TOKEN ), VALUE_CHAR_HR(ERROR_CANT_DISABLE_MANDATORY ), VALUE_CHAR_HR(ERROR_NO_LOGON_SERVERS ), VALUE_CHAR_HR(ERROR_NO_SUCH_LOGON_SESSION ), VALUE_CHAR_HR(ERROR_NO_SUCH_PRIVILEGE ), VALUE_CHAR_HR(ERROR_PRIVILEGE_NOT_HELD ), VALUE_CHAR_HR(ERROR_INVALID_ACCOUNT_NAME ), VALUE_CHAR_HR(ERROR_USER_EXISTS ), VALUE_CHAR_HR(ERROR_NO_SUCH_USER ), VALUE_CHAR_HR(ERROR_GROUP_EXISTS ), VALUE_CHAR_HR(ERROR_NO_SUCH_GROUP ), VALUE_CHAR_HR(ERROR_MEMBER_IN_GROUP ), VALUE_CHAR_HR(ERROR_MEMBER_NOT_IN_GROUP ), VALUE_CHAR_HR(ERROR_LAST_ADMIN ), VALUE_CHAR_HR(ERROR_WRONG_PASSWORD ), VALUE_CHAR_HR(ERROR_ILL_FORMED_PASSWORD ), VALUE_CHAR_HR(ERROR_PASSWORD_RESTRICTION ), VALUE_CHAR_HR(ERROR_LOGON_FAILURE ), VALUE_CHAR_HR(ERROR_ACCOUNT_RESTRICTION ), VALUE_CHAR_HR(ERROR_INVALID_LOGON_HOURS ), VALUE_CHAR_HR(ERROR_INVALID_WORKSTATION ), VALUE_CHAR_HR(ERROR_PASSWORD_EXPIRED ), VALUE_CHAR_HR(ERROR_ACCOUNT_DISABLED ), VALUE_CHAR_HR(ERROR_NONE_MAPPED ), VALUE_CHAR_HR(ERROR_TOO_MANY_LUIDS_REQUESTED ), VALUE_CHAR_HR(ERROR_LUIDS_EXHAUSTED ), VALUE_CHAR_HR(ERROR_INVALID_SUB_AUTHORITY ), VALUE_CHAR_HR(ERROR_INVALID_ACL ), VALUE_CHAR_HR(ERROR_INVALID_SID ), VALUE_CHAR_HR(ERROR_INVALID_SECURITY_DESCR ), VALUE_CHAR_HR(ERROR_BAD_INHERITANCE_ACL ), VALUE_CHAR_HR(ERROR_SERVER_DISABLED ), VALUE_CHAR_HR(ERROR_SERVER_NOT_DISABLED ), VALUE_CHAR_HR(ERROR_INVALID_ID_AUTHORITY ), VALUE_CHAR_HR(ERROR_ALLOTTED_SPACE_EXCEEDED ), VALUE_CHAR_HR(ERROR_INVALID_GROUP_ATTRIBUTES ), VALUE_CHAR_HR(ERROR_BAD_IMPERSONATION_LEVEL ), VALUE_CHAR_HR(ERROR_CANT_OPEN_ANONYMOUS ), VALUE_CHAR_HR(ERROR_BAD_VALIDATION_CLASS ), VALUE_CHAR_HR(ERROR_BAD_TOKEN_TYPE ), VALUE_CHAR_HR(ERROR_NO_SECURITY_ON_OBJECT ), VALUE_CHAR_HR(ERROR_CANT_ACCESS_DOMAIN_INFO ), VALUE_CHAR_HR(ERROR_INVALID_SERVER_STATE ), VALUE_CHAR_HR(ERROR_INVALID_DOMAIN_STATE ), VALUE_CHAR_HR(ERROR_INVALID_DOMAIN_ROLE ), VALUE_CHAR_HR(ERROR_NO_SUCH_DOMAIN ), VALUE_CHAR_HR(ERROR_DOMAIN_EXISTS ), VALUE_CHAR_HR(ERROR_DOMAIN_LIMIT_EXCEEDED ), VALUE_CHAR_HR(ERROR_INTERNAL_DB_CORRUPTION ), VALUE_CHAR_HR(ERROR_INTERNAL_ERROR ), VALUE_CHAR_HR(ERROR_GENERIC_NOT_MAPPED ), VALUE_CHAR_HR(ERROR_BAD_DESCRIPTOR_FORMAT ), VALUE_CHAR_HR(ERROR_NOT_LOGON_PROCESS ), VALUE_CHAR_HR(ERROR_LOGON_SESSION_EXISTS ), VALUE_CHAR_HR(ERROR_NO_SUCH_PACKAGE ), VALUE_CHAR_HR(ERROR_BAD_LOGON_SESSION_STATE ), VALUE_CHAR_HR(ERROR_LOGON_SESSION_COLLISION ), VALUE_CHAR_HR(ERROR_INVALID_LOGON_TYPE ), VALUE_CHAR_HR(ERROR_CANNOT_IMPERSONATE ), VALUE_CHAR_HR(ERROR_RXACT_INVALID_STATE ), VALUE_CHAR_HR(ERROR_RXACT_COMMIT_FAILURE ), VALUE_CHAR_HR(ERROR_SPECIAL_ACCOUNT ), VALUE_CHAR_HR(ERROR_SPECIAL_GROUP ), VALUE_CHAR_HR(ERROR_SPECIAL_USER ), VALUE_CHAR_HR(ERROR_MEMBERS_PRIMARY_GROUP ), VALUE_CHAR_HR(ERROR_TOKEN_ALREADY_IN_USE ), VALUE_CHAR_HR(ERROR_NO_SUCH_ALIAS ), VALUE_CHAR_HR(ERROR_MEMBER_NOT_IN_ALIAS ), VALUE_CHAR_HR(ERROR_MEMBER_IN_ALIAS ), VALUE_CHAR_HR(ERROR_ALIAS_EXISTS ), VALUE_CHAR_HR(ERROR_LOGON_NOT_GRANTED ), VALUE_CHAR_HR(ERROR_TOO_MANY_SECRETS ), VALUE_CHAR_HR(ERROR_SECRET_TOO_LONG ), VALUE_CHAR_HR(ERROR_INTERNAL_DB_ERROR ), VALUE_CHAR_HR(ERROR_TOO_MANY_CONTEXT_IDS ), VALUE_CHAR_HR(ERROR_LOGON_TYPE_NOT_GRANTED ), VALUE_CHAR_HR(ERROR_NT_CROSS_ENCRYPTION_REQUIRED ), VALUE_CHAR_HR(ERROR_NO_SUCH_MEMBER ), VALUE_CHAR_HR(ERROR_INVALID_MEMBER ), VALUE_CHAR_HR(ERROR_TOO_MANY_SIDS ), VALUE_CHAR_HR(ERROR_LM_CROSS_ENCRYPTION_REQUIRED ), VALUE_CHAR_HR(ERROR_NO_INHERITANCE ), VALUE_CHAR_HR(ERROR_FILE_CORRUPT ), VALUE_CHAR_HR(ERROR_DISK_CORRUPT ), VALUE_CHAR_HR(ERROR_NO_USER_SESSION_KEY ), VALUE_CHAR_HR(ERROR_LICENSE_QUOTA_EXCEEDED ), VALUE_CHAR_HR(ERROR_INVALID_WINDOW_HANDLE ), VALUE_CHAR_HR(ERROR_INVALID_MENU_HANDLE ), VALUE_CHAR_HR(ERROR_INVALID_CURSOR_HANDLE ), VALUE_CHAR_HR(ERROR_INVALID_ACCEL_HANDLE ), VALUE_CHAR_HR(ERROR_INVALID_HOOK_HANDLE ), VALUE_CHAR_HR(ERROR_INVALID_DWP_HANDLE ), VALUE_CHAR_HR(ERROR_TLW_WITH_WSCHILD ), VALUE_CHAR_HR(ERROR_CANNOT_FIND_WND_CLASS ), VALUE_CHAR_HR(ERROR_WINDOW_OF_OTHER_THREAD ), VALUE_CHAR_HR(ERROR_HOTKEY_ALREADY_REGISTERED ), VALUE_CHAR_HR(ERROR_CLASS_ALREADY_EXISTS ), VALUE_CHAR_HR(ERROR_CLASS_DOES_NOT_EXIST ), VALUE_CHAR_HR(ERROR_CLASS_HAS_WINDOWS ), VALUE_CHAR_HR(ERROR_INVALID_INDEX ), VALUE_CHAR_HR(ERROR_INVALID_ICON_HANDLE ), VALUE_CHAR_HR(ERROR_PRIVATE_DIALOG_INDEX ), VALUE_CHAR_HR(ERROR_LISTBOX_ID_NOT_FOUND ), VALUE_CHAR_HR(ERROR_NO_WILDCARD_CHARACTERS ), VALUE_CHAR_HR(ERROR_CLIPBOARD_NOT_OPEN ), VALUE_CHAR_HR(ERROR_HOTKEY_NOT_REGISTERED ), VALUE_CHAR_HR(ERROR_WINDOW_NOT_DIALOG ), VALUE_CHAR_HR(ERROR_CONTROL_ID_NOT_FOUND ), VALUE_CHAR_HR(ERROR_INVALID_COMBOBOX_MESSAGE ), VALUE_CHAR_HR(ERROR_WINDOW_NOT_COMBOBOX ), VALUE_CHAR_HR(ERROR_INVALID_EDIT_HEIGHT ), VALUE_CHAR_HR(ERROR_DC_NOT_FOUND ), VALUE_CHAR_HR(ERROR_INVALID_HOOK_FILTER ), VALUE_CHAR_HR(ERROR_INVALID_FILTER_PROC ), VALUE_CHAR_HR(ERROR_HOOK_NEEDS_HMOD ), VALUE_CHAR_HR(ERROR_GLOBAL_ONLY_HOOK ), VALUE_CHAR_HR(ERROR_JOURNAL_HOOK_SET ), VALUE_CHAR_HR(ERROR_HOOK_NOT_INSTALLED ), VALUE_CHAR_HR(ERROR_INVALID_LB_MESSAGE ), VALUE_CHAR_HR(ERROR_SETCOUNT_ON_BAD_LB ), VALUE_CHAR_HR(ERROR_LB_WITHOUT_TABSTOPS ), VALUE_CHAR_HR(ERROR_DESTROY_OBJECT_OF_OTHER_THREAD ), VALUE_CHAR_HR(ERROR_CHILD_WINDOW_MENU ), VALUE_CHAR_HR(ERROR_NO_SYSTEM_MENU ), VALUE_CHAR_HR(ERROR_INVALID_MSGBOX_STYLE ), VALUE_CHAR_HR(ERROR_INVALID_SPI_VALUE ), VALUE_CHAR_HR(ERROR_SCREEN_ALREADY_LOCKED ), VALUE_CHAR_HR(ERROR_HWNDS_HAVE_DIFF_PARENT ), VALUE_CHAR_HR(ERROR_NOT_CHILD_WINDOW ), VALUE_CHAR_HR(ERROR_INVALID_GW_COMMAND ), VALUE_CHAR_HR(ERROR_INVALID_THREAD_ID ), VALUE_CHAR_HR(ERROR_NON_MDICHILD_WINDOW ), VALUE_CHAR_HR(ERROR_POPUP_ALREADY_ACTIVE ), VALUE_CHAR_HR(ERROR_NO_SCROLLBARS ), VALUE_CHAR_HR(ERROR_INVALID_SCROLLBAR_RANGE ), VALUE_CHAR_HR(ERROR_INVALID_SHOWWIN_COMMAND ), VALUE_CHAR_HR(ERROR_NO_SYSTEM_RESOURCES ), VALUE_CHAR_HR(ERROR_NONPAGED_SYSTEM_RESOURCES ), VALUE_CHAR_HR(ERROR_PAGED_SYSTEM_RESOURCES ), VALUE_CHAR_HR(ERROR_WORKING_SET_QUOTA ), VALUE_CHAR_HR(ERROR_PAGEFILE_QUOTA ), VALUE_CHAR_HR(ERROR_COMMITMENT_LIMIT ), VALUE_CHAR_HR(ERROR_MENU_ITEM_NOT_FOUND ), VALUE_CHAR_HR(ERROR_INVALID_KEYBOARD_HANDLE ), VALUE_CHAR_HR(ERROR_HOOK_TYPE_NOT_ALLOWED ), VALUE_CHAR_HR(ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION ), VALUE_CHAR_HR(ERROR_TIMEOUT ), VALUE_CHAR_HR(ERROR_EVENTLOG_FILE_CORRUPT ), VALUE_CHAR_HR(ERROR_EVENTLOG_CANT_START ), VALUE_CHAR_HR(ERROR_LOG_FILE_FULL ), VALUE_CHAR_HR(ERROR_EVENTLOG_FILE_CHANGED ), VALUE_CHAR_HR(RPC_S_INVALID_STRING_BINDING ), VALUE_CHAR_HR(RPC_S_WRONG_KIND_OF_BINDING ), VALUE_CHAR_HR(RPC_S_INVALID_BINDING ), VALUE_CHAR_HR(RPC_S_PROTSEQ_NOT_SUPPORTED ), VALUE_CHAR_HR(RPC_S_INVALID_RPC_PROTSEQ ), VALUE_CHAR_HR(RPC_S_INVALID_STRING_UUID ), VALUE_CHAR_HR(RPC_S_INVALID_ENDPOINT_FORMAT ), VALUE_CHAR_HR(RPC_S_INVALID_NET_ADDR ), VALUE_CHAR_HR(RPC_S_NO_ENDPOINT_FOUND ), VALUE_CHAR_HR(RPC_S_INVALID_TIMEOUT ), VALUE_CHAR_HR(RPC_S_OBJECT_NOT_FOUND ), VALUE_CHAR_HR(RPC_S_ALREADY_REGISTERED ), VALUE_CHAR_HR(RPC_S_TYPE_ALREADY_REGISTERED ), VALUE_CHAR_HR(RPC_S_ALREADY_LISTENING ), VALUE_CHAR_HR(RPC_S_NO_PROTSEQS_REGISTERED ), VALUE_CHAR_HR(RPC_S_NOT_LISTENING ), VALUE_CHAR_HR(RPC_S_UNKNOWN_MGR_TYPE ), VALUE_CHAR_HR(RPC_S_UNKNOWN_IF ), VALUE_CHAR_HR(RPC_S_NO_BINDINGS ), VALUE_CHAR_HR(RPC_S_NO_PROTSEQS ), VALUE_CHAR_HR(RPC_S_CANT_CREATE_ENDPOINT ), VALUE_CHAR_HR(RPC_S_OUT_OF_RESOURCES ), VALUE_CHAR_HR(RPC_S_SERVER_UNAVAILABLE ), VALUE_CHAR_HR(RPC_S_SERVER_TOO_BUSY ), VALUE_CHAR_HR(RPC_S_INVALID_NETWORK_OPTIONS ), VALUE_CHAR_HR(RPC_S_NO_CALL_ACTIVE ), VALUE_CHAR_HR(RPC_S_CALL_FAILED ), VALUE_CHAR_HR(RPC_S_CALL_FAILED_DNE ), VALUE_CHAR_HR(RPC_S_PROTOCOL_ERROR ), VALUE_CHAR_HR(RPC_S_UNSUPPORTED_TRANS_SYN ), VALUE_CHAR_HR(RPC_S_UNSUPPORTED_TYPE ), VALUE_CHAR_HR(RPC_S_INVALID_TAG ), VALUE_CHAR_HR(RPC_S_INVALID_BOUND ), VALUE_CHAR_HR(RPC_S_NO_ENTRY_NAME ), VALUE_CHAR_HR(RPC_S_INVALID_NAME_SYNTAX ), VALUE_CHAR_HR(RPC_S_UNSUPPORTED_NAME_SYNTAX ), VALUE_CHAR_HR(RPC_S_UUID_NO_ADDRESS ), VALUE_CHAR_HR(RPC_S_DUPLICATE_ENDPOINT ), VALUE_CHAR_HR(RPC_S_UNKNOWN_AUTHN_TYPE ), VALUE_CHAR_HR(RPC_S_MAX_CALLS_TOO_SMALL ), VALUE_CHAR_HR(RPC_S_STRING_TOO_LONG ), VALUE_CHAR_HR(RPC_S_PROTSEQ_NOT_FOUND ), VALUE_CHAR_HR(RPC_S_PROCNUM_OUT_OF_RANGE ), VALUE_CHAR_HR(RPC_S_BINDING_HAS_NO_AUTH ), VALUE_CHAR_HR(RPC_S_UNKNOWN_AUTHN_SERVICE ), VALUE_CHAR_HR(RPC_S_UNKNOWN_AUTHN_LEVEL ), VALUE_CHAR_HR(RPC_S_INVALID_AUTH_IDENTITY ), VALUE_CHAR_HR(RPC_S_UNKNOWN_AUTHZ_SERVICE ), VALUE_CHAR_HR(EPT_S_INVALID_ENTRY ), VALUE_CHAR_HR(EPT_S_CANT_PERFORM_OP ), VALUE_CHAR_HR(EPT_S_NOT_REGISTERED ), VALUE_CHAR_HR(RPC_S_NOTHING_TO_EXPORT ), VALUE_CHAR_HR(RPC_S_INCOMPLETE_NAME ), VALUE_CHAR_HR(RPC_S_INVALID_VERS_OPTION ), VALUE_CHAR_HR(RPC_S_NO_MORE_MEMBERS ), VALUE_CHAR_HR(RPC_S_NOT_ALL_OBJS_UNEXPORTED ), VALUE_CHAR_HR(RPC_S_INTERFACE_NOT_FOUND ), VALUE_CHAR_HR(RPC_S_ENTRY_ALREADY_EXISTS ), VALUE_CHAR_HR(RPC_S_ENTRY_NOT_FOUND ), VALUE_CHAR_HR(RPC_S_NAME_SERVICE_UNAVAILABLE ), VALUE_CHAR_HR(RPC_S_INVALID_NAF_ID ), VALUE_CHAR_HR(RPC_S_CANNOT_SUPPORT ), VALUE_CHAR_HR(RPC_S_NO_CONTEXT_AVAILABLE ), VALUE_CHAR_HR(RPC_S_INTERNAL_ERROR ), VALUE_CHAR_HR(RPC_S_ZERO_DIVIDE ), VALUE_CHAR_HR(RPC_S_ADDRESS_ERROR ), VALUE_CHAR_HR(RPC_S_FP_DIV_ZERO ), VALUE_CHAR_HR(RPC_S_FP_UNDERFLOW ), VALUE_CHAR_HR(RPC_S_FP_OVERFLOW ), VALUE_CHAR_HR(RPC_X_NO_MORE_ENTRIES ), VALUE_CHAR_HR(RPC_X_SS_CHAR_TRANS_OPEN_FAIL ), VALUE_CHAR_HR(RPC_X_SS_CHAR_TRANS_SHORT_FILE ), VALUE_CHAR_HR(RPC_X_SS_IN_NULL_CONTEXT ), VALUE_CHAR_HR(RPC_X_SS_CONTEXT_DAMAGED ), VALUE_CHAR_HR(RPC_X_SS_HANDLES_MISMATCH ), VALUE_CHAR_HR(RPC_X_SS_CANNOT_GET_CALL_HANDLE ), VALUE_CHAR_HR(RPC_X_NULL_REF_POINTER ), VALUE_CHAR_HR(RPC_X_ENUM_VALUE_OUT_OF_RANGE ), VALUE_CHAR_HR(RPC_X_BYTE_COUNT_TOO_SMALL ), VALUE_CHAR_HR(RPC_X_BAD_STUB_DATA ), VALUE_CHAR_HR(ERROR_INVALID_USER_BUFFER ), VALUE_CHAR_HR(ERROR_UNRECOGNIZED_MEDIA ), VALUE_CHAR_HR(ERROR_NO_TRUST_LSA_SECRET ), VALUE_CHAR_HR(ERROR_NO_TRUST_SAM_ACCOUNT ), VALUE_CHAR_HR(ERROR_TRUSTED_DOMAIN_FAILURE ), VALUE_CHAR_HR(ERROR_TRUSTED_RELATIONSHIP_FAILURE ), VALUE_CHAR_HR(ERROR_TRUST_FAILURE ), VALUE_CHAR_HR(RPC_S_CALL_IN_PROGRESS ), VALUE_CHAR_HR(ERROR_NETLOGON_NOT_STARTED ), VALUE_CHAR_HR(ERROR_ACCOUNT_EXPIRED ), VALUE_CHAR_HR(ERROR_REDIRECTOR_HAS_OPEN_HANDLES ), VALUE_CHAR_HR(ERROR_PRINTER_DRIVER_ALREADY_INSTALLED ), VALUE_CHAR_HR(ERROR_UNKNOWN_PORT ), VALUE_CHAR_HR(ERROR_UNKNOWN_PRINTER_DRIVER ), VALUE_CHAR_HR(ERROR_UNKNOWN_PRINTPROCESSOR ), VALUE_CHAR_HR(ERROR_INVALID_SEPARATOR_FILE ), VALUE_CHAR_HR(ERROR_INVALID_PRIORITY ), VALUE_CHAR_HR(ERROR_INVALID_PRINTER_NAME ), VALUE_CHAR_HR(ERROR_PRINTER_ALREADY_EXISTS ), VALUE_CHAR_HR(ERROR_INVALID_PRINTER_COMMAND ), VALUE_CHAR_HR(ERROR_INVALID_DATATYPE ), VALUE_CHAR_HR(ERROR_INVALID_ENVIRONMENT ), VALUE_CHAR_HR(RPC_S_NO_MORE_BINDINGS ), VALUE_CHAR_HR(ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT ), VALUE_CHAR_HR(ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT ), VALUE_CHAR_HR(ERROR_NOLOGON_SERVER_TRUST_ACCOUNT ), VALUE_CHAR_HR(ERROR_DOMAIN_TRUST_INCONSISTENT ), VALUE_CHAR_HR(ERROR_SERVER_HAS_OPEN_HANDLES ), VALUE_CHAR_HR(ERROR_RESOURCE_DATA_NOT_FOUND ), VALUE_CHAR_HR(ERROR_RESOURCE_TYPE_NOT_FOUND ), VALUE_CHAR_HR(ERROR_RESOURCE_NAME_NOT_FOUND ), VALUE_CHAR_HR(ERROR_RESOURCE_LANG_NOT_FOUND ), VALUE_CHAR_HR(ERROR_NOT_ENOUGH_QUOTA ), VALUE_CHAR_HR(RPC_S_NO_INTERFACES ), VALUE_CHAR_HR(RPC_S_CALL_CANCELLED ), VALUE_CHAR_HR(RPC_S_BINDING_INCOMPLETE ), VALUE_CHAR_HR(RPC_S_COMM_FAILURE ), VALUE_CHAR_HR(RPC_S_UNSUPPORTED_AUTHN_LEVEL ), VALUE_CHAR_HR(RPC_S_NO_PRINC_NAME ), VALUE_CHAR_HR(RPC_S_NOT_RPC_ERROR ), VALUE_CHAR_HR(RPC_S_UUID_LOCAL_ONLY ), VALUE_CHAR_HR(RPC_S_SEC_PKG_ERROR ), VALUE_CHAR_HR(RPC_S_NOT_CANCELLED ), VALUE_CHAR_HR(RPC_X_INVALID_ES_ACTION ), VALUE_CHAR_HR(RPC_X_WRONG_ES_VERSION ), VALUE_CHAR_HR(RPC_X_WRONG_STUB_VERSION ), VALUE_CHAR_HR(RPC_X_INVALID_PIPE_OBJECT ), VALUE_CHAR_HR(RPC_X_INVALID_PIPE_OPERATION ), VALUE_CHAR_HR(RPC_X_WRONG_PIPE_VERSION ), VALUE_CHAR_HR(RPC_S_GROUP_MEMBER_NOT_FOUND ), VALUE_CHAR_HR(EPT_S_CANT_CREATE ), VALUE_CHAR_HR(RPC_S_INVALID_OBJECT ), VALUE_CHAR_HR(ERROR_INVALID_TIME ), VALUE_CHAR_HR(ERROR_INVALID_FORM_NAME ), VALUE_CHAR_HR(ERROR_INVALID_FORM_SIZE ), VALUE_CHAR_HR(ERROR_ALREADY_WAITING ), VALUE_CHAR_HR(ERROR_PRINTER_DELETED ), VALUE_CHAR_HR(ERROR_INVALID_PRINTER_STATE ), VALUE_CHAR_HR(ERROR_PASSWORD_MUST_CHANGE ), VALUE_CHAR_HR(ERROR_DOMAIN_CONTROLLER_NOT_FOUND ), VALUE_CHAR_HR(ERROR_ACCOUNT_LOCKED_OUT ), VALUE_CHAR_HR(OR_INVALID_OXID ), VALUE_CHAR_HR(OR_INVALID_OID ), VALUE_CHAR_HR(OR_INVALID_SET ), VALUE_CHAR_HR(RPC_S_SEND_INCOMPLETE ), VALUE_CHAR_HR(ERROR_NO_BROWSER_SERVERS_FOUND ), VALUE_CHAR_HR(ERROR_INVALID_PIXEL_FORMAT ), VALUE_CHAR_HR(ERROR_BAD_DRIVER ), VALUE_CHAR_HR(ERROR_INVALID_WINDOW_STYLE ), VALUE_CHAR_HR(ERROR_METAFILE_NOT_SUPPORTED ), VALUE_CHAR_HR(ERROR_TRANSFORM_NOT_SUPPORTED ), VALUE_CHAR_HR(ERROR_CLIPPING_NOT_SUPPORTED ), VALUE_CHAR_HR(ERROR_UNKNOWN_PRINT_MONITOR ), VALUE_CHAR_HR(ERROR_PRINTER_DRIVER_IN_USE ), VALUE_CHAR_HR(ERROR_SPOOL_FILE_NOT_FOUND ), VALUE_CHAR_HR(ERROR_SPL_NO_STARTDOC ), VALUE_CHAR_HR(ERROR_SPL_NO_ADDJOB ), VALUE_CHAR_HR(ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED ), VALUE_CHAR_HR(ERROR_PRINT_MONITOR_ALREADY_INSTALLED ), VALUE_CHAR_HR(ERROR_INVALID_PRINT_MONITOR ), VALUE_CHAR_HR(ERROR_PRINT_MONITOR_IN_USE ), VALUE_CHAR_HR(ERROR_PRINTER_HAS_JOBS_QUEUED ), VALUE_CHAR_HR(ERROR_SUCCESS_REBOOT_REQUIRED ), VALUE_CHAR_HR(ERROR_SUCCESS_RESTART_REQUIRED ), VALUE_CHAR_HR(ERROR_WINS_INTERNAL ), VALUE_CHAR_HR(ERROR_CAN_NOT_DEL_LOCAL_WINS ), VALUE_CHAR_HR(ERROR_STATIC_INIT ), VALUE_CHAR_HR(ERROR_INC_BACKUP ), VALUE_CHAR_HR(ERROR_FULL_BACKUP ), VALUE_CHAR_HR(ERROR_REC_NON_EXISTENT ), VALUE_CHAR_HR(ERROR_RPL_NOT_ALLOWED ), VALUE_CHAR(CO_E_INIT_SHARED_ALLOCATOR ), VALUE_CHAR(CO_E_INIT_MEMORY_ALLOCATOR ), VALUE_CHAR(CO_E_INIT_CLASS_CACHE ), VALUE_CHAR(CO_E_INIT_RPC_CHANNEL ), VALUE_CHAR(OLE_E_OLEVERB ), VALUE_CHAR(OLE_E_ADVF ), VALUE_CHAR(OLE_E_ENUM_NOMORE ), VALUE_CHAR(OLE_E_ADVISENOTSUPPORTED ), VALUE_CHAR(OLE_E_NOCONNECTION ), VALUE_CHAR(OLE_E_NOTRUNNING ), VALUE_CHAR(OLE_E_NOCACHE ), VALUE_CHAR(OLE_E_BLANK ), VALUE_CHAR(OLE_E_CLASSDIFF ), VALUE_CHAR(OLE_E_CANT_GETMONIKER ), VALUE_CHAR(OLE_E_CANT_BINDTOSOURCE ), VALUE_CHAR(OLE_E_STATIC ), VALUE_CHAR(OLE_E_PROMPTSAVECANCELLED ), VALUE_CHAR(OLE_E_INVALIDRECT ), VALUE_CHAR(OLE_E_WRONGCOMPOBJ ), VALUE_CHAR(OLE_E_INVALIDHWND ), VALUE_CHAR(OLE_E_NOT_INPLACEACTIVE ), VALUE_CHAR(OLE_E_CANTCONVERT ), VALUE_CHAR(OLE_E_NOSTORAGE ), VALUE_CHAR(DRAGDROP_E_NOTREGISTERED ), VALUE_CHAR(DRAGDROP_E_ALREADYREGISTERED ), VALUE_CHAR(DRAGDROP_E_INVALIDHWND ), VALUE_CHAR(CLASS_E_CLASSNOTAVAILABLE ), VALUE_CHAR(REGDB_E_READREGDB ), VALUE_CHAR(REGDB_E_WRITEREGDB ), VALUE_CHAR(REGDB_E_KEYMISSING ), VALUE_CHAR(REGDB_E_INVALIDVALUE ), VALUE_CHAR(REGDB_E_IIDNOTREG ), VALUE_CHAR(CACHE_E_NOCACHE_UPDATED ), VALUE_CHAR(OLEOBJ_E_NOVERBS ), VALUE_CHAR(OLEOBJ_E_INVALIDVERB ), VALUE_CHAR(CLIPBRD_E_CANT_OPEN ), VALUE_CHAR(CLIPBRD_E_CANT_EMPTY ), VALUE_CHAR(CLIPBRD_E_CANT_SET ), VALUE_CHAR(CLIPBRD_E_BAD_DATA ), VALUE_CHAR(CLIPBRD_E_CANT_CLOSE ), VALUE_CHAR(OLE_S_USEREG ), VALUE_CHAR(OLE_S_STATIC ), VALUE_CHAR(DRAGDROP_S_DROP ), VALUE_CHAR(DRAGDROP_S_CANCEL ), VALUE_CHAR(DRAGDROP_S_USEDEFAULTCURSORS ), VALUE_CHAR(MK_S_REDUCED_TO_SELF ), VALUE_CHAR(MK_S_ME ), VALUE_CHAR(MK_S_HIM ), VALUE_CHAR(MK_S_US ), VALUE_CHAR(MK_S_MONIKERALREADYREGISTERED ), VALUE_CHAR(CO_E_CLASS_CREATE_FAILED ), VALUE_CHAR(CO_E_SCM_ERROR ), VALUE_CHAR(CO_E_SCM_RPC_FAILURE ), VALUE_CHAR(CO_E_BAD_PATH ), VALUE_CHAR(CO_E_SERVER_EXEC_FAILURE ), VALUE_CHAR(CO_E_OBJSRV_RPC_FAILURE ), VALUE_CHAR(MK_E_NO_NORMALIZED ), VALUE_CHAR(CO_E_SERVER_STOPPING ), VALUE_CHAR(MEM_E_INVALID_ROOT ), VALUE_CHAR(MEM_E_INVALID_LINK ), VALUE_CHAR(MEM_E_INVALID_SIZE ), VALUE_CHAR(TYPE_E_BUFFERTOOSMALL ), VALUE_CHAR(TYPE_E_INVDATAREAD ), VALUE_CHAR(TYPE_E_UNSUPFORMAT ), VALUE_CHAR(TYPE_E_REGISTRYACCESS ), VALUE_CHAR(TYPE_E_LIBNOTREGISTERED ), VALUE_CHAR(TYPE_E_UNDEFINEDTYPE ), VALUE_CHAR(TYPE_E_QUALIFIEDNAMEDISALLOWED ), VALUE_CHAR(TYPE_E_INVALIDSTATE ), VALUE_CHAR(TYPE_E_WRONGTYPEKIND ), VALUE_CHAR(TYPE_E_ELEMENTNOTFOUND ), VALUE_CHAR(TYPE_E_AMBIGUOUSNAME ), VALUE_CHAR(TYPE_E_NAMECONFLICT ), VALUE_CHAR(TYPE_E_UNKNOWNLCID ), VALUE_CHAR(TYPE_E_DLLFUNCTIONNOTFOUND ), VALUE_CHAR(TYPE_E_BADMODULEKIND ), VALUE_CHAR(TYPE_E_SIZETOOBIG ), VALUE_CHAR(TYPE_E_DUPLICATEID ), VALUE_CHAR(TYPE_E_INVALIDID ), VALUE_CHAR(TYPE_E_TYPEMISMATCH ), VALUE_CHAR(TYPE_E_OUTOFBOUNDS ), VALUE_CHAR(TYPE_E_IOERROR ), VALUE_CHAR(TYPE_E_CANTCREATETMPFILE ), VALUE_CHAR(TYPE_E_CANTLOADLIBRARY ), VALUE_CHAR(TYPE_E_INCONSISTENTPROPFUNCS ), VALUE_CHAR(TYPE_E_CIRCULARTYPE ), VALUE_CHAR(RPC_E_CALL_REJECTED ), VALUE_CHAR(RPC_E_CALL_CANCELED ), VALUE_CHAR(RPC_E_CANTPOST_INSENDCALL ), VALUE_CHAR(RPC_E_CANTCALLOUT_INASYNCCALL ), VALUE_CHAR(RPC_E_CANTCALLOUT_INEXTERNALCALL ), VALUE_CHAR(RPC_E_CONNECTION_TERMINATED ), VALUE_CHAR(RPC_E_SERVER_DIED ), VALUE_CHAR(RPC_E_CLIENT_DIED ), VALUE_CHAR(RPC_E_INVALID_DATAPACKET ), VALUE_CHAR(RPC_E_CANTTRANSMIT_CALL ), VALUE_CHAR(RPC_E_CLIENT_CANTMARSHAL_DATA ), VALUE_CHAR(RPC_E_CLIENT_CANTUNMARSHAL_DATA ), VALUE_CHAR(RPC_E_SERVER_CANTMARSHAL_DATA ), VALUE_CHAR(RPC_E_SERVER_CANTUNMARSHAL_DATA ), VALUE_CHAR(RPC_E_INVALID_DATA ), VALUE_CHAR(RPC_E_INVALID_PARAMETER ), VALUE_CHAR(RPC_E_CANTCALLOUT_AGAIN ), VALUE_CHAR(RPC_E_SERVER_DIED_DNE ), VALUE_CHAR(RPC_E_SYS_CALL_FAILED ), VALUE_CHAR(RPC_E_OUT_OF_RESOURCES ), VALUE_CHAR(RPC_E_ATTEMPTED_MULTITHREAD ), VALUE_CHAR(RPC_E_NOT_REGISTERED ), VALUE_CHAR(RPC_E_FAULT ), VALUE_CHAR(RPC_E_SERVERFAULT ), VALUE_CHAR(RPC_E_CHANGED_MODE ), VALUE_CHAR(RPC_E_INVALIDMETHOD ), VALUE_CHAR(RPC_E_DISCONNECTED ), VALUE_CHAR(RPC_E_RETRY ), VALUE_CHAR(RPC_E_SERVERCALL_RETRYLATER ), VALUE_CHAR(RPC_E_SERVERCALL_REJECTED ), VALUE_CHAR(RPC_E_INVALID_CALLDATA ), VALUE_CHAR(RPC_E_CANTCALLOUT_ININPUTSYNCCALL ), VALUE_CHAR(RPC_E_WRONG_THREAD ), VALUE_CHAR(RPC_E_THREAD_NOT_INIT ), VALUE_CHAR(RPC_E_VERSION_MISMATCH ), VALUE_CHAR(RPC_E_INVALID_HEADER ), VALUE_CHAR(RPC_E_INVALID_EXTENSION ), VALUE_CHAR(RPC_E_INVALID_IPID ), VALUE_CHAR(RPC_E_INVALID_OBJECT ), VALUE_CHAR(RPC_S_CALLPENDING ), VALUE_CHAR(RPC_S_WAITONTIMER ), VALUE_CHAR(RPC_E_CALL_COMPLETE ), VALUE_CHAR(RPC_E_UNSECURE_CALL ), VALUE_CHAR(RPC_E_TOO_LATE ), VALUE_CHAR(RPC_E_NO_GOOD_SECURITY_PACKAGES ), VALUE_CHAR(RPC_E_ACCESS_DENIED ), VALUE_CHAR(RPC_E_REMOTE_DISABLED ), VALUE_CHAR(RPC_E_INVALID_OBJREF ), VALUE_CHAR(RPC_E_UNEXPECTED ), VALUE_CHAR(TRUST_E_PROVIDER_UNKNOWN ), VALUE_CHAR(TRUST_E_ACTION_UNKNOWN ), VALUE_CHAR(TRUST_E_SUBJECT_FORM_UNKNOWN ), VALUE_CHAR(TRUST_E_SUBJECT_NOT_TRUSTED ), VALUE_CHAR(PERSIST_E_SIZEDEFINITE ), VALUE_CHAR(PERSIST_E_SIZEINDEFINITE ), VALUE_CHAR(PERSIST_E_NOTSELFSIZING ), VALUE_CHAR(TRUST_E_NOSIGNATURE ), VALUE_CHAR(CERT_E_EXPIRED ), VALUE_CHAR(CERT_E_ROLE ), VALUE_CHAR(CERT_E_PATHLENCONST ), VALUE_CHAR(CERT_E_CRITICAL ), VALUE_CHAR(CERT_E_PURPOSE ), VALUE_CHAR(CERT_E_ISSUERCHAINING ), VALUE_CHAR(CERT_E_MALFORMED ), VALUE_CHAR(CERT_E_UNTRUSTEDROOT ), VALUE_CHAR(CERT_E_CHAINING ), }; //////////////////////////////////////////////////////////////////////// // PROPSTATUSMAP // //////////////////////////////////////////////////////////////////////// const static WIDENAMEMAP g_rgPropStatusMap[] = { VALUE_WCHAR(DBPROPSTATUS_OK), VALUE_WCHAR(DBPROPSTATUS_NOTSUPPORTED), VALUE_WCHAR(DBPROPSTATUS_BADVALUE), VALUE_WCHAR(DBPROPSTATUS_BADOPTION), VALUE_WCHAR(DBPROPSTATUS_BADCOLUMN), VALUE_WCHAR(DBPROPSTATUS_NOTALLSETTABLE), VALUE_WCHAR(DBPROPSTATUS_NOTSETTABLE), VALUE_WCHAR(DBPROPSTATUS_NOTSET), VALUE_WCHAR(DBPROPSTATUS_CONFLICTING), //2.1 VALUE_WCHAR(DBPROPSTATUS_NOTAVAILABLE), }; //////////////////////////////////////////////////////////////////////// // WCHAR* GetPropStatusName // //////////////////////////////////////////////////////////////////////// WCHAR* GetPropStatusName(DBPROPSTATUS dbPropStatus) { return GetMapName(dbPropStatus, NUMELE(g_rgPropStatusMap), g_rgPropStatusMap); } //////////////////////////////////////////////////////////////////////// // STATUSMAP // //////////////////////////////////////////////////////////////////////// const static WIDENAMEMAP g_rgStatusMap[] = { VALUE_WCHAR(DBSTATUS_S_OK ), VALUE_WCHAR(DBSTATUS_E_BADACCESSOR ), VALUE_WCHAR(DBSTATUS_E_CANTCONVERTVALUE ), VALUE_WCHAR(DBSTATUS_S_ISNULL ), VALUE_WCHAR(DBSTATUS_S_TRUNCATED ), VALUE_WCHAR(DBSTATUS_E_SIGNMISMATCH ), VALUE_WCHAR(DBSTATUS_E_DATAOVERFLOW ), VALUE_WCHAR(DBSTATUS_E_CANTCREATE ), VALUE_WCHAR(DBSTATUS_E_UNAVAILABLE ), VALUE_WCHAR(DBSTATUS_E_PERMISSIONDENIED ), VALUE_WCHAR(DBSTATUS_E_INTEGRITYVIOLATION ), VALUE_WCHAR(DBSTATUS_E_SCHEMAVIOLATION ), VALUE_WCHAR(DBSTATUS_E_BADSTATUS ), VALUE_WCHAR(DBSTATUS_S_DEFAULT ), //2.0 VALUE_WCHAR(MDSTATUS_S_CELLEMPTY ), VALUE_WCHAR(DBSTATUS_S_IGNORE ), //2.1 VALUE_WCHAR(DBSTATUS_E_DOESNOTEXIST), VALUE_WCHAR(DBSTATUS_E_INVALIDURL), VALUE_WCHAR(DBSTATUS_E_RESOURCELOCKED), VALUE_WCHAR(DBSTATUS_E_RESOURCEEXISTS), VALUE_WCHAR(DBSTATUS_E_CANNOTCOMPLETE), VALUE_WCHAR(DBSTATUS_E_VOLUMENOTFOUND), VALUE_WCHAR(DBSTATUS_E_OUTOFSPACE), VALUE_WCHAR(DBSTATUS_S_CANNOTDELETESOURCE), VALUE_WCHAR(DBSTATUS_E_READONLY), //2.5 VALUE_WCHAR(DBSTATUS_E_CANCELED), VALUE_WCHAR(DBSTATUS_E_NOTCOLLECTION), //2.6 VALUE_WCHAR(DBSTATUS_S_ROWSETCOLUMN ), }; //////////////////////////////////////////////////////////////////////// // WCHAR* GetStatusName // //////////////////////////////////////////////////////////////////////// WCHAR* GetStatusName(DBSTATUS dbStatus, DWORD dwConvFlags) { return GetMapName(dbStatus, NUMELE(g_rgStatusMap), g_rgStatusMap, dwConvFlags); } //////////////////////////////////////////////////////////////////////// // DBSTATUS GetStatusValue // //////////////////////////////////////////////////////////////////////// DBSTATUS GetStatusValue(WCHAR* pwszName) { return GetMapName(pwszName, NUMELE(g_rgStatusMap), g_rgStatusMap); } //////////////////////////////////////////////////////////////////////// // PROPSET // //////////////////////////////////////////////////////////////////////// const static WIDEGUIDMAP g_rgPropSetMaps[] = { //Property Sets VALUE_PWCHAR(DBPROPSET_COLUMN), VALUE_PWCHAR(DBPROPSET_DATASOURCE), VALUE_PWCHAR(DBPROPSET_DATASOURCEINFO), VALUE_PWCHAR(DBPROPSET_DBINIT), VALUE_PWCHAR(DBPROPSET_DBINITALL), VALUE_PWCHAR(DBPROPSET_INDEX), VALUE_PWCHAR(DBPROPSET_TABLE), VALUE_PWCHAR(DBPROPSET_VIEW), VALUE_PWCHAR(DBPROPSET_DATASOURCEALL), VALUE_PWCHAR(DBPROPSET_DATASOURCEINFOALL), VALUE_PWCHAR(DBPROPSET_ROWSET), VALUE_PWCHAR(DBPROPSET_ROWSETALL), VALUE_PWCHAR(DBPROPSET_SESSION), VALUE_PWCHAR(DBPROPSET_SESSIONALL), VALUE_PWCHAR(DBPROPSET_PROPERTIESINERROR), //2.1 VALUE_PWCHAR(DBPROPSET_TRUSTEE), VALUE_PWCHAR(DBPROPSET_COLUMNALL), VALUE_PWCHAR(DBPROPSET_INDEXALL), VALUE_PWCHAR(DBPROPSET_TABLEALL), VALUE_PWCHAR(DBPROPSET_TRUSTEEALL), VALUE_PWCHAR(DBPROPSET_CONSTRAINTALL), //2.6 VALUE_PWCHAR(DBPROPSET_STREAM), VALUE_PWCHAR(DBPROPSET_STREAMALL), //Negative Testing VALUE_PWCHAR(GUID_NULL), }; const static ULONG g_cPropSetMaps = NUMELE(g_rgPropSetMaps); //////////////////////////////////////////////////////////////////////// // IsSpecialPropSet // //////////////////////////////////////////////////////////////////////// BOOL IsSpecialPropSet(REFGUID guidSpecialPropertySet, GUID* pGuidPropertySet) { //Special Property Sets typedef struct _SPECIALGUIDMAP { const GUID* pSpecialPropertySet; const GUID* pGuidPropertySet; } SPECIALGUIDMAP; const static SPECIALGUIDMAP rgSpecialPropSet[] = { & DBPROPSET_COLUMNALL, & DBPROPSET_COLUMN, & DBPROPSET_DATASOURCEALL, & DBPROPSET_DATASOURCE, & DBPROPSET_DATASOURCEINFOALL, & DBPROPSET_DATASOURCEINFO, & DBPROPSET_INDEXALL, & DBPROPSET_INDEX, & DBPROPSET_DBINITALL, & DBPROPSET_DBINIT, & DBPROPSET_SESSIONALL, & DBPROPSET_SESSION, & DBPROPSET_TABLEALL, & DBPROPSET_TABLE, & DBPROPSET_TRUSTEEALL, & DBPROPSET_TRUSTEE, & DBPROPSET_VIEWALL, & DBPROPSET_VIEW, & DBPROPSET_ROWSETALL, & DBPROPSET_ROWSET, & DBPROPSET_STREAMALL, & DBPROPSET_STREAM, }; //Is this one of the special Property Sets for(ULONG iPropSet=0; iPropSetpSpecialPropertySet) { if(pGuidPropertySet) *pGuidPropertySet = *pSpecPropSet->pGuidPropertySet; return TRUE; } } //Not a special set... return FALSE; } //////////////////////////////////////////////////////////////////////// // GetStaticPropValues // //////////////////////////////////////////////////////////////////////// HRESULT GetStaticPropValues(DBPROPID dwPropertyID, REFGUID guidPropertySet, ULONG* pcPropValMap, const WIDENAMEMAP** prgPropValMap) { ASSERT(pcPropValMap); ASSERT(prgPropValMap); //DBPROPSET_ROWSET if(guidPropertySet == DBPROPSET_ROWSET) { switch(dwPropertyID) { case DBPROP_UPDATABILITY: { const static WIDENAMEMAP rgUPDATABILITY[] = { VALUE_WCHAR(DBPROPVAL_UP_CHANGE ), VALUE_WCHAR(DBPROPVAL_UP_DELETE ), VALUE_WCHAR(DBPROPVAL_UP_INSERT ), }; *pcPropValMap = NUMELE(rgUPDATABILITY); *prgPropValMap = rgUPDATABILITY; return S_OK; } }; } else if(guidPropertySet == DBPROPSET_DBINIT) { switch(dwPropertyID) { case DBPROP_INIT_PROMPT: { const static WIDENAMEMAP rgPrompts[] = { VALUE_WCHAR(DBPROMPT_PROMPT), VALUE_WCHAR(DBPROMPT_COMPLETE), VALUE_WCHAR(DBPROMPT_COMPLETEREQUIRED), VALUE_WCHAR(DBPROMPT_NOPROMPT), }; *pcPropValMap = NUMELE(rgPrompts); *prgPropValMap = rgPrompts; return S_OK; } }; } return DB_E_NOTFOUND; } //////////////////////////////////////////////////////////////////////// // GetStaticPropInfo // //////////////////////////////////////////////////////////////////////// HRESULT GetStaticPropInfo(ULONG cPropertyIDSets, DBPROPIDSET* rgPropertyIDSets, ULONG* pcStaticInfoSets, const DBPROPINFOSET** prgStaticInfoSets) { HRESULT hr = S_OK; ASSERT(pcStaticInfoSets); ASSERT(prgStaticInfoSets); //DBPROPSET_COLUMN const static DBPROPINFO rgColumnPropInfo[] = { VALUE_WCHAR(DBPROP_COL_AUTOINCREMENT), DBPROPFLAGS_COLUMN, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_DEFAULT ), DBPROPFLAGS_COLUMN, DBTYPE_EMPTY, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_DESCRIPTION ), DBPROPFLAGS_COLUMN, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_FIXEDLENGTH ), DBPROPFLAGS_COLUMN, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_INCREMENT), DBPROPFLAGS_COLUMN, DBTYPE_EMPTY, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_ISLONG), DBPROPFLAGS_COLUMN, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_NULLABLE ), DBPROPFLAGS_COLUMN, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_PRIMARYKEY ), DBPROPFLAGS_COLUMN, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_UNIQUE ), DBPROPFLAGS_COLUMN, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COLUMNLCID), DBPROPFLAGS_COLUMN, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COL_SEED), DBPROPFLAGS_COLUMN, DBTYPE_EMPTY, {0,0,0,0,0}, }; //DBPROPSET_DATASOURCE const static DBPROPINFO rgDataSourcePropInfo[] = { VALUE_WCHAR(DBPROP_CURRENTCATALOG ), DBPROPFLAGS_DATASOURCE, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MULTIPLECONNECTIONS), DBPROPFLAGS_DATASOURCE, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_RESETDATASOURCE), DBPROPFLAGS_DATASOURCE, DBTYPE_I4, {0,0,0,0,0}, }; //DBPROPSET_DATASOURCEINFO const static DBPROPINFO rgDataSourceInfoPropInfo[] = { VALUE_WCHAR(DBPROP_ACTIVESESSIONS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ALTERCOLUMN), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ASYNCTXNABORT ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ASYNCTXNCOMMIT ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_BYREFACCESSORS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CATALOGLOCATION ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CATALOGTERM ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CATALOGUSAGE ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COLUMNDEFINITION ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COMSERVICES ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CONCATNULLBEHAVIOR ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CONNECTIONSTATUS), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_DATASOURCENAME ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_DATASOURCEREADONLY ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_DATASOURCE_TYPE), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_DBMSNAME ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_DBMSVER ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_DSOTHREADMODEL ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_GENERATEURL), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_GROUPBY ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_HETEROGENEOUSTABLES ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IDENTIFIERCASE), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXINDEXSIZE ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXOPENCHAPTERS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXROWSIZE ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXROWSIZEINCLUDESBLOB ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXTABLESINSELECT ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MULTIPLEPARAMSETS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MULTIPLERESULTS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MULTIPLESTORAGEOBJECTS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MULTITABLEUPDATE ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NULLCOLLATION ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_OLEOBJECTS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_OPENROWSETSUPPORT), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ORDERBYCOLUMNSINSELECT ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_OUTPUTPARAMETERAVAILABILITY ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PERSISTENTIDTYPE ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PREPAREABORTBEHAVIOR ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PREPARECOMMITBEHAVIOR ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PROCEDURETERM ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PROVIDERFRIENDLYNAME), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PROVIDERMEMORY), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PROVIDERFILENAME ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PROVIDEROLEDBVER ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_PROVIDERVER ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_QUOTEDIDENTIFIERCASE ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ROWSETCONVERSIONSONCOMMAND ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SCHEMATERM ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SCHEMAUSAGE ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SERVERNAME), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SQLSUPPORT ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_STRUCTUREDSTORAGE ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SUBQUERIES ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SUPPORTEDTXNDDL ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SUPPORTEDTXNISOLEVELS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SUPPORTEDTXNISORETAIN ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_TABLETERM ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_TABLESTATISTICS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_USERNAME ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BSTR, {0,0,0,0,0}, //OLAP Documention VALUE_WCHAR(MDPROP_AXES), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_FLATTENING_SUPPORT), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_JOINCUBES), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_NAMED_LEVELS), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_RANGEROWSET), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_SLICER), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_CUBEQUALIFICATION), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_OUTERREFERENCE), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_QUERYBYPROPERTY), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_CASESUPPORT), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_STRING_COMPOP), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_DESCFLAGS), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_SET_FUNCTIONS), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_MEMBER_FUNCTIONS), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_NUMERIC_FUNCTIONS), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_FORMULAS), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(MDPROP_MDX_AGGREGATECELL_UPDATE), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, //Not yet doc'd... VALUE_WCHAR(DBPROP_STORAGEFLAGS), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_BOOL, {0,0,0,0,0}, //2.6 VALUE_WCHAR(DBPROP_TABLESTATISTICS ), DBPROPFLAGS_DATASOURCEINFO, DBTYPE_I4, {0,0,0,0,0}, }; //DBPROPSET_INDEX const static DBPROPINFO rgIndexPropInfo[] = { VALUE_WCHAR(DBPROP_INDEX_AUTOUPDATE), DBPROPFLAGS_INDEX, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_CLUSTERED), DBPROPFLAGS_INDEX, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_FILLFACTOR), DBPROPFLAGS_INDEX, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_INITIALSIZE), DBPROPFLAGS_INDEX, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_NULLCOLLATION), DBPROPFLAGS_INDEX, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_NULLS), DBPROPFLAGS_INDEX, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_PRIMARYKEY), DBPROPFLAGS_INDEX, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_SORTBOOKMARKS), DBPROPFLAGS_INDEX, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_TEMPINDEX), DBPROPFLAGS_INDEX, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_TYPE), DBPROPFLAGS_INDEX, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INDEX_UNIQUE), DBPROPFLAGS_INDEX, DBTYPE_BOOL, {0,0,0,0,0}, }; //DBPROPSET_DBINIT const static DBPROPINFO rgInitPropInfo[] = { VALUE_WCHAR(DBPROP_AUTH_CACHE_AUTHINFO ), DBPROPFLAGS_DBINIT, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_AUTH_ENCRYPT_PASSWORD ), DBPROPFLAGS_DBINIT, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_AUTH_INTEGRATED ), DBPROPFLAGS_DBINIT, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_AUTH_MASK_PASSWORD ), DBPROPFLAGS_DBINIT, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_AUTH_PASSWORD ), DBPROPFLAGS_DBINIT, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_AUTH_PERSIST_ENCRYPTED ), DBPROPFLAGS_DBINIT, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO ), DBPROPFLAGS_DBINIT, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_AUTH_USERID ), DBPROPFLAGS_DBINIT, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_ASYNCH), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_BINDFLAGS), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_CATALOG), DBPROPFLAGS_DBINIT, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_DATASOURCE), DBPROPFLAGS_DBINIT, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_GENERALTIMEOUT), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_HWND ), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_IMPERSONATION_LEVEL ), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_LCID ), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_LOCATION ), DBPROPFLAGS_DBINIT, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_LOCKOWNER), DBPROPFLAGS_DBINIT, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_MODE ), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_OLEDBSERVICES), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_PROMPT ), DBPROPFLAGS_DBINIT, DBTYPE_I2, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_PROTECTION_LEVEL ), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_PROVIDERSTRING ), DBPROPFLAGS_DBINIT, DBTYPE_BSTR, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_INIT_TIMEOUT ), DBPROPFLAGS_DBINIT, DBTYPE_I4, {0,0,0,0,0}, }; //DBPROPSET_SESSION const static DBPROPINFO rgSessionPropInfo[] = { VALUE_WCHAR(DBPROP_SESS_AUTOCOMMITISOLEVELS ), DBPROPFLAGS_SESSION, DBTYPE_I4, {0,0,0,0,0}, }; //DBPROPSET_TABLE const static DBPROPINFO rgTablePropInfo[] = { VALUE_WCHAR(DBPROP_TBL_TEMPTABLE ), DBPROPFLAGS_TABLE, DBTYPE_BOOL, {0,0,0,0,0}, }; //DBPROPSET_TRUSTEE const static DBPROPINFO rgTrusteePropInfo[] = { //Documented in Security Whitepaper VALUE_WCHAR(DBPROP_TRUSTEE_USERNAME), DBPROPFLAGS_TRUSTEE, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_TRUSTEE_AUTHENTICATION), DBPROPFLAGS_TRUSTEE, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_TRUSTEE_NEWAUTHENTICATION), DBPROPFLAGS_TRUSTEE, DBTYPE_BOOL, {0,0,0,0,0}, }; //DBPROPSET_VIEW const static DBPROPINFO rgViewPropInfo[] = { VALUE_WCHAR(DBPROP_FILTERCOMPAREOPS ), DBPROPFLAGS_VIEW, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IAccessor ), DBPROPFLAGS_VIEW, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IColumnsInfo ), DBPROPFLAGS_VIEW, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ISupportErrorInfo), DBPROPFLAGS_VIEW, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IViewChapter), DBPROPFLAGS_VIEW, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IViewFilter), DBPROPFLAGS_VIEW, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IViewRowset), DBPROPFLAGS_VIEW, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IViewSort), DBPROPFLAGS_VIEW, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXORSINFILTER ), DBPROPFLAGS_VIEW, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXSORTCOLUMNS ), DBPROPFLAGS_VIEW, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SORTONINDEX ), DBPROPFLAGS_VIEW, DBTYPE_BOOL, {0,0,0,0,0}, }; //DBPROPSET_ROWSET const static DBPROPINFO rgRowsetPropInfo[] = { VALUE_WCHAR(DBPROP_ABORTPRESERVE ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ACCESSORDER), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_APPENDONLY ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_BLOCKINGSTORAGEOBJECTS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_BOOKMARKINFO), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_BOOKMARKS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_BOOKMARKSKIPPED ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_BOOKMARKTYPE ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CACHEDEFERRED ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CANFETCHBACKWARDS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CANHOLDROWS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CANSCROLLBACKWARDS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CHANGEINSERTEDROWS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_CLIENTCURSOR), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COLUMNRESTRICT ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COMMANDTIMEOUT ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_COMMITPRESERVE ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_DEFERRED ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_DELAYSTORAGEOBJECTS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_FINDCOMPAREOPS ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_HIDDENCOLUMNS), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IAccessor ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IChapteredRowset ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IColumnsInfo ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IColumnsInfo2), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IColumnsRowset ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IConnectionPointContainer), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IConvertType ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ICreateRow), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IDBAsynchStatus ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IGetRow), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IGetSession), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IGetSourceRow), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ILockBytes), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IMMOBILEROWS), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IMultipleResults), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IParentRowset), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRow), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowChange), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowSchemaChange), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowset ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetChange ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetCurrentIndex), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetFind ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetIdentity), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetIndex), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetInfo), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetLocate), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetRefresh), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetScroll), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetUpdate), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetView), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IScopedOperations), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ISequentialStream), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IStorage), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IStream), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ISupportErrorInfo), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_LITERALBOOKMARKS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_LITERALIDENTITY ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_LOCKMODE), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXOPENROWS ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXPENDINGROWS ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAXROWS ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MAYWRITECOLUMN ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_MEMORYUSAGE ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFICATIONGRANULARITY ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFICATIONPHASES ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYCOLUMNSET ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWDELETE ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWFIRSTCHANGE ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWINSERT ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWRESYNCH ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWSETRELEASE ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWUNDOCHANGE ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWUNDODELETE ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWUNDOINSERT ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_NOTIFYROWUPDATE ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ORDEREDBOOKMARKS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_OTHERINSERT ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_OTHERUPDATEDELETE ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_OWNINSERT ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_OWNUPDATEDELETE ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_QUICKRESTART ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_REENTRANTEVENTS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_REMOVEDELETED ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_REPORTMULTIPLECHANGES ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_RETURNPENDINGINSERTS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ROW_BULKOPS), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ROWRESTRICT ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ROWSET_ASYNCH ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_ROWTHREADMODEL ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SERVERCURSOR ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SERVERDATAONINSERT), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_STRONGIDENTITY ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_TRANSACTEDOBJECT ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_UNIQUEROWS), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_UPDATABILITY ), DBPROPFLAGS_ROWSET, DBTYPE_I4, {0,0,0,0,0}, //2.6 //TODO: IRowsetBookmark and property are not doc'd - as of today? VALUE_WCHAR(DBPROP_IRowsetBookmark ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_SKIPROWCOUNTRESULTS ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, //Currently not doc'd due to unknown property set... VALUE_WCHAR(DBPROP_IBindResource), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IDBBinderProperties), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRegisterProvider), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_IRowsetResynch), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, //Deprecated Properties // VALUE_WCHAR(DBPROP_MARSHALLABLE ), DBPROPFLAGS_ROWSET, DBTYPE_BOOL, {0,0,0,0,0}, }; //DBPROPSET_STREAM const static DBPROPINFO rgStreamPropInfo[] = { VALUE_WCHAR(DBPROP_OUTPUTSTREAM ), DBPROPFLAGS_STREAM, DBTYPE_IUNKNOWN, {0,0,0,0,0}, VALUE_WCHAR(DBPROP_OUTPUTENCODING), DBPROPFLAGS_STREAM, DBTYPE_BSTR, {0,0,0,0,0}, }; //Now build a static map of all the sets... const static DBPROPINFOSET rgAllPropInfoSet[] = { //DBPROPSET_COLUMN (DBPROPINFO*)rgColumnPropInfo, NUMELE(rgColumnPropInfo), {0xc8b522b9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_DATASOURCE (DBPROPINFO*)rgDataSourcePropInfo, NUMELE(rgDataSourcePropInfo), {0xc8b522ba,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_DATASOURCEINFO (DBPROPINFO*)rgDataSourceInfoPropInfo, NUMELE(rgDataSourceInfoPropInfo), {0xc8b522bb,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_INDEX (DBPROPINFO*)rgIndexPropInfo, NUMELE(rgIndexPropInfo), {0xc8b522bd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_DBINIT (DBPROPINFO*)rgInitPropInfo, NUMELE(rgInitPropInfo), {0xc8b522bc,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_SESSION (DBPROPINFO*)rgSessionPropInfo, NUMELE(rgSessionPropInfo), {0xc8b522c6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_TABLE (DBPROPINFO*)rgTablePropInfo, NUMELE(rgTablePropInfo), {0xc8b522bf,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_TRUSTEE (DBPROPINFO*)rgTrusteePropInfo, NUMELE(rgTrusteePropInfo), {0xc8b522e1,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_VIEW (DBPROPINFO*)rgViewPropInfo, NUMELE(rgViewPropInfo), {0xc8b522df,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_ROWSET (DBPROPINFO*)rgRowsetPropInfo, NUMELE(rgRowsetPropInfo), {0xc8b522be,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, //DBPROPSET_STREAM (DBPROPINFO*)rgStreamPropInfo, NUMELE(rgStreamPropInfo), {0xc8b522fd,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}}, }; if(cPropertyIDSets == 0) { //Return all OLE DB Defined sets to the caller. *pcStaticInfoSets = NUMELE(rgAllPropInfoSet); *prgStaticInfoSets = rgAllPropInfoSet; return S_OK; } else { //Currently this routine only handles one level. //All that we currently need at this point for RowsetViewer... ASSERT(cPropertyIDSets==1); ASSERT(rgPropertyIDSets && rgPropertyIDSets[0].cPropertyIDs==0); //First, is this a special property set, then map it to its defined property set...? GUID guidSpecialPropertySet = rgPropertyIDSets[0].guidPropertySet; IsSpecialPropSet(guidSpecialPropertySet, &guidSpecialPropertySet); //Now loop through all the Property Sets and see which is desired... for(ULONG iPropSet=0; iPropSetguidPropertySet) { *pcStaticInfoSets = 1; *prgStaticInfoSets = pPropInfoSet; return S_OK; } } } //CLEANUP: //Otherwise propety set was not found... *pcStaticInfoSets = 0; *prgStaticInfoSets = NULL; return DB_E_NOTFOUND; }; //////////////////////////////////////////////////////////////////////// // GetAllocedPropInfo // //////////////////////////////////////////////////////////////////////// HRESULT GetAllocedPropInfo(ULONG cPropertyIDSets, DBPROPIDSET* rgPropertyIDSets, ULONG* pcPropInfoSets, DBPROPINFOSET** prgPropInfoSets) { HRESULT hr = S_OK; ASSERT(pcPropInfoSets); ASSERT(prgPropInfoSets); ULONG iPropSet,cStaticInfoSets = 0; const DBPROPINFOSET* rgStaticInfoSets = NULL; ULONG cPropInfoSets = 0; DBPROPINFOSET* rgPropInfoSets = NULL; //Delegate TESTC(hr = GetStaticPropInfo(cPropertyIDSets, rgPropertyIDSets, &cStaticInfoSets, &rgStaticInfoSets)); //Now dump this static info into an allocated DBPROPINFOSET... SAFE_ALLOC(rgPropInfoSets, DBPROPINFOSET, cStaticInfoSets); cPropInfoSets = cStaticInfoSets; for(iPropSet=0; iPropSetpwszDescription; CLEANUP: return NULL; } //////////////////////////////////////////////////////////////////////// // WCHAR* GetPropSetName // //////////////////////////////////////////////////////////////////////// WCHAR* GetPropSetName(REFGUID guidPropertySet) { return GetMapName(guidPropertySet, g_cPropSetMaps, g_rgPropSetMaps); } //////////////////////////////////////////////////////////////////////// // LCID // //////////////////////////////////////////////////////////////////////// const static WIDENAMEMAP g_rgLCID[] = { VALUE_WCHAR(LOCALE_SYSTEM_DEFAULT), VALUE_WCHAR(LOCALE_USER_DEFAULT), VALUE_WCHAR(LOCALE_NEUTRAL), VALUE_WCHAR(GetSystemDefaultLCID()), VALUE_WCHAR(GetUserDefaultLCID()), }; const static ULONG g_cLCID = NUMELE(g_rgLCID); //////////////////////////////////////////////////////////////////////// // CHAR* GetMapName // //////////////////////////////////////////////////////////////////////// CHAR* GetMapName(LONG lItem, ULONG cNameMap, const NAMEMAP* rgNameMap) { for(ULONG i=0; idwStatus) { case DBSTATUS_S_OK: case DBSTATUS_S_ISNULL: case DBSTATUS_S_DEFAULT: case DBSTATUS_S_IGNORE: break; default: { //Convert the Column ID into a string WCHAR wszBuffer[MAX_NAME_LEN] = {0}; DBIDToString(&pColAccess->columnid, wszBuffer, MAX_NAME_LEN); //Display Status Error to the user... iSelect = wMessageBox(GetFocus(), MB_TASKMODAL | MB_ICONERROR | MB_OKCANCEL, wsz_ERROR, L"ColumnAccess Status Errors:\n" L"rgColAccess[%lu]\n\n" L"columnid = %s\n" L"wType = %s\n" L"cbMaxLen = %lu\n" L"bPrecision = %d\n" L"bScale = %d\n\n" L"dwStatus = %s\n" L"cbDataLen = %lu\n", i, wszBuffer, GetDBTypeName(pColAccess->wType), pColAccess->cbMaxLen, pColAccess->bPrecision, pColAccess->bScale, GetStatusName(pColAccess->dwStatus), pColAccess->cbDataLen ); if(iSelect == IDCANCEL) { hrReturned = DB_E_CANCELED; goto CLEANUP; } break; } } } CLEANUP: return hrReturned; } //////////////////////////////////////////////////////////////////////// // HRESULT DisplayColumnErrors // ///////////////////////////////////////////////////////////////////////////// HRESULT DisplayColumnErrors(HRESULT hrReturned, DBORDINAL cColumns, DBID* rgColumns, DBSTATUS* rgStatus) { //Display the badstatus for pData operations. //(ie: GetData / SetData / InsertRow) INT iSelect = 0; //Binding Errors only occur with the following returned codes... if(hrReturned!=DB_S_ERRORSOCCURRED && hrReturned!=DB_E_ERRORSOCCURRED) return hrReturned; for(ULONG i=0; icProperties; iProp++) { DBPROP* pProp = &pPropSet->rgProperties[iProp]; if(pProp->dwStatus != DBPROPSTATUS_OK) { WCHAR wszBuffer[MAX_NAME_LEN+1]; WCHAR wszPropSet[MAX_NAME_LEN+1]; WCHAR* pwszPropSet = GetPropSetName(pPropSet->guidPropertySet); if(pwszPropSet == NULL) { StringFromGUID2(pPropSet->guidPropertySet, wszPropSet, MAX_NAME_LEN); pwszPropSet = wszPropSet; } //Find property Value wszBuffer[0] = wEOL; VariantToString(&pProp->vValue, wszBuffer, MAX_NAME_LEN, CONV_VARBOOL); //Append the Error INT iSelect = wMessageBox ( GetFocus(), MB_TASKMODAL | MB_ICONERROR | MB_OKCANCEL, wsz_ERROR, L"Properties in Error:\n" L"rgPropSets[%d].rgProperties[%d]\n\n" L"guidPropertySet\t= %s\n" L"dwPropertyID\t= %s (0x%x)\n" L"dwOptions\t\t= %s\n" L"vValue.vt\t\t= %s\n" L"vValue\t\t= %s\n\n" L"dbStatus\t\t= %s", iPropSet,iProp, pwszPropSet, GetPropertyName(pProp->dwPropertyID, pPropSet->guidPropertySet), pProp->dwPropertyID, pProp->dwOptions == DBPROPOPTIONS_REQUIRED ? L"DBPROPOPTIONS_REQUIRED" : L"DBPROPOPTIONS_OPTIONAL", GetVariantTypeName(V_VT(&pProp->vValue)), wszBuffer, GetPropStatusName(pProp->dwStatus) ); if(iSelect == IDCANCEL) { //NOTE: Will return DB_E_CANCELED if the user doesn't wish to continue hrReturned = DB_E_CANCELED; goto CLEANUP; } } } } CLEANUP: return hrReturned; } //////////////////////////////////////////////////////////////////////// // HRESULT DisplayPropErrors // ///////////////////////////////////////////////////////////////////////////// HRESULT DisplayPropErrors(HRESULT hrReturned, ULONG cPropInfoSets, DBPROPINFOSET* rgPropInfoSets) { //Property Errors only occur with the following returned codes... if(hrReturned!=DB_S_ERRORSOCCURRED && hrReturned!=DB_E_ERRORSOCCURRED) return hrReturned; //Display all property errors... for(ULONG iPropInfoSet=0; iPropInfoSetcPropertyInfos; iPropInfo++) { DBPROPINFO* pPropInfo = &pPropInfoSet->rgPropertyInfos[iPropInfo]; if(pPropInfo->dwFlags == DBPROPFLAGS_NOTSUPPORTED) { WCHAR wszBuffer[MAX_NAME_LEN+1]; WCHAR wszPropSet[MAX_NAME_LEN+1]; WCHAR* pwszPropSet = GetPropSetName(pPropInfoSet->guidPropertySet); if(pwszPropSet == NULL) { StringFromGUID2(pPropInfoSet->guidPropertySet, wszPropSet, MAX_NAME_LEN); pwszPropSet = wszPropSet; } //Find property Value wszBuffer[0] = wEOL; VariantToString(&pPropInfo->vValues, wszBuffer, MAX_NAME_LEN, CONV_VARBOOL); //Append the Error INT iSelect = wMessageBox ( GetFocus(), MB_TASKMODAL | MB_ICONERROR | MB_OKCANCEL, wsz_ERROR, L"Properties in Error:\n" L"rgPropInfoSets[%d].rgPropertyInfos[%d]\n\n" L"guidPropertySet\t= %s\n" L"pwszDescription\t= %s\n" L"dwPropertyID\t= %s (0x%x)\n" L"vtType\t\t= %s\n" L"vValues\t\t= %s\n\n" L"dwFlags\t\t= %s (0x%x)", iPropInfoSet,iPropInfo, pwszPropSet, pPropInfo->pwszDescription, GetPropertyName(pPropInfo->dwPropertyID, pPropInfoSet->guidPropertySet), pPropInfo->dwPropertyID, GetVariantTypeName(pPropInfo->vtType), wszBuffer, L"DBPROPFLAGS_NOTSUPPORTED", pPropInfo->dwFlags ); if(iSelect == IDCANCEL) { //NOTE: Will return DB_E_CANCELED if the user doesn't wish to continue hrReturned = DB_E_CANCELED; goto CLEANUP; } } } } CLEANUP: return hrReturned; } //////////////////////////////////////////////////////////////////////// // HRESULT DisplayPropErrors // ///////////////////////////////////////////////////////////////////////////// HRESULT DisplayPropErrors(HRESULT hrReturned, REFIID riid, IUnknown* pIUnknown) { ASSERT(pIUnknown); //Property Errors only occur with the following returned codes... if(hrReturned!=DB_S_ERRORSOCCURRED && hrReturned!=DB_E_ERRORSOCCURRED) return hrReturned; //GetProperties with DBPROPSET_PROPERTIESINERROR. ULONG cPropSets = 0; DBPROPSET* rgPropSets = NULL; IDBProperties* pIDBProperties = NULL; ICommandProperties* pICommandProperties = NULL; //Setup input DBPROPSET_PROPERTIESINERROR const ULONG cPropertyIDSets = 1; DBPROPIDSET rgPropertyIDSets[cPropertyIDSets]; rgPropertyIDSets[0].guidPropertySet = DBPROPSET_PROPERTIESINERROR; rgPropertyIDSets[0].cPropertyIDs = 0; rgPropertyIDSets[0].rgPropertyIDs = NULL; //Which GetProperties if(riid == IID_IDBProperties) { XTESTC(pIUnknown->QueryInterface(IID_IDBProperties, (void**)&pIDBProperties)); XTESTC(pIDBProperties->GetProperties(cPropertyIDSets, rgPropertyIDSets, &cPropSets, &rgPropSets)); } else { XTESTC(pIUnknown->QueryInterface(IID_ICommandProperties, (void**)&pICommandProperties)); XTESTC(pICommandProperties->GetProperties(cPropertyIDSets, rgPropertyIDSets, &cPropSets, &rgPropSets)); } //Now delegate to display all properties in error TESTC(hrReturned = DisplayPropErrors(hrReturned, cPropSets, rgPropSets)); CLEANUP: FreeProperties(&cPropSets, &rgPropSets); SAFE_RELEASE(pICommandProperties); SAFE_RELEASE(pIDBProperties); return hrReturned; } //////////////////////////////////////////////////////////////////////// // HRESULT DisplayRefCountErrors // ///////////////////////////////////////////////////////////////////////////// HRESULT DisplayRefCountErrors(WCHAR* pwszName, ULONG ulActRefCount, ULONG ulExpRefCount) { ASSERT(pwszName); //Display RefCount difference... if(ulActRefCount != ulExpRefCount && GetErrorPosting(EP_REFCOUNT_FAILURE)) { wMessageBox ( GetFocus(), MB_TASKMODAL | MB_ICONERROR | MB_OK, wsz_ERROR, L"%s\n" L"RefCount = %d, Expected = %d", pwszName, ulActRefCount, ulExpRefCount ); } return S_OK; } //////////////////////////////////////////////////////////////////////// // HRESULT DisplayAllErrors // ///////////////////////////////////////////////////////////////////////////// HRESULT DisplayAllErrors(HRESULT hrActual, WCHAR* pwszFile, ULONG ulLine, INT* piResult) { //Delegate //This function just verifies that the hreuslt succeeded... return DisplayAllErrors(hrActual, SUCCEEDED(hrActual) ? hrActual : S_OK, pwszFile, ulLine, piResult); } //////////////////////////////////////////////////////////////////////// // HRESULT DisplayAllErrors // ///////////////////////////////////////////////////////////////////////////// HRESULT DisplayAllErrors(HRESULT hrActual, HRESULT hrExpected, WCHAR* pwszFile, ULONG ulLine, INT* piResult) { BOOL bEqual = (hrActual == hrExpected) || (hrActual == S_OK); //First Display any ErrorInfo //NOTE: If ErrorInfo=Always, ErrorInfo is always displayed if((!bEqual || GetErrorPosting(EP_ERRORINFO_ALWAYS)) && !GetErrorPosting(EP_ERRORINFO_NEVER)) { if(DisplayErrorInfo(hrActual, pwszFile, ulLine, piResult)==S_OK) { //We had ErrorInfo, no need to display error info //Unless the user has something other than NOERRORINFO selected if(GetErrorPosting(EP_HRESULT_NOERRORINFO)) goto CLEANUP; } } //Second, Display the HRESULT, (if requested) //NOTE: If HRESULT=Always, Hresult is always displayed, except if S_OK is returned, otherwise you would always get message boxes... if((!bEqual || (hrActual!=S_OK && GetErrorPosting(EP_HRESULT_ALWAYS))) && !GetErrorPosting(EP_HRESULT_NEVER)) { //Display the HRESULT DisplayHRESULT(hrActual, pwszFile, ulLine, piResult); } CLEANUP: //We need to return a failure code if not equal, so we don't continue... if(!bEqual && SUCCEEDED(hrActual)) return E_FAIL; return hrActual; } ////////////////////////////////////////////////////////////////// // DisplayWinError // ////////////////////////////////////////////////////////////////// HRESULT DisplayWinError(DWORD dwError, WCHAR* pwszFile, LONG lLine, WCHAR* pwszText) { if(dwError) { CHAR* pszError = NULL; //Format the Message (obtain the textual string) FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language (CHAR*)&pszError, 0, NULL ); if(pszError) { //Display the Error wMessageBox ( GetFocus(), MB_TASKMODAL | MB_ICONERROR | MB_OK, wsz_ERROR, L"%s: GetLastError() = %d = %S" wWndEOL L"" wWndEOL L"Line:%d" wWndEOL, pwszText, dwError, pszError, pwszFile, lLine ); // Free the buffer. LocalFree( pszError ); } } return dwError; } //////////////////////////////////////////////////////////////////////// // HRESULT DisplayHRESULT // ///////////////////////////////////////////////////////////////////////////// HRESULT DisplayHRESULT(HRESULT hrActual, WCHAR* pwszFile, ULONG ulLine, INT* piResult) { //If we end up here, their must not be any extended error info supported by the provider //the best we can do is display the HRESULT, and see of the system has a defined string //for the last error? CHAR* pszError = NULL; INT iResult = 0; //Format the Message (obtain the textual string) FormatMessageA( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, hrActual, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language (CHAR*)&pszError, 0, NULL ); if(pszError) { //Display the Error (including Windows Defined String) iResult = wMessageBox(GetFocus(), MB_TASKMODAL | MB_ICONERROR | MB_OK, wsz_ERROR, L"Interface: %s\nResult: 0x%08x = %S\n\nFormatMessage: \"%S\"\n\nFile: %s\nLine: %d", L"Unknown", hrActual, GetErrorName(hrActual), pszError, pwszFile, ulLine); // Free the buffer from Format Message LocalFree( pszError ); } else { //Display the Error iResult = wMessageBox(GetFocus(), MB_TASKMODAL | MB_ICONERROR | MB_OK, wsz_ERROR, L"Interface: %s\nResult: 0x%08x = %S\n\nFile: %s\nLine: %d", L"Unknown", hrActual, GetErrorName(hrActual), pwszFile, ulLine); } if(piResult) *piResult = iResult; return hrActual; } //////////////////////////////////////////////////////////////////////// // HRESULT DisplayErrorInfo // ///////////////////////////////////////////////////////////////////////////// HRESULT DisplayErrorInfo(HRESULT hrActual, WCHAR* pwszFile, ULONG ulLine, INT* piResult) { HRESULT hr = S_OK; CSmartPtr spErrorInfo; CSmartPtr spErrorRecords; ULONG cErrorRecords = 0; CComBSTR cstrDescription; CComBSTR cstrSource; CComBSTR cstrSQLInfo; INT iResult = 0; static LCID lcid = GetSystemDefaultLCID(); //NOTE: GetErrorInfo will return S_OK and a NULL pointer if there is not error object if((hr = GetErrorInfo(0, &spErrorInfo))==S_OK && spErrorInfo) { //The Error Object may support multiple Errors (IErrorRecords) if(SUCCEEDED(hr = spErrorInfo->QueryInterface(&spErrorRecords))) { //Multiple Errors XTESTC(hr = spErrorRecords->GetRecordCount(&cErrorRecords)); } else { //Only a single Error Object cErrorRecords = 1; } LONG lNativeError = 0; ERRORINFO ErrorInfo = { hrActual, 0 }; //Loop through the records for(ULONG i=0; iGetErrorInfo(i, lcid, &spErrorInfo)); //Get the Basic ErrorInfo XTEST(hr = spErrorRecords->GetBasicErrorInfo(i, &ErrorInfo)); //Get the SQL Info GetSqlErrorInfo(i, spErrorRecords, &cstrSQLInfo, &lNativeError); } else { //ErrorInfo is only available... XTEST(hr = spErrorInfo->GetGUID(&ErrorInfo.iid)); } //Get the Description XTEST(hr = spErrorInfo->GetDescription(&cstrDescription)); //Get the Source - this will be the window title... XTEST(hr = spErrorInfo->GetSource(&cstrSource)); //Display the Error if(cstrSQLInfo) { iResult = wMessageBox(GetFocus(), uMBType, cstrSource ? cstrSource : wsz_ERRORINFO, L"Source: \"%s\"\n\n" L"Interface: %s\n" L"Result: 0x%08x = %S\n\n" L"ISQLErrorInfo: [%s][0x%08x]\n" L"IErrorInfo: [0x%08x] \"%s\"\n\n" L"File: %s\n" L"Line: %d", cstrSource, GetInterfaceName(ErrorInfo.iid), ErrorInfo.hrError, GetErrorName(ErrorInfo.hrError), cstrSQLInfo, lNativeError, ErrorInfo.dwMinor, cstrDescription, pwszFile, ulLine); } else { iResult = wMessageBox(GetFocus(), uMBType, cstrSource ? cstrSource : wsz_ERRORINFO, L"Source: \"%s\"\n\n" L"Interface: %s\n" L"Result: 0x%08x = %S\n\n" // L"ISQLErrorInfo: [%s][0x%08x]\n" L"IErrorInfo: [0x%08x] \"%s\"\n\n" L"File: %s\n" L"Line: %d", cstrSource, GetInterfaceName(ErrorInfo.iid), ErrorInfo.hrError, GetErrorName(ErrorInfo.hrError), // cstrSQLInfo, lNativeError, ErrorInfo.dwMinor, cstrDescription, pwszFile, ulLine); } spErrorInfo.Release(); cstrDescription.Empty(); cstrSource.Empty(); cstrSQLInfo.Empty(); if(iResult == IDCANCEL) goto CLEANUP; } } CLEANUP: if(piResult) *piResult = iResult; return hr; } //////////////////////////////////////////////////////////////////////// // HRESULT GetSqlErrorInfo // // Get the error message generated by an OLE DB object ///////////////////////////////////////////////////////////////////////////// HRESULT GetSqlErrorInfo(ULONG iRecord, IErrorRecords* pIErrorRecords, BSTR* pBstr, LONG* plNativeError) { ASSERT(pBstr); HRESULT hr = S_OK; CSmartPtr spSQLErrorInfo; LONG lNativeError = 0; //Get the Error Records if(pIErrorRecords) { //If there is ErrorInfo, GetSQLInfo for the desired record //ISQLErrorInfo is not mandatory TESTC(hr = pIErrorRecords->GetCustomErrorObject(iRecord, IID_ISQLErrorInfo, (IUnknown**)&spSQLErrorInfo)); //If there was a CustomErrorObject if(spSQLErrorInfo) hr = spSQLErrorInfo->GetSQLInfo(pBstr, &lNativeError); } CLEANUP: if(plNativeError) *plNativeError = lNativeError; return hr; }