OLE DB的COM完整实例.docx
《OLE DB的COM完整实例.docx》由会员分享,可在线阅读,更多相关《OLE DB的COM完整实例.docx(106页珍藏版)》请在冰点文库上搜索。
OLEDB的COM完整实例
///ATL_OLEDB_Prov
///ATL_OLEDB_Prov/Proxy
///ATL_OLEDB_Prov/Proxy/ATL_OLEDB_Prov.idl
//ATL_OLEDB_Prov.idl:
IDLsourceforATL_OLEDB_Prov.dll
//
//ThisfilewillbeprocessedbytheMIDLtoolto
//producethetypelibrary(ATL_OLEDB_Prov.tlb)andmarshallingcode.
import"oaidl.idl";
import"ocidl.idl";
[
object,
uuid(8DFCA8E0-791B-11d3-9D83-D79826594133),
helpstring("IDBCarusoeProvSourceInterface"),
pointer_default(unique)
]
interfaceIDBCarusoeProvSource:
IUnknown
{
[helpstring("GetServerFileMethod")]HRESULTGetServerFileName([out]BSTR*pBSTRFileName);
};
[
uuid(F5F87941-9374-11D3-850F-00400530CFB7),
version(1.0),
helpstring("ATL_OLEDB_Prov1.0TypeLibrary")
]
libraryATL_OLEDB_PROVLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(4DAF1613-783B-11D3-9D83-DA68CA737833),
helpstring("CarusoeProvOLEDBProvider")
]
coclassCarusoeProv
{
interfaceIUnknown;
};
};
///ATL_OLEDB_Prov/Proxy/ATL_OLEDB_Provps.def
LIBRARY"ATL_OLEDB_ProvPS"
DESCRIPTION'Proxy/StubDLL'
EXPORTS
DllGetClassObject@1PRIVATE
DllCanUnloadNow@2PRIVATE
GetProxyDllInfo@3PRIVATE
DllRegisterServer@4PRIVATE
DllUnregisterServer@5PRIVATE
///ATL_OLEDB_Prov/Server
///ATL_OLEDB_Prov/Server/ATL_OLEDB_Prov.cpp
//ATL_OLEDB_Prov.cpp:
ImplementationofDLLExports.
//Note:
Proxy/StubInformation
//Tobuildaseparateproxy/stubDLL,
//runnmake-fATL_OLEDB_Provps.mkintheprojectdirectory.
#include"stdafx.h"
#include"resource.h"
#include
#include"ATL_OLEDB_Prov.h"
#include"ATL_OLEDB_Prov_i.c"
#include"CarusoeProvSess.h"
#include"CarusoeProvDS.h"
CComModule_Module;
BEGIN_OBJECT_MAP(ObjectMap)
OBJECT_ENTRY(CLSID_CarusoeProv,CCarusoeProvSource)
END_OBJECT_MAP()
classCATL_OLEDB_ProvApp:
publicCWinApp
{
public:
//Overrides
//ClassWizardgeneratedvirtualfunctionoverrides
//_{{AFX_VIRTUAL(CATL_OLEDB_ProvApp)
public:
virtualBOOLInitInstance();
virtualintExitInstance();
//_}}AFX_VIRTUAL
//_{{AFX_MSG(CATL_OLEDB_ProvApp)
//NOTE-theClassWizardwilladdandremovememberfunctionshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//_}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CATL_OLEDB_ProvApp,CWinApp)
//_{{AFX_MSG_MAP(CATL_OLEDB_ProvApp)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//_}}AFX_MSG_MAP
END_MESSAGE_MAP()
CATL_OLEDB_ProvApptheApp;
BOOLCATL_OLEDB_ProvApp:
:
InitInstance()
{
_Module.Init(ObjectMap,m_hInstance,&LIBID_ATL_OLEDB_PROVLib);
returnCWinApp:
:
InitInstance();
}
intCATL_OLEDB_ProvApp:
:
ExitInstance()
{
_Module.Term();
returnCWinApp:
:
ExitInstance();
}
/////////////////////////////////////////////////////////////////////////////
//UsedtodeterminewhethertheDLLcanbeunloadedbyOLE
STDAPIDllCanUnloadNow(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return(AfxDllCanUnloadNow()==S_OK&&_Module.GetLockCount()==0)?
S_OK:
S_FALSE;
}
/////////////////////////////////////////////////////////////////////////////
//Returnsaclassfactorytocreateanobjectoftherequestedtype
STDAPIDllGetClassObject(REFCLSIDrclsid,REFIIDriid,LPVOID*ppv)
{
return_Module.GetClassObject(rclsid,riid,ppv);
}
/////////////////////////////////////////////////////////////////////////////
//DllRegisterServer-Addsentriestothesystemregistry
STDAPIDllRegisterServer(void)
{
//registersobject,typelibandallinterfacesintypelib
return_Module.RegisterServer(TRUE);
}
/////////////////////////////////////////////////////////////////////////////
//DllUnregisterServer-Removesentriesfromthesystemregistry
STDAPIDllUnregisterServer(void)
{
return_Module.UnregisterServer(TRUE);
}
///ATL_OLEDB_Prov/Server/ATL_OLEDB_Prov.def
;ATL_OLEDB_Prov.def:
Declaresthemoduleparameters.
LIBRARY"ATL_OLEDB_Prov.DLL"
EXPORTS
DllCanUnloadNow@1PRIVATE
DllGetClassObject@2PRIVATE
DllRegisterServer@3PRIVATE
DllUnregisterServer@4PRIVATE
///ATL_OLEDB_Prov/Server/ATL_OLEDB_Prov.rc
//MicrosoftDeveloperStudiogeneratedresourcescript.
//
#include"resource.h"
#defineAPSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
//GeneratedfromtheTEXTINCLUDE2resource.
//
#include"afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undefAPSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//English(U.S.)resources
#if!
defined(AFX_RESOURCE_DLL)||defined(AFX_TARG_ENU)
#ifdef_WIN32
LANGUAGELANG_ENGLISH,SUBLANG_ENGLISH_US
#pragmacode_page(1252)
#endif//_WIN32
#ifdefAPSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
//TEXTINCLUDE
//
1TEXTINCLUDEDISCARDABLE
BEGIN
"resource.h\0"
END
2TEXTINCLUDEDISCARDABLE
BEGIN
"#include""afxres.h""\r\n"
"\0"
END
3TEXTINCLUDEDISCARDABLE
BEGIN
"1TYPELIB""ATL_OLEDB_Prov.tlb""\r\n"
"\0"
END
#endif//APSTUDIO_INVOKED
#ifndef_MAC
/////////////////////////////////////////////////////////////////////////////
//
//Version
//
VS_VERSION_INFOVERSIONINFO
FILEVERSION1,0,0,1
PRODUCTVERSION1,0,0,1
FILEFLAGSMASK0x3fL
#ifdef_DEBUG
FILEFLAGS0x1L
#else
FILEFLAGS0x0L
#endif
FILEOS0x4L
FILETYPE0x2L
FILESUBTYPE0x0L
BEGIN
BLOCK"StringFileInfo"
BEGIN
BLOCK"040904B0"
BEGIN
VALUE"CompanyName","\0"
VALUE"FileDescription","ATL_OLEDB_ProvModule\0"
VALUE"FileVersion","1,0,0,1\0"
VALUE"InternalName","ATL_OLEDB_Prov\0"
VALUE"LegalCopyright","Copyright1999\0"
VALUE"OriginalFilename","ATL_OLEDB_Prov.DLL\0"
VALUE"ProductName","ATL_OLEDB_ProvModule\0"
VALUE"ProductVersion","1,0,0,1\0"
VALUE"OLESelfRegister","\0"
END
END
BLOCK"VarFileInfo"
BEGIN
VALUE"Translation",0x409,1200
END
END
#endif//!
_MAC
/////////////////////////////////////////////////////////////////////////////
//
//REGISTRY
//
IDR_CARUSOEPROVREGISTRYDISCARDABLE"CarusoeProv.rgs"
/////////////////////////////////////////////////////////////////////////////
//
//StringTable
//
STRINGTABLEDISCARDABLE
BEGIN
IDS_PROJNAME"ATL_OLEDB_Prov"
IDS_DBPROP_ACTIVESESSIONS"ActiveSessions"
IDS_DBPROP_ASYNCTXNCOMMIT"AsynchableCommit"
IDS_DBPROP_BYREFACCESSORS"PassByRefAccessors"
IDS_DBPROP_CATALOGLOCATION"CatalogLocation"
IDS_DBPROP_CATALOGTERM"CatalogTerm"
IDS_DBPROP_CATALOGUSAGE"CatalogUsage"
IDS_DBPROP_COLUMNDEFINITION"ColumnDefinition"
IDS_DBPROP_CONCATNULLBEHAVIOR"NULLConcatenationBehavior"
IDS_DBPROP_DATASOURCENAME"DataSourceName"
END
STRINGTABLEDISCARDABLE
BEGIN
IDS_DBPROP_DATASOURCEREADONLY"Read-OnlyDataSource"
IDS_DBPROP_DBMSNAME"DBMSName"
IDS_DBPROP_DBMSVER"DBMSVersion"
IDS_DBPROP_PROCEDURETERM"ProcedureTerm"
IDS_DBPROP_PROVIDEROLEDBVER"OLEDBVersion"
IDS_DBPROP_PROVIDERNAME"ProviderName"
IDS_DBPROP_PROVIDERVER"ProviderVersion"
IDS_DBPROP_QUOTEDIDENTIFIERCASE"QuotedIdentifierSensitivity"
IDS_DBPROP_SCHEMATERM"SchemaTerm"
IDS_DBPROP_SCHEMAUSAGE"SchemaUsage"
IDS_DBPROP_SQLSUPPORT"SQLSupport"
IDS_DBPROP_STRUCTUREDSTORAGE"StructuredStorage"
IDS_DBPROP_SUBQUERIES"SubquerySupport"
IDS_DBPROP_SUPPORTEDTXNISOLEVELS"IsolationLevels"
IDS_DBPROP_SUPPORTEDTXNISORETAIN"IsolationRetention"
IDS_DBPROP_TABLETERM"TableTerm"
END
STRINGTABLEDISCARDABLE
BEGIN
IDS_DBPROP_USERNAME"UserName"
IDS_DBPROP_SUPPORTEDTXNDDL"TransactionDDL"
IDS_DBPROP_ASYNCTXNABORT"AsynchableAbort"
IDS_DBPROP_DSOTHREADMODEL"DataSourceObjectThreadingModel"
IDS_DBPROP_MULTIPLEPARAMSETS"MultipleParameterSets"
IDS_DBPROP_OUTPUTPARAMETERAVAILABILITY"OutputParameterAvailability"
IDS_DBPROP_PERSISTENTIDTYPE"PersistentIDType"
IDS_DBPROP_NOTIFYCOLUMNSET"ColumnSetNotification"
IDS_DBPROP_NOTIFYROWDELETE"RowDeleteNotification"
IDS_DBPROP_NOTIFYROWFIRSTCHANGE"RowFirstChangeNotification"
IDS_DBPROP_NOTIFYROWINSERT"RowInsertNotification"
IDS_DBPROP_NOTIFYROWRESYNCH"RowResynchronizationNotification"
IDS_DBPROP_NOTIFYROWSETRELEASE"RowsetReleaseNotification"
IDS_DBPROP_NOTIFYROWSETFETCHPOSITIONCHANGE
"RowsetFetchPositionChangeNotification"
IDS_DBPROP_NOTIFYROWUNDOCHANGE"RowUndoChangeNotification"
IDS_DBPROP_NOTIFYROWUNDODELETE"RowUndoDeleteNotification"
END
STRINGTABLEDISCARDABLE
BEGIN
IDS_DBPROP_GROUPBY"GROUPBYSupport"
IDS_DBPROP_HETEROGENEOUSTABLES"HeterogeneousTableSupport"
IDS_DBPROP_IDENTIFIERCASE"IdentifierCaseSensitivity"
IDS_DBPROP_LOCKMODES"LockModes"
IDS_DBPROP_MAXINDEXSIZE"MaximumIndexSize"
IDS_DBPROP_MAXROWSIZE"MaximumRowSize"
IDS_DBPROP_MAXROWSIZEINCLUDESBLOB"MaximumRowSizeIncludesBLOB"
IDS_DBPROP_MAXTABLESINSELECT"MaximumTablesinSELECT"
IDS_DBPROP_MULTIPLESTORAGEOBJECTS"MultipleStorageObjects"
IDS_DBPROP_MULTITABLEUPDATE"Multi-TableUpdate"
IDS_DBPROP_NOTIFICATIONPHASES"NotificationPhases"
IDS_DBPROP_NULLCOLLATION"NULLCollationOrder"
IDS_DBPROP_OLEOBJECTS"OLEObjectSupport"
IDS_DBPROP_ORDERBYCOLUMNSINSELECT"ORDERBYColumnsinSelectList"
IDS_DBPROP_PREPARECOMMITBEHAVIOR"PrepareCommitBehavior"
IDS_DBPROP_PREPAREABORTBEHAVIOR"PrepareAbortBehavior"
END
STRINGTABLEDISCARDABLE
BEGIN
IDS_DBPROP_NOTIFYROWUNDOINSERT"RowUndoInsertNotification"
IDS_DBPROP_NOTIFYROWUPDATE"RowUpdateNotification"
IDS_DBPROP_ROWSETCONVERSIONSONCOMMAND"RowsetConversionsonCommand"
IDS_DBPROP_MULTIPLERESULTS"MultipleResults"
IDS_DBPROP_ISequentialStream"ISequentialStream"
IDS_DBPROP_ABORTPRESERVE"PreserveonAbort"
IDS_DBPROP_BLOCKINGSTORAGEOBJECTS"BlockingStorageObjects"
IDS_DBPROP_IRowsetScroll