UnmanagedCallersOnlyAttribute 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.
Qualquer método marcado com UnmanagedCallersOnlyAttribute pode ser chamado diretamente a partir de código nativo. O token de função pode ser carregado para uma variável local usando o operador address-of em C# e passado como callback para um método nativo.
public ref class UnmanagedCallersOnlyAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class UnmanagedCallersOnlyAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type UnmanagedCallersOnlyAttribute = class
inherit Attribute
Public NotInheritable Class UnmanagedCallersOnlyAttribute
Inherits Attribute
- Herança
- Atributos
Exemplos
O exemplo seguinte demonstra a passagem de um callback marcado UnmanagedCallersOnlyAttribute para uma função nativa.
[DllImport("NativeLibrary")]
internal static extern unsafe void NativeFunctionWithCallback(delegate* unmanaged[Cdecl]<int, int> callback);
[UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvCdecl) })]
private static int DoubleInt(int i) => i * 2;
public static unsafe void PassCallbackToNativeFunction()
{
NativeFunctionWithCallback(&DoubleInt);
}
Observações
Os métodos marcados com este atributo têm as seguintes restrições:
- Tem de ser marcado
static. - Não deve ser chamado a partir de código gerido.
- Só deve ter discussões que se fazem bem .
- Não deve ter parâmetros de tipo genéricos nem estar contido numa classe genérica.
Construtores
| Name | Description |
|---|---|
| UnmanagedCallersOnlyAttribute() |
Inicializa uma nova UnmanagedCallersOnlyAttribute instância. |
Campos
| Name | Description |
|---|---|
| CallConvs |
Optional. Se for omitido, o runtime usará a convenção padrão de chamada da plataforma. |
| EntryPoint |
Optional. Se for omitido, não é emitida nenhuma exportação nomeada durante a compilação. |
Propriedades
| Name | Description |
|---|---|
| TypeId |
Quando implementado numa classe derivada, obtém um identificador único para esta Attribute. (Herdado de Attribute) |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| GetHashCode() |
Devolve o código de hash para esta instância. (Herdado de Attribute) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsDefaultAttribute() |
Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
| Match(Object) |
Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |