UnmanagedCallersOnlyAttribute 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.
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
- 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) |