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 mit UnmanagedCallersOnlyAttribute gekennzeichnete Methode kann direkt aus systemeigenem Code aufgerufen werden. Das Funktionstoken kann mithilfe der Adresse des Operators in C# in eine lokale Variable geladen und als Rückruf an eine systemeigene Methode übergeben 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
Das folgende Beispiel veranschaulicht das Übergeben eines Rückrufs, der an eine systemeigene Funktion markiert ist 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 markiert
staticsein. - Darf nicht aus verwaltetem Code aufgerufen werden.
- Darf nur blittbare Argumente haben.
- Darf keine generischen Typparameter enthalten oder in einer generischen Klasse enthalten sein.
Konstruktoren
| Name | Beschreibung |
|---|---|
| UnmanagedCallersOnlyAttribute() |
Initialisiert eine neue Instanz von UnmanagedCallersOnlyAttribute. |
Felder
| Name | Beschreibung |
|---|---|
| CallConvs |
Dies ist optional. Wenn sie weggelassen wird, verwendet die Laufzeit die Standardkonvention für Plattformaufrufe. |
| EntryPoint |
Dies ist optional. Ohne Angabe wird während der Kompilierung kein benannter Export ausgegeben. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| TypeId |
Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute. (Geerbt von Attribute) |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht. (Geerbt von Attribute) |
| GetHashCode() |
Gibt den Hashcode für diesen instance zurück. (Geerbt von Attribute) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| IsDefaultAttribute() |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
| Match(Object) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht. (Geerbt von Attribute) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |