.NET Framework Class Library
DllImportAttribute..::.CallingConvention Field

Indicates the calling convention of an entry point.

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

Visual Basic (Declaration)
Public CallingConvention As CallingConvention
Visual Basic (Usage)
Dim instance As DllImportAttribute
Dim value As CallingConvention

value = instance.CallingConvention

instance.CallingConvention = value
C#
public CallingConvention CallingConvention
Visual C++
public:
CallingConvention CallingConvention
JScript
public var CallingConvention : CallingConvention
Remarks

You set this field to one of the CallingConvention enumeration members. The default value for the CallingConvention field is Winapi, which in turn defaults to StdCall convention.

For more information, see Calling Convention in the MSDN library.

Examples

In some cases, Visual Basic developers use the DllImportAttribute, instead of the Declare statement, to define a DLL function in managed code. Setting the CallingConvention field is one of those cases.

Visual Basic
Imports System
 Imports Microsoft.VisualBasic
 Imports System.Runtime.InteropServices
 Public Class LibWrap
 ' Visual Basic does not 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", CallingConvention := CallingConvention.Cdecl)> _
 Overloads Shared Function printf (_
     format As String, i As Integer, d As Double) As Integer
 End Function
 <DllImport("msvcrt.dll", CallingConvention := CallingConvention.Cdecl)> _
 Overloads Shared Function printf (_
     format As String, i As Integer, s As String) As Integer
 End Function
 End Class 'LibWrap
 Public Class App
     Public Shared Sub Main()
         LibWrap.printf(ControlChars.CrLf + "Print params: %i %f", 99, 
                        99.99)
         LibWrap.printf(ControlChars.CrLf + "Print params: %i %s", 99, _
                        "abcd")
     End Sub 'Main
 End Class 'App
C#
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.Ansi, CallingConvention=CallingConvention.Cdecl)]
 public static extern int printf(String format, int i, double d); 
 [DllImport("msvcrt.dll", CharSet=CharSet.Ansi, 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");
     }
 }
Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0
See Also

Reference

Tags :


Page view tracker