gpt4 book ai didi

c++ - 当 GetQueuedCompletionStatus() 返回 FALSE 时,这些参数的值是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:53 25 4
gpt4 key购买 nike

有两个原因可以导致GetQueuedCompletionStatus()失败(返回FALSE),第一个是因为在调用时关闭了与其关联的完成端口句柄是突出的,如果 lpOverlappedNULL,就会出现这种情况。

第二个原因(也是我关心的原因)是 IO 操作(例如:WSARecv())是否失败。这是文档对这种情况的描述:

If *lpOverlapped is not NULL and the function dequeues a completion packet for a failed I/O operation from the completion port, the function stores information about the failed operation in the variables pointed to by lpNumberOfBytes, lpCompletionKey, and lpOverlapped. To get extended error information, call GetLastError.

关于 lpNumberOfByteslpCompletionKeylpOverlapped 的值是什么,我发现这不是很清楚。这些参数是否包含我在调用 WSARecv() 时提供的相同值?我想这更有可能是因为我还想知道是什么 IO 操作导致了失败!

最佳答案

如果 I/O 操作失败,则 lpCompletionKeylpOverlapped 将是您使用所使用的 API 启动 I/O 操作时提供的值(WSASend()WSARecv() 等)。这就是您识别相关 I/O 操作的“每个设备”数据和“每个操作”数据的方式。

lpNumberOfBytes 在错误情况下可能为零,但我倾向于像处理非错误情况一样处理它,因为我在错误处理期间从不使用结果值(或缓冲区内容)无论如何。

关于c++ - 当 GetQueuedCompletionStatus() 返回 FALSE 时,这些参数的值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768969/

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