다음을 통해 공유


IDebugFailureAnalysis::GetNext 메서드(extsfns.h)

GetNext 메서드는 TagTagMask 매개 변수로 지정된 조건을 충족하는 지정된 FA 항목 후 다음 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 == 태그

태그는 extsfns.h에서 FA_TAG 열거형이라고도 하는 DEBUG_FLR_PARAM_TYPE 열거형의 값으로 정의됩니다. 태그는 TagMask를 사용하여 특정 그룹 내에서 검색할 수 있도록 그룹으로 정렬됩니다. 예를 들어 풀 오류와 관련된 태그 그룹이 있습니다. 이 그룹의 태그에 할당된 숫자 값은 범위 0x400 0x401... 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 항목을 찾는 방법을 보여 줍니다. 풀 그룹의 태그에는 범위 0x400 0x401 값이 있습니다. 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);
}

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 extsfns.h

추가 정보

가져오기

IDebugFailureAnalysis2

NextEntry

확장 !analyze에 대한 분석 확장 플러그 인 작성

_EFN_Analyze