处理继承

子进程可以从其父进程继承句柄。 继承的句柄仅在子进程的上下文中有效。 若要使子进程能够从其父进程继承打开的句柄,请使用以下步骤。

  1. 创建将 SECURITY_ATTRIBUTES 结构的 bInheritHandle 成员设置为 TRUE 的句柄。
  2. 使用 CreateProcess 函数创建子进程,并将 bInheritHandles 参数设置为 TRUE

DuplicateHandle 函数复制要用于当前进程或其他进程的句柄。 如果应用程序为另一个进程复制了其中一个句柄,则重复的句柄仅在另一个进程的上下文中有效。

复制或继承的句柄是唯一值,但它引用与原始句柄相同的对象。 进程可以继承或复制以下类型的对象的句柄:

  • 访问令牌
  • 通信设备
  • 控制台输入
  • 控制台屏幕缓冲区
  • 桌面
  • 目录
  • 事件
  • 文件
  • 文件映射
  • 作业
  • Mailslot
  • Mutex
  • 管道
  • 进程
  • 注册表项
  • Semaphore
  • 插座
  • 线程
  • Timer
  • 窗口工作站

所有其他对象都是创建它们的进程的专用对象;不能复制或继承其对象句柄。

有关详细信息,请参阅继承