gpt4 book ai didi

c++ - 这段代码中哪个 ReadFile 参数不正确? (错误代码 87)

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:52 24 4
gpt4 key购买 nike

(编辑: 除了标题和 main() 函数的括号外,我没有排除任何代码。此处列出的代码行之间没有任何内容。)

.

我使用 ReadFile 函数读取此 COM3 端口(未返回 INVALID_HANDLE_VALUE 或 ERROR_FILE_NOT_FOUND):

LPCTSTR portName = "COM3" ;

HANDLE hSerial;
hSerial = CreateFile(portName,
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // default security attributes
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);

有问题的 ReadFile 函数使用以下参数:

DWORD n = 512 ;
char szBuff[n] = {0};
DWORD dwBytesRead = 0;

if(!ReadFile(hSerial, szBuff, n, &dwBytesRead, NULL))
{
cout << "ReadFile error. Error code: " << GetLastError() << endl ;
cin.get() ;
return 0 ;
}

我应该引入哪些更改才能使读取成功?

(我搜索了该函数的文档和其他 StackOverflow 问题,测试了很多东西,但找不到答案。)

最佳答案

ReadFile您可以阅读的文档:

lpOverlapped [in, out, optional] A pointer to an OVERLAPPED structure is required if the hFile parameter was opened with FILE_FLAG_OVERLAPPED, otherwise it can be NULL.

因此,由于您在 CreateFile 中指定了 FILE_FLAG_OVERLAPPED,因此您应该在 ReadFile 中提供 OVERLAPPED

CreateFile您可以阅读 Communications Resources 的参数:

... and the handle can be opened for overlapped I/O.

因此您可以跳过 CreateFile 中的 FILE_FLAG_OVERLAPPED

关于c++ - 这段代码中哪个 ReadFile 参数不正确? (错误代码 87),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36755027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com