/*++ Copyright (c) 1992 Microsoft Corporation Module Name: Lists.c Abstract: WinDbg Extension Api Author: Gary Kimura [GaryKi] 25-Mar-96 Environment: User Mode. Revision History: --*/ #include "precomp.h" #pragma hdrstop #define ReadAtAddress(A,V,S) { ULONG _r; \ if (!ReadMemory( (ULONG)(A), &(V), (S), &_r ) || (_r < (S))) { \ dprintf("Can't Read Memory at %08lx\n", (A)); \ return; \ } \ } DECLARE_API( dblink ) /*++ Routine Description: Dump a list by its blinks. Arguments: arg - [Address] [count] Return Value: None --*/ { ULONG StartAddress; ULONG Count; ULONG Address; ULONG Buffer[4]; StartAddress = 0; Count = 24; // // read in the paramaters // sscanf(args,"%lx %lx",&StartAddress, &Count); // // set our starting address and then while the count is greater than zero and // the starting address is not equal to the current dumping address // we'll read in 4 ulongs, dump them, and then go through blink. // Address = StartAddress; while (Count-- > 0) { ReadAtAddress( Address, Buffer, sizeof(ULONG)*4 ); dprintf("%08lx %08lx %08lx %08lx %08lx\n\n", Address, Buffer[0], Buffer[1], Buffer[2], Buffer[3]); Address = Buffer[1]; if (Address == StartAddress) { return; } } return; }