File: System\Reflection\Metadata\Signatures\SignatureCallingConvention.cs
Web Access
Project: src\src\libraries\System.Reflection.Metadata\src\System.Reflection.Metadata.csproj (System.Reflection.Metadata)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace System.Reflection.Metadata
{
    /// <summary>
    /// Specifies how arguments in a given signature are passed from the caller to the callee.
    /// Underlying values correspond to the representation in the leading signature byte
    /// represented by <see cref="SignatureHeader"/>.
    /// </summary>
    public enum SignatureCallingConvention : byte
    {
        /// <summary>
        /// Managed calling convention with fixed-length argument list.
        /// </summary>
        Default = 0x0,
 
        /// <summary>
        /// Unmanaged C/C++-style calling convention where the call stack is cleaned by the caller.
        /// </summary>
        CDecl = 0x1,
 
        /// <summary>
        /// Unmanaged calling convention where call stack is cleaned up by the callee.
        /// </summary>
        StdCall = 0x2,
 
        /// <summary>
        /// Unmanaged C++-style calling convention for calling instance member functions with a fixed argument list.
        /// </summary>
        ThisCall = 0x3,
 
        /// <summary>
        /// Unmanaged calling convention where arguments are passed in registers when possible.
        /// </summary>
        FastCall = 0x4,
 
        /// <summary>
        /// Managed calling convention for passing extra arguments.
        /// </summary>
        VarArgs = 0x5,
 
        /// <summary>
        /// Indicating the specifics of the unmanaged calling convention are encoded as modopts.
        /// </summary>
        Unmanaged = 0x9,
    }
}