Поделиться через


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 представляет временную переменную в стеке. В этом примере выполняются следующие действия.

  1. Перемещение содержимого регистра ebpT0в .

  2. Добавьте 4 значение в T0 создание адреса, получите значение из этого адреса и сохраните значение в регистре eip.

  3. Получите значение из адреса, хранящегося в T0 регистре ebp, и сохраните это значение.

  4. Добавьте 8 значение в T0 регистр espи сохраните это значение.

    Обратите внимание, что строка программы зависит от ЦП и соглашения о вызове, настроенного для функции, представленной текущим кадром стека.

См. также