#include "windows.h" #define KDEXT_64BIT #include "wdbgexts.h" #include "stdlib.h" #include "stdio.h" #include "fusiondbgext.h" DECLARE_API( actctxstack ) { try { ULONG64 ulTebAddress = 0; ULONG ulStackFlags = 0; ULONG64 ulTopOfRtlFrameList = 0; ULONG ulNextCookie = 0; GetTebAddress( &ulTebAddress ); GetFieldValue( ulTebAddress, "nt!TEB", "ActivationContextStack.Flags", ulStackFlags ); GetFieldValue( ulTebAddress, "nt!TEB", "ActivationContextStack.ActiveFrame", ulTopOfRtlFrameList ); GetFieldValue( ulTebAddress, "nt!TEB", "ActivationContextStack.NextCookieSequenceNumber", ulNextCookie ); dprintf( "Current activation stack information in TEB %p:\n" " Flags : 0x%08lx\n" " ActiveFrame : 0x%p\n" " NextCookieSequence : 0x%08lx\n", ulTebAddress, ulStackFlags, ulTopOfRtlFrameList, ulNextCookie); DumpActCtxStackFullStack( ulTopOfRtlFrameList ); } catch (const COutOfMemory &) { dprintf("Out of memory\n"); } }