[Com0com-cvs] com0com ioctl.c,1.13,1.14 trace.c,1.16,1.17 trace.h,1.6,1.7 tracetbl.c,1.4,1.5
The virtual serial port driver for Windows.
Brought to you by:
vfrolov
From: Vyacheslav F. <vf...@us...> - 2005-12-06 13:02:02
|
Update of /cvsroot/com0com/com0com In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11739 Modified Files: ioctl.c trace.c trace.h tracetbl.c Log Message: Implemented IOCTL_SERIAL_GET_DTRRTS Index: trace.c =================================================================== RCS file: /cvsroot/com0com/com0com/trace.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** trace.c 5 Dec 2005 10:54:55 -0000 1.16 --- trace.c 6 Dec 2005 13:01:54 -0000 1.17 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.17 2005/12/06 13:01:54 vfrolov + * Implemented IOCTL_SERIAL_GET_DTRRTS + * * Revision 1.16 2005/12/05 10:54:55 vfrolov * Implemented IOCTL_SERIAL_IMMEDIATE_CHAR *************** *** 1258,1261 **** --- 1261,1271 ---- } break; + case IOCTL_SERIAL_GET_DTRRTS: + if ((flags & TRACE_FLAG_RESULTS) && inform >= sizeof(ULONG)) { + pDestStr = AnsiStrCopyStr(pDestStr, &size, " "); + pDestStr = AnsiStrCopyMask(pDestStr, &size, + codeNameTableDTRRTS, *((PULONG)pSysBuf)); + } + break; case IOCTL_SERIAL_SET_WAIT_MASK: if ((flags & TRACE_FLAG_PARAMS) && inLength >= sizeof(ULONG)) { Index: trace.h =================================================================== RCS file: /cvsroot/com0com/com0com/trace.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** trace.h 28 Sep 2005 10:06:42 -0000 1.6 --- trace.h 6 Dec 2005 13:01:54 -0000 1.7 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.7 2005/12/06 13:01:54 vfrolov + * Implemented IOCTL_SERIAL_GET_DTRRTS + * * Revision 1.6 2005/09/28 10:06:42 vfrolov * Implemented IRP_MJ_QUERY_INFORMATION and IRP_MJ_SET_INFORMATION *************** *** 112,115 **** --- 115,119 ---- CODE2NAME codeNameTableDoType[]; CODE2NAME codeNameTableModemStatus[]; + CODE2NAME codeNameTableDTRRTS[]; CODE2NAME codeNameTableStatus[]; CODE2NAME codeNameTableIrpMj[]; Index: tracetbl.c =================================================================== RCS file: /cvsroot/com0com/com0com/tracetbl.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** tracetbl.c 28 Sep 2005 10:06:42 -0000 1.4 --- tracetbl.c 6 Dec 2005 13:01:54 -0000 1.5 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.5 2005/12/06 13:01:54 vfrolov + * Implemented IOCTL_SERIAL_GET_DTRRTS + * * Revision 1.4 2005/09/28 10:06:42 vfrolov * Implemented IRP_MJ_QUERY_INFORMATION and IRP_MJ_SET_INFORMATION *************** *** 174,177 **** --- 177,186 ---- }; + CODE2NAME codeNameTableDTRRTS[] = { + {SERIAL_DTR_STATE, "DTR"}, + {SERIAL_RTS_STATE, "RTS"}, + {0, NULL} + }; + FIELD2NAME codeNameTableControlHandShake[] = { TOFIELD2NAME (SERIAL_, DTR_CONTROL, SERIAL_DTR_MASK), Index: ioctl.c =================================================================== RCS file: /cvsroot/com0com/com0com/ioctl.c,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** ioctl.c 5 Dec 2005 10:54:55 -0000 1.13 --- ioctl.c 6 Dec 2005 13:01:54 -0000 1.14 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.14 2005/12/06 13:01:54 vfrolov + * Implemented IOCTL_SERIAL_GET_DTRRTS + * * Revision 1.13 2005/12/05 10:54:55 vfrolov * Implemented IOCTL_SERIAL_IMMEDIATE_CHAR *************** *** 134,137 **** --- 137,161 ---- } break; + case IOCTL_SERIAL_GET_DTRRTS: { + ULONG modemStatusRemote; + + if (pIrpStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(ULONG)) { + status = STATUS_BUFFER_TOO_SMALL; + break; + } + + KeAcquireSpinLock(pDevExt->pIoLock, &oldIrql); + modemStatusRemote = pDevExt->pIoPortRemote->modemStatus; + KeReleaseSpinLock(pDevExt->pIoLock, oldIrql); + + *(PULONG)pIrp->AssociatedIrp.SystemBuffer = + ((modemStatusRemote & C0C_MSB_DSR) ? SERIAL_DTR_STATE : 0) | + ((modemStatusRemote & C0C_MSB_CTS) ? SERIAL_RTS_STATE : 0); + + pIrp->IoStatus.Information = sizeof(ULONG); + + TraceIrp("FdoPortIoCtl", pIrp, &status, TRACE_FLAG_RESULTS); + break; + } case IOCTL_SERIAL_GET_MODEMSTATUS: if (pIrpStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(ULONG)) { |