- Как скоро я могу уничтожить структуру, на которую указывает
lpSecurityAttributes
, переданная CreateNamedPipe()
? - Нужна ли отдельная для каждого экземпляра трубы?
Документация MSDN для CreateNamedPipe () гласит:
lpSecurityAttributes [in, необязательно]
Указатель на структуру SECURITY_ATTRIBUTES, которая задает дескриптор безопасности для новый именованная труба ...
Акцент мой.Означает ли «новый» новый именованный канал или новый экземпляр именованного канала?Далее говорится:
Замечания
Чтобы создать экземпляр именованного канала с помощью CreateNamedPipe, пользователь должен иметь доступ FILE_CREATE_PIPE_INSTANCE к объекту именованного канала. Если создается новый именованный канал , список контроля доступа (ACL) из параметра атрибутов безопасности определяет дискреционное управление доступом для именованного канала.
(Снова выделениемое.) Это можно прочитать как означающее, что lpSecurityAttributes
используется только при создании первого экземпляра именованного канала ( new именованный канал) и игнорируется при создании дальнейших экземпляров * 1037.* из одноименной трубы.Если это так, то требуется только один экземпляр структуры lpSecurityAttributes
.
Или, возможно, вам нужно передать действительные атрибуты lpSecurityAttributes для каждого экземпляра, но он может (должен?) Быть одним и тем же?
Или, возможно, вам нужно выделить новую структуру SECURITY_ATTRIBUTES для каждого экземпляра канала?
Мой связанный вопрос - может ли структура SECURITY_ATTRIBUTES быть уничтожена, как только вызов CreateNamedPipe()
вернется, или он должен это сделать?остаются в силе до тех пор, пока не будет закрыт последний дескриптор (для канала или только этого экземпляра канала?) - даже не указан.
У кого-нибудь есть окончательные ответы на эти два вопроса?