[PATCH 10/11] [NtDll/Kernel32]: SetupComm & SET_QUEUE_SIZE
Eric Pouech
eric.pouech at wanadoo.fr
Sun May 7 07:11:02 CDT 2006
- stubbed out ntdll's serial IOCTL SET_QUEUE_SIZE
- implemented kernel32!SetupComm on top of it
A+
---
dlls/kernel/comm.c | 25 +++++++++++++------------
dlls/ntdll/serial.c | 12 ++++++++++++
2 files changed, 25 insertions(+), 12 deletions(-)
diff --git a/dlls/kernel/comm.c b/dlls/kernel/comm.c
index f12043d..8f5c18d 100644
--- a/dlls/kernel/comm.c
+++ b/dlls/kernel/comm.c
@@ -883,6 +883,11 @@ BOOL WINAPI ClearCommError(HANDLE handle
* Called after CreateFile to hint to the communication resource to use
* specified sizes for input and output buffers rather than the default values.
*
+ * PARAMS
+ * handle [in] The just created communication resource handle
+ * insize [in] The suggested size of the communication resources input buffer in bytes
+ * outsize [in] The suggested size of the communication resources output buffer in bytes
+ *
* RETURNS
*
* True if successful, false if the communications resource handle is bad.
@@ -891,18 +896,14 @@ BOOL WINAPI ClearCommError(HANDLE handle
*
* Stub.
*/
-BOOL WINAPI SetupComm(
- HANDLE handle, /* [in] The just created communication resource handle. */
- DWORD insize, /* [in] The suggested size of the communication resources input buffer in bytes. */
- DWORD outsize) /* [in] The suggested size of the communication resources output buffer in bytes. */
-{
- int fd;
-
- FIXME("insize %ld outsize %ld unimplemented stub\n", insize, outsize);
- fd=get_comm_fd( handle, FILE_READ_DATA );
- if(0>fd) return FALSE;
- release_comm_fd( handle, fd );
- return TRUE;
+BOOL WINAPI SetupComm(HANDLE handle, DWORD insize, DWORD outsize)
+{
+ SERIAL_QUEUE_SIZE sqs;
+
+ sqs.InSize = insize;
+ sqs.OutSize = outsize;
+ return DeviceIoControl(handle, IOCTL_SERIAL_SET_QUEUE_SIZE,
+ &sqs, sizeof(sqs), NULL, 0, NULL, NULL);
}
/*****************************************************************************
diff --git a/dlls/ntdll/serial.c b/dlls/ntdll/serial.c
index 1b45a10..15d1941 100644
--- a/dlls/ntdll/serial.c
+++ b/dlls/ntdll/serial.c
@@ -729,6 +729,12 @@ static NTSTATUS set_line_control(int fd,
return STATUS_SUCCESS;
}
+static NTSTATUS set_queue_size(int fd, const SERIAL_QUEUE_SIZE* sqs)
+{
+ FIXME("insize %ld outsize %ld unimplemented stub\n", sqs->InSize, sqs->OutSize);
+ return STATUS_SUCCESS;
+}
+
static NTSTATUS set_special_chars(int fd, const SERIAL_CHARS* sc)
{
struct termios port;
@@ -985,6 +991,12 @@ NTSTATUS COMM_DeviceIoControl(HANDLE hDe
else
status = STATUS_INVALID_PARAMETER;
break;
+ case IOCTL_SERIAL_SET_QUEUE_SIZE:
+ if (lpInBuffer && nInBufferSize == sizeof(SERIAL_QUEUE_SIZE))
+ status = set_queue_size(fd, (const SERIAL_QUEUE_SIZE*)lpInBuffer);
+ else
+ status = STATUS_INVALID_PARAMETER;
+ break;
case IOCTL_SERIAL_SET_TIMEOUTS:
if (lpInBuffer && nInBufferSize == sizeof(SERIAL_TIMEOUTS))
status = set_timeouts(hDevice, fd, (const SERIAL_TIMEOUTS*)lpInBuffer);
More information about the wine-patches
mailing list