CAtlDllModuleT 类

此类表示 DLL 的模块。

语法

template <class T>
class ATL_NO_VTABLE CAtlDllModuleT : public CAtlModuleT<T>

参数

T
你的类派生自 CAtlDllModuleT

成员

公共构造函数

名称 描述
CAtlDllModuleT::CAtlDllModuleT 构造函数。
CAtlDllModuleT::~CAtlDllModuleT 析构函数。

公共方法

名称 描述
CAtlDllModuleT::DllCanUnloadNow 测试是否可以卸载 DLL。
CAtlDllModuleT::DllGetClassObject 返回类工厂。
CAtlDllModuleT::DllMain 动态链接库 (DLL) 的可选入口点。
CAtlDllModuleT::DllRegisterServer 将条目添加到 DLL 中的对象的系统注册表。
CAtlDllModuleT::DllUnregisterServer 删除 DLL 中对象的系统注册表中的条目。
CAtlDllModuleT::GetClassObject 返回类工厂。 由 DllGetClassObject 调用。

注解

CAtlDllModuleT 表示动态链接库 (DLL) 的模块,并提供所有 DLL 项目使用的函数。 CAtlModuleT 类的这种专用化包括对注册的支持。

有关 ATL 中的模块的详细信息,请参阅 ATL 模块类

继承层次结构

_ATL_MODULE

CAtlModule

CAtlModuleT

CAtlDllModuleT

要求

标头:atlbase.h

CAtlDllModuleT::CAtlDllModuleT

构造函数。

CAtlDllModuleT() throw();

CAtlDllModuleT::~CAtlDllModuleT

析构函数。

~CAtlDllModuleT() throw();

CAtlDllModuleT::DllCanUnloadNow

测试是否可以卸载 DLL。

HRESULT DllCanUnloadNow() throw();

返回值

如果可以卸载 DLL,则返回 S_OK;如果不能卸载,则返回 S_FALSE。

CAtlDllModuleT::DllGetClassObject

返回类工厂。

HRESULT DllGetClassObject(
    REFCLSID rclsid,
    REFIID riid,
    LPVOID* ppv) throw();

参数

rclsid
要创建的对象的 CLSID。

riid
请求的接口的 IID。

ppv
指向 riid 标识的接口指针的指针。 如果对象不支持此接口,则 ppv 设置为 NULL

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

CAtlDllModuleT::DllMain

动态链接库 (DLL) 的可选入口点。

BOOL WINAPI DllMain(DWORD dwReason, LPVOID /* lpReserved*/) throw();

参数

dwReason
如果设置为 DLL_PROCESS_ATTACH,则禁用 DLL_THREAD_ATTACH 和 DLL_THREAD_DETACH 通知调用。

lpReserved
保留。

返回值

始终返回 TRUE。

备注

禁用 DLL_THREAD_ATTACH 和 DLL_THREAD_DETACH 通知调用是对多线程应用程序的有效优化,这些应用程序具有许多 DLL,经常创建和删除线程,并且其 DLL 不需要附件/拆离的这些线程通知。

CAtlDllModuleT::DllRegisterServer

将条目添加到 DLL 中的对象的系统注册表。

HRESULT DllRegisterServer(BOOL bRegTypeLib = TRUE) throw();

参数

bRegTypeLib
如果要注册类型库,则为 TRUE。 默认值为 TRUE。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

CAtlDllModuleT::DllUnregisterServer

删除 DLL 中对象的系统注册表中的条目。

HRESULT DllUnregisterServer(BOOL bUnRegTypeLib = TRUE) throw();

参数

bUnRegTypeLib
如果要从注册表中删除类型库,则为 TRUE。 默认值为 TRUE。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

CAtlDllModuleT::GetClassObject

创建指定 CLSID 的对象。

HRESULT GetClassObject(
    REFCLSID rclsid,
    REFIID riid,
    LPVOID* ppv) throw();

参数

rclsid
要创建的对象的 CLSID。

riid
请求的接口的 IID。

ppv
指向 riid 标识的接口指针的指针。 如果对象不支持此接口,则 ppv 设置为 NULL

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

此方法由 CAtlDllModuleT::DllGetClassObject 调用,并且包含此方法是为了实现后向兼容性。

另请参阅

CAtlModuleT 类
CAtlExeModuleT 类
类概述
Module 类