X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdll%2Fwin32%2Fmsafd%2Fmsafd.h;h=d872c97b4d641ac8c7f4712648db8953929b5989;hp=f5795152f12f2fb7a888737334d63be7d81a0959;hb=91aa625c408e57eabce43c5c907278bf5753144f;hpb=b51143af5fc702c5573870d367be4a06119c4fd9 diff --git a/reactos/dll/win32/msafd/msafd.h b/reactos/dll/win32/msafd/msafd.h index f5795152f12..d872c97b4d6 100755 --- a/reactos/dll/win32/msafd/msafd.h +++ b/reactos/dll/win32/msafd/msafd.h @@ -467,11 +467,35 @@ SockReenableAsyncSelectEvent ( IN PSOCKET_INFORMATION Socket, IN ULONG Event ); - -DWORD MsafdReturnWithErrno( NTSTATUS Status, LPINT Errno, DWORD Received, - LPDWORD ReturnedBytes ); typedef VOID (*PASYNC_COMPLETION_ROUTINE)(PVOID Context, PIO_STATUS_BLOCK IoStatusBlock); + +DWORD +FORCEINLINE +MsafdReturnWithErrno(NTSTATUS Status, + LPINT Errno, + DWORD Received, + LPDWORD ReturnedBytes) +{ + if (Errno) + { + *Errno = TranslateNtStatusError(Status); + + if (ReturnedBytes) + *ReturnedBytes = (*Errno == 0) ? Received : 0; + + return (*Errno == 0) ? 0 : SOCKET_ERROR; + } + else + { + DbgPrint("%s: Received invalid lpErrno pointer!\n", __FUNCTION__); + + if (ReturnedBytes) + *ReturnedBytes = (Status == STATUS_SUCCESS) ? Received : 0; + + return (Status == STATUS_SUCCESS) ? 0 : SOCKET_ERROR; + } +} #endif /* __MSAFD_H */