У меня есть старая Visual Studio EEAddin стиле Расширение отладчика, предназначенное для приема строк, которые были сопоставлены с целыми числами во время выполнения, и обратного отображения, чтобы отобразить исходное значение строки в окне просмотра.
Например, отображение строки, сопоставленной с целым числом 0x39ad1dc4
является 0x39ad1dc4 (Hello, world!)
,
Я хотел бы соблюдать настройку флага «Шестнадцатеричное отображение» отладчика, когда я форматирую целочисленную часть результата, но я не уверен, как (или даже если) я могу получить доступ к этой настройке из моего обратного вызова.
Для справки, обратный вызов EEAddin «custom viewer», который я использую:
typedef HRESULT (WINAPI * CUSTOMVIEWER)(DWORD address, DEBUGHELPER * helper, int base, BOOL useUnicodeStrings, char * result, size_t max, DWORD reserved);
Можно подумать, base
Параметр даст мне информацию, которая мне нужна, но в моих тестах она всегда была 10
независимо от того, какое состояние опции шестнадцатеричного отображения в отладчике установлено.
У меня есть доступ к DEBUGHELPER
API, который выглядит так:
typedef struct tagDEBUGHELPER {
DWORD dwVersion;
HRESULT (WINAPI * ReadDebuggeeMemory)(struct tagDEBUGHELPER * self, DWORD address, DWORD bytesToRead, VOID * destination, DWORD * bytesActuallyRead );
// The API calls below are only supported when dwVersion is >= 0x20000.
DWORDLONG (WINAPI * GetRealAddress)(struct tagDEBUGHELPER * self);
HRESULT (WINAPI * ReadDebuggeeMemoryEx)(struct tagDEBUGHELPER * self, DWORDLONG address, DWORD bytesToRead, VOID * destination, DWORD * bytesActuallyRead);
int (WINAPI * GetProcessorType)(struct tagDEBUGHELPER * self);
} DEBUGHELPER;
Мне пришлось вручную определять этот API на основе примера кода, разбросанного по всему интернету; документирование этого и любых потенциально связанных API довольно трудно найти. Вышеуказанная структура и тип обратного вызова являются единственными частями API, о которых я знаю.
Есть ли способ определить состояние шестнадцатеричного флажка отображения с помощью этого или некоторого связанного API? Я мог бы переписать средство просмотра в новой платформе расширений, если это необходимо, при условии, что эта платформа позволяет мне создавать расширения для собственного кода.
Задача ещё не решена.