다음을 통해 공유


ICLRDebugging::OpenVirtualProcess 메서드

프로세스에 로드된 CLR(공용 언어 런타임) 모듈에 해당하는 ICorDebugProcess 인터페이스를 가져옵니다.

    HRESULT OpenVirtualProcess(
        [in] ULONG64 moduleBaseAddress,
        [in] IUnknown * pDataTarget,
        [in] ICLRDebuggingLibraryProvider * pLibraryProvider,
        [in] CLR_DEBUGGING_VERSION * pMaxDebuggerSupportedVersion,
        [in] REFIID riidProcess,
        [out, iid_is(riidProcess)] IUnknown ** ppProcess,
        [in, out] CLR_DEBUGGING_VERSION * pVersion,
        [out] CLR_DEBUGGING_PROCESS_FLAGS * pdwFlags);

매개 변수

  • moduleBaseAddress
    [in] 대상 프로세스에 있는 모듈의 기본 주소입니다. 지정된 모듈이 CLR 모듈이 아닐 경우 COR_E_NOT_CLR이 반환됩니다.

  • pDataTarget
    [in] 관리되는 디버거에서 프로세스 상태를 검사할 수 있도록 하는 데이터 대상 추상화입니다. 디버거에서는 ICorDebugDataTarget 인터페이스를 구현해야 합니다. 디버깅되는 CLR이 컴퓨터에 로컬로 설치되어 있지 않은 시나리오를 지원하려면 ICLRDebuggingLibraryProvider 인터페이스를 구현해야 합니다.

  • pLibraryProvider
    [in] 요청 시 버전별 디버깅 라이브러리를 찾아서 로드할 수 있는 라이브러리 공급자 콜백 인터페이스입니다. 이 매개 변수는 ppProcess 또는 pFlags가 null이 아닌 경우에만 필요합니다.

  • pMaxDebuggerSupportedVersion
    [in] 이 디버거에서 디버깅할 수 있는 CLR의 가장 높은 버전입니다. 이 디버거에서 지원하는 최신 CLR 버전의 주 버전, 부 버전 및 빌드 버전을 지정하고 이후의 내부 CLR 서비스 릴리스를 수용할 수 있도록 수정 번호를 65535로 설정해야 합니다.

  • riidProcess
    [in] 검색할 ICorDebugProcess 인터페이스의 ID입니다. 현재 허용되는 값은 IID_CORDEBUGPROCESS3, IID_CORDEBUGPROCESS2 및 IID_CORDEBUGPROCESS뿐입니다.

  • ppProcess
    [out] riidProcess로 식별되는 COM 인터페이스에 대한 포인터입니다.

  • pVersion
    [in, out] CLR의 버전입니다. 입력 매개 변수의 경우 이 값은 null일 수 있습니다. 또한 이 포인터는 CLR_DEBUGGING_VERSION 구조체를 가리킬 수도 있는데, 이 경우 이 구조체의 wStructVersion 필드는 0으로 초기화되어야 합니다.

    출력 매개 변수의 경우 반환된 CLR_DEBUGGING_VERSION 구조체는 CLR의 버전 정보로 채워집니다.

  • pdwFlags
    [out] 지정된 런타임에 대한 정보 플래그입니다. 이러한 플래그에 대한 자세한 내용은 CLR_DEBUGGING_PROCESS_FLAGS 항목을 참조하십시오.

반환 값

이 메서드는 메서드 오류를 나타내는 HRESULT 오류뿐만 아니라 다음과 같은 특정 HRESULT를 반환합니다.

HRESULT

설명

S_OK

메서드가 성공적으로 완료되었습니다.

E_POINTER

pDataTarget는 null입니다.

CORDBG_E_LIBRARY_PROVIDER_ERROR

ICLRDebuggingLibraryProvider 콜백이 오류를 반환하거나 유효한 핸들을 제공하지 않습니다.

CORDBG_E_MISSING_DATA_TARGET_INTERFACE

pDataTarget이 이 런타임 버전에 필요한 데이터 대상 인터페이스를 구현하지 않습니다.

CORDBG_E_NOT_CLR

표시된 모듈이 CLR 모듈이 아닙니다. 이 HRESULT는 메모리가 손상되어 CLR 모듈을 검색할 수 없거나, CLR 모듈을 사용할 수 없거나, CLR 버전이 shim 버전보다 이후 버전인 경우에도 반환됩니다.

CORDBG_E_UNSUPPORTED_DEBUGGING_MODEL

이 런타임 버전에서 이 디버깅 모델을 지원하지 않습니다. 현재 .NET Framework 버전 4 이전의 CLR 버전에서는 이 디버깅 모델을 지원하지 않습니다. pwszVersion 출력 매개 변수는 이 오류가 발생한 후에도 올바른 값으로 설정됩니다.

CORDBG_E_UNSUPPORTED_FORWARD_COMPAT

CLR의 버전이 이 디버거에서 지원해야 하는 버전보다 이후 버전입니다. pwszVersion 출력 매개 변수는 이 오류가 발생한 후에도 올바른 값으로 설정됩니다.

E_NO_INTERFACE

riidProcess 인터페이스를 사용할 수 없습니다.

CORDBG_E_UNSUPPORTED_VERSION_STRUCT

CLR_DEBUGGING_VERSION 구조체에 wStructVersion에 대한 올바른 값이 없습니다. 현재 허용되는 값은 0뿐입니다.

요구 사항

플랫폼: .NET Framework 시스템 요구 사항 참조

헤더: CorDebug.idl, CorDebug.h

라이브러리: CorGuids.lib

.NET Framework 버전: 4

참고 항목

기타 리소스

디버깅 인터페이스

디버깅(관리되지 않는 API 참조)