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 模块类。
继承层次结构
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 调用,并且包含此方法是为了实现后向兼容性。