다음을 통해 공유


IDiaDataSource::loadDataFromMiscInfo

파일과 연결된 디버그 데이터를 열고 준비합니다 .exe/.dll .

구문

HRESULT loadDataFromMiscInfo (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   DWORD     timeStampExe,
   DWORD     timeStampDbg,
   DWORD     sizeOfExe,
   DWORD     cbMiscInfo,
   BYTE*     pbMiscInfo,
   IUnknown* pCallback
);

매개 변수

executable

[in] 또는 .dll 파일의 .exe 경로입니다.

searchPath

[in] 디버그 데이터를 검색하는 대체 경로입니다. 여러 경로는 세미콜론으로 구분되어야 합니다. 경로에 후행이 포함될 수 있습니다 \.

timeStampExe

[in] 실행 이미지의 대체 타임스탬프입니다.

timeStampDbg

[in] 디버그 정보의 대체 타임스탬프입니다.

sizeOfExe

[in] 실행 이미지의 대체 크기(바이트)입니다.

cbMiscInfo

[in] 매개 변수의 크기( pbMiscInfo 바이트)입니다.

pbMiscInfo

[in] 파일 이름에 IMAGE_DEBUG_MISC 디버그 정보를 제공하는 형식의 대체 디버그 헤더입니다.

pCallback

[in] IUnknown 디버그 콜백 인터페이스(예: IDiaLoadCallback, , IDiaLoadCallback2및/또는 인터페이스)를 지원하는 개체의 IDiaReadExeAtOffsetCallbackIDiaReadExeAtRVACallback 인터페이스입니다.

Return Value

성공하면 S_OK를 반환하고, 실패하면 오류 코드를 반환합니다. 다음 표에서는 이 메서드에 대해 가능한 오류 코드 중 일부를 보여 줍니다.

설명
E_PDB_NOT_FOUND 파일을 열지 못했거나 파일 형식이 잘못되었습니다.
E_PDB_FORMAT 사용되지 않는 형식의 파일에 액세스하려고 했습니다.
E_PDB_INVALID_SIG 시그니처가 일치하지 않습니다.
E_PDB_INVALID_AGE 보존 기간이 일치하지 않습니다.
E_INVALIDARG 잘못된 매개 변수입니다.
E_UNEXPECTED 데이터 소스가 이미 준비되었습니다.

설명

pbMiscInfo는 실행 파일 이미지의 디버그 정보를 대체하고 연결된 디버그 데이터 위치의 이름을 지정합니다. 타임스탬프 및 크기는 디버그 정보와 일치하는 데 사용됩니다.

기호 서버 에서 디버그 데이터를 로드하는 경우 symsrv.dll 사용자의 애플리케이션 또는 msdia140.dll 설치되어 있거나 시스템 디렉터리에 있어야 하는 동일한 디렉터리에 있어야 합니다.

이 메서드는 디버그 데이터를 검색하고 준비합니다. 필요에 따라 콜백을 통해 검색 진행 상황을 보고하고 제어할 수 있습니다. 예를 들어 메서드가 IDiaLoadCallback::NotifyDebugDir 디버그 디렉터리를 찾아서 처리할 때 IDiaDataSource::loadDataForExe 호출됩니다.

IDiaReadExeAtOffsetCallbackIDiaReadExeAtRVACallback 인터페이스를 사용하면 표준 파일 I/O를 통해 파일에 직접 액세스할 수 없는 경우 클라이언트 애플리케이션에서 실행 파일에서 데이터를 읽는 대체 방법을 제공할 수 있습니다.

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

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

메모리에서 직접 .pdb 파일을 로드하려면 이 메서드를 IDiaDataSource::loadDataFromIStream 사용합니다.

로드하지 않고 .pdb 파일의 유효성을 검사하려면 IDiaDataSourceEx::ValidatePdb 메서드를 사용합니다.

예시

DWORD dwTimeStamp = 0x3BF1C039;
DWORD dwSizeImage = 0x0000A000;
BYTE pbMiscInfo[0x110] = {
  ...
};
HRESULT hr = pSource->loadDataFromMiscInfo( L"myprog.exe", L".\debug", dwTimeStamp, dwTimeStamp, dwSizeOfImage, sizeof(pbMiscInfo), pbMiscInfo, nullptr);
if (FAILED(hr))
{
    // Report error
}

참고 항목