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

Nome Description
UnmanagedCallersOnlyAttribute()

Inicializa uma nova instância UnmanagedCallersOnlyAttribute.

Campos

Nome Description
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

Nome Description
TypeId

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

(Herdado de Attribute)

Métodos

Nome Description
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