ComWrappers 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Important
이 API는 CLS 규격이 아닙니다.
COM IUnknown 형식의 래퍼를 관리하기 위한 클래스입니다.
public ref class ComWrappers abstract
[System.CLSCompliant(false)]
[System.Runtime.Versioning.UnsupportedOSPlatform("android")]
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public abstract class ComWrappers
[System.CLSCompliant(false)]
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public abstract class ComWrappers
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("android")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
type ComWrappers = class
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
type ComWrappers = class
Public MustInherit Class ComWrappers
- 상속
-
ComWrappers
- 파생
- 특성
설명
API는 기본 제공 COM 상호 운용성 지원과는 독립적으로 ComWrappers API에 대한 IUnknown 지원을 제공합니다. API는 ComWrappers 개발자가 기본 제공 버전을 효율적인 방식으로 교체하는 데 필요한 최소 런타임 지원을 노출합니다.
일반적으로 런타임에서는 관리되는 개체에 대한 네이티브 프록시를 CCW(COM Callable Wrapper)라고 하며 네이티브 개체에 대한 관리 프록시를 RCW(런타임 호출 가능 래퍼)라고 합니다. 그러나 여기서 사용하는 경우 해당 용어는 동일한 이름(즉, CCW 및 RCW)의 기본 제공 기능과 혼동해서는 안 됩니다. 기본 제공 기능과 달리 정확한 수명 관리, 디스패치 메서드 및 인수와 반환 값의 마샬링에 대한 책임의 대부분은 ComWrappers 구현자에게 맡겨집니다.
"최소 지원"은 다음 기능으로 정의됩니다.
- 관리되는 개체와 네이티브 프록시(예: CCW) 간의 효율적인 매핑입니다.
- 네이티브
IUnknown프록시와 관리되는 프록시 간의 효율적인 매핑(예: RCW). - IReferenceTrackerHost 인터페이스 계약을 통해 가비지 수집기와 통합합니다.
이를 활용하는 것은 고급 시나리오입니다.
프록시 상태
이 섹션에서는 각 프록시를 만든 후 네이티브 및 관리 프록시 상태에 대한 설명과 그림을 제공합니다.
다음 그림에서 강력한 참조는 실선(===)으로 표시되고 약한 참조는 파선(= = =)으로 표시됩니다. "강력한 참조" 및 "약한 참조"라는 용어는 특정 구현을 의미하는 것이 아니라 "수명 연장" 및 "수명 연장 안 함"으로 해석되어야 합니다.
다음 그림에서는 호출 후 관리되는 개체 및 네이티브 프록시의 상태를 보여 줍니다 ComWrappers.GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags).
-------------------- ----------------------
| Managed object | | Native proxy |
| | | Ref count: 1 |
| ---------------- | | ------------------ |
| | Weak reference |=| = = = = = = = >| | Strong reference | |
| | to proxy | |<===============|=| to object | |
| ---------------- | | ------------------ |
-------------------- ----------------------
다음 그림에서는 호출 후 네이티브 개체 및 관리 프록시의 상태를 보여 줍니다 ComWrappers.GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags). "정체성"의 개념은 IUnknown에 대한 규칙을 따릅니다.
------------------ ------------------
| Native object |< = = = = = =| |
| Ref count: +1 | | Mapping from |
------------------ | native identity |
------------------------ | to managed proxy |
| Managed proxy |< = = =| |
| Created by ComWrappers | ------------------
| implementer. |
| Optional AddRef() on |
| native object. |
------------------------
런타임 관점에서 약한 참조만 존재하는지 확인합니다. 네이티브 개체에 대한 참조 수는 +1 네이티브 개체와 해당 관리 프록시 간의 연결된 수명을 보장하기 위해 관리되는 프록시 작성자(즉, ComWrappers 구현자)가 수행하는 것으로 간주됩니다. 앞에서 언급한 시나리오(3)를 지원하는 데 사용되는 관리 프록시에 설명된 선택적 강력한 참조(즉 AddRef(), )가 있습니다.
CreateObjectFlags.TrackerObject을(를) 참조하세요. 이 선택적 강력한 참조를 사용하면 참조 수가 +2됩니다.
생성자
| Name | Description |
|---|---|
| ComWrappers() |
인스턴스 생성자입니다. |
메서드
| Name | Description |
|---|---|
| ComputeVtables(Object, CreateComInterfaceFlags, Int32) |
의 값을 |
| CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags) |
의 값을 |
| CreateObject(IntPtr, CreateObjectFlags) |
의 값을 |
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetIUnknownImpl(IntPtr, IntPtr, IntPtr) |
런타임 제공 IUnknown 구현을 가져옵니다. |
| GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags) |
관리되지 않는 환경에 전달할 수 있는 제공된 개체의 COM 표현을 만듭니다. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
현재 등록된 관리되는 개체를 가져오거나 새 관리되는 개체를 만들어 등록합니다. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) |
현재 등록된 관리되는 개체를 가져오거나 새 관리되는 개체를 만들어 등록합니다. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr) |
현재 등록된 관리되는 개체를 얻거나 제공된 관리되는 개체를 사용하여 등록합니다. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
현재 등록된 관리되는 개체를 가져오거나 제공된 관리 개체를 사용하여 등록합니다. |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| RegisterForMarshalling(ComWrappers) |
런타임에서 ComWrappers 마샬링을 위한 전역 인스턴스로 사용할 인스턴스를 등록합니다. |
| RegisterForTrackerSupport(ComWrappers) |
ComWrappers 참조 추적기 지원을 위해 전역 인스턴스로 사용할 인스턴스를 등록합니다. |
| ReleaseObjects(IEnumerable) |
일반 개체 또는 COM 인터페이스 수명 이외의 개체 컬렉션을 해제합니다. |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
| TryGetComInstance(Object, IntPtr) |
지정된 관리되는 개체 ComWrappers가 -created managed Wrapper인지 여부를 확인하고, 이 경우 래핑된 관리되지 않는 포인터를 반환합니다. |
| TryGetObject(IntPtr, Object) |
지정된 COM 개체 ComWrappers가 관리되지 않는 래퍼인지 여부를 확인하고, 이 경우 래핑된 관리되는 개체를 반환합니다. |