【问题标题】:Transferring GetBitmapBits() over the network, safe?通过网络传输 GetBitmapBits(),安全吗?
【发布时间】:2011-04-05 08:01:56
【问题描述】:

我在 HBITMAP 上执行 GetBitmapBits() 并将像素存储在普通的 char* 缓冲区中,并通过网络发送该缓冲区。

然后客户端在其窗口中使用SetBitmapBits()“重建”位图。

我的问题很简单:是否有任何可能或可能的情况无法重建?也许是这些像素数据的内部字节存储格式?

不保证客户端和服务器使用相同版本的 Windows。例如,服务器可能使用 XP,而客户端可能使用 Vista 或 Windows 7。

【问题讨论】:

    标签: c winapi gdi


    【解决方案1】:

    除了 Chris 建议您使用 GetDIBits 之外,我还可以补充一点:

    1. 由于这两个函数的文档没有任何关于兼容性问题的明确警告,您可以假设没有任何 - 事实上,如果 DIB 的内存表示在版本之间发生变化,您可以确定许多程序会占用立即进攻。
    2. 由于您所做的只是通过网络推送chars,因此由于源系统和目标系统之间可能存在不同的字节顺序,因此不会出现任何问题。

    【讨论】:

    • GetBitmapBits 明确表示格式是特定于设备的。因此,它将取决于该设备中选择的当前视频模式,以及实际使用的设备驱动程序。
    • @ChrisBecke:这就是为什么建议改用GetDIBits;顾名思义,它与设备无关。
    【解决方案2】:

    GetBitmapBits 上的文档本身提到您应该改用 GetDIBits / SetDIBits。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多