通过网络传输 GetBitmapBits() 安全吗?

发布于 2024-10-29 22:57:58 字数 310 浏览 5 评论 0原文

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

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

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

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

I'm doing GetBitmapBits() over an HBITMAP and storing the pixels in a plain char* buffer and sending that buffer over network.

The client is then "reconstructing" the bitmap using SetBitmapBits() in its window.

My question is pretty simple: Is there any probable or possible situation when reconstruction might not be possible? Maybe for the internal byte storage format of these pixel data?

Client and server are not guaranteed to use the same version of Windows. Server may use XP whereas the client may use Vista or Windows 7, for instance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

妄想挽回 2024-11-05 22:57:58

除了克里斯建议您应该使用 GetDIBits,我可以补充一点:

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

Apart from Chris' suggestion that you should use GetDIBits, I can add that:

  1. Since the documentation for either function does not have any explicit warnings about compatibility concerns, you can assume there aren't any -- indeed, if the memory representation of a DIB changed between versions, you can be sure many programs would take immediate offense.
  2. Since all you are doing is push chars over the network, there cannot be any problems stemming from that due to possible different endianness between your source and target systems.
羁拥 2024-11-05 22:57:58

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

The documentation on GetBitmapBits itself mentions you should use GetDIBits / SetDIBits instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文