(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

CallingConvention-Enumeration

Gibt die Aufrufkonvention für das Aufrufen von Methoden an, die in nicht verwaltetem Code implementiert sind.

Namespace:  System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum CallingConvention

MembernameBeschreibung
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCdeclDer Aufrufer entleert den Stapel. Dies aktiviert Aufruffunktionen mit varargs, wodurch die Verwendung für Methoden ermöglicht wird, die eine variable Anzahl von Parametern akzeptieren, beispielsweise Printf.
FastCallDiese Aufruffunktion wird nicht unterstützt.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsStdCallDer Aufgerufene entleert den Stapel. Dies ist die Standardkonvention für das Aufrufen nicht verwalteter Funktionen mit Plattformaufruf.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsThisCallDer erste Parameter ist der this-Zeiger, der im Register ECX gespeichert wird. Weitere Parameter werden in den Stapel verschoben. Diese Aufrufkonvention wird zum Aufrufen von Methoden für Klassen verwendet, die aus einer nicht verwalteten DLL exportiert wurden.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsWinapiDieser Member stellt keine tatsächliche Aufrufkonvention dar, sondern verwendet die Standardkonvention für Plattformaufrufe. Unter Windows ist der Standard beispielsweise StdCall, und unter Windows CE.NET ist der Standard Cdecl.

Verwenden Sie immer die CallingConvention-Enumeration anstelle der CALLCONV-Enumeration, um eine Aufrufkonvention in verwaltetem Code anzugeben. Letztere wird ausschließlich für COM-Definitionen verwendet. Die CallingConvention-Enumeration wird von DllImportAttribute und verschiedenen Klassen in System.Reflection.Emit verwendet, um dynamisch Plattformaufrufsignaturen auszugeben.

Das folgende Beispiel veranschaulicht, wie die Cdecl-Aufrufkonvention angewendet wird, die verwendet werden muss, weil der Stapel vom Aufrufer bereinigt wird.


using System;
using System.Runtime.InteropServices;

public class LibWrap
{
// C# doesn't support varargs so all arguments must be explicitly defined.
// CallingConvention.Cdecl must be used since the stack is 
// cleaned up by the caller.

// int printf( const char *format [, argument]... )

[DllImport("msvcrt.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
public static extern int printf(String format, int i, double d); 

[DllImport("msvcrt.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.Cdecl)]
public static extern int printf(String format, int i, String s); 
}

public class App
{
    public static void Main()
    {
        LibWrap.printf("\nPrint params: %i %f", 99, 99.99);
        LibWrap.printf("\nPrint params: %i %s", 99, "abcd");
    }
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft