다음을 통해 공유


IDiaDataSourceEx::ValidatePdbEx

프로그램 데이터베이스(.pdb) 파일이 제공된 서명 정보와 일치하는지 확인합니다.

구문

HRESULT ValidatePdb ( 
   LPCOLESTR    pdbPath,
   const GUID*  pcsig70,
   DWORD        sig,
   DWORD        age,
   BOOL*        pfStripped
);

매개 변수

pdbPath

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

pcsig70

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

sig

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

age

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

pfStripped

[out] PDB가 다른 정보와 일치하는 경우 이 매개 변수는 PDB가 프라이빗 기호를 제거했는지 여부를 나타내도록 설정됩니다. 이 값은 IDiaSymbol::get_isStripped 반환되는 값과 같습니다. PDB가 다른 값과 일치하지 않거나 이 메서드가 실패하면 이 매개 변수가 지정되지 않습니다.

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를 로드하거나 사용할 준비를 하지 않고 제공된 값과 일치하는지 확인합니다.

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

특정 조건에 대해 .pdb 파일을 로드하고 유효성을 검사하려면 이 메서드를 IDiaDataSourceEx::loadAndValidateDataFromPdbEx 사용합니다.

예시

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;
BOOL fStripped              = FALSE;

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

참고 항목