IDiaFrameData::get_program
Извлекает строку программы, которая используется для вычисления набора регистров перед вызовом текущей функции.
Синтаксис
HRESULT get_program (
BSTR* pRetVal
);
Параметры
pRetVal
[out] Возвращает строку программы.
Возвращаемое значение
В случае успеха возвращает S_OK
. Возвращает, S_FALSE
если это свойство не поддерживается. В противном случае возвращается код ошибки.
Замечания
Строка программы — это последовательность макросов, интерпретируемых для установления пролога. Например, типичный кадр стека может использовать строку "$T0 $ebp = $eip $T0 4 + ^ = $ebp $T0 ^ = $esp $T0 8 + ="
программы. Формат — обратная польная нотация, где операторы следуют операндам. T0
представляет временную переменную в стеке. В этом примере выполняются следующие действия.
Перемещение содержимого регистра
ebp
T0
в .Добавьте
4
значение вT0
создание адреса, получите значение из этого адреса и сохраните значение в регистреeip
.Получите значение из адреса, хранящегося в
T0
регистреebp
, и сохраните это значение.Добавьте
8
значение вT0
регистрesp
и сохраните это значение.Обратите внимание, что строка программы зависит от ЦП и соглашения о вызове, настроенного для функции, представленной текущим кадром стека.