内核对象

本文介绍了Windows操作系统中内核对象的使用计数、安全性及句柄表的概念,并详细探讨了六种跨进程共享内核对象的方法,包括对象句柄继承、改变句柄标识、为对象命名等。此外,还提供了通过互斥锁创建唯一实例的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

术语:

1、使用计数:记录内核对象被使用的次数,如果计数为0对象已被销毁,相当于CloseHandle()。

2、内核对象的安全:内核对象可以用一个安全描述符(SD)保护。谁拥有、谁可以访问、谁可以使用、谁拒绝访问等。

3、进程内核对象句柄表:当进程初始化时,系统为它分配一个句柄表。

4、跨进程边界共享内核对象:不同进程中运行的线程需要共享内核对象。

方法1、使用对象句柄继承-----创建进程时对SECURITY_ATTRIBUTES的bInheritHandle成员初始化为TRUE.

方法2、改变句柄的标识-----调用SetHandleInformation函数对指定的内核对象改变它的继承标识。

方法3、为对象命名-------创建内核对象时,对创建内核对象的函数的最后一个参数赋予一个字符串也就是内核对象的名字

方法4、终端服务命名空间--------名称中可以加入"Global\"或是"Local\"的前缀,这样可以明确的将对象创建在全局的或事务的命名空间。名称的其它部分除了反斜杠.

方法5、专有命名空间

方法6、复制对象句柄-------调用DuplicateHandle函数,它可以获取一个句柄表中的一项纪录。


创建唯一实例:

	hMutex=CreateMutex(NULL,FALES,"ticket");
	if(hMutex)
	{
		if (GetLastError()==ERROR_ALREADY_EXISTS)
		{
			printf("实例已经存在");
		}
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值