次の方法で共有


PDEBUG_EXTENSION_KNOWN_STRUCT コールバック関数 (dbgeng.h)

エンジンは、KnownStructOutput コールバック関数を呼び出して、拡張 DLL が印刷用にフォーマットできる構造体に関する情報を要求します。 エンジンは、次の理由でこの関数を呼び出します。

  • DLL が印刷用にフォーマットできる構造体の一覧を取得します。
  • 特定の構造体の単一行表現を取得します。
  • 特定の構造体の名前を 1 行の表現と共に出力する必要があるかどうかを確認します。
'''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 クエリから返される名前の 1 つです。

単一行表現を取得する場合: 構造体の名前を指定します。 これは、DEBUG_KNOWN_STRUCT_GET_NAMES クエリから返される名前の 1 つです。

[out] Buffer

名前の一覧を取得する場合: 拡張機能が印刷用に書式設定できる構造体の名前の一覧を受け取ります。 名前の各ペアの間に 1 つの null 文字を指定する必要があります。 リストは、2 つの null 文字で終了する必要があります。 このバッファーに書き込まれる文字数は、BufferSizeの値を超えてはなりません。

名前を印刷するかどうかを確認する場合: 未使用。

単一行表現を取得する場合: 構造体の表現を受け取ります。これは、StructNameAddressで識別されます。 このバッファーに書き込まれる文字数は、BufferSizeの値を超えてはなりません。

[in, out] BufferChars

名前の一覧を取得する場合: 入力時に、バッファー のサイズ文字で指定します。 出力時にバッファーが小さすぎる場合は、必要なバッファー サイズを受け取ります。

名前を印刷するかどうかを確認する場合: 未使用。

1 行の表現を取得する場合: 入力では、バッファー のサイズ文字で指定します。 出力時にバッファーが小さすぎる場合は、必要なバッファー サイズを受け取ります。

戻り値

リターン コード 形容
S_OK
名前の一覧を取得する場合: バッファー には、要求された名前の一覧が含まれます。

名前を印刷するかどうかを確認する場合: 名前の印刷は抑制する必要があります。 つまり、名前は印刷しないでください。

単一行表現を取得する場合: Buffer には、要求された単一行表現が含まれます。

S_FALSE
名前の一覧を取得する場合: BufferSize が入力時に小さすぎました。 出力時 BufferSize には、必要なバッファー サイズが含まれます。

名前を印刷するかどうかを確認する場合: 名前の印刷を抑制しないでください。 つまり、名前を印刷する必要があります。

単一行表現を取得する場合: BufferSize が入力時に小さすぎました。 出力時 BufferSize には、必要なバッファー サイズが含まれます。

 

他のすべての戻り値は、関数が失敗したことを示します。 エンジンは、Bufferの内容を無視し続けます。

備考

この関数は省略可能です。 拡張 DLL は、1 行 印刷用の特殊な構造を書式設定できる場合にのみ、KnownStructOutput をエクスポートする必要があります。 エンジンは、拡張 DLL 内の名前でこの関数を検索します。

拡張 DLL を初期化した後、エンジンはこの関数を呼び出して、出力方法を認識している構造体名の一覧を DLL に照会します。 次に、名前がリスト内にある構造体の概要をエンジンが出力するたびに、この関数を呼び出して、印刷用の構造体の書式を設定します。

KnownStructOutput は、Dbgeng.h ヘッダー ファイルで PDEBUG_EXTENSION_KNOWN_STRUCT 呼び出されます。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー dbgeng.h

関連項目

DebugExtensionInitialize