IDebugAdvanced2::FindSourceFileAndToken メソッド (dbgeng.h)
FindSourceFileAndToken メソッドは、ソース パス上のソース ファイルのファイル名を返すか、ファイル トークンに関連付けられている変数の値を返します。
構文
HRESULT FindSourceFileAndToken(
[in] ULONG StartElement,
[in] ULONG64 ModAddr,
[in] PCSTR File,
[in] ULONG Flags,
[in, optional] PVOID FileToken,
[in] ULONG FileTokenSize,
[out, optional] PULONG FoundElement,
[out, optional] PSTR Buffer,
[in] ULONG BufferSize,
[out, optional] PULONG FoundSize
);
パラメーター
[in] StartElement
検索を開始するソース パス内の要素のインデックスを指定します。 StartElement 前のソース パス内のすべての要素は、検索から除外されます。 最初の要素のインデックスは 0 です。 startElement がソース パス内の要素数以上の場合、ファイリング システムが直接チェックされます。
このパラメーターは、FoundElement と共に使用して、ソース パスで複数の一致があるかどうかを確認できます。
フラグ DEBUG_FIND_SOURCE_TOKEN_LOOKUPが Flagsで設定されている場合、StartElement は無視されます。
[in] ModAddr
ソース ファイルが関連付けられているターゲット内のモジュールのメモリ割り当て内の場所を指定します。 ModAddr は、検索結果をキャッシュしたり、ソース サーバーに対してファイルのクエリを実行したりするために使用されます。 ModAddr は、NULL できます。
フラグ DEBUG_FIND_SOURCE_TOKEN_LOOKUPが Flagsで設定されている場合、ModAddr は無視されます。 また、fileToken が NULL でない場合、 ソース サーバーのクエリには使用されません。
[in] File
検索するファイルのパスとファイル名を指定します。
フラグ DEBUG_FIND_SOURCE_TOKEN_LOOKUPが設定されている場合、FileToken のトークンによってファイル既に指定されています。 この場合、ファイル は、ファイルに関連するソース サーバー上の変数の名前を指定します。 変数は、パーセント記号 (%) で始まり、終わる必要があります (例: %SRCSRVCMD%)。 この変数の値が返されます。
[in] Flags
このメソッドの動作を制御するフラグを指定します。 これらのフラグの説明については、「解説」を参照してください。
[in, optional] FileToken
ソース サーバー上のファイルを表すファイル トークンを指定します。 ファイル トークンは、GetSourceFileInformation メソッドでDEBUG_SRCFILE_SYMBOL_TOKENする を 設定することで取得できます。
フラグ DEBUG_FIND_SOURCE_TOKEN_LOOKUPが設定されている場合、FileToken NULL することはできません。
[in] FileTokenSize
FileToken トークンのサイズをバイト単位で指定します。 FileToken NULL 場合、このパラメーターは無視されます。
[out, optional] FoundElement
ファイルを含むソース パス内の要素のインデックスを受け取ります。 ファイルが (ソース パスを使用していない) ファイリング システムで直接見つかった場合は、-1 が FoundElement に返されます。 FoundElement が NULL または フラグ DEBUG_SRCFILE_SYMBOL_TOKENを含む 場合、この情報は返されません。
[out, optional] Buffer
見つかったファイルの名前を受け取ります。 ファイルがソース サーバー上にない場合、これはローカル ソース キャッシュ内のファイルの名前です。 フラグ DEBUG_FIND_SOURCE_FULL_PATHが設定されている場合、これはファイルの完全な正規パス名です。 それ以外の場合は、ソース パス内のディレクトリと、ファイルの検索に使用された ファイル の末尾が連結されます。
フラグ DEBUG_SRCFILE_SYMBOL_TOKENが Flagsで設定されている場合、Buffer は、FileToken ファイル トークンに関連付けられている File という名前の変数の値を受け取ります。
バッファー が NULL 場合、この情報は返されません。
[in] BufferSize
バッファー バッファーのサイズを文字数で指定します。 このサイズには、'\0' 終端文字のスペースが含まれます。 Buffer が NULL 場合、このパラメーターは無視されます。
[out, optional] FoundSize
ファイルの名前のサイズを文字数で指定します。 このサイズには、'\0' 終端文字のスペースが含まれます。 foundSize NULL 場合、この情報は返されません。
戻り値
このメソッドは、エラー値を返す場合もあります。 詳細については 戻り値の を参照してください。
リターン コード | 形容 |
---|---|
|
メソッドが成功しました。 |
|
メソッドが成功しました。 ただし、Buffer バッファーが小さすぎてファイル名または変数の値を保持できなかったため、バッファーに収まるように文字列が切り捨てられました。 |
備考
フラグ DEBUG_SRCFILE_SYMBOL_TOKENが Flagsで設定されている場合、このメソッドはソース パス上のファイルを検索しません。 代わりに、FileTokenで指定されたファイル トークンに関連付けられている変数を検索します。 これらの変数については、「言語仕様 1 トピック」を参照してください。 たとえば、変数 SRCSRVCMD の値を取得するには、ソース管理からソース ファイルを抽出するコマンド (GetSourceFileInformationのDEBUG_SRCFILE_SYMBOL_TOKEN_SOURCE_COMMAND_WIDE関数によっても返されます)、File を %SRCSRVCMD%に設定します。
エンジンは、次の手順を使用して、ファイルを順に検索します。
-
ソース パスにソース サーバーが含まれており、DEBUG_FIND_SOURCE_NO_SRCSRVフラグが設定されていない場合は、ソース パス内のソース サーバーが最初に検索されます。
最初に見つかった一致が返されます。
-
ソース パス内の各ディレクトリについて、ディレクトリ パスの末尾とファイル パスの先頭の間の重複を見つけようとします。 たとえば、ソース パスにディレクトリ C:\a\b\c\d が含まれており、ファイル が c\d\e\foo.c の場合、ファイル C:\a\b\c\d\e\foo.c は一致します。
フラグDEBUG_FIND_SOURCE_BEST_MATCHが設定されている場合は、最も長い重複を持つ一致が返されます。それ以外の場合は、最初の一致が返されます。
-
ソース パス内のディレクトリごとに、ファイル がディレクトリに追加されます。 一致するものが見つからない場合、このプロセスは繰り返され、最初のディレクトリがファイル パスの先頭から削除されるたびに実行されます。 たとえば、ソース パスにディレクトリ C:\a\b が含まれており、ファイル が c\d\e\foo.c の場合、ファイル C:\a\b\e\foo.c は一致します。
最初に見つかった一致が返されます。
- ファイル ファイル は、ファイリング システムで直接検索されます。
DEBUG_FIND_SOURCE_XXX ビット フラグは、ソース ファイルを検索するときに FindSourceFile と FindSourceFileAndToken メソッドの動作を制御するために使用されます。
フラグは、次の表の値の任意の組み合わせにすることができます。
定数 | 形容 |
---|---|
DEBUG_FIND_SOURCE_FULL_PATH |
常に、検出されたファイルの完全な正規パス名を返します。
設定されておらず、ソース パスに相対ディレクトリが含まれている場合は、相対パス名を返すことができます。 |
DEBUG_FIND_SOURCE_BEST_MATCH | マッチが見つかった後も検索を続けて、より良いマッチを探します。 |
DEBUG_FIND_SOURCE_NO_SRCSRV | 検索にソース サーバーを含めないでください。 |
DEBUG_FIND_SOURCE_TOKEN_LOOKUP |
ファイル トークンに関連付けられている変数を返します。
このフラグが設定されている場合、他のフラグは無視されます。 このフラグは、FindSourceFile メソッドでは使用できません。 |
DEBUG_FIND_SOURCE_DEFULT値は、フラグの既定のセットを定義します。これは、前の表のすべてのフラグがオフになっていることを意味します。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | dbgeng.h (Dbgeng.h を含む) |
関連項目
FindSourceFile の
GetSourceFileInformation の
GetSourcePathElement の
IDebugAdvanced2 の
IDebugAdvanced3 を する