IDiaDataSourceEx::loadAndValidateDataFromPdbEx
프로그램 데이터베이스(.pdb) 파일이 제공된 서명 정보와 일치하는지 확인하고 선택적 레코드 프리페치를 사용하여 .pdb 파일을 디버그 데이터 원본으로 준비합니다.
구문
HRESULT loadAndValidateDataFromPdbEx (
LPCOLESTR pdbPath,
GUID* pcsig70,
DWORD sig,
DWORD age,
BOOL fPdbPrefetching
);
매개 변수
pdbPath
[in] .pdb 파일의 경로입니다.
pcsig70
[in] .pdb 파일 서명에 대해 확인할 GUID(Globally Unique Identifier) 서명입니다. Visual C++ 이상의 .pdb 파일에만 GUID 서명이 있습니다.
sig
[in] .pdb 파일 시그니처에 대해 확인할 32비트 시그니처입니다.
age
[in] 확인할 보존 기간 값입니다. 이 기간은 알려진 시간 값과 반드시 일치하지는 않으며. .pdb 파일이 해당 .exe 파일과 동기화되지 않았는지 여부를 확인하는 데 사용됩니다.
fPdbPrefetching
[in] 이 값으로 TRUE
설정하면 인접한 디버그 레코드가 메모리에 프리페치되어 잠재적으로 더 작은 파일 I/O 작업이 더 적고 더 큰 작업으로 대체되므로 메모리 사용량이 증가할 가능성이 있으므로 해당 레코드에 액세스할 때 전반적인 처리량이 향상됩니다. 로 FALSE
설정하면 다음과 동일하게 IDiaDataSource::loadAndValidateDataFromPdb
동작합니다. 다른 값으로 설정하면 동작이 지정되지 않습니다.
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::loadDataFromPdbEx
사용합니다.
콜백 메커니즘을 통해 데이터 로드 프로세스에 액세스하려면 이 메서드를 IDiaDataSourceEx::loadDataForExeEx
사용합니다.
메모리에서 직접 .pdb 파일을 로드하려면 이 메서드를 IDiaDataSourceEx::loadDataFromIStreamEx
사용합니다.
로드하지 않고 .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->loadAndValidateDataFromPdbEx( L"yprog.pdb",
&expectedGUIDSignature,
expectedFileSignature,
expectedAge,
TRUE);
if (FAILED(hr))
{
// Report an error
}