Сохранение результата .dvalloc в переменной

Можно ли сохранить результат .dvalloc в переменной?

Я имею в виду начальный адрес выделенной памяти


person daisy    schedule 18.09.2016    source источник


Ответы (1)


Я не думаю, что это легко возможно с помощью одной команды, поэтому все варианты неприятны:

Хранить вручную

Плюсы: легко понять. Используйте копирование / вставку (щелкните правой кнопкой мыши, чтобы скопировать, щелкните правой кнопкой мыши, чтобы вставить BTW)

0:000> .dvalloc 100000
Allocated 100000 bytes starting at 00000000`00290000
0:000> r $t9 = 00000000`00290000
0:000> ? $t9
Evaluate expression: 2686976 = 00000000`00290000

Используйте сценарий WinDbg

Плюс: без опечаток. Приятно использовать, например. из .cmdtree, если вам просто нужна память один раз.

0:000> .foreach /pS 5 (addr {.dvalloc 100000}) {r $t8=${addr}}
0:000> ? $t8
Evaluate expression: 6881280 = 00000000`00690000

Вместо регистра вы также можете определить псевдоним

0:000> as /c memory .foreach /pS 5 (addr {.dvalloc 100000}) {.echo ${addr}}
0:000> ? memory
Evaluate expression: 12124160 = 00000000`00b90000

Сначала сохраните адрес, а затем используйте его в .dvalloc

Обратная сторона этого подхода: вам нужно знать, не используется ли адрес.

0:000> r $t7=01000000; .dvalloc /b $t7 100000
Allocated 100000 bytes starting at 00000000`01000000
0:000> ? $t7
Evaluate expression: 16777216 = 00000000`01000000
person Thomas Weller    schedule 18.09.2016