IHostTaskManager::LeaveRuntime 메서드
현재 실행 중인 작업이 CLR(공용 언어 런타임)을 벗어나 비관리형 코드를 입력하려고 함을 호스트에 알릴 수 있습니다.
중요
IHostTaskManager::EnterRuntime에 대한 해당 호출은 호스트에 현재 실행 중인 작업이 관리형 코드를 다시 입력하고 있음을 알릴 수 있습니다.
구문
HRESULT LeaveRuntime (
[in] SIZE_T target
);
매개 변수
target
[in] 호출할 비관리형 함수의 매핑된 이식 가능 실행 파일 내의 주소입니다.
Return Value
HRESULT | 설명 |
---|---|
S_OK | LeaveRuntime 가 성공적으로 반환되었습니다. |
HOST_E_CLRNOTAVAILABLE | CLR이 프로세스에 로드되지 않았거나 CLR이 관리 코드를 실행하거나 호출을 성공적으로 처리할 수 없는 상태입니다. |
HOST_E_TIMEOUT | 호출 시간이 초과되었습니다. |
HOST_E_NOT_OWNER | 호출자는 잠금을 소유하지 않습니다. |
HOST_E_ABANDONED | 차단된 스레드 또는 파이버가 이벤트를 기다리는 동안 이벤트가 취소되었습니다. |
E_FAIL | 알 수 없는 치명적인 오류가 발생했습니다. 메서드가 E_FAIL을 반환하면 CLR은 더 이상 프로세스 내에서 사용할 수 없습니다. 호스팅 메서드에 대한 후속 호출은 HOST_E_CLRNOTAVAILABLE을 반환합니다. |
E_OUTOFMEMORY | 요청한 할당을 완료하는 데 사용할 수 있는 메모리가 부족합니다. |
설명
비관리형 코드에서 호출 시퀀스를 중첩할 수 있습니다. 예를 들어 아래 목록은 LeaveRuntime
, IHostTaskManager::ReverseEnterRuntime, IHostTaskManager::ReverseLeaveRuntime, IHostTaskManager::EnterRuntime
에 대한 호출 시퀀스가 호스트가 중첩된 레이어를 식별하도록 하는 가상 상황을 설명합니다.
작업 | 해당 메서드 호출 |
---|---|
관리형 Visual Basic 실행 파일은 플랫폼 호출을 사용하여 C로 작성된 비관리형 함수를 호출합니다. | IHostTaskManager::LeaveRuntime |
비관리형 C 함수는 C#으로 작성된 관리형 DLL에서 메서드를 호출합니다. | IHostTaskManager::ReverseEnterRuntime |
관리형 C# 함수는 플랫폼 호출을 사용하여 C로 작성된 또 다른 비관리형 함수를 호출합니다. | IHostTaskManager::LeaveRuntime |
두 번째 비관리형 함수는 C# 함수에 실행을 반환합니다. | IHostTaskManager::EnterRuntime |
C# 함수는 첫 번째 비관리형 함수로 실행을 반환합니다. | IHostTaskManager::ReverseLeaveRuntime |
첫 번째 비관리형 함수는 Visual Basic 프로그램에 실행을 반환합니다. | IHostTaskManager::EnterRuntime |
요구 사항
플랫폼:시스템 요구 사항을 참조하세요.
헤더: MSCorEE.h
라이브러리: 리소스로 MSCorEE.dll에 포함됩니다.
.NET Framework 버전: 2.0부터 사용 가능
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET