/*++ Copyright (C) Microsoft Corporation, 1992 - 1999 Module Name: aic.c Abstract: WinDbg Extension Api for interpretting AIC78XX debugging structures Author: Peter Wieland (peterwie) 16-Oct-1995 Environment: User Mode. Revision History: --*/ #define DBG_TRACE #include "pch.h" #include "trace.h" extern char *eventTypes[]; void dumpTraceInfo(traceinfo *ti); DECLARE_API( trace ) /*++ Routine Description: Dumps the specified AIC78xx debugging data structure Arguments: Ascii bits for address. Return Value: None. --*/ { ULONG_PTR traceinfoAddr; traceinfo ti; GetAddress(args, &traceinfoAddr); if (!ReadMemory( traceinfoAddr, &ti, sizeof(ti), NULL )) { dprintf("%p: Could not read Srb\n", traceinfoAddr); return; } dumpTraceInfo(&ti); return; } void dumpTraceInfo(traceinfo *ti) { UCHAR i,j; DWORD result; char buf[64]; dprintf("AIC78xx Debugging Trace - %d total entries\n", ti->num); for (i = 0; i < ti->num; i++) { j = (ti->next + i) % ti->num; if (ti->table[i].type == TRACE_TYPE_EMPTY) continue; dprintf("event %d: ", ti->num - i); dprintf("%s\t", eventTypes[ti->table[j].type]); // dprintf("%lx(", ti->table[j].func); if (ti->table[j].func != NULL) { GetSymbol((LPVOID)ti->table[j].func, buf, &result); dprintf("%s(", buf); } else { dprintf("NULL(", buf); } dprintf("%lx, %lx, %lx)\n", ti->table[j].arg[0], ti->table[j].arg[1], ti->table[j].arg[2]); } return; } char *eventTypes[] = {"EMPTY", "ENTRY", "EXIT", "EVENT"};