Alexandre Julliard : ntdll: Add partial implementation for IOCTL_SERIAL_GET_PROPERTIES.
Alexandre Julliard
julliard at winehq.org
Tue Sep 10 16:49:28 CDT 2019
Module: wine
Branch: master
Commit: 0617b490b339e7bcf7a17daa91c750bc601ee7a2
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0617b490b339e7bcf7a17daa91c750bc601ee7a2
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Sep 9 21:04:49 2019 +0200
ntdll: Add partial implementation for IOCTL_SERIAL_GET_PROPERTIES.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/serial.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/dlls/ntdll/serial.c b/dlls/ntdll/serial.c
index 66081d2865..66fb840167 100644
--- a/dlls/ntdll/serial.c
+++ b/dlls/ntdll/serial.c
@@ -338,6 +338,31 @@ static NTSTATUS get_modem_status(int fd, DWORD* lpModemStat)
return status;
}
+static NTSTATUS get_properties(int fd, SERIAL_COMMPROP *prop)
+{
+ /* FIXME: get actual properties from the device */
+ memset( prop, 0, sizeof(*prop) );
+ prop->PacketLength = 1;
+ prop->PacketVersion = 1;
+ prop->ServiceMask = SP_SERIALCOMM;
+ prop->MaxTxQueue = 4096;
+ prop->MaxRxQueue = 4096;
+ prop->MaxBaud = BAUD_115200;
+ prop->ProvSubType = PST_RS232;
+ prop->ProvCapabilities = PCF_DTRDSR | PCF_PARITY_CHECK | PCF_RTSCTS | PCF_TOTALTIMEOUTS | PCF_INTTIMEOUTS;
+ prop->SettableParams = SP_BAUD | SP_DATABITS | SP_HANDSHAKING |
+ SP_PARITY | SP_PARITY_CHECK | SP_STOPBITS ;
+ prop->SettableBaud = BAUD_075 | BAUD_110 | BAUD_134_5 | BAUD_150 |
+ BAUD_300 | BAUD_600 | BAUD_1200 | BAUD_1800 | BAUD_2400 | BAUD_4800 |
+ BAUD_9600 | BAUD_19200 | BAUD_38400 | BAUD_57600 | BAUD_115200 ;
+ prop->SettableData = DATABITS_5 | DATABITS_6 | DATABITS_7 | DATABITS_8 ;
+ prop->SettableStopParity = STOPBITS_10 | STOPBITS_15 | STOPBITS_20 |
+ PARITY_NONE | PARITY_ODD |PARITY_EVEN | PARITY_MARK | PARITY_SPACE;
+ prop->CurrentTxQueue = prop->MaxTxQueue;
+ prop->CurrentRxQueue = prop->MaxRxQueue;
+ return STATUS_SUCCESS;
+}
+
static NTSTATUS get_special_chars(int fd, SERIAL_CHARS* sc)
{
struct termios port;
@@ -1193,6 +1218,14 @@ static inline NTSTATUS io_control(HANDLE hDevice,
}
else status = STATUS_INVALID_PARAMETER;
break;
+ case IOCTL_SERIAL_GET_PROPERTIES:
+ if (lpOutBuffer && nOutBufferSize == sizeof(SERIAL_COMMPROP))
+ {
+ if (!(status = get_properties(fd, lpOutBuffer)))
+ sz = sizeof(SERIAL_COMMPROP);
+ }
+ else status = STATUS_INVALID_PARAMETER;
+ break;
case IOCTL_SERIAL_IMMEDIATE_CHAR:
if (lpInBuffer && nInBufferSize == sizeof(CHAR))
status = xmit_immediate(hDevice, fd, lpInBuffer);
More information about the wine-cvs
mailing list