进程内组件编写需要手动添加的函数
2015-11-18 13:32
423 查看
进程内组件编写需要手动添加的函数:组件注册函数、组件注销函数、类厂对象创建函数、组件生存与否函数
extern "C" HRESULT __stdcall DllGetClassObject(const CLSID& clsid, const IID& iid, void **ppv)
{
if (clsid == CLSID_Dictionary ) {
CDictionaryFactory *pFactory = new CDictionaryFactory;
if (pFactory == NULL) {
return E_OUTOFMEMORY ;
}
HRESULT result = pFactory->QueryInterface(iid, ppv);
return result;
} else {
return CLASS_E_CLASSNOTAVAILABLE;
}
}
extern "C" HRESULT __stdcall DllCanUnloadNow(void)
{
if ((g_DictionaryNumber == 0) && (g_LockNumber == 0))
return S_OK;
else
return S_FALSE;
}
//
// Server registration
//
extern "C" HRESULT __stdcall DllRegisterServer()
{
char szModule[1024];
DWORD dwResult = ::GetModuleFileName((HMODULE)g_hModule, szModule, 1024);
if (dwResult == 0)
return SELFREG_E_CLASS;
return RegisterServer(CLSID_Dictionary,
szModule,
"Dictionary.Object",
"Dictionary Component",
NULL);
}
//
// Server unregistration
//
extern "C" HRESULT __stdcall DllUnregisterServer()
{
return UnregisterServer(CLSID_Dictionary,
"Dictionary.Object",NULL);
}
extern "C" HRESULT __stdcall DllGetClassObject(const CLSID& clsid, const IID& iid, void **ppv)
{
if (clsid == CLSID_Dictionary ) {
CDictionaryFactory *pFactory = new CDictionaryFactory;
if (pFactory == NULL) {
return E_OUTOFMEMORY ;
}
HRESULT result = pFactory->QueryInterface(iid, ppv);
return result;
} else {
return CLASS_E_CLASSNOTAVAILABLE;
}
}
extern "C" HRESULT __stdcall DllCanUnloadNow(void)
{
if ((g_DictionaryNumber == 0) && (g_LockNumber == 0))
return S_OK;
else
return S_FALSE;
}
//
// Server registration
//
extern "C" HRESULT __stdcall DllRegisterServer()
{
char szModule[1024];
DWORD dwResult = ::GetModuleFileName((HMODULE)g_hModule, szModule, 1024);
if (dwResult == 0)
return SELFREG_E_CLASS;
return RegisterServer(CLSID_Dictionary,
szModule,
"Dictionary.Object",
"Dictionary Component",
NULL);
}
//
// Server unregistration
//
extern "C" HRESULT __stdcall DllUnregisterServer()
{
return UnregisterServer(CLSID_Dictionary,
"Dictionary.Object",NULL);
}
相关文章推荐
- UIDatePicker 日期/时间选取器(滚轮)—IOS开发
- 如何写好博客——为什么要写文
- Spring MVC中的几种控制器
- Hibernate如何一个类映射两个表
- 文件I/O
- Android数据存储之:文件存储
- 旧版本scrapy升级新版本遇到的一些问题
- ull
- mybatis generator 根据table 创建mapping、dao、model
- 给Nginx配置一个自签名的SSL证书
- Android之DDMS无法查看/data/data目录
- Memcached, Redis, MongoDB三者比较
- 使用ps制作社保照片
- 浮点数在内存中的表示
- iOS ShareSDK如果没有安装微信,QQ点击按钮没反应,上线有可能会被苹果拒绝.
- mysql: you can't specify target table 问题解决
- Reorder the Books-HDU5500
- [英语学习]免费学习英语的好地方
- 第十周练习 1002 手机短号
- Oracle数据泵导出导入与传统导出导入的区别