다음을 통해 공유


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
}

참고 항목