--- E:/lib/boost_1_53_0/1.53/boost/asio/detail/impl/win_iocp_handle_service.ipp_patch Mon Sep 16 14:53:40 2013 +++ E:/lib/boost_1_53_0/1.53/boost/asio/detail/impl/win_iocp_handle_service.ipp Sun Jan 15 06:46:25 2012 @@ -364,21 +364,22 @@ // A request to write 0 bytes on a handle is a no-op. iocp_service_.on_completion(op); } else { + DWORD bytes_transferred = 0; op->Offset = offset & 0xFFFFFFFF; op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF; BOOL ok = ::WriteFile(impl.handle_, boost::asio::buffer_cast(buffer), static_cast(boost::asio::buffer_size(buffer)), - NULL, op); + &bytes_transferred, op); DWORD last_error = ::GetLastError(); if (!ok && last_error != ERROR_IO_PENDING && last_error != ERROR_MORE_DATA) { - iocp_service_.on_completion(op, last_error, NULL); + iocp_service_.on_completion(op, last_error, bytes_transferred); } else { iocp_service_.on_pending(op); } @@ -471,21 +472,22 @@ // A request to read 0 bytes on a handle is a no-op. iocp_service_.on_completion(op); } else { + DWORD bytes_transferred = 0; op->Offset = offset & 0xFFFFFFFF; op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF; BOOL ok = ::ReadFile(impl.handle_, boost::asio::buffer_cast(buffer), static_cast(boost::asio::buffer_size(buffer)), - NULL, op); + &bytes_transferred, op); DWORD last_error = ::GetLastError(); if (!ok && last_error != ERROR_IO_PENDING && last_error != ERROR_MORE_DATA) { - iocp_service_.on_completion(op, last_error, NULL); + iocp_service_.on_completion(op, last_error, bytes_transferred); } else { iocp_service_.on_pending(op); }