You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If GetQueuedCompletionStatus returns FALSE then CompletionPort::get returns io::Error. However, GetQueuedCompletionStatus can return FALSE in two cases:
GetQueuedCompletionStatus has itself failed (e.g. due to a timeout).
Completion status was successfully dequeued for a failed operation. In this case there are useful values returned in argument pointers.
Upon failure (the return value is FALSE), those same parameters can contain particular value combinations as follows:
If *lpOverlapped is NULL, the function did not dequeue a completion packet from the completion port. In this case, the function does not store information in the variables pointed to by the lpNumberOfBytes and lpCompletionKey parameters, and their values are indeterminate.
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.
Current implementation doesn't handle second case. If operation fails then it simply returns io::Error without any indication of which operation has actually failed.
The text was updated successfully, but these errors were encountered:
If
GetQueuedCompletionStatus
returnsFALSE
thenCompletionPort::get
returnsio::Error
. However,GetQueuedCompletionStatus
can returnFALSE
in two cases:GetQueuedCompletionStatus
has itself failed (e.g. due to a timeout).From the MSDN:
Current implementation doesn't handle second case. If operation fails then it simply returns
io::Error
without any indication of which operation has actually failed.The text was updated successfully, but these errors were encountered: