UnmanagedCallersOnlyAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Jede Methode, die mit UnmanagedCallersOnlyAttribute gekennzeichnet ist, kann direkt aus nativem Code aufgerufen werden. Das Funktionstoken kann mithilfe des address-of-Operators in C# in eine lokale Variable geladen und als Rückruf an eine native Methode übermittelt werden.
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
- Vererbung
- Attribute
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie ein Rückruf an eine systemeigene Funktion übergeben wird UnmanagedCallersOnlyAttribute .
[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);
}
Hinweise
Methoden, die mit diesem Attribut gekennzeichnet sind, weisen die folgenden Einschränkungen auf:
- Muss gekennzeichnet
static
sein. - Darf nicht aus verwaltetem Code aufgerufen werden.
- Darf nur über blittbare Argumente verfügen.
- Darf keine generischen Typparameter aufweisen oder in einer generischen Klasse enthalten sein.
Konstruktoren
UnmanagedCallersOnlyAttribute() |
Initialisiert eine neue Instanz von UnmanagedCallersOnlyAttribute. |
Felder
CallConvs |
Dies ist optional. Wenn nicht angegeben, verwendet die Runtime die Standardkonvention für Plattformaufrufe. |
EntryPoint |
Dies ist optional. Wenn keine Angabe erfolgt, wird während der Kompilierung kein benannter Export ausgegeben. |
Eigenschaften
TypeId |
Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab. (Geerbt von Attribute) |
Methoden
Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Geerbt von Attribute) |
GetHashCode() |
Gibt den Hashcode für diese Instanz zurück. (Geerbt von Attribute) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
IsDefaultAttribute() |
Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
Match(Object) |
Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Geerbt von Attribute) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |