ComWrappers Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Importante
Esta API não está em conformidade com CLS.
Classe para gerir 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
Observações
A ComWrappers API fornece suporte para a IUnknown API independente do suporte de interoperabilidade COM interno. A ComWrappers API expõe o suporte mínimo de tempo de execução necessário para que os desenvolvedores substituam a versão interna de maneira eficiente.
Tradicionalmente no tempo de execução, um proxy nativo para objeto gerenciado é chamado de COM Callable Wrapper (CCW), e um proxy gerenciado para um objeto nativo é chamado de Runtime Callable Wrapper (RCW). No entanto, quando usados aqui, esses termos não devem ser confundidos com os recursos internos do mesmo nome (ou seja, CCW e RCW). Ao contrário dos recursos internos, a maior parte da responsabilidade pelo gerenciamento preciso do ciclo de vida, métodos de chamada e organização de argumentos e valores de retorno é deixada para o ComWrappers implementador.
"Suporte mínimo" é definido pelos seguintes recursos:
- Mapeamento eficiente entre um objeto gerenciado e um proxy nativo (por exemplo, CCW).
- Mapeamento eficiente entre um nativo
IUnknowne seu proxy gerenciado (por exemplo, RCW). - Integração com o coletor de lixo através do contrato de interface IReferenceTrackerHost .
Aproveitar isso é 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 respetiva criação.
Nas ilustrações a seguir, uma referência forte é representada como uma linha sólida (===) e uma referência fraca é representada como uma linha tracejada (= = =). Os termos "referência forte" e "referência fraca" devem ser interpretados como "prolongamento do tempo de vida" e "não prolongamento do tempo de vida", por oposição a implicar uma aplicaçã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 do ponto de vista do tempo de execução. Presume-se +1 que a contagem de referência no objeto nativo seja executada pelo criador do 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 é usado para dar suporte ao cenário (3) mencionado anteriormente. Consulte CreateObjectFlags.TrackerObject. Com esta referência forte opcional, a contagem de referência seria +2.
Construtores
| Name | Descrição |
|---|---|
| ComWrappers() |
Construtor de instâncias. |
Métodos
| Name | Descrição |
|---|---|
| ComputeVtables(Object, CreateComInterfaceFlags, Int32) |
Calcula a Vtable desejada para |
| CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags) |
Cria um objeto gerido para o objeto apontado respeitando |
| CreateObject(IntPtr, CreateObjectFlags) |
Cria um objeto gerido para o objeto que |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetIUnknownImpl(IntPtr, IntPtr, IntPtr) |
Obtém a implementação IUnknown fornecida em tempo de execução. |
| GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags) |
Cria uma representação COM do objeto fornecido que pode ser passada para um ambiente não gerido. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Recebe o objeto gerido atualmente registado ou cria um novo objeto gerido e regista-o. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) |
Recebe o objeto gerido atualmente registado ou cria um novo objeto gerido e regista-o. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr) |
Obtenha o objeto gerido atualmente registado ou usa o objeto gerido fornecido e regista-o. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Recebe o objeto gerido atualmente registado ou usa o objeto gerido fornecido e regista-o. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| RegisterForMarshalling(ComWrappers) |
Regista uma ComWrappers instância para ser usada como instância global para marshalling em tempo de execução. |
| RegisterForTrackerSupport(ComWrappers) |
Regista uma ComWrappers instância para ser usada como instância global para suporte a rastreadores de referência. |
| ReleaseObjects(IEnumerable) |
Liberta uma coleção de objetos fora da vida útil normal do objeto ou da interface COM. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TryGetComInstance(Object, IntPtr) |
Determina se o objeto gerido especificado é um ComWrapperswrapper gerido -criado e, em caso afirmativo, devolve o ponteiro não gerido enrolado. |
| TryGetObject(IntPtr, Object) |
Determina se o objeto COM especificado é um ComWrapperswrapper não gerido -criado e, em caso afirmativo, devolve o objeto gerido encapsulado. |