内核对象&句柄】的更多相关文章

内核对象用于管理进程.线程和文件等诸多种类的大量资源,每一个内核对象都只是一个句内存快,它由操作系统内核分配,并只能右操作系统内核访问.这个内存块是一个数据结构,其维护着与对象相关的信息,其中少数成员是所有对象都有的,其他大多数都是不同类型的对象特有的. 由于内核对象只能由操作系统内核访问,因此windows提供了句柄来标识内核对象,对于应用程序来说,这个句柄就相当于这个内核对象.应用程序创建一个内核对象,就会返回对应的句柄,然后可以以这个句柄作为参数,去调用操纵和关闭内核对象的函数. 操作系统…
当一个进程被初始化时,系统要为它分配一个句柄表.该句柄表只用于内核对象 ,不用于用户对象或GDI对象. 创建内核对象 当进程初次被初始化时,它的句柄表是空的.然后,当进程中的线程调用创建内核对象的函数时,比如CreateFileMapping,内核就为该对象分配一个内存块,并对它初始化.这时,内核对进程的句柄表进行扫描,找出一个空项.由于表 3 - 1中的句柄表是空的,内核便找到索引1位置上的结构并对它进行初始化.该指针成员将被设置为内核对象的数据结构的内存地址,访问屏蔽设置为全部访问权,同时,…
今天看到这个问题如何评价王垠的 <讨厌的 C# IDisposable 接口>? - 王垠(人物),答案被歪到windows 内核对象和句柄,答案中谈的太浅显而且有误.翻出陈年老文章(此文成于2012年,只在公司内部分享过),大部分内容来自Windows内核原理 1句柄和句柄泄露 在Windows编程过程中,很多时候我们都要和句柄打交道,比如窗体句柄,内核对象句柄,GDI句柄,Windows Multimedia库中的多种句柄等等,以及其他更多未曾使用过的句柄类型.句柄(Handle)是Win…
内核对象&句柄 目录 1 内核对象的概念 2 内核对象的使用计数 3 句柄 4 句柄表   项目工程代码中设计句柄的使用,一时不知句柄是何物,通过查阅自学之后,对句柄及其使用有一个初步的了解.分享出来,算是抛砖引玉吧.  在阐述句柄之前,先说明一下内核对象. 1 内核对象的概念   内核对象就是一个内存块,有内核分配,只能由内核访问.   内存块是一种数据结构,其中的数据成员负责维护该对象的相应信息,这个数据结构以及其中的数据成员只能由内核访问,应用程序是无法访问到的,更别说修改其中的数据成员了…
总结: 1.句柄就是进程句柄表中的索引.2.句柄是对进程范围内一个内核对象地址的引用,一个进程的句柄传给另一个进程是无效的.一个内核对象可用有多个句柄.Windows之所以要设立句柄,根本上源于内存管理机制的问题,即虚拟地址.简而言之数据的地址需要变动,变动以后就需要有人来记录.管理变动,因此系统用句柄来记载数据地址的变更. 当一个进程被初始化时,系统要为它分配一个句柄表.该句柄表只用于内核对象 ,不用于用户对象或 GDI 对象. .第一个句柄索引为4,第二个是8. 创建内核对象 当进程初次被初…
内核对象简介 内核对象就是 一些数据结构该结构用来描述存储内核中的一个内存块中的数据信息.   内存块是一种数据结构,其中的数据成员负责维护该对象的相应信息,这个数据结构以及其中的数据成员只能由内核访问,应用程序是无法访问到的,更别说修改其中的数据成员了. 概念:内核对象可以供系统和应用程序使用来管理各种各样的资源,Windows程序员可以调用Windows API最终调用ntdll.dll中的函数 去创建.打开和操作各种内核对象.常见的内核对象有:访问令牌.事件对象.文件对象.文件映射对象.I…
目录 1 内核对象的概念 2 内核对象的使用计数 3 句柄 4 句柄表   项目工程代码中设计句柄的使用,一时不知句柄是何物,通过查阅自学之后,对句柄及其使用有一个初步的了解.分享出来,算是抛砖引玉吧.   在阐述句柄之前,先说明一下内核对象. 1 内核对象的概念   内核对象就是一个内存块,有内核分配,只能由内核访问.   内存块是一种数据结构,其中的数据成员负责维护该对象的相应信息,这个数据结构以及其中的数据成员只能由内核访问,应用程序是无法访问到的,更别说修改其中的数据成员了.   如何访…
  本章讨论的是相对抽象的概念,不涉及任何具体的内核对象的细节而是讨论所有内核对象的共有特性. 首先让我们来了解一下什么是内核对象.内核对象通过API来创建,每个内核对象是一个数据结构,它对应一块内存,由操作系统内核分配,并且只能由操作系统内核访问.在此数据结构中少数成员如安全描述符和使用计数是所有对象都有的,但其他大多数成员都是不同类型的对象特有的.内核对象的数据结构只能由操作系统提供的API访问,应用程序在内存中不能访问.调用创建内核对象的函数后,该函数会返回一个句柄,它标识了所创建的对象.…
内核对象 本章讨论的是相对抽象的概念,不涉及任何具体的内核对象的细节而是讨论所有内核对象的共有特性. 首先让我们来了解一下什么是内核对象.内核对象通过API来创建,每个内核对象是一个数据结构,它对应一块内存,由操作系统内核分配,并且只能由操作系统内核访问.在此数据结构中少数成员如安全描述符和使用计数是所有对象都有的,但其他大多数成员都是不同类型的对象特有的.内核对象的数据结构只能由操作系统提供的API访问,应用程序在内存中不能访问.调用创建内核对象的函数后,该函数会返回一个句柄,它标识了所创建的…
9.1 等待函数 (1)WaitForSingleObject(hObject,dwMilliseonds); ①dwMilliseconds为INFINITE时表示无限等待 ②dwMilliseconds=0时表示立即返回,即使它要等待的条件还没满足 ③dwMilliseconds为其它值时(单位为ms),其返回值有三种情况:A.WAIT_OBJECT_0表示等待的对象触发.WAIT_TIMEOUT表示超时.WAIT_FAILED:表示可能传入了无效句柄,可进一步调用GetLastError来…