内核对象
来源:互联网 发布:java两个日期相差年数 编辑:程序博客网 时间:2024/06/09 13:42
1.内核对象用句柄来标识
每个内核对象其实就是一块内存块,这个内存块位于操作系统的内核地址空间,因此应用程序不能直接操作内核对象,需要用系统给定的函数来操作,不同的内核对象由不同的函数窗口。
2.内核对象有哪些
Ø 令牌对象token
Ø 事件对象Event
Ø 文件对象File
Ø 文件映射对象Mapping_File
Ø 线程对象Thread
Ø 时钟对象Timer
Ø 线程池对象ThreadPool
Ø I/o完成端口对象,Completion port
Ø 工作对象Job
Ø 邮槽对象mailslot
Ø 互斥对象Mutex
Ø 管道对象pipe
Ø 进程对象process
Ø 信号灯对象semaphore
由上图可以分析出不同进程之间的句柄不可以互相引用,引用会出问题,一般进程句柄相当于进程句柄对象列表中的索引位置,所以不同进程之间不可以用。
4.创建内核对象
需要用到相关的系统API,举例
HANDLE CreateThread( PSECURITY_ATTRIBUTES psa, size_t dwStackSize, LPTHREAD_START_ROUTINE pfnStartAddress, PVOID pvParam, DWORD dwCreationFlags, PDWORD pdwThreadId);
BOOL CloseHandle(HANDLE hObject);参数:
hObject:代表一个已打开的对象handle
返回值:
TRUE::代表成功
FALSE:代表失败,可以用GetLastError函数获取错误码
内核对象使用引用计数技术,可以增加和减少引用计数来确定内核对象有效和无效
6.设置和获取内核对象的信息
BOOL SetHandleInformation( HANDLE hObject, DWORD dwMask, DWORD dwFlags);
BOOL WINAPI GetHandleInformation( _In_ HANDLE hObject, _Out_ LPDWORD lpdwFlags);
7.命名内核对象
创建内核对象的函数中,如果有pszName参数,说明这个内核对象可以被命名,可以机床及命名内核对象。命名内核对象可以在不同进程中使用。
匿名内核对象不能在进程间共享。
0 0
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- 内核对象
- -内核对象
- ZCMU—1556
- Spring MVC中加载配置properties文件(以配置Redis为例)
- 数据结构草稿
- 信号同步
- IntelliJ中的main函数和System.out.println()快捷键
- 内核对象
- 在PyCharm环境中使用Jupyter Notebook的两种方法
- 蓝桥杯训练:爆搜——求年龄
- js点击某个图标或按钮弹出文件选择框
- 项目记录-凸包修正
- Linux下连接Mysql
- word中查找和搜索的通配符
- bootloader的功能介绍
- 用基于center loss的人脸识别模型对LFW人脸数据集进行评测(c++)