ODL文件在注册表中的注册信息

本文深入探讨了COM组件的注册机制,详细解析了library、interface和coclass在注册过程中的作用,以及它们如何在Windows注册表中进行记录。通过具体示例,读者可以了解LIBID、IID和CLSID的定义及其在COM组件中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[
  uuid(F37C8060-4AD5-101B-B826-00DD01103DE1),              // LIBID_Hello
  helpstring("Hello 2.0 Type Library"),
  version(2.0)
]
library Hello
{
#ifdef WIN32
    importlib("stdole2.tlb");
#else
    importlib("stdole.tlb");
#endif
    [
      uuid(F37C8062-4AD5-101B-B826-00DD01103DE1),          // IID_IHello                      
      helpstring("Application object for the Hello application."),  
      oleautomation,
      dual
    ]
    interface IHello : IDispatch                        
    {
        [propget, helpstring("Returns the application of the object.")]
        HRESULT Application([out, retval] IHello** retval);
        [propget, helpstring("Returns the full name of the application.")]
        HRESULT FullName([out, retval] BSTR* retval);
        [propget, id(0), helpstring("Returns the name of the application.")]
        HRESULT Name([out, retval] BSTR* retval);
        [propget, helpstring("Returns the parent of the object.")]
        HRESULT Parent([out, retval] IHello** retval);
        [propput]
        HRESULT Visible([in] VARIANT_BOOL VisibleFlag);
        [propget, helpstring("Sets or returns whether the main window is visible.")]
        HRESULT Visible([out, retval] VARIANT_BOOL* retval);
        [helpstring("Exits the application.")]
        HRESULT Quit();
        [propput, helpstring("Sets or returns the hello message to be used.")]
        HRESULT HelloMessage([in] BSTR Message);        
        [propget]
        HRESULT HelloMessage([out, retval] BSTR *retval);
        [helpstring("Say Hello using HelloMessage.")]       
        HRESULT SayHello();       
    }
    [
       uuid(F37C8061-4AD5-101B-B826-00DD01103DE1),          // CLSID_Hello
       helpstring("Hello Class"),
       appobject
    ]                                            
    coclass Hello
    {  
        [default]          interface IHello;
                           interface IDispatch;
    }
}

其中library指的是library type,它记录在HKEY_CLASSES_ROOT\TypeLib,在XX_i.c中用LIBID_XXLib表示

interface记录的是借口,它记录在HKEY_CLASSES_ROOT\Interface,在XX_i.c中用IID_IXX表示

coclass记录的事CLSID,它记录在HKEY_CLASSES_ROOT\CLSID,在XX_i.c中用CLSID_XX表示

转载于:https://www.cnblogs.com/fanzi2009/archive/2009/08/22/1552198.html

### ODL 文件格式、用途、类型及扩展名 ODL 文件并非指代具体的文件类型或扩展名,而是与 OpenDaylight (ODL) 开源 SDN 平台密切相关。以下是关于 ODL 及其相关内容的详细说明: #### 1. **ODL 的背景** OpenDaylight 是一个开源项目,旨在通过提供模块化平台简化网络管理[^4]。该项目支持多种协议和 API,从而实现更灵活的网络编程能力。 #### 2. **ODL 文件的相关性** 尽管 `.odl` 不是一个常见的文件扩展名,但在某些上下文中可能会被误认为是与 OpenDaylight 相关的文件标记。实际上,OpenDaylight 主要涉及的是配置文件、日志文件和其他数据存储机制,而不是特定于某种扩展名的文件类型。例如: - 配置文件通常采用 XML 或 YAML 格式。 - 日志文件可能是纯文本格式。 - 数据库存储可能依赖 SQLite 或其他数据库引擎。 如果提到 `.odl` 文件,则需进一步确认具体场景下的定义。一般情况下,`.odl` 文件并不属于标准文件类型。 #### 3. **常见文件类型及其用途** 在 Visual C++ 环境或其他开发工具中,存在多种文件类型,每种都有特定功能。以下是一些典型例子: - **.CRF**: 链接器响应文件,用于描述链接过程中的选项和输入文件[^3]。 - **.APS**: 二进制形式的资源文件,保存界面设计相关的资源信息[^2]。 - **.ICO/.CUR/.BMP**: 图形资源文件,分别表示图标、光标和位图图像[^1]。 - **.REG**: 注册表文件,用于导入或导出 Windows 注册表设置。 - **.TLB**: 类型库文件,常用于 COM 组件的支持[^1]。 #### 4. **总结** 目前并无明确证据表明 `.odl` 是一种独立的文件类型。如果有相关需求,请提供更多上下文以便进一步分析。对于 OpenDaylight 平台而言,主要关注点在于其架构设计和服务部署,而非单一文件类型的讨论。 ```python # 示例代码:读取 YAML 配置文件 import yaml with open('config.yaml', 'r') as file: config_data = yaml.safe_load(file) print(config_data) ``` 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值