COM 技术内幕学习之六 (HRESULT,GUID)

COM技术初探 COM技术初探(一) 一、COM是一个更好的C++ 1、COM 是什么 Don Box 说"COM IS LOVE"。COM 的全称是 ComponentObject Model 组件对象模型。 2、从 C++ 到DLL 再到 COM 2.1 C++ 如某一软件厂商发布一个类库(CMath四则运算),此时类库的可执行代码将成为客户应用中不可分割的一部分。假设此类库 阅读详情

一、HRESULT 

1、32位 (高16位表示设备代码,低16位表示返回代码)

2、用SUCCEED和FAILED函数来判断调用是否成功

3、MAKE_HRESULT宏来生成自己的HRESULT

二、GUID (Globally Unique Identifier)

1、IID和CLSID都是GUID 

2、128位 (16字节)

3、可以通过CoCreateGuid函数生成GUID,该函数调用了RPC函数UuidCreate

4、可以用DEFINE_GUID宏生成某个接口或组件类的GUID

三、注册表 HKEY_CLASSES_ROOT

1、CLSID

InProcserver32 ---->DLL路径;ProgID-->易识别的组件名称

2、ProgID到CLSID转换 (CLSIDFromProgID)

四、COM库函数

1、初始化 CoInitialize 卸载CoUninitialize

2、内存管理函数

CoGetMalloc--->IMalloc::Alloc---->IMalloc::Free

CoTaskMemAlloc----->CoTaskMemFree (任务内存分配器)

3、字符串转换成GUID

StringFromGUID2  函数 ;UNICODE转换成ASCII (wsctombs)

 

C++生成GUID的两种方法 C++生成GUID的两种方法C++生成GUID的两种方法使用 C++生成GUID的两种方法 GUID是软件开发中常用的组件,用于生成唯一的对象,在C#、Java以及Python等语言中,因为它们的标准库比较丰富,因此GUID的生成比较简单,往往一两句代码就能搞定。而C++语言本身以及标准库都没有提供生成GUID的API,因此,无法直接使用C++生成GUID。本文介绍两种利用C++间接创建GUID的... 阅读详情

相关推荐

COM组件技术书籍《COM技术内幕》详解

COM(Component Object Model)技术体系的核心在于“接口驱动开发”理念。接口是COM对象对外暴露的契约,定义了对象能够执行的操作集合,而接口指针则是访问这些操作的唯一方式。本章将深入探讨COM接口的定义方式、接口指针的使用机制,以及接口调用过程中的基础错误处理与设计规范,为构建高可维护性、可扩展性的COM组件提供技术支撑。COM接口通过一个唯一的接口标识符(IID)来区分。每个接口必须继承自IUnknown接口,并定义一组方法。

weixin_34413326的博客 481

wsctombs()函数介绍

1 .   stdlib.h   函数原型:           _CRTIMP size_t __cdecl wcstombs(char *, const wchar_t *, size_t);              eg:这个是MSDN上的例子void main( void ){ int i; char *pmbbuf = (char *

lyd_253261362的专栏 935

从原理到实战:ARS548 4D毫米波雷达数据处理与多模态融合全解析

本文深入解析了4D毫米波雷达ARS548的工作原理与数据处理全流程。从FMCW测距测速、MIMO虚拟天线阵列到点云生成的三步FFT处理,提供了详尽的Python代码实现。文章进一步探讨了与激光雷达、相机的多模态时空对齐与融合策略,并指导如何构建用于自动驾驶感知训练的多模态标注数据集,为相关算法工程师提供了从理论到实践的完整指南。

weixin_29161719的博客 366

9.函数介绍

数组也可以作为形式参数使用 数组作为形式参数使用时真正的形式参数不是数组,而是     一个单一的变量。这个变量可以当作数组使用。 和数组形式参数对应实际参数可以是数组名称 声明数组形式参数的时候不需要写存储区个数 通常为数组形参提供另外一个形式参数用来表示数组中     存储区的个数 数组形参中所包含的存储区在两个函数之间共用,任何     一个函数对这些存储区的修改可以被另外一

谢文浩博客 336

ROS相机内参标定详细步骤指南

相机标定的目的是为了确定相机内部参数和外部参数,以便修正图像并将图像坐标映射到世界坐标,或者从世界坐标映射到图像坐标。这个过程是计算机视觉和三维感知任务的关键步骤之一,它有以下主要目的: 1. **减小畸变**:相机镜头和传感器可能引入径向和切向畸变,使得图像中的直线变得弯曲或者物体的形状不准确。通过标定相机,可以矫正这些畸变,使图像更准确。

m0_56661101的博客 1万+

linux下载NCBI基因组数据

fastq-dump --gzip --split-3 SRR25474921.sra,#使用fastq-dump将sra转换为fastq格式,--split-3 参数可以把双端测序的reads提取出来,左端标示为*_1.fastq;右端标示为*_2.fastq。安装之后转到NCBI网页搜索需要的数据或者到SRA数据中查找,我下载的是SRA数据库中的SRR25474921(SRA中是原始测序数据)prefetch --option-file SRR_Acc_List.txt #下载多个SRA文件。

k7586556的博客 2302

COM技术6

    这一章关注的细节问题,包括HRESULT,GUID,还有注册表和一些系统函数.先来看HRESULT,COM中鼓励函数返回的值都为HRESULT类型,这样可以方便的监控组件的行为.如果接口确实需要返回一个值,可以使用一个用于输出的行参.我想,这应该是基于返回值在COM中的重要性要大于通常的C和C++编程,COM编程由于把接口的实现者和使用者分开了,所以使用者在使用时必须要查询,而以查询的结果

Lance的专栏 2373

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 396

linux语言环境

1.修改语言 system locale : 系统语言环境 option requires an argument : 选项需要参数 operate on remote host : 在远程主机上操作 查看语言: localectl: 帮助: localectl -h : 查看所有语言环境: localectl list-locales 选...

qq_35663772的博客 1911

深度学习部署工程师--8(docker+TensorRT部署到推理+yolo人体检测)下

本文介绍了YOLOv5模型通过TensorRT加速部署的流程。首先需要检查磁盘空间,确保有30GB可用。文章对比了不同推理方式的性能:int8量化+TensorRT可达200FPS,纯TensorRT为166FPS,CUDA为147FPS,CPU为93FPS。重点讲解了将YOLOv5模型导出为ONNX格式的详细步骤,包括修改Detect类的forward方法以移除decode运算,使用git patch批量修改代码,安装必要的依赖库,以及通过onnx-graphsurgeon工具修改ONNX图结构。最终目标

FJN110的博客 494

YOLO-V8训练自己的数据集之标注样本

四、标注样本 4.1、标注样本概述 4.1.1、样本标注主要方法 4.1.2、标注样本概念 4.1.3、标注样本实现方式 4.1.4、常见标注样本软件 4.2、标注工具LabelImg 4.2.1、LabelImg介绍 4.2.2、LabelImg特点 4.2.3、LabelImg安装方法 4.2.4、LabelImg使用方法 4.3、标注样本实操 4.3.1、安装标注软件Labelimg 4.3.2、Labelimg界面介绍 4.3.3、LabelImg实操过程中常

qq_29633789的博客 664

COM学习笔记六《COM技术内幕》§6 —— HRESULT、GUID和注册表

《COM技术内幕》 §6 —— HRESULT、GUID和注册表没有仔细看(Note:这也是很重要的一章)《COM技术内幕》 §6 —— HRESULT、GUID和注册表(重新学习)(1)关于HRESULTCOM组件使用HRESULT来向用户报告各种情况。许多COM接口函数所返回的均是HRESULT值。NOTE HERE:HRESULT != Handle to RESULT,

dengrk的专栏 909

《YOLOv8:从入门到实战》报错解决 & 专栏答疑

《YOLOv8:从入门到实战》专栏上线后,部分同学在学习过程中提出了一些问题,笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容,笔者特意推出了该篇专栏答疑,针对同学们在学习过程中所提出的问题进行汇总记录,并不断实时更新,希望能够帮助到大家!🌈

小哥谈 1241

com技术内幕--读书笔记(6)

第6章 在前五章,作者将细节问题隐藏起来。本章主要将讨论COM的细节问题--HRESULT,GUID,注册表,最后介绍了COM库中一些函数。 HRESULT: 是QueryInterface的返回值。在设计组件的时候,可以用它来返回争取及错误代码。 HRESULT值实际上是一个可分成3个域的32位值, HRESULT的低16位(0-15位)是函数返回值;16到30

simeone18的专栏 2273

Unity零基础到入门 ☀️| 轻松学会 Unity界面布局和简单实例——入门级!(^_−)☆

入门级Unity知识,一起加油呀!

努力前行,总会成为自己心中的那道光 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

COM技术内幕(笔记)

COM——到底是什么?——COM标准的要点介绍,它被设计用来解决什么问题?基本元素的定义——COM术语以及这些术语的含义。使用和处理COM对象——如何创建、使用和销毁COM对象。基本接口——描述IUnknown基本接口及其方法。 掌握串的处理——在COM代码中如何处理串。应用COM技术——例子代码,举例说明本文所讨论的所有概念。 处理HRESULT——HRESULT类型描述,如何监测错误及成功代码

黄沙百战穿金甲,不破楼兰终不还。 4135

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

COM中的HRESULT, CLISD,ProgID, DLL注册,COM库函数的知识(COM技术内幕笔记之三)

1.COM中的HRESULT:    COM函数中返回值一般是HRESULT类型,这是因为COM是一套二进制标准,而并不是针对某个语言的,所以,定义了一个所有语言都认可的HRESULT类型。    HRESULT占32位,可以分成三个部分,0~15为返回代码16~30为设备代码,31为重要程度.    常用的HRESULT的值有:S_OK, NOERROR,S_FALSE,E_UNEXPECTED...

weixin_33877092的博客 268

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

efm32 入门.pdf

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

第六章:关于HRESULT、GUID、注册表及其他细节

在本章中,我们将会讨论关于前面所未能细说的一些细节问题。首先就是HRESULT。关于它我们在第3章中讨论QueryInterface时曾有所提及。第二个是GUID。传递给Qnerylnterface的IID结构就是GUID的一个例子。之后,我们将讨论组件如何在Windows的注册表中发布其位置信息,以便客户能够找到并创建它们。最后我们将介绍COM库中的一些有用的函数及实用程序。

qq_74544400的博客 1037

【COM学习】之二、HRESULT,GUID

HRESULT 来向用户报告各种情况。   他的值位于  WINERROR.H中 QueryInterface返回一个HRESULT值。 HRESULT不是一个句柄,他是一个可分成三个域的32位值。   Here's the RESULT 其低16位包含函数返回的代码,  其余15位包含的是此类型及返回值起源的详细信息。 其结构为: 我们的应用程序在开发过程中,在

编程之道,自强之路! 2495

《COM技术内幕》笔记(1)

function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.

tanliyoung的专栏 1175

《COM技术内幕》读书笔记——第6章

HRESULT值的使用比典型的布尔值要麻烦一点,当然也更能提供一些额外信息:成功代码有多个,失败的代码也有多个;失败代码可能会发生变化。       错误代码的直接传递会造成一些客户不识别错误代码的情况,例子在书上85页有一个有力的说明,可以参考。       对于自定义的HRSULT的一些一般性规:不要将0x0000及0x01FF范围内的值作为返回代码,因为这些值是为COM所定义的FACIL

行者无疆的专栏 1513

COM技术内幕--关于HRESULT、GUID、注册表及其他细节

HRESULT 这就是结果:Here's the RESULT HRESULT 结构如下 : //////////////////////// 名称 含义 S_OK 函数成功。在某些情况下,它还表示函数返回了一个布尔真值。被定义为0 NOERROR 同S_OK相同 S_FALSE 函数成功并返回一个布尔假值。

crkres9527 1388

COM组件学习

com组件,使用及创建。

weixin_51304431的博客 7821
上一篇: COM 技术内幕学习之五 (动态链接)
下一篇: COM 技术内幕学习之七 (类厂)
InsideKernel
博客等级 码龄19年 5粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值