Alexandre Julliard : server: Implement IOCTL_SERIAL_GET_WAIT_MASK as an ioctl on the server side.

Alexandre Julliard julliard at winehq.org
Fri May 5 15:05:58 CDT 2017


Module: wine
Branch: master
Commit: e77873da73cc60acd6fde8509b013045f13a2836
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e77873da73cc60acd6fde8509b013045f13a2836

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri May  5 12:34:16 2017 +0200

server: Implement IOCTL_SERIAL_GET_WAIT_MASK as an ioctl on the server side.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/serial.c | 10 +---------
 server/serial.c     |  7 +++++++
 server/trace.c      |  1 +
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/dlls/ntdll/serial.c b/dlls/ntdll/serial.c
index 66facee..29e9faf 100644
--- a/dlls/ntdll/serial.c
+++ b/dlls/ntdll/serial.c
@@ -1111,6 +1111,7 @@ static inline NTSTATUS io_control(HANDLE hDevice,
     {
     case IOCTL_SERIAL_GET_TIMEOUTS:
     case IOCTL_SERIAL_SET_TIMEOUTS:
+    case IOCTL_SERIAL_GET_WAIT_MASK:
     case IOCTL_SERIAL_SET_WAIT_MASK:
         /* these are handled on the server side */
         return STATUS_NOT_SUPPORTED;
@@ -1195,15 +1196,6 @@ static inline NTSTATUS io_control(HANDLE hDevice,
         }
         else status = STATUS_INVALID_PARAMETER;
         break;
-    case IOCTL_SERIAL_GET_WAIT_MASK:
-        if (lpOutBuffer && nOutBufferSize == sizeof(DWORD))
-        {
-            if (!(status = get_wait_mask(hDevice, lpOutBuffer, NULL, NULL, FALSE)))
-                sz = sizeof(DWORD);
-        }
-        else
-            status = STATUS_INVALID_PARAMETER;
-        break;
     case IOCTL_SERIAL_IMMEDIATE_CHAR:
         if (lpInBuffer && nInBufferSize == sizeof(CHAR))
             status = xmit_immediate(hDevice, fd, lpInBuffer);
diff --git a/server/serial.c b/server/serial.c
index 8755543..8519473 100644
--- a/server/serial.c
+++ b/server/serial.c
@@ -220,6 +220,13 @@ static obj_handle_t serial_ioctl( struct fd *fd, ioctl_code_t code, struct async
         else set_error( STATUS_BUFFER_TOO_SMALL );
         return 0;
 
+    case IOCTL_SERIAL_GET_WAIT_MASK:
+        if (get_reply_max_size() >= sizeof(serial->eventmask))
+            set_reply_data( &serial->eventmask, sizeof(serial->eventmask) );
+        else
+            set_error( STATUS_BUFFER_TOO_SMALL );
+        return 0;
+
     case IOCTL_SERIAL_SET_WAIT_MASK:
         if (get_req_data_size() >= sizeof(serial->eventmask))
         {
diff --git a/server/trace.c b/server/trace.c
index 4f62ee5..d830e4f 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -120,6 +120,7 @@ static void dump_ioctl_code( const char *prefix, const ioctl_code_t *code )
         CASE(FSCTL_PIPE_PEEK);
         CASE(FSCTL_PIPE_WAIT);
         CASE(IOCTL_SERIAL_GET_TIMEOUTS);
+        CASE(IOCTL_SERIAL_GET_WAIT_MASK);
         CASE(IOCTL_SERIAL_SET_TIMEOUTS);
         CASE(IOCTL_SERIAL_SET_WAIT_MASK);
         CASE(WS_SIO_ADDRESS_LIST_CHANGE);




More information about the wine-cvs mailing list