我可以安全地将局部变量从先前的完成例程传递DWORD dsBytes, dwFlags = 0
到异步WSARecv调用,或者它们可以在 WSARecv 结束使用之前超出范围吗?MSDN:
如果此函数以重叠方式完成,则 Winsock 服务提供者有责任在此调用返回之前捕获 WSABUF 结构。这使应用程序能够构建由 lpBuffers 参数指向的基于堆栈的 WSABUF 数组。
但是 dsBytes 和 dwFlags 没有这样的东西。
我可以安全地将局部变量从先前的完成例程传递DWORD dsBytes, dwFlags = 0
到异步WSARecv调用,或者它们可以在 WSARecv 结束使用之前超出范围吗?MSDN:
如果此函数以重叠方式完成,则 Winsock 服务提供者有责任在此调用返回之前捕获 WSABUF 结构。这使应用程序能够构建由 lpBuffers 参数指向的基于堆栈的 WSABUF 数组。
但是 dsBytes 和 dwFlags 没有这样的东西。
是的,您可以使用局部变量。一旦 WSARecv() 调用返回,就不会使用这些标志,并且字节计数作为参数发送到完成例程或通过调用WSAGetOverlappedResult()
.