为 Intranet 主机创建C++命名管道

Creating C++ Named Pipes for Intranet hosts

本文关键字:管道 C++ 创建 Intranet 主机      更新时间:2023-10-16

我一直在尝试使用微软代码创建一个命名管道:

http://code.msdn.microsoft.com/windowsdesktop/CppNamedPipeClient-a88eb958

我还从其他地方拿走了安全令牌:

SECURITY_ATTRIBUTES sa;
    sa.lpSecurityDescriptor = (PSECURITY_DESCRIPTOR)malloc(
        SECURITY_DESCRIPTOR_MIN_LENGTH);
    InitializeSecurityDescriptor(sa.lpSecurityDescriptor, 
        SECURITY_DESCRIPTOR_REVISION);
    // ACL is set as NULL in order to allow all access to the object.
    SetSecurityDescriptorDacl(sa.lpSecurityDescriptor, TRUE, NULL, FALSE);
    sa.nLength = sizeof(sa);
    sa.bInheritHandle = TRUE;

我想在我的 ip 上声明服务器而不是本地服务器,以便它被 Intranet 上的其他 PC 访问:

#define SERVER_NAME         L"10.12.13.122" ("." works)
#define PIPE_NAME           L"SamplePipe"
#define FULL_PIPE_NAME      L"\\" SERVER_NAME L"\pipe\" PIPE_NAME

以前有没有人为C++宣布这一点? 这是拒绝创建命名管道...

0x7B是ERROR_INVALID__NAME。"管道服务器无法在另一台计算机上创建管道,因此 CreateNamedPipe 必须使用句点作为服务器名称,如以下示例 \\.\pipe\PipeName 所示":请参阅 MSDN。不要忘记将字符串文本的反斜杠加倍。