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
}