- 我多久可以破坏
lpSecurityAttributes
传递给指向的结构CreateNamedPipe()
? - 每个管道实例都需要一个单独的实例吗?
CreateNamedPipe()的 MSDN 文档说:
lpSecurityAttributes [输入,可选]
指向 SECURITY_ATTRIBUTES 结构的指针,该结构指定新命名管道的安全描述符...
强调我的。“新”是指新的命名管道还是命名管道的新实例?它接着说:
评论
要使用 CreateNamedPipe 创建命名管道的实例,用户必须具有对命名管道对象的 FILE_CREATE_PIPE_INSTANCE 访问权限。如果正在创建新的命名管道,则安全属性参数中的访问控制列表 (ACL) 定义命名管道的自主访问控制。
(再次强调我的。)人们可以将此理解为lpSecurityAttributes
仅在创建命名管道的第一个实例(新命名管道)时使用的含义,并且在创建相同命名管道的进一步实例时被忽略。如果是这样,则只lpSecurityAttributes
需要该结构的一个实例。
或者,也许您必须为每个实例传递一个有效的 lpSecurityAttributes,但它可以(应该?)是同一个?
或者您可能必须为每个管道实例分配一个新的 SECURITY_ATTRIBUTES 结构?
我的相关问题 - SECURITY_ATTRIBUTES 结构是否可以在调用CreateNamedPipe()
返回后立即被销毁,或者它是否必须保持有效直到最后一个句柄(到管道,或者只是那个管道实例?)关闭 - 甚至没有解决。
有人对这两个问题有明确的答案吗?