Commit fcdc293b authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

ntdll/kernel32: SetupComm & SET_QUEUE_SIZE

- stubbed out ntdll's serial IOCTL SET_QUEUE_SIZE - implemented kernel32.SetupComm on top of it
parent b53e0169
...@@ -883,6 +883,11 @@ BOOL WINAPI ClearCommError(HANDLE handle, LPDWORD errors, LPCOMSTAT lpStat) ...@@ -883,6 +883,11 @@ BOOL WINAPI ClearCommError(HANDLE handle, LPDWORD errors, LPCOMSTAT lpStat)
* Called after CreateFile to hint to the communication resource to use * Called after CreateFile to hint to the communication resource to use
* specified sizes for input and output buffers rather than the default values. * 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 * RETURNS
* *
* True if successful, false if the communications resource handle is bad. * True if successful, false if the communications resource handle is bad.
...@@ -891,18 +896,14 @@ BOOL WINAPI ClearCommError(HANDLE handle, LPDWORD errors, LPCOMSTAT lpStat) ...@@ -891,18 +896,14 @@ BOOL WINAPI ClearCommError(HANDLE handle, LPDWORD errors, LPCOMSTAT lpStat)
* *
* Stub. * Stub.
*/ */
BOOL WINAPI SetupComm( BOOL WINAPI SetupComm(HANDLE handle, DWORD insize, DWORD outsize)
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; SERIAL_QUEUE_SIZE sqs;
FIXME("insize %ld outsize %ld unimplemented stub\n", insize, outsize); sqs.InSize = insize;
fd=get_comm_fd( handle, FILE_READ_DATA ); sqs.OutSize = outsize;
if(0>fd) return FALSE; return DeviceIoControl(handle, IOCTL_SERIAL_SET_QUEUE_SIZE,
release_comm_fd( handle, fd ); &sqs, sizeof(sqs), NULL, 0, NULL, NULL);
return TRUE;
} }
/***************************************************************************** /*****************************************************************************
......
...@@ -729,6 +729,12 @@ static NTSTATUS set_line_control(int fd, const SERIAL_LINE_CONTROL* slc) ...@@ -729,6 +729,12 @@ static NTSTATUS set_line_control(int fd, const SERIAL_LINE_CONTROL* slc)
return STATUS_SUCCESS; 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) static NTSTATUS set_special_chars(int fd, const SERIAL_CHARS* sc)
{ {
struct termios port; struct termios port;
...@@ -985,6 +991,12 @@ NTSTATUS COMM_DeviceIoControl(HANDLE hDevice, ...@@ -985,6 +991,12 @@ NTSTATUS COMM_DeviceIoControl(HANDLE hDevice,
else else
status = STATUS_INVALID_PARAMETER; status = STATUS_INVALID_PARAMETER;
break; 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: case IOCTL_SERIAL_SET_TIMEOUTS:
if (lpInBuffer && nInBufferSize == sizeof(SERIAL_TIMEOUTS)) if (lpInBuffer && nInBufferSize == sizeof(SERIAL_TIMEOUTS))
status = set_timeouts(hDevice, fd, (const SERIAL_TIMEOUTS*)lpInBuffer); status = set_timeouts(hDevice, fd, (const SERIAL_TIMEOUTS*)lpInBuffer);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment