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 ----
|