次の方法で共有


IDebugFailureAnalysis::GetNext メソッド (extsfns.h)

GetNext メソッドは、指定された FA エントリの後に、Tag パラメーターと TagMask パラメーターで指定された条件を満たす次の FA エントリを DebugFailureAnalysis オブジェクトで検索します。

構文

PFA_ENTRY GetNext(
  [in] PFA_ENTRY Entry,
  [in] FA_TAG    Tag,
  [in] FA_TAG    TagMask
);

パラメーター

[in] Entry

FA_ENTRY構造体へのポインター。 この FA エントリの後に検索が開始されます。 このパラメーターが NULL の場合、 は FA エントリのコレクションの先頭から始まります。

[in] Tag

FA_TAG列挙の値。

[in] TagMask

検索を可能なすべてのタグのサブセットに制限するマスク。 「解説」を参照してください。 使用可能なすべてのタグを検索するには、このパラメーターを DEBUG_FLR_MASK_ALL に設定します。

戻り値

DebugFailureAnalysis オブジェクトに、指定されたエントリの後に条件を満たす FA エントリがある場合、このメソッドはFA_ENTRY構造体へのポインターを返します。 それ以外の場合、このメソッドは NULL を返します。

注釈

このメソッドは、この条件を満たす FA_ENTRY 構造体を検索します。

entry-Tag> & TagMask == タグ

タグは、 DEBUG_FLR_PARAM_TYPE 列挙型の値として extsfns.h で定義されます。これは 、FA_TAG 列挙とも呼ばれます。 タグは、 TagMask を使用して特定のグループ内で検索できるように、グループに配置されます。 たとえば、プール エラーに関連するタグのグループがあります。 このグループ内のタグに割り当てられた数値は、0x401 0x400範囲内にあります。0x406。 このグループにタグを持つすべての FA_ENTRY は、次の条件を満たします。

entry->Tag & 0xFFFFFF00 == 0x400

次のコード スニペットは、 FA_TAG 列挙の一部を示しています。

...
// Pool
DEBUG_FLR_POOL_ADDRESS = 0x400,
DEBUG_FLR_SPECIAL_POOL_CORRUPTION_TYPE,
DEBUG_FLR_CORRUPTING_POOL_ADDRESS,
DEBUG_FLR_CORRUPTING_POOL_TAG,
DEBUG_FLR_FREED_POOL_TAG,
DEBUG_FLR_LEAKED_SESSION_POOL_TAG,
DEBUG_FLR_CLIENT_DRIVER,

// Filesystem
DEBUG_FLR_FILE_ID = 0x500,
DEBUG_FLR_FILE_LINE,
...

例 1

次の例は、DEBUG_FLR_MANAGED_EXCEPTION_OBJECTと等しいタグを持つすべてのエラー分析 エントリを検索する方法を示しています。 が IDebugFailureAnalysis2 インターフェイスへのポインターであるとしますpAnalysis

FA_ENTRY entry = pAnalysis->Get(DEBUG_FLR_MANAGED_EXCEPTION_OBJECT);

while(NULL != entry)
{
   // Do something with the entry.

   entry = pAnalysis->GetNext(DEBUG_FLR_MANAGED_EXCEPTION_OBJECT, DEBUG_FLR_MASK_ALL);
}

例 2

次の例は、プール グループにタグを持つすべての FA エントリを検索する方法を示しています。 [プール] グループのタグの値が、0x401 0x400範囲内にあることを思い出してください。0x406。 が IDebugFailureAnalysis2 インターフェイスへのポインターであるとしますpAnalysis

FA_ENTRY entry = pAnalysis->GetNext(NULL, (FA_TAG)0x400, (FA_TAG)0xFFFFFF00);

while(NULL != entry)
{
   // Do something with the entry.

   entry = pAnalysis->GetNext(entry, (FA_TAG)0x400, (FA_TAG)0xFFFFFF00);
}

例 3

0xAFFFFFFFを使用して、0xA0000001範囲内に独自のカスタム タグを作成できます。

次の例は、カスタム タグを持つすべてのエラー分析エントリを検索する方法を示しています。 言い換えると、コードは、この条件を満たすタグを持つすべてのエントリを検索します。

entry->Tag & 0xF0000000 == 0xA0000000

タグが0xA0000001されたエントリ (0xA0000002、...条件を満たす0xAFFFFFF。


FA_ENTRY entry = pAnalysis->GetNext(NULL, (FA_TAG)0xA0000000, (FA_TAG)0xF0000000);

while(NULL != entry)
{
   // Do something with the Entry

   entry = pAnalysis->GetNext(entry, (FA_TAG)0xA0000000, (FA_TAG)0xF0000000);
}

要件

要件
対象プラットフォーム デスクトップ
Header extsfns.h

こちらもご覧ください

Get

IDebugFailureAnalysis2

NextEntry

!analyze を拡張する分析拡張機能プラグインの作成

_EFN_Analyze