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


функция обратного вызова PDEBUG_EXTENSION_KNOWN_STRUCT (dbgeng.h)

Модуль вызывает функцию обратного вызова KnownStructOutput для запроса сведений о структурах, которые библиотека DLL расширения может форматировать для печати. Подсистема вызывает эту функцию по следующим причинам.

  • Получите список структур, которые библиотека DLL может форматировать для печати.
  • Получение однострочного представления определенной структуры.
  • Укажите, должна ли определенная структура иметь свое имя вместе с его однострочного представления.
'''cpp CALLBACK* PDEBUG_EXTENSION_KNOWN_STRUCT KnownStructOutput; ```

Синтаксис

PDEBUG_EXTENSION_KNOWN_STRUCT PdebugExtensionKnownStruct;

HRESULT PdebugExtensionKnownStruct(
  [in]      ULONG Flags,
  [in]      ULONG64 Offset,
  [in]      PSTR TypeName,
  [out]     PSTR Buffer,
  [in, out] PULONG BufferChars
)
{...}

Параметры

[in] Flags

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

Ценность Описание
DEBUG_KNOWN_STRUCT_GET_NAMES Получение списка имен структур.
DEBUG_KNOWN_STRUCT_SUPPRESS_TYPE_NAME Укажите, должна ли структура иметь свое имя.
DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT Получение однострочного представления структуры.

[in] Offset

При получении списка имен: unused.

При запросе на печать имени: unused.

При получении однострочного представления: Указывает расположение в адресном пространстве памяти целевого объекта для печати.

[in] TypeName

При получении списка имен: unused.

При запросе на печать имени: Указывает имя структуры. Это одно из имен, возвращаемых из запроса DEBUG_KNOWN_STRUCT_GET_NAMES.

При получении однострочного представления: Указывает имя структуры. Это одно из имен, возвращаемых из запроса DEBUG_KNOWN_STRUCT_GET_NAMES.

[out] Buffer

При получении списка имен: получает список имен структур, которые расширение может форматировать для печати. Один пустой символ должен отображаться между каждой парой имен. Список должен быть завершен двумя пустыми символами. Число символов, записанных в этот буфер, не должно превышать значение BufferSize.

При запросе на печать имени: unused.

При получении однострочного представления: получает представление структуры, определяемой StructName и Addressв виде строки. Число символов, записанных в этот буфер, не должно превышать значение BufferSize.

[in, out] BufferChars

При получении списка имен: Входные данные указывают размер буфера. В выходных данных, если буфер слишком мал, получает требуемый размер буфера.

При запросе на печать имени: unused.

При получении однострочного представления: Входные данные указывают размер в символах буфера. В выходных данных, если буфер слишком мал, получает требуемый размер буфера.

Возвращаемое значение

Возвращаемый код Описание
S_OK
При получении списка имен: буфер содержит запрошенный список имен.

При запросе на печать имени: печать имени должна быть отложена. То есть имя не должно быть напечатано.

При получении однострочного представления: буфер содержит запрошенное однострочный представление.

S_FALSE
При получении списка имен: BufferSize слишком мало входных данных. В выходных данных BufferSize содержит требуемый размер буфера.

При запросе на печать имени: Печать имени не должна быть отложена. То есть имя должно быть напечатано.

При получении однострочного представления: BufferSize слишком мало входных данных. В выходных данных BufferSize содержит требуемый размер буфера.

 

Все остальные возвращаемые значения указывают на сбой функции. Подсистема продолжит игнорировать содержимое буфера .

Замечания

Эта функция является необязательной. Библиотека DLL расширения должна экспортировать только KnownStructOutput, если она имеет возможность отформатировать специальные структуры для печати в одной строке. Подсистема ищет эту функцию по имени в библиотеке DLL расширения.

После инициализации библиотеки DLL расширения подсистема вызывает эту функцию для запроса библиотеки DLL для списка имен структур, которые он знает, как распечатать. Затем всякий раз, когда модуль печатает сводку одного из структур, имя которого находится в списке, она вызывает эту функцию для форматирования структуры для печати.

KnownStructOutput называется PDEBUG_EXTENSION_KNOWN_STRUCT в файле заголовка Dbgeng.h.

Требования

Требование Ценность
целевая платформа Настольный
заголовка dbgeng.h

См. также

DebugExtensionInitialize