目的是使多个应用态程序能够打开同一个内核设备,而且这些应用态程序之间都使用同一个内核设备句柄我在进程A中使用CreateFile()打开自定义的内核设备后,想在进程B中获得进程A中打开的内核设备句柄,于是选用了DuplicateHandle()进行句柄复制。
现在的疑问是:
1:这样的方法可行么?
2:在使用DuplicateHandle时,总是返回 无权访问 的错误,不知是为什么都晕了,我
现在的疑问是:
1:这样的方法可行么?
2:在使用DuplicateHandle时,总是返回 无权访问 的错误,不知是为什么都晕了,我
relationship. Setting the handles as inheritable and then
calling CreateProcess with the inherit handles flag set is
enough
DuplicateHandle(hProcess,hSourceHandle, hCurrentProcess,&hMyHandle, STANDARD_RIGHTS_REQUIRED,TRUE,0 );你是这样用的吗?
函数中的参数hProcess 是通过OpenProcess获得的句柄么?hSourceHandle是怎么获得的?能不能在进程A中记录下来,然后通过进程间通信传给进程B??
那么在调用DuplicateHandle的时候,h1就是对应着参数hSourceHandle第一个参数hProcess是通过OpenProcess获得的,值得注意的是必须在OpenProcess的时候指定PROCESS_DUP_HANDLE这个标志,下面是MSDN里有关这个参数的说明:Parameters
hSourceProcessHandle
[in] Handle to the process with the handle to duplicate.
Windows NT/2000: The handle must have PROCESS_DUP_HANDLE access. For more information, see Process Security and Access Rights.