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


функция обратного вызова 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

При получении списка имен: Неиспользуемые.

При запросе на печать имени : Неиспользуемые.

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

[in] TypeName

При получении списка имен: Неиспользуемые.

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

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

[out] Buffer

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

При запросе на печать имени : Неиспользуемые.

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

[in, out] BufferChars

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

При запросе на печать имени : Неиспользуемые.

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

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

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

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

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

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

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

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

 

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

Комментарии

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

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

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

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть dbgeng.h

См. также раздел

DebugExtensionInitialize