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

CAnonymousPipe - 匿名管道实现

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.40/5 (7投票s)

2000 年 3 月 4 日

viewsIcon

58932

downloadIcon

1188

用于封装匿名管道的免费 MFC 类

  • 下载源代码 - 8 KB
  • 引言

    欢迎使用 CAnonymousPipe v1.0,这是一个免费的 MFC 类,用于封装 Win32 中提供的匿名管道 IPC 方法。


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


    特点

    • 简洁的 C++ 接口。
    • 类完全符合 Unicode 标准,并在工作区文件中包含 Unicode 构建选项。


    用法

    • 要在代码中使用该类,只需将 apipe.cpp 包含到您的项目中,并在需要调用该类的任何模块中 #include apipe.h
    • 您的代码需要静态或动态地包含 MFC。


    历史

    v1.0 (1998 年 8 月 3 日)
    • 首次公开发布。


    API 参考

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

    CAnonymousPipe
    ~CAnonymousPipe
    Create
    Close
    Write
    读取
    窥视
    IsOpen
    AssertValid
    Dump


    CAnonymousPipe::CAnonymousPipe

    CAnonymousPipe();

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

    另请参阅
    ~CAnonymousPipe


    CAnonymousPipe::~CAnonymousPipe

    ~CAnonymousPipe();

    备注
    标准的默认析构函数。将关闭所有仍打开的管道句柄。

    另请参阅
    CAnonymousPipe


    CAnonymousPipe::Create

    BOOL Create(LPSECURITY_ATTRIBUTES lpPipeAttributes = NULL, DWORD dwSize = 0);

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

    参数

    • lpSecurityAttributes -- 指向 SECURITY_ATTRIBUTES 结构指针,该结构指定新匿名管道的安全描述符,并确定子进程是否可以继承返回的句柄。如果 lpSecurityAttributes 为 NULL,则命名管道具有默认安全描述符,且句柄不可继承。
    • nSize -- 指定管道的缓冲区大小。大小仅为建议值;系统使用该值计算适当的缓冲机制。如果此参数为零,则系统使用默认缓冲区大小。

    备注
    创建一个匿名的服务器端管道。与命名管道不同,此函数可在非 NT 平台(包括 Windows 95 和 Windows 98)上运行。


    CAnonymousPipe::Close

    BOOL Close();

    返回值
    如果管道已关闭,则返回非零值,否则返回 FALSE。使用 GetLastError() 获取扩展的错误信息。

    备注
    关闭管道。


    CAnonymousPipe::Write

    BOOL Write(LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, DWORD& dwNumberOfBytesWritten);

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

    参数

    • lpBuffer -- 指向包含要写入管道的数据的缓冲区的指针。
    • dwNumberOfBytesToWrite -- 指定要写入管道的字节数。
    • dwNumberOfBytesWritten -- 指向此函数调用写入的字节数的指针。Write() 在执行任何操作或错误检查之前将此值设置为零。

    备注
    以同步方式执行对匿名管道的写入操作。


    CAnonymousPipe::Read

    BOOL Read(LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, DWORD& dwNumberOfBytesRead);

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

    参数

    • lpBuffer -- 指向接收要读取数据的缓冲区的指针。
    • dwNumberOfBytesToRead -- 指定要从管道读取的字节数。
    • dwNumberOfBytesRead -- 指向此函数调用读取的字节数的指针。Read 在执行任何操作或错误检查之前将此值设置为零。

    备注
    以同步方式执行从匿名管道的读取操作。


    CAnonymousPipe::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 位变量,用于接收此消息中剩余的字节数。对于字节类型的命名管道,此参数将为零。

    备注
    将数据从管道复制到缓冲区,而不将其从管道中移除。它还会返回有关管道中数据的信息。


    CAnonymousPipe::IsOpen

    BOOL IsOpen() const;

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


    CAnonymousPipe::AssertValid

    virtual void AssertValid();

    备注
    标准的 MFC 重载函数,用于对此实例执行有效性检查。


    CAnonymousPipe::Dump

    virtual void Dump(CDumpContext& dc) const;

    参数

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

    备注
    标准的 MFC 重载函数,用于将数据转储到 dc 提供的转储上下文中。



    计划增强功能

    • 将代码打包成 OCX,以便非 MFC 应用程序可以使用该代码。
    • 提供一个带有该代码的示例应用程序 :>)
    • 如果您有任何其他改进建议,请告诉我,以便我将其纳入下一个版本。


    联系作者

    PJ Naughter
    电子邮件:pjn@indigo.ie
    网站:http://www.naughter.com
    1998 年 8 月 2 日


    © . All rights reserved.