65.9K
CodeProject 正在变化。 阅读更多。
Home

CNamedPipe v1.0

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.30/5 (7投票s)

2000年3月10日

viewsIcon

139862

downloadIcon

3734

一个免费的MFC类,用于封装命名管道。

  • 下载源代码文件 - 24 Kb
  • 欢迎使用CNamedPipe v1.0,这是一个免费的MFC类,用于封装Win32中提供的命名管道IPC方法。

    特点
    用法
    历史
    API 参考
    计划增强功能
    联系作者

    特点

    • 简洁的 C++ 接口。
    • 这个类同时支持客户端和服务器端的命名管道。请注意,目前只有NT系统支持命名管道的服务器端,而95/98系统不支持。
    • 类完全符合 Unicode 标准,并在工作区文件中包含 Unicode 构建选项。
    • 如果您需要,所有通过SDK调用可访问的丰富功能仍然可用。

    用法

    • 要在您的代码中使用该类,只需在您的项目中包含npipe.cpp,并在您需要调用该类的模块中#include npipe.h。
    • 您的代码需要静态或动态地包含 MFC。
    • 要查看该类的实际应用,请查看testpipedlg.cpp中的void CTestpipeDlg::OnGettime(),了解如何创建客户端连接;以及timesvr.cpp中的main(),了解服务器端连接。

    历史

    V1.0 (1998年8月2日)

    • 首次公开发布。

     

    API 参考

    API由CNamedPipe类及其公共成员函数组成

    CNamedPipe
    ~CNamedPipe
    Create
    打开
    operator HANDLE
    Close
    Attach
    Detach
    ConnectClient
    DisconnectClient
    Flush
    Write
    读取
    窥视
    Transact
    IsOpen
    IsBlockingPipe
    IsClientPipe
    IsServerPipe
    IsMessagePipe
    GetCurrentInstances
    GetMaxCollectionCount
    GetCollectionTimeout
    GetOutboundBufferSize
    GetInboundBufferSize
    GetClientUserName
    GetMaxInstances
    SetMode
    SetMaxCollectionCount
    SetCollectionTimeout
    呼叫
    ServerAvailable
    AssertValid
    Dump

     

    CNamedPipe::CNamedPipe

    CNamedPipe();

    备注

    标准默认构造函数。将管道句柄初始化为默认值。

    另请参阅

    ~CNamedPipe

     

    CNamedPipe::~CNamedPipe

    ~CNamedPipe();

    备注

    标准默认析构函数。将关闭所有仍处于打开状态的管道句柄。

    另请参阅

    CNamedPipe

     

    CNamedPipe::Create

    BOOL Create(LPCTSTR lpszName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD dwMaxInstances, DWORD dwOutBufferSize, DWORD dwInBufferSize, DWORD dwDefaultTimeOut, LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL);

    返回值

    如果命名管道创建成功,则返回非零值,否则返回FALSE。使用GetLastError获取扩展错误信息。

    参数

    lpszName 指向唯一标识管道的以null结尾的字符串。它可以包含除反斜杠以外的任何字符,包括数字和特殊字符。整个管道名称字符串最长可达256个字符。管道名称不区分大小写。

    dwOpenMode 指定管道访问模式、重叠模式、直写模式和管道句柄的安全访问模式。

    此参数必须指定以下管道访问模式标志之一。管道的每个实例都必须指定相同的模式。

    模式 描述
    PIPE_ACCESS_DUPLEX 管道是双向的;服务器和客户端进程都可以从管道读取和写入。此模式赋予服务器相当于对管道具有GENERIC_READ | GENERIC_WRITE访问权限。客户端在使用CreateFile函数连接到管道时可以指定GENERIC_READ或GENERIC_WRITE,或两者都指定。
    PIPE_ACCESS_INBOUND 管道中的数据流只从客户端流向服务器。此模式赋予服务器相当于对管道具有GENERIC_READ访问权限。客户端在连接到管道时必须指定GENERIC_WRITE访问权限。
    PIPE_ACCESS_OUTBOUND 管道中的数据流只从服务器流向客户端。此模式赋予服务器相当于对管道具有GENERIC_WRITE访问权限。客户端在连接到管道时必须指定GENERIC_READ访问权限。

    此参数还可以包含以下一个或两个标志,它们启用直写模式和重叠模式。这些模式对于同一管道的不同实例可以不同。

    模式 描述
    FILE_FLAG_WRITE_THROUGH
    直写模式已启用。此模式仅影响字节类型管道上的写入操作,并且仅当客户端和服务器进程位于不同计算机上时。如果此模式已启用,则写入命名管道的函数在数据通过网络传输并存储在远程计算机的管道缓冲区中之前不会返回。如果此模式未启用,系统将通过缓冲数据直到累积最小字节数或直到经过最大时间来提高网络操作效率。
    FILE_FLAG_OVERLAPPED
    重叠模式已启用。如果此模式已启用,则可能需要较长时间才能完成的读、写和连接操作函数可以立即返回。此模式使启动操作的线程能够在耗时操作在后台执行时执行其他操作。例如,在重叠模式下,一个线程可以同时处理多个管道实例上的输入和输出 (I/O) 操作,或者在同一个管道句柄上执行同时读写操作。如果未启用重叠模式,则对管道句柄执行读、写和连接操作的函数在操作完成之前不会返回。ReadFileExWriteFileEx函数只能与处于重叠模式的管道句柄一起使用。ReadFileWriteFileConnectNamedPipeTransactNamedPipe函数可以同步执行,也可以作为重叠操作执行。

    此参数可以包含以下任何安全访问模式标志组合。这些模式对于同一管道的不同实例可以不同。可以指定它们,而无需考虑已指定了哪些其他dwOpenMode模式。

    模式 描述
    WRITE_DAC 调用者将对命名管道的自由访问控制列表 (ACL) 具有写入访问权限。
    WRITE_OWNER 调用者将对命名管道的所有者具有写入访问权限。
    ACCESS_SYSTEM_SECURITY 调用者将对命名管道的系统ACL具有写入访问权限。

    dwPipeMode 指定管道句柄的类型、读取和等待模式。

    可以指定以下类型模式标志之一。管道的每个实例都必须指定相同的类型模式。如果指定零,则参数默认为字节类型模式。

    模式 描述
    PIPE_TYPE_BYTE 数据以字节流的形式写入管道。此模式不能与PIPE_READMODE_MESSAGE一起使用。
    PIPE_TYPE_MESSAGE 数据以消息流的形式写入管道。此模式可以与PIPE_READMODE_MESSAGE或PIPE_READMODE_BYTE一起使用。

    可以指定以下读取模式标志之一。同一管道的不同实例可以指定不同的读取模式。如果指定零,则参数默认为字节读取模式。

    模式 描述
    PIPE_READMODE_BYTE 数据以字节流的形式从管道读取。此模式可以与PIPE_TYPE_MESSAGE或PIPE_TYPE_BYTE一起使用。
    PIPE_READMODE_MESSAGE 数据以消息流的形式从管道读取。此模式只能在同时指定PIPE_TYPE_MESSAGE时使用。

    可以指定以下等待模式标志之一。同一管道的不同实例可以指定不同的等待模式。如果指定零,则参数默认为阻塞模式。

    模式 描述
    PIPE_WAIT 阻塞模式已启用。当在ReadFileWriteFileConnectNamedPipe函数中指定管道句柄时,操作不会完成,直到有数据可读、所有数据都已写入或客户端已连接。使用此模式可能意味着在某些情况下无限期地等待客户端进程执行操作。
    PIPE_NOWAIT 非阻塞模式已启用。在此模式下,ReadFileWriteFileConnectNamedPipe始终立即返回。请注意,非阻塞模式是为了与Microsoft LAN Manager 2.0版兼容而支持的,不应用于使用命名管道实现异步I/O。

    nMaxInstances 指定此管道可以创建的最大实例数。所有实例必须指定相同的数字。可接受的值范围是1到PIPE_UNLIMITED_INSTANCES。如果此参数为PIPE_UNLIMITED_INSTANCES,则可以创建的管道实例数仅受系统资源的可用性限制。

    nOutBufferSize 指定为输出缓冲区保留的字节数。有关命名管道缓冲区大小的讨论,请参阅以下“备注”部分。

    nInBufferSize 指定为输入缓冲区保留的字节数。有关命名管道缓冲区大小的讨论,请参阅以下“备注”部分。

    nDefaultTimeOut 如果WaitNamedPipe函数指定NMPWAIT_USE_DEFAULT_WAIT,则指定默认超时值(以毫秒为单位)。命名管道的每个实例都必须指定相同的值。

    lpSecurityAttributes 指向SECURITY_ATTRIBUTES结构的指针,该结构指定新命名管道的安全描述符,并确定子进程是否可以继承返回的句柄。如果lpSecurityAttributes为NULL,则命名管道将获得默认安全描述符,并且该句柄不能被继承。

    备注

    创建服务器端命名管道。请注意,目前Microsoft仅在Windows NT(工作站或服务器)上提供此功能,而不是Windows 95或Windows 98。

     

    CNamedPipe::Open

    BOOL Open(LPCTSTR lpszServerName, LPCTSTR lpszPipeName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes = NULL, DWORD dwFlagsAndAttributes = 0);

    返回值

    如果命名管道成功打开,则返回非零值,否则返回FALSE。使用GetLastError获取扩展错误信息。

    参数

    lpszServerName 命名管道服务器端所在的机器名称。它可以是“.”表示本机。

    lpszPipeName 要连接的管道名称

    dwDesiredAccess 指定对管道的访问类型。应用程序可以获取读访问、写访问、读写访问或设备查询访问。此参数可以是以下值的任意组合。

    含义
    0 指定对对象的设备查询访问。应用程序可以查询设备属性而无需访问设备。
    GENERIC_READ 指定对对象的读访问。可以从文件中读取数据并移动文件指针。与GENERIC_WRITE结合使用可实现读写访问。
    GENERIC_WRITE 指定对对象的写访问。可以向文件中写入数据并移动文件指针。与GENERIC_READ结合使用可实现读写访问。

    dwShareMode 一组位标志,指定对象如何共享。如果dwShareMode为0,则对象不能共享。随后的对象打开操作将失败,直到句柄关闭。

    要共享对象,请使用以下一个或多个值的组合

    含义
    FILE_SHARE_DELETE 仅限Windows NT:只有在请求删除访问时,随后的对象打开操作才会成功。
    FILE_SHARE_READ 只有在请求读访问时,随后的对象打开操作才会成功。
    FILE_SHARE_WRITE 只有在请求写访问时,随后的对象打开操作才会成功。

    lpSecurityAttributes 指向SECURITY_ATTRIBUTES结构的指针,该结构确定子进程是否可以继承返回的句柄。如果lpSecurityAttributes为NULL,则句柄不能继承。

    dwFlagsAndAttributes 指定管道的文件属性和标志。

    dwFlagsAndAttributes参数可以接受以下任何标志组合。

    标志 含义
    FILE_FLAG_WRITE_THROUGH
    指示系统通过任何中间缓存直接写入磁盘。Windows仍然可以缓存写入操作,但不能惰性刷新它们。
    FILE_FLAG_OVERLAPPED
    指示系统初始化对象,以便处理时间较长的操作返回ERROR_IO_PENDING。当操作完成时,指定的事件将设置为已信号状态。
    当您指定FILE_FLAG_OVERLAPPED时,ReadFileWriteFile函数必须指定OVERLAPPED结构。也就是说,当指定FILE_FLAG_OVERLAPPED时,应用程序必须执行重叠读写。
    当指定FILE_FLAG_OVERLAPPED时,系统不维护文件指针。文件位置必须作为lpOverlapped参数(指向OVERLAPPED结构)的一部分传递给ReadFileWriteFile函数。
    此标志还允许使用该句柄同时执行多个操作(例如,同时进行读写操作)。
    FILE_FLAG_NO_BUFFERING
    指示系统在不进行中间缓冲或缓存的情况下打开文件。

    dwFlagsAndAttributes 参数还可以包含安全服务质量信息。当调用应用程序指定SECURITY_SQOS_PRESENT标志时,dwFlagsAndAttributes 参数可以包含以下一个或多个值

    含义
    SECURITY_ANONYMOUS 指定以匿名模拟级别模拟客户端。
    SECURITY_IDENTIFICATION 指定以识别模拟级别模拟客户端。
    SECURITY_IMPERSONATION 指定以模拟级别模拟客户端。
    SECURITY_DELEGATION 指定以委托模拟级别模拟客户端。
    SECURITY_CONTEXT_TRACKING 指定安全跟踪模式为动态。如果未指定此标志,则安全跟踪模式为静态。
    SECURITY_EFFECTIVE_ONLY 指定只有客户端安全上下文的已启用方面可供服务器使用。如果未指定此标志,则客户端安全上下文的所有方面都可用。

    此标志允许客户端限制服务器在模拟客户端时可以使用的组和特权。

    备注

    打开命名管道的客户端连接。与命名管道的服务器端创建不同,此函数没有任何Win32 OS考虑因素。

     

    CNamedPipe::operator HANDLE

    HANDLE operator HANDLE() const;

    返回值

    返回此实例封装的基础HANDLE,如果此实例未打开,则返回INVALID_HANDLE_VALUE。

     

    CNamedPipe::Close

    BOOL Close();

    返回值

    如果命名管道关闭成功,则返回非零值,否则返回FALSE。使用GetLastError获取扩展错误信息。

    备注

    关闭管道

     

    CNamedPipe::Attach

    BOOL Attach(HANDLE hPipe);

    返回值

    如果管道成功附加,则返回非零值,否则返回FALSE。使用GetLastError获取扩展错误信息。

    参数

    hPipe 要附加到的现有管道的SDK句柄。

     

    CNamedPipe::Detach

    HANDLE Detach();

    返回值

    此实例封装的管道句柄。

    备注

    将C++实例从SDK管道句柄分离。

     

    CNamedPipe::ConnectClient

    BOOL ConnectClient(LPOVERLAPPED lpOverlapped = NULL);

    返回值

    如果客户端管道连接成功连接,则返回非零值,否则返回FALSE。使用GetLastError获取扩展错误信息。

    参数

    lpOverlapped 指向OVERLAPPED结构的指针,如果此管道以重叠模式打开,则使用此结构。

    备注

    由服务器端管道调用以连接客户端连接。在套接字世界中,这与accept调用非常相似。

     

    CNamedPipe::DisconnectClient

    BOOL DisconnectClient();

    返回值

    如果客户端连接成功断开,则返回非零值,否则返回FALSE。使用GetLastError获取扩展错误信息。

    参数

    这是ConnectClient的推论函数,在您的服务器端应用程序中,每次调用ConnectClient都应该有相应的DisconnectClient调用。

    备注

    待办事项

     

    CNamedPipe::Flush

    BOOL Flush();

    返回值

    如果刷新成功则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    备注

    刷新管道中可能缓冲的任何数据。

     

    CNamedPipe::Write

    BOOL Write(LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, DWORD& dwNumberOfBytesWritten, LPOVERLAPPED lpOverlapped = NULL);   
    BOOL Write(LPCVOID
    lpBuffer, DWORD dwNumberOfBytesToWrite, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);

    返回值

    如果写入成功则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    lpBuffer 指向包含要写入管道的数据的缓冲区。

    dwNumberOfBytesToWrite 指定要写入管道的字节数。

    dwNumberOfBytesWritten 指向此函数调用写入的字节数。Write在执行任何工作或错误检查之前将此值设置为零。

    lpOverlapped 指向OVERLAPPED结构。如果管道以FILE_FLAG_OVERLAPPED打开,则此结构是必需的。

    lpCompletionRoutine 指向一个完成例程,当写入操作完成且调用线程处于可警报等待状态时将调用该例程。

    备注

    对命名管道执行写入操作。第一个版本可以同步或异步使用,而第二个版本只能异步使用。

     

    CNamedPipe::Read

    BOOL Read(LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, DWORD& dwNumberOfBytesRead, LPOVERLAPPED lpOverlapped = NULL);
    BOOL Read(LPVOID
    lpBuffer, DWORD dwNumberOfBytesToRead, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);

    返回值

    如果读取成功则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    lpBuffer 指向接收要读取数据的缓冲区。

    dwNumberOfBytesToWrite 指定要从管道读取的字节数。

    dwNumberOfBytesWritten 指向此函数调用读取的字节数。Read在执行任何工作或错误检查之前将此值设置为零。

    lpOverlapped 指向OVERLAPPED结构。如果管道以FILE_FLAG_OVERLAPPED打开,则此结构是必需的。

    lpCompletionRoutine 指向一个完成例程,当读取操作完成且调用线程处于可警报等待状态时将调用该例程。

    备注

    对命名管道执行读取操作。第一个版本可以同步或异步使用,而第二个版本只能异步使用。

     

    CNamedPipe::Peek

    BOOL Peek(LPVOID lpBuffer, DWORD dwBufferSize, DWORD& dwBytesRead, DWORD& dwTotalBytesAvail, DWORD& dwBytesLeftThisMessage);

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    lpBuffer 指向一个缓冲区,该缓冲区接收从管道读取的数据。如果不读取数据,此参数可以为NULL。

    dwBufferSize 指定由lpBuffer 参数指定的缓冲区的大小(以字节为单位)。如果lpBuffer为NULL,则忽略此参数。

    dwBytesRead 32位变量,接收从管道读取的字节数。

    dwTotalBytesAvail 32位变量,接收可从管道读取的总字节数。

    dwBytesLeftThisMessage 32位变量,接收此消息中剩余的字节数。对于字节类型命名管道,此参数将为零。

    备注

    将数据从管道复制到缓冲区中,而不将其从管道中删除。它还返回管道中数据的相关信息。

     

    CNamedPipe::Transact

    BOOL Transact(LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpOutBuffer, DWORD dwOutBufferSize, DWORD& dwBytesRead, LPOVERLAPPED lpOverlapped = NULL);

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    lpInBuffer 指向包含写入管道数据缓冲区。

    dwInBufferSize 指定写入缓冲区的大小(以字节为单位)。

    lpOutBuffer 指向接收从管道读取数据的缓冲区。

    dwOutBufferSize 指定读取缓冲区的大小(以字节为单位)。

    dwBytesRead 变量,接收从管道读取的字节数。

    lpOverlapped 指向OVERLAPPED结构。如果管道以FILE_FLAG_OVERLAPPED打开,则此结构是必需的。

    备注

    将写入消息到指定命名管道和从指定命名管道读取消息的功能合并到一个网络操作中。

     

    CNamedPipe::IsOpen

    BOOL IsOpen() const;

    返回值

    如果管道已打开,则返回非零值,否则返回FALSE。

     

    CNamedPipe::IsBlockingPipe

    BOOL IsBlockingPipe(BOOL& bIsBlocking) const;

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    bIsBlocking 返回时,如果管道设置为阻塞模式,则为非零值,否则为FALSE。

    备注

    确定管道是否已从阻塞模式设置。

     

    CNamedPipe::IsClientPipe

    BOOL IsClientPipe(BOOL& bClientPipe) const;

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    bClientPipe 返回时,如果管道是客户端连接,则为非零值,否则为FALSE。

    备注

    确定管道是否为客户端连接。

     

    CNamedPipe::IsServerPipe

    BOOL IsServerPipe(BOOL& bServerPipe) const;

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    bServerPipe 返回时,如果管道是服务器端管道,则为非零值,否则为FALSE。

    备注

    确定管道是否为服务器端管道。

     

    CNamedPipe::IsMessagePipe

    BOOL IsMessagePipe(BOOL& bMessagePipe) const;

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    bMessagePipe 返回时,如果管道设置为消息模式,则为非零值,否则为FALSE表示字节模式。

    备注

    确定管道是否已从消息模式或字节模式设置。

     

    CNamedPipe::GetCurrentInstances

    DWORD GetCurrentInstances() const;

    返回值

    当前管道实例的数量。

     

    CNamedPipe::GetMaxCollectionCount

    DWORD GetMaxCollectionCount() const;

    返回值

    在传输到服务器之前,在客户端计算机上收集的最大字节数。

     

    CNamedPipe::GetCollectionTimeout

    DWORD GetCollectionTimeout() const;

    返回值

    在远程命名管道通过网络传输信息之前可能经过的最大时间(以毫秒为单位)。

     

    CNamedPipe::GetOutboundBufferSize

    DWORD GetOutboundBufferSize() const;

    返回值

    传出数据缓冲区的大小(以字节为单位)。

     

    CNamedPipe::GetInboundBufferSize

    DWORD GetInboundBufferSize() const;

    返回值

    传入数据缓冲区的大小(以字节为单位)。

     

    CNamedPipe::GetClientUserName

    CString GetClientUserName() const;

    返回值

    包含客户端应用程序用户名字符串的字符串。

     

    CNamedPipe::GetMaxInstances

    DWORD GetMaxInstances() const;

    返回值

    可以创建的管道实例的最大数量。

     

    CNamedPipe::SetMode

    DWORD SetMode(BOOL bByteMode, BOOL bBlockingMode) const;

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    bByteMode TRUE将管道设置为字节模式,FALSE将管道设置为消息模式。

    bBlockingMode TRUE将导致管道上所有可能耗时很长的调用阻塞,FALSE将使管道调用异步执行。

     

    CNamedPipe::SetMaxCollectionCount

    BOOL SetMaxCollectionCount(DWORD dwCollectionCount) const;

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    dwCollectionCount 在传输到服务器之前,在客户端计算机上收集的最大字节数。

    备注

    更改管道的发送特性。

     

    CNamedPipe::SetCollectionTimeout

    BOOL SetCollectionTimeout(DWORD dwDataTimeout) const;

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    dwDataTimeout 在远程命名管道通过网络传输信息之前可能经过的最大时间(以毫秒为单位)。

    备注

    更改管道的发送特性。

     

    CNamedPipe::Call

    static BOOL Call(LPCTSTR lpszServerName, LPCTSTR lpszPipeName, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpOutBuffer,
    DWORD
    dwOutBufferSize, DWORD& dwBytesRead, DWORD dwTimeOut);

    返回值

    如果函数成功,则返回非零值,否则返回FALSE。要获取扩展错误信息,请使用GetLastError。

    参数

    lpszServerName 命名管道服务器端所在的机器名称。它可以是“.”表示本机。

    lpszPipeName 要连接的管道名称。

    lpInBuffer 指向包含写入管道数据缓冲区。

    dwInBufferSize 指定写入缓冲区的大小(以字节为单位)。

    lpOutBuffer 指向接收从管道读取数据的缓冲区。

    dwOutBufferSize 指定读取缓冲区的大小(以字节为单位)。

    dwBytesRead 变量,接收从管道读取的字节数。

    dwTimeOut 指定默认超时值(以毫秒为单位)。

    备注

    调用此函数(其底层调用CallNamedPipe)等同于调用CreateFile(如果CreateFile无法立即打开管道,则调用WaitNamedPipe)、TransactNamedPipeCloseHandle函数。

     

    CNamedPipe::ServerAvailable

    static BOOL ServerAvailable(LPCTSTR lpszServerName, LPCTSTR lpszPipeName, DWORD dwTimeOut);

    返回值

    如果在超时时间间隔过去之前管道实例可用,则返回非零值。如果在超时时间间隔过去之前管道实例不可用,则返回零。要获取扩展错误信息,请调用GetLastError

    参数

    lpszServerName 命名管道服务器端所在的机器名称。它可以是“.”表示本机。

    lpszPipeName 要连接的管道名称。

    dwTimeout 指定默认超时值(以毫秒为单位)。

    备注

    等待直到超时时间间隔过去,或指定命名管道的实例可用以进行连接。

     

    CNamedPipe::AssertValid

    virtual void AssertValid();

    备注

    标准MFC重写,对此实例执行有效性检查。

     

    CNamedPipe::Dump

    virtual void Dump(CDumpContext& dc) const;

    参数

    dc 用于转储的诊断转储上下文,通常为afxDump。

    备注

    标准MFC重写,执行对“dc”提供的转储上下文的转储。

     

    计划增强功能

    • 将代码打包成OCX以允许非MFC应用程序使用该代码。
    • 如果您有任何其他改进建议,请告诉我,以便我将其纳入下一个版本。

    联系作者

    请通过电子邮件向我发送任何评论或错误报告。有关本文的任何更新,请在此处查看我的网站。

    © . All rights reserved.