内核对象句柄表的疑问--关于跨进程共享内核对象的问题
我们知道跨进程共享内核对象有三种方式:
1.对象句柄继承
2.对象命名
3.对象句柄拷贝
为什么用继承方式时,子进程内核对象句柄表中内核对象句柄不仅所有值与父进程中的一样,而且
表项位置也要一样?(对于那些被共享的句柄而言)
而用对象命名方式的时候,如果进程A已经创建一个内核对象名为objectname,那么当进程B调用Create*(...,TEXT("objectname"))函数时,如果一切顺利,“系统在新进程的句柄表中找出一个空项目,并对该项目进行初始化,使
该项目指向现有的内核对象”,也就是objectname了,但后面又强调
“请注意,这两个进程中的句柄值很可能是不同的值。这是可以的。Process A将使用它的句柄值,而Process B 则使用它自
己的句柄值来操作一个互斥内核对象。”
这使我很费解,既然命名对象方式时可以这么做,为什么对象句柄继承方式中非要一模一样不可呢?
请高人指点指点。