[Com0com-cvs] com0com trace.c,1.11,1.12
The virtual serial port driver for Windows.
Brought to you by:
vfrolov
From: Vyacheslav F. <vf...@us...> - 2005-09-09 15:21:44
|
Update of /cvsroot/com0com/com0com In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15213 Modified Files: trace.c Log Message: Added additional flushing for saved strings Index: trace.c =================================================================== RCS file: /cvsroot/com0com/com0com/trace.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** trace.c 6 Sep 2005 06:58:20 -0000 1.11 --- trace.c 9 Sep 2005 15:21:32 -0000 1.12 *************** *** 20,23 **** --- 20,26 ---- * * $Log$ + * Revision 1.12 2005/09/09 15:21:32 vfrolov + * Added additional flushing for saved strings + * * Revision 1.11 2005/09/06 06:58:20 vfrolov * Added SERIAL_STATUS.Errors tracing *************** *** 798,802 **** OBJECT_ATTRIBUTES objectAttributes; IO_STATUS_BLOCK ioStatusBlock; - TIME_FIELDS timeFields; static CHAR strOld[500]; --- 801,804 ---- *************** *** 804,813 **** static LONG strOldFreeInd = 0; - GetTimeFields(&timeFields); - if (KeGetCurrentIrql() != PASSIVE_LEVEL) { SIZE_T size; KIRQL oldIrql; PCHAR pDestStr; KeAcquireSpinLock(&strOldLock, &oldIrql); --- 806,819 ---- static LONG strOldFreeInd = 0; if (KeGetCurrentIrql() != PASSIVE_LEVEL) { SIZE_T size; KIRQL oldIrql; PCHAR pDestStr; + TIME_FIELDS timeFields; + + if (!pStr) + return; + + GetTimeFields(&timeFields); KeAcquireSpinLock(&strOldLock, &oldIrql); *************** *** 898,905 **** } ! pDestStr = AnsiStrCopyTimeFields(pDestStr, &size, &timeFields); ! pDestStr = AnsiStrFormat(pDestStr, &size, " %s\r\n", pStr); ! TraceWrite(pIoObject, handle, pBuf->buf); FreeTraceBuf(pBuf); --- 904,917 ---- } ! if (pStr) { ! TIME_FIELDS timeFields; ! GetTimeFields(&timeFields); ! ! pDestStr = AnsiStrCopyTimeFields(pDestStr, &size, &timeFields); ! pDestStr = AnsiStrFormat(pDestStr, &size, " %s\r\n", pStr); ! ! TraceWrite(pIoObject, handle, pBuf->buf); ! } FreeTraceBuf(pBuf); *************** *** 1084,1087 **** --- 1096,1100 ---- ULONG_PTR inform; ULONG major; + ULONG disabled; if (!TRACE_FILE_OK) *************** *** 1090,1120 **** pIrpStack = IoGetCurrentIrpStackLocation(pIrp); major = pIrpStack->MajorFunction; switch (major) { case IRP_MJ_WRITE: ! if (!traceEnable.write) ! return; break; case IRP_MJ_READ: ! if (!traceEnable.read) ! return; break; case IRP_MJ_DEVICE_CONTROL: switch (pIrpStack->Parameters.DeviceIoControl.IoControlCode) { case IOCTL_SERIAL_GET_TIMEOUTS: ! if (!traceEnable.getTimeouts) ! return; break; case IOCTL_SERIAL_SET_TIMEOUTS: ! if (!traceEnable.setTimeouts) ! return; break; case IOCTL_SERIAL_GET_COMMSTATUS: ! if (!traceEnable.getCommStatus) ! return; break; case IOCTL_SERIAL_GET_MODEMSTATUS: ! if (!traceEnable.getModemStatus) ! return; break; } --- 1103,1128 ---- pIrpStack = IoGetCurrentIrpStackLocation(pIrp); major = pIrpStack->MajorFunction; + disabled = FALSE; switch (major) { case IRP_MJ_WRITE: ! disabled = !traceEnable.write; break; case IRP_MJ_READ: ! disabled = !traceEnable.read; break; case IRP_MJ_DEVICE_CONTROL: switch (pIrpStack->Parameters.DeviceIoControl.IoControlCode) { case IOCTL_SERIAL_GET_TIMEOUTS: ! disabled = !traceEnable.getTimeouts; break; case IOCTL_SERIAL_SET_TIMEOUTS: ! disabled = !traceEnable.setTimeouts; break; case IOCTL_SERIAL_GET_COMMSTATUS: ! disabled = !traceEnable.getCommStatus; break; case IOCTL_SERIAL_GET_MODEMSTATUS: ! disabled = !traceEnable.getModemStatus; break; } *************** *** 1122,1125 **** --- 1130,1140 ---- } + pDevExt = pIrpStack->DeviceObject->DeviceExtension; + + if (disabled) { + TraceOutput(pDevExt, NULL); + return; + } + pBuf = AllocTraceBuf(); if (!pBuf) *************** *** 1128,1132 **** pDestStr = pBuf->buf; - pDevExt = pIrpStack->DeviceObject->DeviceExtension; pDestStr = AnsiStrCopyHead(pDestStr, &size, pDevExt, pHead); --- 1143,1146 ---- |