Я хочу создать именованный канал только для исходящих сообщений и хочу, чтобы другой код в другом месте позже мог проверить, является ли этот дескриптор каналом. Это работает для всех случаев дескрипторов канала (клиент, сервер; исходящий, входящий), за исключением дескрипторов конца сервера для каналов только для исходящих.
Если я открою дескриптор на стороне клиента входящего в канал только для сервера с флагами доступа GENERIC_WRITE | FILE_READ_ATTRIBUTES
, позже я могу проверить, является ли дескриптор каналом, вызвав GetNamedPipeInfo(handle,NULL,NULL,NULL,NULL)
, который возвращает true. Однако на стороне сервера отсутствует эта привилегия для исходящих каналов - если я вызываю CreateNamedPipe
с PIPE_ACCESS_OUTBOUND
, GetNamedPipeInfo
возвращает false и GetLastError
возвращает ERROR_ACCESS_DENIED
.