다음을 통해 공유


IDiaDataSource::loadAndValidateDataFromPdb

프로그램 데이터베이스(.pdb) 파일을 열고, 해당 파일이 제공된 서명 정보와 일치하는지 확인하고, .pdb 파일을 디버그 데이터 소스로 준비합니다.

구문

HRESULT loadAndValidateDataFromPdb ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age
);

매개 변수

pdbPath

[in] .pdb 파일의 경로입니다.

pcsig70

[in] .pdb 파일 서명에 대해 확인할 GUID(Globally Unique Identifier) 서명입니다. Visual C++ 이상의 .pdb 파일에만 GUID 서명이 있습니다.

sig

[in] .pdb 파일 시그니처에 대해 확인할 32비트 시그니처입니다.

age

[in] 확인할 보존 기간 값입니다. 이 기간은 알려진 시간 값과 반드시 일치하지는 않으며. .pdb 파일이 해당 .exe 파일과 동기화되지 않았는지 여부를 확인하는 데 사용됩니다.

Return Value

성공하면 S_OK를 반환하고, 실패하면 오류 코드를 반환합니다. 다음 표에서는 이 메서드의 가능한 반환 값을 보여 줍니다.

설명
E_PDB_NOT_FOUND 파일을 열지 못했거나 파일 형식이 잘못되었습니다.
E_PDB_FORMAT 사용되지 않는 형식의 파일에 액세스하려고 했습니다.
E_PDB_INVALID_SIG 시그니처가 일치하지 않습니다.
E_PDB_INVALID_AGE 보존 기간이 일치하지 않습니다.
E_INVALIDARG 잘못된 매개 변수입니다.
E_UNEXPECTED 데이터 소스가 이미 준비되었습니다.

설명

.pdb 파일에는 시그니처 값과 보존 기간 값이 모두 포함됩니다. 이러한 값은 .pdb 파일과 일치하는 .exe 또는 .dll 파일에 복제됩니다. 데이터 소스를 준비하기 전에 이 메서드는 명명된 .pdb 파일의 시그니처 및 보존 기간이 제공된 값과 일치하는지 확인합니다.

.pdb 파일을 로드하고 프리페치로 유효성을 검사하려면 이 메서드를 IDiaDataSourceEx::loadAndValidateDataFromPdbEx 사용합니다.

유효성 검사 없이 .pdb 파일을 로드하려면 이 메서드를 IDiaDataSource::loadDataFromPdb 사용합니다.

콜백 메커니즘을 통해 데이터 로드 프로세스에 액세스하려면 이 메서드를 IDiaDataSource::loadDataForExe 사용합니다.

메모리에서 직접 .pdb 파일을 로드하려면 이 메서드를 IDiaDataSource::loadDataFromIStream 사용합니다.

로드하지 않고 .pdb 파일의 유효성을 검사하려면 이 메서드를 IDiaDataSourceEx::ValidatePdb 사용합니다.

예시

IDiaDataSource* pSource;  // Previously created data source.
DEFINE_GUID(expectedGUIDSignature,0x1234,0x5678,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08);
DWORD expectedFileSignature = 0x12345678;
DWORD expectedAge           = 128;

HRESULT hr;
hr = pSource->loadAndValidateDataFromPdb( L"yprog.pdb",
                                          &expectedGUIDSignature,
                                          expectedFileSignature,
                                          expectedAge);
if (FAILED(hr))
{
    // Report an error
}

참고 항목