Compartilhar via


UnmanagedCallersOnlyAttribute Classe

Definição

Métodos marcados com UnmanagedCallersOnlyAttribute podem ser chamados diretamente do código nativo. É possível carregar o token de função em uma variável local usando o operador address-of no C# e transmiti-lo como um retorno de chamada 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
UnmanagedCallersOnlyAttribute
Atributos

Exemplos

O exemplo a seguir demonstra a passagem de um retorno de chamada 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);
}

Comentários

Os métodos marcados com esse atributo têm as seguintes restrições:

  • Deve ser marcado como static.
  • Não deve ser chamado do código gerenciado.
  • Deve ter apenas argumentos blittable .
  • Não deve ter parâmetros de tipo genérico ou estar contido em uma classe genérica.

Construtores

UnmanagedCallersOnlyAttribute()

Inicializa uma nova instância UnmanagedCallersOnlyAttribute.

Campos

CallConvs

Opcional. Se omitido, o runtime usará a convenção de chamada de plataforma padrão.

EntryPoint

Opcional. Se for omitido, nenhuma exportação nomeada será emitida durante a compilação.

Propriedades

TypeId

Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute.

(Herdado de Attribute)

Métodos

Equals(Object)

Retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Retorna o código hash para a instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a