파일과 연결된 디버그 데이터를 열고 준비합니다 .exe/.dll .
문법
HRESULT loadDataFromCodeViewInfo (
LPCOLESTR executable,
LPCOLESTR searchPath,
DWORD cbCvInfo,
BYTE* pbCvInfo,
IUnknown* pCallback
);
매개 변수
실행 파일
[in] 또는 .exe 파일의 .dll 경로입니다.
searchPath
[in] 디버그 데이터를 검색하는 대체 경로입니다. 여러 경로는 세미콜론으로 구분되어야 합니다. 경로에 후행이 포함될 수 있습니다 \.
cbCvInfo
[in] 매개 변수의 크기(바이트)입니다 pbCvInfo .
pbCvInfo
[in] 대체 디버그 헤더 코드 뷰 정보(실행 파일의 IMAGE_DEBUG_DIRECTORY 일반 읽기를 대체합니다). RSDS 또는 NB10 헤더만 지원됩니다.
pCallback
[in] IUnknown 디버그 콜백 인터페이스(예: IDiaLoadCallback, , IDiaLoadCallback2IDiaReadExeAtOffsetCallback및/또는 'IDiaReadExeAtRVACallback 인터페이스)를 지원하는 개체에 대한 인터페이스입니다.
반환 값
성공하면 S_OK; 을 반환합니다. 그렇지 않으면 오류 코드를 반환합니다. 다음 표에서는 이 메서드에 대해 가능한 오류 코드 중 일부를 보여 줍니다.
| 가치 | 설명 |
|---|---|
E_PDB_NOT_FOUND |
파일을 열지 못했거나 파일 형식이 잘못되었습니다. |
E_PDB_FORMAT |
지원되지 않는 형식의 파일에 액세스하려고 했습니다. |
E_PDB_INVALID_SIG |
서명이 일치하지 않습니다. |
E_PDB_INVALID_AGE |
나이는 일치하지 않습니다. |
E_INVALIDARG |
잘못된 매개 변수입니다. |
E_UNEXPECTED |
데이터 원본이 이미 준비되었습니다. |
비고
코드 뷰 정보 형식은 IMAGE_DEBUG_TYPE_CODEVIEW 연결된 디버그 데이터 위치의 이름을 지정하고 일치시킬 서명 및 연령 필드를 제공합니다.
기호 서버에서 디버그 데이터를 로드하는 경우 symsrv.dll 사용자의 애플리케이션 또는 msdia140.dll 설치되어 있거나 시스템 디렉터리에 있어야 하는 동일한 디렉터리에 있어야 합니다.
이 메서드는 제공된 디버그 헤더를 읽은 다음 디버그 데이터를 검색하고 준비합니다. 검색 진행률은 필요에 따라 콜백을 통해 보고 및 제어될 수 있습니다. 예를 들어 메서드가 IDiaLoadCallback::NotifyDebugDir 디버그 디렉터리를 찾아서 처리할 때 IDiaDataSource::loadDataForExe 호출됩니다.
IDiaReadExeAtOffsetCallback 및 IDiaReadExeAtRVACallback 인터페이스를 사용하면 표준 파일 I/O를 통해 파일에 직접 액세스할 수 없는 경우 클라이언트 애플리케이션에서 실행 파일에서 데이터를 읽는 대체 방법을 제공할 수 있습니다.
유효성 검사 없이 파일을 로드 .pdb 하려면 이 메서드를 IDiaDataSource::loadDataFromPdb 사용합니다.
특정 조건에 대해 .pdb 파일의 유효성을 검사하려면 이 메서드를 IDiaDataSource::loadAndValidateDataFromPdb 사용합니다.
메모리에서 직접 .pdb 파일을 로드하려면 이 메서드를 IDiaDataSource::loadDataFromIStream 사용합니다.
.pdb 파일을 로드하지 않고 유효성을 검사하려면 IDiaDataSourceEx::ValidatePdb 메서드 를 사용합니다.
예시
BYTE pbCodeViewInfo[] = {
...
};
HRESULT hr = pSource->loadDataFromCodeViewInfo( L"myprog.exe", L".\debug", sizeof(pbCodeViewInfo), pbCodeViewInfo, nullptr);
if (FAILED(hr))
{
// Report error
}