понедельник, 19 марта 2012 г.

VMware: ultra quick memory dump

Проблема

Необходимо создать дамп памяти (для отладки) виртуальной машины в определённый момент времени.
Но, например, в виртуальной машине не настроен отладчик ядра или же отладка происходит через виртуальный COM порт (создание полного дампа может занять немало времени).

Решение
  1. Создать снимок виртуальной машины.
  2. Найти имя файла снимка в рабочей директории ВМ.
  3. Используя утилиту vmss2core.exe, конвертировать снимок в формат WinDbg crash dump (конвертация происходит очень быстро). Например:
    "%ProgramFiles(x86)%\VMware\VMware Workstation\vmss2core.exe" –W "WinXp-Snapshot2.vmsn" "WinXp-Snapshot2.vmem"
    
  4. Результат конвертации будет в файле memory.dmp

Дополнительная информация

Debugging Virtual Machines with the Checkpoint to Core Tool
vmss2core - Failed to locate memory

вторник, 6 марта 2012 г.

WDK: RTL_INIT_OBJECT_ATTRIBUTES

Недавно узнал что в WDK есть макрос RTL_INIT_OBJECT_ATTRIBUTES, позволяющий совместить объявление переменной типа OBJECT_ATTRIBUTES и её инициализацию. В сочетании с макросом RTL_CONSTANT_STRING (для объявления и инициализации переменной типа UNICODE_STRING) повышает читаемость кода.

UNICODE_STRING someUnicodeString = RTL_CONSTANT_STRING(L"\\SystemRoot");

OBJECT_ATTRIBUTES objAttr = RTL_INIT_OBJECT_ATTRIBUTES(&someUnicodeString, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE);