[ros-diffs] [cfinck] 33787: Implement support for FIONREAD in WSPIoctl. (hope I did it properly) It works correctly with the wininet I'll commit later and a test app I wrote myself.

cfinck at svn.reactos.org cfinck at svn.reactos.org
Sat May 31 14:53:55 CEST 2008


Author: cfinck
Date: Sat May 31 07:53:55 2008
New Revision: 33787

URL: http://svn.reactos.org/svn/reactos?rev=33787&view=rev
Log:
Implement support for FIONREAD in WSPIoctl. (hope I did it properly)
It works correctly with the wininet I'll commit later and a test app I wrote myself.

Modified:
    trunk/reactos/dll/win32/msafd/misc/dllmain.c
    trunk/reactos/drivers/network/afd/afd/info.c
    trunk/reactos/include/reactos/drivers/afd/shared.h

Modified: trunk/reactos/dll/win32/msafd/misc/dllmain.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msafd/misc/dllmain.c?rev=33787&r1=33786&r2=33787&view=diff
==============================================================================
--- trunk/reactos/dll/win32/msafd/misc/dllmain.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msafd/misc/dllmain.c [iso-8859-1] Sat May 31 07:53:55 2008
@@ -1517,6 +1517,9 @@
 				Handle, Socket->SharedData.NonBlocking));
 	return 0;
 
+    case FIONREAD:
+        return GetSocketInformation(Socket, AFD_INFO_RECEIVE_CONTENT_SIZE, (PULONG)lpvOutBuffer, NULL);
+
     default:
 	*lpErrno = WSAEINVAL;
 	return SOCKET_ERROR;

Modified: trunk/reactos/drivers/network/afd/afd/info.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/afd/afd/info.c?rev=33787&r1=33786&r2=33787&view=diff
==============================================================================
--- trunk/reactos/drivers/network/afd/afd/info.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/afd/afd/info.c [iso-8859-1] Sat May 31 07:53:55 2008
@@ -47,6 +47,14 @@
 	case AFD_INFO_BLOCKING_MODE:
 	    InfoReq->Information.Ulong = 0;
 	    break;
+
+    case AFD_INFO_RECEIVE_CONTENT_SIZE:
+        /* Only touch InfoReq if we actually have a valid connection.
+           Behaviour was verified under WinXP SP2. */
+        if(FCB->Connection.Handle)
+            InfoReq->Information.Ulong = FCB->Recv.Content - FCB->Recv.BytesUsed;
+
+        break;
 
 	default:
 	    AFD_DbgPrint(MID_TRACE,("Unknown info id %x\n",

Modified: trunk/reactos/include/reactos/drivers/afd/shared.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/drivers/afd/shared.h?rev=33787&r1=33786&r2=33787&view=diff
==============================================================================
--- trunk/reactos/include/reactos/drivers/afd/shared.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/drivers/afd/shared.h [iso-8859-1] Sat May 31 07:53:55 2008
@@ -149,6 +149,7 @@
 #define AFD_INFO_RECEIVE_WINDOW_SIZE	0x06L
 #define AFD_INFO_SEND_WINDOW_SIZE	0x07L
 #define AFD_INFO_GROUP_ID_TYPE	        0x10L
+#define AFD_INFO_RECEIVE_CONTENT_SIZE   0x11L
 
 /* AFD Share Flags */
 #define AFD_SHARE_UNIQUE		0x0L



More information about the Ros-diffs mailing list