Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 通过网络传输GetBitmapBits(),安全吗?_C_Winapi_Gdi - Fatal编程技术网

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

C 通过网络传输GetBitmapBits(),安全吗?,c,winapi,gdi,C,Winapi,Gdi,我正在通过HBITMAP执行GetBitmapBits(),并将像素存储在一个普通的char*缓冲区中,然后通过网络发送该缓冲区 然后,客户端在其窗口中使用SetBitmapBits()来“重建”位图 我的问题很简单:是否有任何可能或可能的情况下,重建可能是不可能的?可能是这些像素数据的内部字节存储格式 客户端和服务器不保证使用相同版本的Windows。例如,服务器可能使用XP,而客户端可能使用Vista或Windows 7。本身的文档提到您应该使用GetDIBits/SetDIBits。本身的

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

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

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


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

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

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

除了Chris建议您应该使用之外,我可以补充:

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

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

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

  • GetBitmapBits明确表示该格式是特定于设备的。因此,它将取决于在该设备中选择的当前视频模式,以及实际使用的设备驱动程序。@ChrisBecke:这就是为什么建议使用
    GetDIBits
    ;正如名称所示,该格式是独立于设备的。GetBitmapBits明确表示该格式是特定于设备的。因此,它将取决于在该设备中选择的当前视频模式,以及实际使用的设备驱动程序。@ChrisBecke:这就是为什么建议使用
    GetDIBits
    ;顾名思义,这是一款独立于设备的产品。