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 또는 pFlagsnull이 아닌 경우에만 필요합니다.

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 항목을 참조하세요.

Return Value

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

HRESULT 설명
S_OK 메서드가 완료되었습니다.
E_POINTER pDataTargetnull입니다.
CORDBG_E_LIBRARY_PROVIDER_ERROR ICLRDebuggingLibraryProvider 콜백은 오류를 반환하거나 유효한 핸들을 제공하지 않습니다.
CORDBG_E_MISSING_DATA_TARGET_INTERFACE pDataTarget은 이 런타임 버전에 필요한 데이터 대상 인터페이스를 구현하지 않습니다.
CORDBG_E_NOT_CLR 표시된 모듈이 CLR 모듈이 아닙니다. 메모리가 손상되었거나, 모듈을 사용할 수 없거나, CLR 버전이 shim 버전보다 나중 버전이기 때문에 CLR 모듈을 검색할 수 없는 경우에도 이 HRESULT가 반환됩니다.
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뿐입니다.

예외

설명

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: CorDebug.idl, CorDebug.h

라이브러리: CorGuids.lib

.NET Framework 버전: 4부터 사용 가능

.NET 버전: .NET Core 2.1부터 사용 가능

참고 항목