[ros-diffs] [dgorbachev] 54405: [SERIAL] Pretend that functions IOCTL_SERIAL_{GET, SET}_{CHARS, HANDFLOW} are implemented. It allows PuTTY to set baud rate.

dgorbachev at svn.reactos.org dgorbachev at svn.reactos.org
Thu Nov 17 15:37:47 UTC 2011


Author: dgorbachev
Date: Thu Nov 17 15:37:47 2011
New Revision: 54405

URL: http://svn.reactos.org/svn/reactos?rev=54405&view=rev
Log:
[SERIAL]
Pretend that functions IOCTL_SERIAL_{GET,SET}_{CHARS,HANDFLOW} are 
implemented. It allows PuTTY to set baud rate.

Modified:
    trunk/reactos/drivers/serial/serial/devctrl.c

Modified: trunk/reactos/drivers/serial/serial/devctrl.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/serial/serial/devctrl.c?rev=54405&r1=54404&r2=54405&view=diff
==============================================================================
--- trunk/reactos/drivers/serial/serial/devctrl.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/serial/serial/devctrl.c [iso-8859-1] Thu Nov 17 15:37:47 2011
@@ -374,8 +374,24 @@
 		case IOCTL_SERIAL_GET_CHARS:
 		{
 			/* FIXME */
+			PSERIAL_CHARS pSerialChars;
 			ERR_(SERIAL, "IOCTL_SERIAL_GET_CHARS not implemented.\n");
-			Status = STATUS_NOT_IMPLEMENTED;
+			if (LengthOut < sizeof(SERIAL_CHARS))
+				Status = STATUS_BUFFER_TOO_SMALL;
+			else if (BufferOut == NULL)
+				Status = STATUS_INVALID_PARAMETER;
+			else
+			{
+				pSerialChars = (PSERIAL_CHARS)BufferOut;
+				pSerialChars->EofChar = 0;
+				pSerialChars->ErrorChar = 0;
+				pSerialChars->BreakChar = 0;
+				pSerialChars->EventChar = 0;
+				pSerialChars->XonChar = 0;
+				pSerialChars->XoffChar = 0;
+				Information = sizeof(SERIAL_CHARS);
+				Status = STATUS_SUCCESS;
+			}
 			break;
 		}
 		case IOCTL_SERIAL_GET_COMMSTATUS:
@@ -414,8 +430,22 @@
 		case IOCTL_SERIAL_GET_HANDFLOW:
 		{
 			/* FIXME */
+			PSERIAL_HANDFLOW pSerialHandflow;
 			ERR_(SERIAL, "IOCTL_SERIAL_GET_HANDFLOW not implemented.\n");
-			Status = STATUS_NOT_IMPLEMENTED;
+			if (LengthOut < sizeof(SERIAL_HANDFLOW))
+				Status = STATUS_BUFFER_TOO_SMALL;
+			else if (BufferOut == NULL)
+				Status = STATUS_INVALID_PARAMETER;
+			else
+			{
+				pSerialHandflow = (PSERIAL_HANDFLOW)BufferOut;
+				pSerialHandflow->ControlHandShake = 0;
+				pSerialHandflow->FlowReplace = 0;
+				pSerialHandflow->XonLimit = 0;
+				pSerialHandflow->XoffLimit = 0;
+				Information = sizeof(SERIAL_HANDFLOW);
+				Status = STATUS_SUCCESS;
+			}
 			break;
 		}
 		case IOCTL_SERIAL_GET_LINE_CONTROL:
@@ -623,7 +653,7 @@
 		{
 			/* FIXME */
 			ERR_(SERIAL, "IOCTL_SERIAL_SET_CHARS not implemented.\n");
-			Status = STATUS_NOT_IMPLEMENTED;
+			Status = STATUS_SUCCESS;
 			break;
 		}
 		case IOCTL_SERIAL_SET_DTR:
@@ -665,7 +695,7 @@
 		{
 			/* FIXME */
 			ERR_(SERIAL, "IOCTL_SERIAL_SET_HANDFLOW not implemented.\n");
-			Status = STATUS_NOT_IMPLEMENTED;
+			Status = STATUS_SUCCESS;
 			break;
 		}
 		case IOCTL_SERIAL_SET_LINE_CONTROL:




More information about the Ros-diffs mailing list