com原理与运用 chapter 2 com对象和接口

Python requests.Session 实战:17k.com 模拟登录与书架数据抓取 3 步解析 本文详细解析了如何使用Python的requests.Session对象实现17k.com的模拟登录与书架数据抓取,分为三步:理解Session与Cookie机制、分析登录流程与实现、获取并处理书架数据。通过实战案例,帮助开发者掌握模拟登录技术,高效获取需要认证的网页数据。 阅读详情

chapter 2 com对象和接口

1,通常情况下把com对象简称为对象,把com接口简称为接口。客户程序与com组件程序进行交互的实体是com对象。

2,记住这个结构
typedef struct _GUID {
DWORD data1;         //           32 位
WORD data2;            //           16 位
WORD data3;            //           16 位
BYTE data4[8];          //8*8 = 64 位
}GUID;                   + _____________
                                                128 位

3,com对象与c++对象的区别
a,com对象的数据成员是以组件为边界的,对于客户是不可见的;c++对象的封装是语义上的,对于客户是可见的。
b,com的重用性是动态的,对象a重用对象b,当对象b增强了功能时,对象a自动使用新版本b,而且根本不需要重新编译或者重新设置;c++的重用性体现在继承,类a从类b派生,当类b作了修改时,类a必须重新编译或者修改相应的代码。

4,com接口,com规范的核心内容
接口,是包含了一组函数的数据结构,通过这组数据结构,客户代码可以调用组建对象的功能。

           系统边界
        客户   |   组件
                   |      vtable     对象实现
                   |    
接口指针 -->  pVtable -->  指针函数1  -->  实现接口函数1
                   |                           指针函数2  -->  实现接口函数2
                   |                                    ...        -->  ...

                   com接口二进制结构

a,通常把接口函数称为虚函数表(virtual function table,简称vtable),指向vtalbe的指针为pVtable,从上图可以看出,客户只是获得了接口指针,组件也仅暴露了pVtable。
b,com接口与对象是如何联系的?通过this指针,每个成员函数的第一个参数是指向接口自身的this指针。

5,com接口描述语言
com规范在采用osf的dce规范描述远程调用接口idl(interface description language,接口描述语言)的基础上,进行扩展形成了com接口描述语言。接口描述语言提供了一种不依赖任何语言的接口描述方法,因此,它可以成为组件程序和客户程序之间的共同语言。

6,接口的一些特点
a,接口规范建立在二进制标准上,任何只要有能力描述接口的语言就可以用于组件程序的开发。而c++的class可以以最简洁的方式描述com接口,而且用class隐藏了接口的虚函数表以及接口成员函数的this指针参数,使得接口定义容易理解。
b,设计接口时应该,要考虑组件对象提供功能的一般特性,以是接口更为通用,更为稳定。
c,com规范,所有的接口都必须从IUnknown派生(直接或者间接),很多接口的名字的最后字母是2或者Ex,表明它是一个继承接口。

7,IUnknown接口
a,IUnknown提供了两个非常重要的特性:生存期控制和接口查询
b,每个com对象都记录了一个称为“引用计数”的数值,该数值的含义是有多少个有效指针在引用该com对象,如果该计数的数值为0,com对象就应该把自己从内存中清除。
c,实现引用计数的分为几个层次
 组件一级上实现引用计数(计数分辨率太粗),可以选择全局变量来实现。
 对象一级上实现引用计数(比较合理),可以选择类成员变量来实现。
 接口一级上实现引用计数(计数分辨率太细,但是对于调试组件程序和分析客户程序的使用情况非常有帮助),可以为对象的每个接口设置一个成员变量来实现。
d,引用计数可以防止两方面的问题:当使用一个接口指针变量时,发现它所指的com对象已经不存在了;当使用完了com对象后,对象并不被清除。对于前者,可能是忘了调用AddRef,导致程序出错;对于后者,可能是忘了调用Release,导致资源不释放,这时如果采用接口一级的引用计数则可以跟踪到哪个接口指针忘了释放。
e,接口查询QueryInterface([in]REFIID iid, [out] void**ppv);一个com对象可以实现多个接口,客户程序可以在运行时刻对com对象的接口进行查询,如果对象实现了该接口,则对象可以提供这样的服务,否则,对象可以拒绝提供这样的服务。QueryInterface返回以下三个值
 S_OK,查到了指定的接口,接口指针存放在ppv中。
 E_NOINTERFACE,对象不支持所指定的接口,*ppv = NULL
 E_UNEXPECTED,发生了意外错误,*ppv = NULL

8,com对象的接口原则
a,对于同一个对象的不同接口指针,查询的IUnknown必须完全相同。因此可以通过查询得到的IUnknown来判断是否指向同一个对象,如果查询的不是IUnknown接口,可以允许不一样,这就允许对象在必要的时候生成接口指针。
b,接口对称性,对一个接口查询其自身总应该成功(S_OK)。
c,接口自反性。如果接口指针a能成功查询到接口指针b,那么接口指针b必定能够查询到接口指针a。
d,接口传递性。如果接口指针a能成功查询到接口指针b,接口指针b能成功查询到接口指针c,那么接口指针a就能成功查询到接口针c。
e,接口查询时间无关性。如果在某一时刻可以查询到某一个接口指针,则以后任何时候查询同样的接口,一定成功。
 

Linux下fastai Chapter 4多卡训练排障实战指南 分布式深度学习训练在Linux生产环境中的落地,本质是PyTorch分布式(DDP)、NCCL通信协议与Linux内核调度机制的协同问题。理解CUDA运行时与NVIDIA驱动的版本锁链、NCCL后端在无InfiniBand环境下的行为漂移、DataLoader与CFS调度器的资源竞争关系,是解决‘显存显示正常却OOM’‘nccl timeout’‘worker卡死’等典型故障的技术前提。本文聚焦fastai Chapter 4在Ubuntu+多GPU集群中的系统级适配,覆盖硬件审计、环境校验、NCCL最小可 阅读详情

相关推荐

游戏外挂开发系列--游戏喊话器

前言无疑,伴随着现在的游戏市场日益膨胀的同时,带来了很多与游戏相关的商业活动,游戏中的交易带来了无限的商机和巨额的利润,而如何在游戏中进行产品和业务的推广,是十分重要的。前段时间,鉴于朋友的摆脱,帮忙开发了一个游戏中喊话器,其中涉及一些技术要点,现在总结如下1. 一些在动手开发前要说的游戏喊话,初级的实现是借助键盘模拟,高级的实现是借助键盘驱动的模拟,但是这些模拟都会有个缺点:不能同是

宋文超的专栏 3201

【必修】组件考试向精简版笔记 chapter2 COM组件与接口

COM组件的主要目标,COM的约束条件,QueryInterface

Cambridge26的博客 732

PADS Layout中快速导入自定义元器件封装的实用技巧

本文详细介绍了在PADS Layout中高效导入自定义元器件封装的实用技巧。针对封装“找不到”、“对不上”、“导不进”三大痛点,系统梳理了从封装文件来源识别、库规划管理,到三种核心导入场景(从库文件添加、从其他设计借用、处理第三方格式)的完整操作流程,并提供了导入后的关键验证清单与常见问题排查方法,旨在帮助硬件工程师快速掌握这一提升设计效率的关键技能。

weixin_29302047的博客 375

com原理与运用 chapter 1 概述

引言corba(common object request breaker architectrue,公共对象请求中介体系结构),com(component object model,组建对象模型),这两者都是一个组件间通讯的标准,不同的是corba主要应用于unix上,com主要应用于windows上。chapter 1 概述1,com的结构com标准包括规范和实现两部分。规范定义了

宋文超的专栏 677

【mysql8.0.33安装详情教程】

8、进入Account and Roles界面,输入密码,再点击next(密码随便输,自己记住就行)11、进入Apply Configuration界面,直接点Execute,等待应用成功。14、输入密码,点击check,检查是否正确。3、下图是选择安装类型,选择默认安装就可以,然后点击“next”。5、进入Product Configuration,点击next。9、进入Windows Service界面,直接点击next。15、点击Execute执行安装(完成后点击Finish)二、验证是否安装成功。

98渣渣辉的博客 2113

SoC低功耗设计实战:28nm工艺下四核A7的Hierarchical Flow全流程解析

本文深入解析了在TSMC 28nm工艺上,采用Hierarchical Flow(层次化流程)实现四核Cortex-A7 SoC低功耗设计的全流程。文章从项目背景切入,详细探讨了基于UPF的电源规划、时钟树综合、接口时序收敛以及物理验证等关键环节,分享了使用Cadence Innovus等工具进行低功耗物理实现的实战经验与挑战。

weixin_29231263的博客 323

com原理与运用 chapter 4 com特性

chapter 4 com特性4.3 安全性1,要建立一种适合各种操作系统的安全机制是很难的,甚至是不可能的,所以com规范只是提供了安全机制框架。window平台上实现的com版本基本上基于windows nt的鉴定服务(authentication service)机制。激活安全性(activation secuity),它包括com对象如何被安全的启动,客户如何与对象建立连接,如何保护好

宋文超的专栏 686

PLC批量读写优化:C# Modbus TCP多寄存器批量操作(效率提升50%)

效率提升:请求次数减少90%以上,通信耗时降低50%-95%;资源节约:减少网络带宽占用和PLC/上位机CPU负载;稳定性提升:更少的请求意味着更少的通信异常;适配高频采集:满足工业现场100ms/次的高频率数据采集需求。工业落地时需注意:批量操作的核心是地址连续化规划,提前与PLC工程师协同规划寄存器地址,是优化的前提;同时需配合重试、校验机制,确保批量操作的可靠性。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1258

chapter 5.2: UMDF对象模型的实现

UMDF基于COM,只用COM的query-interface和reference-counting机制,而不依赖COM的所有机制 类型: Driver-created file I/O completion parameters Base object I/O target Driver Memory

cyx1231st的专栏 896

【YOLOv11】087、YOLOv11多任务学习:检测、分割、分类联合学习

摘要: 工业质检场景中,多任务模型(检测、分类、分割)的需求日益增长。针对边缘设备部署的挑战,本文提出基于YOLOv11的多任务学习方案。通过共享主干网络和设计分支头(检测、分割、分类),实现高效推理;采用动态权重平衡策略解决多任务损失不平衡问题;并优化数据流处理(支持部分标注)和推理剪裁(按需启用分支)。实验表明,该方法在Jetson Orin上帧率提升3倍,内存占用减少40%,为工业质检提供了轻量高效的解决方案。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 445

基于matlab的主成分分析的人脸二维码识别系统

人脸识别因其在系统安全验证、信用验证、刑侦跟踪、身份管理、视频会议、人机交互、智能家居等方面的巨大应用前景,成为当前模式识别和人工智能领域越来越热门的一个研究方向。随着安全入口控制和二维码智能扫描应用需求的快速增长,基于二维码识别的生物人脸统计识别技术也引起了人们的重视。本案例将详细讲解基于主成分分析的人脸特征提取的原理与方法,并将其与 QR 二维码的编解码进行结合,将 MATLAB 作为工具平台,调用 QR 二维码编解码应用程序,进而实现一个人脸二维码自动识别的系统原型。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 977

Inside COM 笔记二(Chapter3,Chapter4)

首先介绍QueryInterface,可见它的地位。为什么要存在,因为COM组件对用户来说是一个黑盒子,不知道里面到底有什么,所以就需要有查询的方法。COM的Interface必须继承自IUnknown。每个Interface的vtbl中的前3个函数都是QuereyInterface,AddRef和Release。IUnknown的获取,通过CreateInstance函数得到,而不必再使用new

437

4D毫米波雷达天线设计

多种天线布局方案介绍、天线设计要点介绍

5734

chapter 3.3: WDF对象模型

WDF object模型表示了通用的驱动结构:设备,内存,队列,I/O请求,驱动。 WDF object具有良好的生命周期和约定,以及与WDF driver交互的接口 WDF object实现:     UMDF object由COM object实现     KMDF object由“透明”的句柄和对句柄操作的函数组成     *在概念级,两者是相似的 WDF object产生:fr

cyx1231st的专栏 512

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1104

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Garden Skills章节设计十条原则:CHAPTER-CRAFT方法论全解析

Garden Skills 是 ConardLi 开源的 Agent 技能集合,其中的 web-video-presentation 技能能把一篇文章做成"看起来像视频"的点击式网页演示。本文完整解析该技能的章节设计核心——**CHAPTER-CRAFT 方法论的十条原则**,帮你理解"动态 PPT、但不像 PPT"背后的设计思想,零基础也能看懂。 ## 一、先搞懂:什么是 CHAPTER-CR

gitblog_01130的博客 553

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深入解析 Macro 的 soup 聚合查询服务:跨实体过滤、排序、分组与分页的架构与实现

Soup 是 Macro 工作区背后的“大杂烩”查询服务:它让调用方用一套过滤器横跨文档、频道、会话、日历事件、Agent 会话、数据库行、事项(initiative)等多种实体,拿回一个统一分页的结果集。本文以 `crates/soup` 的设计说明为主线,结合 domain/ports/outbound/inbound 四层的真实源码与 SQL 查询,逐层拆解它的模型、查询模式、权限门与工程约

gitblog_06812的博客 178

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Chapter one

A spider: [![spider](https://link.gitcode.com/i/92a5b9e42348d64400cf551d8f1a6573)](https://link.gitcode.com/i/b4bc1086cb0b65a4e7779494d568c8be) Another spider: ![another spider][refspider] The moon:

gitblog_00048的博客 909

React DayPicker Formatters 类型详解:用 `formatters` 定制日历的日期渲染

在 React DayPicker 中,日历界面上所有「人可读」的文本——月份标题、格子里的天数、表头的星期名、周数、下拉框里的月份与年份——都由一组名为 `Formatters` 的格式化函数统一输出。本篇文章围绕 `Formatters` 类型别名展开,逐项解析它的 7 个成员函数(`formatCaption`、`formatDay`、`formatMonthDropdown`、`forma

gitblog_00476的博客 846

Hyper-Extract 知识抽取实战:Claude Code 技能包帮你把文档变成结构化知识

Hyper-Extract 是一个用 LLM 做知识抽取的开源项目:你给它非结构化文档,它按 YAML 知识模板输出结构化知识,涵盖图谱、超图、时空关系。项目内置的 Hyper-Extract Skills 是一套 Claude Code 技能包,让你用自然语言完成知识模板设计、验证、优化与多语言转换,再一条命令从文档中抽取知识。 ## 文档很多,知识却没法被程序复用 公司文档库里的周报、合同

gitblog_00369的博客 410

ServerPackCreator 设置与配置完全指南:从 serverpackcreator.conf 到 serverpackcreator.properties

ServerPackCreator(SPC)是一款从 Minecraft Forge、NeoForge、Fabric、LegacyFabric 或 Quilt 整合包生成服务端的开源工具。本文围绕官方帮助文档中的“Settings And Configs”章节,系统讲解 SPC 的两类配置文件——**每包一份的 `serverpackcreator.conf`**(定义某个整合包生成服务端的具体参

gitblog_00461的博客 915

com认识小结

本文意旨帮助初涉COM的学者能对COM组件的创建过程有一个清晰的了解。全文以《COM技术内幕》第7章的示例代码为蓝本,稍做修改之后进行详细介绍。如果你也阅读过此书的相关内容,那么理解起来将会更容易。 《COM技术内幕》这本书的示例代码编写于1996年。时至今日,编译器发生了或多或少的变化,将本书作者编写的代码重新组织到Visual studio 2008中并成功编译,对于当时刚接触COM的我

ICE_CHB的博客 743

BrowserSkill 实战指南:如何装好 bsk CLI 与浏览器扩展,让 AI 智能体操作真实浏览器

BrowserSkill 是面向 AI 智能体的浏览器自动化方案:任何能执行 shell 命令的智能体,都能直接调用你已登录的 Chrome 或 Edge 读页面、填表单、截图,动作圈在独立的 Agent Window 里,不碰你正在用的标签页。读完本文,你能装好 `bsk` CLI 与浏览器扩展、跑通全链路检查,并让智能体完成第一个真实浏览任务。 [![BrowserSkill 浏览器自动化原

gitblog_00607的博客 386

【Java学习总结】chapter07:IO流

第7章:IO流 使用字节流和字符流读写文件操作 使用File类访问文件系统 NIO和NIO.2的基本概念和用法 7.1 IO流概述 IO流的概念:IO(Input&Output)流即输入输出流,是Java中实现输入输出的基础,可方便的实现数据的IN&OUT IO流的分类: 分类方式 分类结果 根据流操作的数据单位 字节流、字符流 根据流传输的方向 输入流、输出流 根据流的功能 节点流、处理流 IO流顶级类的分类: 注意:4个顶级类都

https://blog.youkuaiyun.com/m0_74834215 313

DevilutionX 安装教程:30 分钟跑通暗黑重制版

DevilutionX 安装的目标很明确:让你不用 DOS、不用老硬件,就能把 1996 年的《暗黑破坏神》跑在 Windows、Linux 或手机上。本文带你走完三步:备齐 MPQ 文件、把游戏装进你的系统、首启跑通。读完就能进游戏。 ## 🧰 动手前先把这几样备齐:DevilutionX 安装清单 游戏本体只是空壳,真正的素材在几个 MPQ 文件里。动手前确认手上有这些: - `DIA

gitblog_00115的博客 163

用Go学习数据结构与算法:二叉搜索树与AVL平衡树,Go从零手写并深度解析核心原理

想用 **Go 语言学习数据结构与算法**?开源项目 Learn-Data-Structures-and-Algorithms-with-Golang(Packt 同名图书的官方代码仓库)提供了二叉搜索树(BST)与 AVL 平衡树的完整示例。本文带你从零手写这两种树结构,深度解析插入、删除与旋转平衡的核心原理,新手也能轻松看懂。 ## 🌳 什么是二叉搜索树?三条规则秒懂 二叉搜索树(Bin

gitblog_00683的博客 1039
上一篇: boost库
下一篇: com相关
sandyandy
博客等级 码龄19年 72粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值