From 5d3b2bfa7ce3ad4865668f91d0c166f0ddaa6fef Mon Sep 17 00:00:00 2001 From: Dmitry Gorbachev Date: Thu, 17 Nov 2011 15:37:47 +0000 Subject: [PATCH] [SERIAL] Pretend that functions IOCTL_SERIAL_{GET,SET}_{CHARS,HANDFLOW} are implemented. It allows PuTTY to set baud rate. svn path=/trunk/; revision=54405 --- reactos/drivers/serial/serial/devctrl.c | 38 ++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/reactos/drivers/serial/serial/devctrl.c b/reactos/drivers/serial/serial/devctrl.c index 2f8f563d6a0..f7d15663822 100644 --- a/reactos/drivers/serial/serial/devctrl.c +++ b/reactos/drivers/serial/serial/devctrl.c @@ -374,8 +374,24 @@ SerialDeviceControl( 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 @@ SerialDeviceControl( 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 @@ SerialDeviceControl( { /* 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 @@ SerialDeviceControl( { /* FIXME */ ERR_(SERIAL, "IOCTL_SERIAL_SET_HANDFLOW not implemented.\n"); - Status = STATUS_NOT_IMPLEMENTED; + Status = STATUS_SUCCESS; break; } case IOCTL_SERIAL_SET_LINE_CONTROL: