winapi处理全球吗?

n00*_*00b 7 winapi

一个非常简单的问题,如果我HANDLE在app1.exe中创建并获得值,那么该值0x01是全局唯一的吗?

或者,当某个其他流程创建HANDLE具有价值的流程时,它是否可能0x01.

如果它们不是唯一的,那么我可以使用其他构造来获得与句柄兼容的唯一ID(这样HANDLE在其他地方创建具有该id的不可能或极不可能).

sev*_*tov 6

要理解的重要一点是句柄不是对象.句柄是每个进程对象表的指针(或索引).为了回答你的问题,HANDLES并不是全局唯一的,但是它们的范围仅限于在特定过程中有意义.

要使任何内核对象能够从其他进程访问,您必须使用DuplicateHandle.

跨进程共享对象的另一种方法是调用CreateProcess,并将bInheritHandles设置为true.