Share via


ICorProfilerInfo13::CreateHandle 메서드

지정된 개체를 래핑하는 핸들을 만듭니다.

구문

    HRESULT CreateHandle(
                [in] ObjectID            object,
                [in] COR_PRF_HANDLE_TYPE type,
                [out] ObjectHandleID*    pHandle);

매개 변수

object
[in] 핸들로 래핑할 개체 참조입니다.

type
[in] 만들 핸들의 형식입니다.

pHandle
[out] 지정된 object를 래핑하기 위해 만들어진 핸들을 가리키는 호출자 제공 포인터입니다.

설명

다음은 지정된 COR_PRF_HANDLE_TYPE 값에 따라 예상되는 용도입니다.

  • COR_PRF_HANDLE_TYPE_WEAK: 시간이 지남에 따라 개체가 메모리에 남아 있는지 모니터링합니다. 래핑된 개체가 수집된 경우 ICorProfilerInfo13::GetObjectIDFromHandle은 null ObjectID를 반환합니다.
  • COR_PRF_HANDLE_TYPE_STRONG: 다른 개체가 참조하지 않는 경우에도 개체가 가비지 수집에서 살아남도록 합니다.
  • COR_PRF_HANDLE_TYPE_PINNED: 강력한 핸들과 동일하지만 가비지 수집 중에 개체가 메모리의 동일한 주소에 유지되도록 합니다.

object 참조가 유효한지 확인하려면 ICorProfilerCallback::ObjectAllocated와 같은 ICorProfilerCallback 메서드에서 이 메서드를 호출해야 합니다. EventPipe 비동기 수신기에서 CreateHandle을 호출할 수 없습니다. 이벤트 페이로드를 통해 수신된 개체는 이벤트가 발생한 시간과 이벤트가 수신된 시간 사이에 가비지 수집이 발생한 경우 메모리에서 삭제되거나 이동되었을 수 있습니다.

만들어진 핸들이 더 이상 필요하지 않으면 ICorProfilerInfo13::DestroyHandle을 호출하는 것을 잊지 마세요. 가비지 수집기의 성능에 영향을 미치지 않도록 4096개 미만의 핸들을 동시에 할당하는 것이 좋습니다.

요구 사항

플랫폼:.NET 지원 운영 체제를 참조하세요.

헤더: CorProf.idl, CorProf.h

.NET 버전: .NET 7.0부터 사용 가능

참고 항목