serial: removed the extra byte sent with an empty OutputBuffer. At least Windows 2008R2 SP1 works better without it. Need to figure out why...

This commit is contained in:
Emmanuel Ledoux 2014-05-12 19:21:06 +02:00 committed by Emmanuel Ledoux
parent 4c743de69c
commit 7f9545f12e

View File

@ -93,7 +93,7 @@ static void serial_process_irp_create(SERIAL_DEVICE* serial, IRP* irp)
* SharedAccess = 0x00000007: FILE_SHARE_DELETE | FILE_SHARE_WRITE | FILE_SHARE_READ
* CreateDisposition = 0x00000001: CREATE_NEW
*
* then sends :
* then Windows 2012 sends :
* DesiredAccess = 0x00120089: SYNCHRONIZE | READ_CONTROL | FILE_READ_ATTRIBUTES | FILE_READ_EA | FILE_READ_DATA
* SharedAccess = 0x00000007: FILE_SHARE_DELETE | FILE_SHARE_WRITE | FILE_SHARE_READ
* CreateDisposition = 0x00000001: CREATE_NEW
@ -410,10 +410,14 @@ static void serial_process_irp_device_control(SERIAL_DEVICE* serial, IRP* irp)
Stream_EnsureRemainingCapacity(irp->output, BytesReturned);
Stream_Write(irp->output, OutputBuffer, BytesReturned); /* OutputBuffer */
}
else
{
Stream_Write_UINT8(irp->output, 0); /* Padding (1 byte) */
}
/* TMP: FIXME: Why at least Windows 2008R2 gets lost with this
* extra byte and likely on a IOCTL_SERIAL_SET_BAUD_RATE? The
* extra byte is well required according MS-RDPEFS
* 2.2.1.5.5 */
/* else */
/* { */
/* Stream_Write_UINT8(irp->output, 0); /\* Padding (1 byte) *\/ */
/* } */
if (InputBuffer != NULL)
free(InputBuffer);