windows编程学习——句柄

本文介绍了Windows编程中句柄的基本概念,包括句柄的定义、由来及其与指针的区别,并探讨了句柄的工作原理及在实际编程中的应用。

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

Windows编程学习之句柄

1       介绍:

        句柄,是整个Windows编程的基础,一个句柄是指使用一个唯一的整数值(32位OS中四字节长/64位OS中8字节长),来标识应用程序中不同对象和同类中的不同实例。应用程序能通过句柄访问相应对象的信息。

1.1         定义:句柄是OS内标志程序建立的唯一整数

1.2         由来:源于内存管理机制-虚拟地址

1.3         重要性:是整个Windows编程的基础

1.4         与指针的区别:

        特别强调,句柄不是指针,句柄只是对象的一个唯一标识。程序不能利用句柄来直接阅读文件中的信息,如果句柄不在I/O文件中,那么它的存在也没有了意义。

而指针则是直接指向对象的内存地址,程序可以通过指针直接访问对象。所以在学习中千万不要混淆两者。

2       由来

         Windows 之所以要设立句柄,根本上源于内存管理机制的问题—虚拟地址,因为在程序运行时,数据的地址需要时常的变动,变动以后就需要重新记录,因此系统用句 柄来记载数据地址的变更。

也可以这么理解,句柄就是OS老大为了方便管理和调度自己手上时常变动的资源,而设置的一种管理机制,无论数据怎样动态变动,在它变动后都需将最新的地址上报给句柄,然后让句柄记录,当下次在用到时,只需要问句柄,便能直接找到相应的数据。

3       原理

          Windows程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的。相反,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。

句柄是一个标识符,是拿来标识对象或者项目的。它就像我们的车牌号一样,每一辆注册过的车都会有一个确定的号码,不同的车号码各不相同,但是也可能会在不同的时期出现两辆号码相同的车,只不过它们不会同时处于使用之中罢了。从数据类型上来看它只是一个32(64)无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。在WINDOWS编程中会用到大量的句柄,比如:HINSTANCE(实例句柄),HBITMAP(位图句柄),HDC设备描述句柄),HICON(图标句柄)等等。这当中还有一个通用的句柄,就是HANDLE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值