Share via


PIMAGEHLP_STATUS_ROUTINE 콜백 함수(imagehlp.h)

BindImageEx 함수와 함께 사용되는 애플리케이션 정의 콜백 함수입니다. 상태 루틴은 이미지 바인딩 프로세스 중에 호출됩니다.

PIMAGEHLP_STATUS_ROUTINE 형식은 이 콜백 함수에 대한 포인터를 정의합니다. StatusRoutine 은 애플리케이션 정의 함수 이름의 자리 표시자입니다.

구문

PIMAGEHLP_STATUS_ROUTINE PimagehlpStatusRoutine;

BOOL PimagehlpStatusRoutine(
  [in] IMAGEHLP_STATUS_REASON Reason,
  [in] PCSTR ImageName,
  [in] PCSTR DllName,
  [in] ULONG_PTR Va,
  [in] ULONG_PTR Parameter
)
{...}

매개 변수

[in] Reason

바인딩 작업의 현재 상태. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
BindOutOfMemory
0
메모리가 부족합니다. 매개 변수 값은 할당 시도의 바이트 수입니다.
BindRvaToVaFailed
1
이미지에 대한 상대 가상 주소가 잘못되었습니다. 매개 변수 값이 사용되지 않습니다.
BindNoRoomInImage
2
이미지에 새 형식 가져오기 테이블에 대한 공간이 없습니다. 매개 변수 값이 사용되지 않습니다.
BindImportModuleFailed
3
모듈 가져오기에 실패했습니다. 매개 변수 값이 사용되지 않습니다.
BindImportProcedureFailed
4
프로시저 가져오기에 실패했습니다. 매개 변수 값은 함수의 이름입니다.
BindImportModule
5
모듈 가져오기가 시작됩니다. 매개 변수 값이 사용되지 않습니다.
BindImportProcedure
6
프로시저 가져오기가 시작됩니다. 매개 변수 값은 함수의 이름입니다.
BindForwarder
7
매개 변수 값은 전달된 함수의 이름입니다.
BindForwarderNOT
8
매개 변수 값은 전달되지 않은 함수의 이름입니다.
BindImageModified
9
이미지가 수정되었습니다. 매개 변수 값이 사용되지 않습니다.
BindExpandFileHeaders
10
파일 헤더가 확장되었습니다. 매개 변수 값은 바이트 수입니다.
BindImageComplete
11
바인딩이 완료되었습니다. 매개 변수 값에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.
BindMismatchedSymbols
12
체크섬이 일치하지 않습니다. 매개 변수 값은 기호 파일의 이름입니다.
BindSymbolsNotUpdated
13
기호 파일이 업데이트되지 않았습니다. 매개 변수 값은 업데이트되지 않은 기호 파일의 이름입니다.

[in] ImageName

바인딩할 파일의 이름입니다. 이 값은 파일 이름, 부분 경로 또는 전체 경로일 수 있습니다.

[in] DllName

DLL의 이름입니다.

[in] Va

계산된 가상 주소입니다.

[in] Parameter

추가 상태 정보. 이 값은 Reason 매개 변수의 값에 따라 달라집니다. 자세한 내용은 다음 주의 섹션의 코드 조각을 참조하세요.

반환 값

함수가 성공하면 반환 값은 TRUE입니다.

함수가 실패하면 반환 값은 FALSE입니다. 확장된 오류 정보를 검색하려면 GetLastError를 호출합니다.

설명

이 함수와 같은 모든 ImageHlp 함수는 단일 스레드입니다. 따라서 둘 이상의 스레드에서 이 함수로 호출하면 예기치 않은 동작이나 메모리 손상이 발생할 수 있습니다. 이를 방지하려면 둘 이상의 스레드에서 이 함수로의 모든 동시 호출을 동기화해야 합니다.

다음 코드 조각에서는 상태 BindImageComplete일 때 Va 값을 사용하는 방법을 설명합니다.

case BindImageComplete:
    if (fVerbose) {
        fprintf(stderr, "BIND: Details of binding %s\n", ImageName );
        NewImports = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)Va;
        NewImport = NewImports;
        while (NewImport->OffsetModuleName) {
            fprintf( stderr, "    Import from %s [%x]",
                     (LPSTR)NewImports + NewImport->OffsetModuleName,
                     NewImport->TimeDateStamp
                   );
            if (NewImport->NumberOfModuleForwarderRefs != 0) {
                fprintf( stderr, " with %u forwarders", NewImport-> 
                         NumberOfModuleForwarderRefs );
            }
            fprintf( stderr, "\n" );
            NewForwarder = (PIMAGE_BOUND_FORWARDER_REF)(NewImport+1);
            for (i=0; i<NewImport->NumberOfModuleForwarderRefs; i++) 
            {
                fprintf( stderr, "        Forward to %s [%x]\n",
                   (LPSTR)NewImports + NewForwarder->OffsetModuleName,
                   NewForwarder->TimeDateStamp);
                NewForwarder += 1;
            }
            NewImport = (PIMAGE_BOUND_IMPORT_DESCRIPTOR)NewForwarder;
        }
    }
    break;

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 imagehlp.h

추가 정보

BindImageEx

ImageHlp 함수