当GetQueuedCompleteionStatus()返回FALSE时,这些参数的值是多少
What will be the values of these parameters when GetQueuedCompletionStatus() return FALSE?
有两个原因会导致GetQueuedCompletionStatus()
失败(返回FALSE
),第一个原因是与之相关的完成端口句柄在调用未完成时关闭,如果lpOverlapped
是NULL
,则会出现这种情况。
第二个原因(也是我关心的原因)是IO操作(例如:WSARecv()
)是否失败。这就是文件中对这种情况的描述:
如果*lpOverlapped不为NULL,并且函数将完成退出队列来自完成端口的失败I/O操作的数据包函数将有关失败操作的信息存储在lpNumberOfBytes、lpCompletionKey和所指向的变量lpOverlapped。若要获取扩展的错误信息,请调用GetLastError。
我不太清楚lpNumberOfBytes
、lpCompletionKey
和lpOverlapped
的值是什么。这些参数会包含与我调用WSARecv()
时提供的值相同的值吗?我想这更有可能是因为我怎么知道是什么IO操作导致了故障!
如果I/O操作失败,则lpCompletionKey
和lpOverlapped
将是您使用所使用的任何API(WSASend()
、WSARecv()
等)启动I/O操作时提供的值。这就是您识别有问题的I/O操作的"每个设备"数据和"每个操作"数据的方法。
lpNumberOfBytes
在错误情况下可能为零,尽管我倾向于像处理非错误情况一样处理它,因为我在错误处理过程中从不使用结果值(或缓冲区内容)。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何在不知道C++中有多少可选参数的情况下在循环中使用va_arg?
- 我能知道我的函数有多少参数吗?
- need else 参数只出现一次,无论在循环中输入多少字符串
- 我可以通过命令行参数传递给C++程序多少数据?
- 应该向C++Lambda传递多少个参数
- C/C++ main 函数中的参数列表大小是多少,行为不确定
- 作为参数立即传递的对象生存期是多少
- 临时绑定到引用参数的默认参数的生存期是多少
- 在mbstowcs_s函数SizeInWords参数的上下文中,Word的大小是多少
- 当GetQueuedCompleteionStatus()返回FALSE时,这些参数的值是多少
- 函数参数的寿命是多少(需要引用)?
- ios:setstate实际使用了多少个参数
- 与具有字符串输出参数的 WinAPI 函数的一致性是多少
- std::bind有多少个参数(VC11只支持4个)
- transform()需要多少个参数
- 在C++中,我可以通过引用传递多少个参数,而不会出现异常行为
- 可以向main()传递多少个参数
- 如何确定需要多少参数来实现fprint格式化字符串