Great - спасибо за статью! Люди добрые поделитесь сслыками на ресурсы, рассказывабщие о том, что и куда пишет система при KeBugCheck и что из этого и в каком формате попадает в memory.dmp после ребута? Хочу собрать и проработать побольше информации об этих вопросах... Спасибо!
Great, ты не мог бы здесь скопипастить кодес как ты получаешь KD_DEBUGGER_DATA_BLOCK по-человечески, а то чет твоя страничка в дауне. Пока буду использовать KeCapturePersistentThreadState для этого...
как правильно расчитать размер страничного файла чтобы вместился крэш дамп в зависимости от его типа? с минидампом все понятно, а вот для ядрового и полного не вижу простых решений...
слушай Great, я тут один интересный файлик нашел E:\DDK\IFS\inc\wxp\wdbgexts.h посмотри, может тебе он тоже будет интересен: typedef struct _DBGKD_GET_VERSION64 { USHORT MajorVersion; USHORT MinorVersion; USHORT ProtocolVersion; USHORT Flags; USHORT MachineType; // // Protocol command support descriptions. // These allow the debugger to automatically // adapt to different levels of command support // in different kernels. // // One beyond highest packet type understood, zero based. UCHAR MaxPacketType; // One beyond highest state change understood, zero based. UCHAR MaxStateChange; // One beyond highest state manipulate message understood, zero based. UCHAR MaxManipulate; // Kind of execution environment the kernel is running in, // such as a real machine or a simulator. Written back // by the simulation if one exists. UCHAR Simulation; USHORT Unused[1]; ULONG64 KernBase; ULONG64 PsLoadedModuleList; // // Components may register a debug data block for use by // debugger extensions. This is the address of the list head. // // There will always be an entry for the debugger. // ULONG64 DebuggerDataList; } DBGKD_GET_VERSION64, *PDBGKD_GET_VERSION64; и т.д.
Да я про эту структуру что-то на хоумпейдже выкладывал вроде. см. статью про KeCapturePersistentThreadState, которая была позже, чем про дампы. Ну посмотри как в статье высчитывается размер дампа. Через MmPhysicalMemoryDescriptor Пожалуйста) В том самом, который описан в статье. И он совпадает с тем же, в котором он пишется в пейджфайл