WINDOWS核心编程之什么是内核对象(三)

原创 2007年09月16日 10:15:00
1.内核对象句柄的继承性
当父进程创建内核对象时,必须向系统指明,它希望对象的句柄是个可继承的句柄。父进程可以使用一个或多个内核对象句柄,并且该父进程可以决定生成一个子进程,为子进程赋予对父进程的内核对象的访问权。
 
注意啦:虽然内枋对象句柄具有继承性,但是内核对象本身不具有继承性.
 
2.创建能继承的句柄
父进程只要指定SECURITY_ATTRIBUTES 结构中的bInheritHandle为真, 然后将该结构的地址传递给特定的Create函数(创建内核对象的函数)
 
在内核对象句柄表中的标志,它就是用来指明该句柄是否具有继承性的。如果bInheritHandle为1,那么标志位就置为1,否则为0;
 
注意:对象句柄的继承性只有在生成子进程的时候才能使用,如果父进程准备创建带有可继承句柄的新内核对象,那么已经在运行的子进程将无法继承这些新句柄。
 
3.如何生成子进程
用CreateProcess(….)其中参数bInheritHandles设为TRUE, 那么子进程就可以继承父进程的可继承句柄值了。此时系统为子进程创建一个新的和空的句柄表,因为设定了bInheritHandle为TRUE,那么它要遍历父进程的句柄表,对于它找到的包含有效的可继承句柄的每个项目,系统会将该项目copy到子进程的句柄表。该项目copy到子进程的句柄表中的位置将与父进程的句柄平中的位置完全相同。也就是说父进程与子进程中,标识内核对象所使用的句柄值是相同的.另外,系统还要递增内核对象的使用计数,
注意:CreateProcess函数返回后,父进程可以立即关闭对象的句柄,而不影响子进程对该对象进行操作的能力
 
4.改变句柄的状态
当父进程创建了一个内核对象,然后又生成了两个子进程,父进程只想让一个子进程来继承对象的句柄。若要改变内核对句柄的继承标志,可以调用SetHandleInformation函数
BOOL SetHandleInformation(HANDLE hObject, DWORD dwMask, DWORD dwFlags);
hObject参数标识一个有效的句柄, dwMask告诉该函数想要改变哪个或哪几个标志,可选择的有HANDLE_FLAG_INHERIT   HANDLE_FLAG_PROTECT_FROM_CLOSE, dwFlags指明想将该标志设置成什么值
 
待续........
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Windows核心编程(三)内核对象

1、内核对象: 通过API来创建,每个内核对象是一个数据结构,对应一块内存,由操作系统内核分配,并且只能由操作系统内核访问。在此数据结构中少数成员(如安全描述符和使用计数)是所有对象都有的,但其他大...

windows核心编程<读书笔记三>内核对象

【文起】蟹儿的爱一直伴随着,奋斗! 内核对象 1、  定义: 内核对象可以供系统和应用程序使用来管理各种各样的资源,比如线程、进程、文件等。 内核对象就是内核分配的一个内存块,且只能由该内核来...

《windows核心编程系列》三谈谈内核对象及句柄的本质

http://blog.csdn.net/ithzhang/article/details/7920204                           ...

《Windows核心编程》——三 内核对象

前言 内核对象用于管理进程、线程和文件等诸多种类的大量资源。 3.1 何为内核对象 内核对象包括访问令牌对象、事件对象、文件对象、文件映像对象、I/O完成端口对象、作业对象、邮件槽对象、互斥量对象、...

《windows核心编程系列》三谈谈内核对象及句柄的本质

内核对象     本章讨论的是相对抽象的概念,不涉及任何具体的内核对象的细节而是讨论所有内核对象的共有特性。 首先让我们来了解一下什么是内核对象。内核对象通过API...

《windows核心编程系列》三谈谈内核对象及句柄的本质

2012、8、29 http://blog.csdn.net/ithzhang/article/details/7920204转载请注明出处!             &#...

WINDOWS核心编程第三章内核对象的一点细节

久仰此书大名已久,可惜以前没看懂。。。现在感觉有点基础了回头再看,感觉多少有点死皮赖脸的嫌疑。。。。关于啥是内核对象请看第三章就对了,看的时候发现书上说GetCurrentProcess返回的是伪句柄...

windows核心编程--内核对象和句柄泄漏

1. 什么是内核对象?        内核对象是操作系统分配的一个内存块,该内存块是一个数据结构,用于管理对象的各种信息。 当应用程序要与系统设备进行交互的时候,将使用到内核对象,出于安全...

Windows核心编程:内核对象

作者:shenzi 链接:http://hi.csdn.net/shenzi Windows核心编程:内核对象  1.对象和句柄     对象是静态定义的对象类型的单个运行时实...

读书笔记----《windows核心编程》第三章 内核对象1(句柄与安全性)

最近一直没有更新博客,因为一直在想一个问题,内核对象这一章内容很多很重要,自己没有掌握好也没有把握写好这一章,最后还是决定能写多少写多少,一面写一面学,后续学到新的再更新吧;   《windows核心...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)