ComWrappers Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Importante
Esta API não está em conformidade com CLS.
Classe para gerenciar wrappers de tipos 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
- Herança
-
ComWrappers
- Derivado
- Atributos
Comentários
A ComWrappers API fornece suporte para a IUnknown API independentemente do suporte interno à interoperabilidade COM. A ComWrappers API expõe o suporte mínimo de runtime necessário para que os desenvolvedores substituam a versão interna de maneira eficiente.
Tradicionalmente no runtime, um proxy nativo para objeto gerenciado é chamado de CCW (Com Callable Wrapper) e um proxy gerenciado para um objeto nativo é chamado de RCW (Runtime Callable Wrapper). No entanto, quando usados aqui, esses termos não devem ser confundidos com os recursos internos de mesmo nome (ou seja, CCW e RCW). Ao contrário dos recursos incorporados, a maior parte da responsabilidade pelo gerenciamento preciso do tempo de vida, pelo envio de métodos e pela organização de argumentos e valores de retorno é deixada para o implementador ComWrappers.
O "suporte mínimo" é definido pelos seguintes recursos:
- Mapeamento eficiente entre um objeto gerenciado e um proxy nativo (por exemplo, CCW).
- Mapeamento eficiente entre um
IUnknownnativo e seu proxy gerenciado (por exemplo, RCW). - Integração com o coletor de lixo por meio do contrato de interface IReferenceTrackerHost .
Aproveitar esse é um cenário avançado.
Estado do proxy
Esta seção fornece descrições e ilustrações do estado de proxy nativo e gerenciado após sua respectiva criação.
Nas ilustrações a seguir, uma referência forte é retratada como uma linha sólida (===) e uma referência fraca é retratada como uma linha tracejada (= = =). Os termos "referência forte" e "referência fraca" devem ser interpretados como "estendendo o tempo de vida" e "não estendendo o tempo de vida", em vez de implicar uma implementação específica.
A ilustração a seguir mostra o estado do objeto gerenciado e do proxy nativo após uma chamada para ComWrappers.GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags).
-------------------- ----------------------
| Managed object | | Native proxy |
| | | Ref count: 1 |
| ---------------- | | ------------------ |
| | Weak reference |=| = = = = = = = >| | Strong reference | |
| | to proxy | |<===============|=| to object | |
| ---------------- | | ------------------ |
-------------------- ----------------------
A próxima ilustração mostra o estado do objeto nativo e do proxy gerenciado após uma chamada para ComWrappers.GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags). O conceito de "identidade" segue as regras para IUnknown.
------------------ ------------------
| Native object |< = = = = = =| |
| Ref count: +1 | | Mapping from |
------------------ | native identity |
------------------------ | to managed proxy |
| Managed proxy |< = = =| |
| Created by ComWrappers | ------------------
| implementer. |
| Optional AddRef() on |
| native object. |
------------------------
Observe que existem apenas referências fracas da perspectiva do tempo de execução. Supõe-se +1 que a contagem de referência no objeto nativo seja executada pelo criador de proxy gerenciado (ou seja, o ComWrappers implementador) para garantir o tempo de vida associado entre o objeto nativo e seu proxy gerenciado. Há uma referência forte opcional (ou seja, AddRef()) mencionada no proxy gerenciado, que é usada para dar suporte ao cenário (3) mencionado anteriormente. Consulte CreateObjectFlags.TrackerObject. Com essa referência forte opcional, o contador de referência seria +2.
Construtores
| Nome | Description |
|---|---|
| ComWrappers() |
Construtor de instância. |
Métodos
| Nome | Description |
|---|---|
| ComputeVtables(Object, CreateComInterfaceFlags, Int32) |
Calcula a Vtable desejada, |
| CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags) |
Cria um objeto gerenciado para o objeto apontado |
| CreateObject(IntPtr, CreateObjectFlags) |
Cria um objeto gerenciado para o objeto que |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
| GetIUnknownImpl(IntPtr, IntPtr, IntPtr) |
Obtém a implementação IUnknown fornecida pelo runtime. |
| GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags) |
Cria uma representação COM do objeto fornecido que pode ser passada para um ambiente não gerenciado. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Obtém o objeto gerenciado registrado no momento ou cria um novo objeto gerenciado e o registra. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) |
Obtém o objeto gerenciado registrado no momento ou cria um novo objeto gerenciado e o registra. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr) |
Obtenha o objeto gerenciado registrado no momento ou use o objeto gerenciado fornecido e registre-o. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Obtém o objeto gerenciado registrado no momento ou usa o objeto gerenciado fornecido e o registra. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| RegisterForMarshalling(ComWrappers) |
Registra uma ComWrappers instância a ser usada como a instância global para marshalling no runtime. |
| RegisterForTrackerSupport(ComWrappers) |
Registra uma ComWrappers instância a ser usada como a instância global para o suporte ao rastreador de referência. |
| ReleaseObjects(IEnumerable) |
Libera uma coleção de objetos fora do tempo de vida normal do objeto ou da interface COM. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
| TryGetComInstance(Object, IntPtr) |
Determina se o objeto gerenciado especificado é um ComWrapperswrapper gerenciado criado e, em caso afirmativo, retorna o ponteiro não gerenciado encapsulado. |
| TryGetObject(IntPtr, Object) |
Determina se o objeto COM especificado é um ComWrapperswrapper não gerenciado criado e, em caso afirmativo, retorna o objeto gerenciado encapsulado. |