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 항목을 참조하세요.
Return Value
이 메서드는 다음과 같은 특정 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 모듈이 아닙니다. 메모리가 손상되었거나, 모듈을 사용할 수 없거나, 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부터 사용 가능
참고 항목
.NET