内核对象
来源:互联网 发布:耦合器端口区分 编辑:程序博客网 时间:2024/04/30 05:32
1、与用户对象的区别
内核对象如:时间、文件映射、文件、邮件槽、互斥量、管道、进程、线程、信号量等。
与用户对象如:菜单、图标、窗口、光标、刷子、字体等
最明显的区别:创建时有内核对象一般具有安全属性,缺省NULL表示只有管理员和创建该内核对象的创建者可以访问,其他都不能访问
2、内核对象归属
属于系统而不是进程,通过计数来决定是否销毁/释放。所有对象的创建都返回一个进程相关的句柄(不同进程的不同对象句柄值是可以相同的)
3、错误检查
一般内核对象创建失败,返回的句柄值通常是0/NULL,可能的原因是内存太少或者安全问题。但是有几个返回-1(INVALID_HANDLE_VALUE),所以要仔细查看MSDN
4、关闭内核对象
一般调用CloseHandle,使得计数减1,内核判断为计数为0后,内核会释放该内核对象。但是某些新的函数可能不需要用户来调用CloseHandle了,看MSDN吧。
5、进程间共享内核对象:
1)设置当前进程中内核对象安全属性可以继承,然后创建子进程(传递继承参数为true),子进程会使得内核对象计数加1。在创建子进程时,把当前所有可继承的内核对象复制了一份。句柄值可以通过参数、消息、环境变量等方式让子进程知道。还可以通过GetHandleInformation和SetHandleInformation来设置句柄的临时的继承属性、是否允许被关闭等。
2)创建命名的内核对象。相关函数:Create... Open...,通过GetLastError判断是否已经存在等。
3)复制对象句柄(DuplicateHandle),特殊用法:复制到当前进程来增加一下计数
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- -内核对象
- 能力的困惑,空降兵带来的烦恼!
- 半透明位图(转)
- JavaScript动态添加删除表格行(支持FireFox)
- [收藏]D3D渲染流程简介
- 李一男2003年在港湾给开发人员培训时的语录
- 内核对象
- 更多的在iPhone上开发flash的学习资源
- redflag和winxp下配置ssh等
- [双语阅读]“猫王”一撮头发拍得1.83万美元
- BCB 的控件
- 优化PHP代码建议
- 一个非常好的DWR实例
- DB2常用命令速查(备忘)
- Do a number 造成伤害