windows句柄

什么是windows句柄 摘要: Windows系统句柄按资源类型可分为内核对象、窗口控件和GDI绘图资源三大类。内核对象句柄(如进程、线程、文件)通用性最强,使用CloseHandle释放;窗口句柄(HWND、HMENU等)需专用API操作和释放;GDI资源(HDC、HPEN等)必须调用DeleteObject避免泄漏。此外还有注册表、套接字等专属句柄。关键注意事项包括伪句柄特性、句柄继承机制及泄漏排查方法(通过任务管理器监控句柄数量)。不同句柄类型对应特定API,错误释放会导致系统异常。 阅读详情

windows句柄,其实是在说这么一个类型: HANDLE,在windows.h里面,是这样定义的:LPVOID,其实就是一个void*。

对于很多新手来说,句柄这个概念有点难以理解。

想要真正了解句柄,你必须首先要了解内核对象。不了解内核对象而空谈句柄,没有任何的意义。

windows内核对象是由操作系统内核分配的一块内存(储存着对象的相关信息), 这段内存只能由内核访问和管理。

    1. SEMAPHORE对象,用于线程同步

    2. event对象,用于线程同步
    3. file对象 文件
    4. mapped file对象 映射文件
    5. IO完成端口  
    6. 作业对象  job
    7. 互斥对象 mutex,用于线程同步
    8. 管道对象 pipe,用于进程间通信
    9.  进程对象  process
    10. 线程对象 thread
    11. 待计时器对象 timer

    12。线程池对象。

等等,这里并没有完全列出。

 这个由内核所分配的内存块本质上是一种数据结构,不同的内核对象有不同的结构成员,但几乎所有的内核对象都有以下两个重要的成员: 

1) 使用计数器 (use count)

  用于记录当前有多少个进程在使用该内核对象--当内核对像被首次创建时其计数为1,然后,每次有另外的进程访问该对象时,计数器+1,当一个进 程结束时系统会自动检查被该进程所使用的那些在内存中依然的内核对象的usage count,并将其减1,此时,如果减后的usage count为0,那么系统会进一步自动撤销该内核对像。这样便可以保证没有被任何进程使用的kernel object的内存被及时撤销。

2)安全描述符(security discriptor)

   安全描述符用于描述谁创建了该对象,谁能够访问或使用该对象,谁无权访问该对象。安全描述符通常在编写服务器应用程序时使用,如果你编写客户机端的应用程 序,那么可以忽略内核对象的这个特性。另外,该成员也是所创建的对象是否为内核的依据。大多数应用程序只是为该参数传递N U L L,这样就可以创建带有默认安全性的内核对象。默认安全性意味着对象的管理小组的任何成员和对象的创建者都拥有对该对象的全部访问权,而其他所有人均无权 访问该对象。但是,可以指定一个SECUTITY_ATTRIBUTES结构,对它进行初始化,并为该参数传递该结构的地址。

区别内核对象和用户对象的方法是,看对象的创建函数,一般的内核对象的创建函数最后一个参数都是安全描述符相关的。而用户对象则没有。一些UI相关的handle,Menu,icon,image不是内核对象。

鉴于内核对象不能被应用程序直接访问,为了让应用程序方便的使用内核对象,微软设计了句柄,用句柄来关联一个内核对象。使得应用程序只能通过句柄的 方式并调用windows提供的一系列内核对象操作接口,而且这些句柄对于应用程序来说是不透明的。这就是句柄设计的目的。当创建一个内核对象时,返回的 是和这个内核对象关联的句柄。而使用句柄则丧失了许多权限,使得内核对象安全得到了保证。

一般来说,句柄都是依附于进程的。但是句柄也可以跨进程共享。每个进程都有一张表,用来储存自身所创建和拥有的内核对象的指针,而句柄则是这些指针在表的索引值。从hande到索引会有一个变换,一般是除4。但是不同的版本会不一样。

windows server进程内存占用及CPU使用率自动监控并记录脚本 当遇到应用偶发性出问题时,需要分析是否因为该应用的进程内存使用率瞬时值过高或服务器CPU过高导致的,每隔5秒记录一次,自动监控并记录便于分析问题。 立即下载

相关推荐

基于三轴加速度计的塑料水管泄漏振动检测技术全解析

在流体力学与结构动力学领域,管道振动分析是评估系统健康状态的关键技术。其基本原理在于,当管道内流体状态发生异常(如泄漏)时,会引发管壁产生特定的机械振动信号。这项技术的核心价值在于实现了对管道系统的非侵入式、在线监测,能够提前预警潜在故障,避免资源浪费与次生灾害。在智慧城市与智能水务等应用场景中,它对于保障供水管网安全、提升运维效率具有重要意义。本文聚焦于如何利用高精度的三轴加速度计,精准捕捉塑料水管因泄漏产生的微弱振动,并通过信号处理与机器学习算法,构建一套从数据采集到泄漏识别与定位的完整工程解决方案。

weixin_32239523的博客 407

Windows句柄剖析

Windows句柄的前生今世:句柄剖析

zhangchuan7758的博客 5025

Moltbot 超详细安装使用教程(初学者版)

你在外面逛街,用微信/Telegram 发消息说"帮我查一下明天的天气"它立刻帮你查好并回复你说"帮我在电脑上新建一个文件夹叫'工作文档'"它真的帮你在电脑上创建了这就是 Moltbot ——一个能真正帮你干活的 AI 助手。API Key 就像是一把"钥匙",让 Moltbot 能够使用 AI 服务。

weixin_51040479的博客 2017

详解 win 中的 各种句柄 以及 各个版本 中的应用

Windows 句柄系统是一个高度抽象的资源管理工具,覆盖了文件、进程、线程、窗口、同步、注册表等各类资源,使得应用程序可以通过统一的接口访问和控制各种系统资源。在 Windows 不同版本中,句柄的安全性和管理机制不断增强,优化了性能,并提供了更强的隔离和保护功能,以满足复杂应用程序的需求。

抟土成人祖,炼石补青天。眼中览银河,手可摘星辰。 2282

SpotBugs实战:10大类Bug检测规则详解与代码优化实例(附避坑清单)

本文深入解析SpotBugs在Java开发中的实战应用,详细讲解10大类Bug检测规则与代码优化实例,包括NPE防御、多线程安全、性能优化等关键问题。通过具体代码示例和避坑清单,帮助开发者提升代码质量,有效集成到CI/CD流程中。

weixin_42665255的博客 196

rk3568 OpenHarmony4.0如何使用中文输入法

问题:rk3568开发板 OpenHarmony4.0release系统自带输入法kikaInput软件只有英文输入,不含中文输入,不方便。本文基于rk3568开发板 OpenHarmony4.0release移植了laval社区发布的开发者手机中的搜狗输入法(测试版),实现了中文输入,为OpenHarmony4.0release的其他开发板中文输入提供参考。

Devlin_的博客 2916

真正理解微软Windows程序运行机制——什么是句柄

真正理解微软开发技术——Windows程序运行机制

荔园微风的博客 2647

Android Profiler 帧率优化实战与性能调优

本文详细介绍了使用Android Profiler进行帧率优化与性能调优的实战方法。通过分析主线程状态、FPS曲线和渲染阶段耗时,精准定位卡顿根源,并提供减少过度绘制、优化绘制命令及改善资源使用的具体策略。文章结合电商、游戏等真实案例,帮助开发者有效解决卡顿问题,提升应用流畅度。

palm99的专栏 536

深入理解Windows句柄

因此我们现在了解,内核中的对象他们位于内核空间,在用户空间不能单纯用地址来引用他们,因此Windows使用句柄来管理和引用对象。当一个进程利用名称来创建或者打开一个对象的时,该句柄指向所创建或者打开的对象,例如,文件操作中,是使用句柄来表示的。每当应用程序打开或者创建一个文件的成功的时候,会返回一个句柄。以后应用程序都使用该句柄来标识该文件。如果有两个应用程序以共享的方式打开同一个文件。那么它们将得到两个句柄,并且这两个句柄的值并不相同,但是却都指向同一个文件,且都通过各自的句柄操作同一个文件。

qq_30528603的博客 327

cmu15445(2024fall) project 2

project 2比p1难度要更大,代码量更大且涉及的知识更多,实现中出现的bug更多,好在是最后全部解决了。我最大的收获在于对于多线程编程的理解更深入了,实际发现解决了多个多线程相关的bug,学会了更多多线程下debug的技巧方法,也见识了更多多线程的bug情况。在之后可以更系统的学习一下多线程编程。同时学会实现B+树也是需要掌握的基础。

Jerome_Yi的博客 1561

一文读懂医疗大模型测评基准

面对市场上浩若星海的大模型,医院管理者如何采购适合自身场景的解决方案?如何选取好的模型作为基础进行课题研究?都是医院需要特别重视的问题。评测基准则benchmark是这些问题的重要解法,国内北京、上海、浙江已然开展了相关的标准化工作。

dz102的博客 1841

VC 获取控制台窗体的句柄(hWnd)

在Windows中,句柄是外国话,理解为编号的意思,只要你知道了这个窗口的句柄,就可以对这个窗体进行操作——移动窗体、改变窗体大小、把窗体极小化为图标等。Windows API函数中的句柄代表一些特殊元素,如窗体、位图、图标、内存块、光标、字体、菜单等。 在WinAPI中, FindWindowA(LPCSTR lpClassName ,LPCSTR lpWindowName); ...

jintingbo的专栏 3519

C++,使用Qt设计一个登录窗口

使用Qt设计一个登录界面

heyu0311的博客 2991

深入了解Windows句柄到底是什么

总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。 这篇文章中我们来详细探讨一下Windows中的句柄到底是什么,希望可以解开广大程序员的心中疑惑。

文洲的专栏 10万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Windows GDI句柄分析

我们知道,Windows 的GDI是一个单独的子系统,这个子系统中包含两个重要的东西是CSRSS进程和WIN32K驱动,由这两个模块实现所有的绘图操作,我们先看一下其中的核心之一就是WIN32K,这个模块加载的时候会调用。主要有一个好处就是Windows在应用层的时候就可以通过句柄找到GDI对象,而不需要切换到内核中,我们知道切换到内核是需要一定的资源消耗的,因此使用这种方式可以提升一定的速度。不同的进程,对应的GDI对象的句柄是一样的,因此GDI对象不同于内核对象,完全可以跨进程使用。

xsinlink的博客 1300

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Windows句柄表学习笔记 —— 句柄表&全局句柄表

Windows句柄表学习笔记 —— 句柄表&全局句柄表前言句柄表实验一:在WinDbg中查看句柄表第一步:打开一个Win32窗口程序第二步:编译并运行以下代码第三步:查看运行结果第四步:在WinDbg中定位句柄表句柄表结构实验二:在WinDbg中查看并分析句柄表结构第一步:打开一个Win32窗口程序第二步:编译以下代码并运行第三步:查看运行结果第四步:在WinDbg中定位最后一个句柄第五步...

lzyddf的博客 4844

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Windows句柄表格式

原文发表于百度空间,2009-02-28 句柄是Windows对象管理中引入的一个东西,它的实际意义是对象在句柄表中的索引。Windows2000使用的是固定的三层句柄表,而WindowsXP和Windows2003都是使用的动态可扩展的三层句柄表,这是一种很优秀的结构,易扩展,且查找迅速,值得学习。通常情况下每个进程的句柄表都是一级表,当句柄数超过一级表的容量时,就会扩展为二级表,此时二级表中放...

xlaomlng的博客 600

基于Windows核心编程--句柄是什么?

什么是句柄? 句柄也就是在系统中指向某个控件或对象的唯一指针,系统可以通过这个句柄与所对应的空间或对象交互(控制它)。控件或对象与句柄的关系就好比电视机和遥控器,通过遥控器来控制电视机一样。 Windows环境中有很多对象,诸如窗口、画笔等等,可以通过API函数以不同的形式对这些对象进行操作。为此,必须以某种方法对这些对象进行标识,并把它们以参数的形式传递给函数。Windows用一个32位整数对各种对象进行标识,这就是句柄。也就是说句柄是一个对象的标识符。

小L的博客 1148

深入探讨windows系统中句柄概念

设备句柄(Device Handle)是Windows操作系统用来标识和访问各种系统资源的整数值。它相当于一个"令牌"或"引用",应用程序通过这个句柄来操作对应的设备或资源。句柄抽象层:应用程序通过句柄间接访问内核对象权限分离:用户模式代码无法直接访问内核内存系统调用门铃:通过特定的CPU指令(syscall/sysenter)切换到内核模式对象引用计数:确保对象在使用期间不会被意外释放安全验证:每次访问都经过严格的安全检查资源配额:防止单个进程耗尽系统资源。

lza_csdn2019的博客 1136

windows 句柄

windows句柄,其实是在说这么一个类型: HANDLE,在windows.h里面,是这样定义的:LPVOID,其实就是一个void*。对于很多新手来说,句柄这个概念有点难以理解。 想要真正了解句柄,你必须首先要了解内核对象。不了解内核对象而空谈句柄,没有任何的意义。 windows内核对象是由操作系统内核分配的一块内存(储存着对象的相关信息), 这段内存只能由内核访问和管理

David的专栏 1789

探索Windows内核系列——句柄,利用句柄进行进程保护

探索Windows内核系列——句柄,利用句柄进行进程保护

sunjiaoya的博客 1852

Windows中的句柄(handle)

1.句柄是什么? 在windows中,句柄是和对象一一对应的32位无符号整数值。对象可以映射到唯一的句柄,句柄也可以映射到唯一的对象。2.为什么我们需要句柄? 更准确地说,是windows需要句柄。windows需要向程序员提供必要地编程接口,在这些接口中,允许程序员访问、创建和销毁对象。但是,出于封装地考虑,windows并不想向程序员返回指针。指针包含了太多的信息。首先指针给出了对象存...

weixin_34185320的博客 1479

windows编程 句柄是什么

我是属于刨根问底型的,老师也不讲windows变成是什么直接就让我们开始做题了,句柄到底也不到那个是什么,现转载,再说吧。 ***************************************************************************************************************************************

bjtu_dubing的博客 431

c语言windows编程句柄,HANDLE句柄(windows编程)

首先什么是句柄?(理解了句柄,也就知道了句柄和指针的区别了)所谓句柄实际上是一个数据,是一个Long(整长型)的数据。句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象...

weixin_30077373的博客 1900

Windows句柄

图解说明——究竟什么是Windows句柄 参考资料:http://blog.csdn.net/newjerryj/article/details/4383701           http://www.cnblogs.com/yellowyu/archive/2009/06/07/1497910....

luozhenjie123的博客 265
上一篇: vc watch窗口查看指针指向的数组
下一篇: map插入对象小结
VirtualDesk
博客等级 码龄19年 19粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值