c++ - ReadFile 函数 lpbuffer 和字节读取说明

标签 c++ winapi buffer readfile

我对此很陌生,所以任何澄清都将不胜感激。使用ReadFile函数时,lpBuffer的类型如何与参数“读取字节数”交互?

例如,如果您有一个无符号的 short MyShort[5] 作为 lpBuffer,然后您设置字节读取为 2。是否所有数据都存储在 MyShort[0] 中?还是第一个字节进入 MyShort[0],第二个字节进入 MyShort[1]?当您将要读取的字节数增加到 9 时会发生什么? 16 位会进入 MyShort[0],然后 16 位进入 MyShort[1] 等等......?

谢谢

最佳答案

lpBuffer 始终被视为指向指定字节数 (nNumberOfBytesToRead) 的数组的指针。实际读取的字节数将存储在 lpNumberOfBytesRead 参数指向的变量中或稍后作为异步(重叠)结果。因此,在您的情况下,如果您请求读取 2 个字节,它可能会读取两个字节,将它们都存储在 MyShort[0] 中,或者只读取一个字节存储在 MyShort[0] 的下半部分] 或什么都没有。如果您请求读取 9 个字节,那么它将准备好最多 9 个字节,依次存储 2 + 2 + 2 + 2 + 1 个字节。

关于c++ - ReadFile 函数 lpbuffer 和字节读取说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48772158/

相关文章:

c++ - 调用构造函数后程序崩溃

c++ - gmtime() 函数是否考虑闰年?

c++ - 卸载 dll 会引发访问冲突错误

c++ - GetCommandLine 和 WinMain API 的命令行是什么?

c++ - InitializeSecurityContext (Schannel) 的 TLS 握手过程

c - linux 中的串行缓冲区有多长?

java - 从Java中的另一个类访问变量的实例

java - C/C++函数/方法与Java的比较

python - 使用 boost::python 包装 boost::optional

python - 在 Python 中切片文件