<Type Name="CallingConvention" FullName="System.Runtime.InteropServices.CallingConvention" FullNameSP="System_Runtime_InteropServices_CallingConvention" Maintainer="ecma">
  <TypeSignature Language="ILASM" Value=".class public sealed serializable CallingConvention extends System.Enum" />
  <TypeSignature Language="C#" Value="public enum CallingConvention" />
  <MemberOfLibrary>RuntimeInfrastructure</MemberOfLibrary>
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <Base>
    <BaseTypeName>System.Enum</BaseTypeName>
  </Base>
  <Docs>
    <summary>
      <para>Indicates the calling convention used by a method located in an unmanaged shared library.</para>
    </summary>
    <remarks>
      <para>The values of this enumeration are used to specify the calling conventions required
 to call unmanaged methods implemented in shared libraries.</para>
      <para>
        <block subset="none" type="note">Implementers
 should map the semantics of specified calling conventions onto the calling conventions
 of the host OS.</block>
      </para>
      <para>
        <block subset="none" type="note">For additional information on shared
 libraries and an example of the use of the <see cref="T:System.Runtime.InteropServices.CallingConvention" /> enumeration, see the <see cref="T:System.Runtime.InteropServices.DllImportAttribute" /> class overview.</block>
      </para>
    </remarks>
  </Docs>
  <Members>
    <Member MemberName="Cdecl">
      <MemberSignature Language="ILASM" Value=".field public static literal valuetype System.Runtime.InteropServices.CallingConvention Cdecl = 2" />
      <MemberSignature Language="C#" Value="Cdecl" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Runtime.InteropServices.CallingConvention</ReturnType>
      </ReturnValue>
      <Parameters />
      <MemberValue>Cdecl</MemberValue>
      <Docs>
        <summary>
          <para>Indicates that the <see langword="cdecl " />
calling convention is appropriate for a method call.</para>
          <para>For example, on a Windows platform the <see cref="F:System.Runtime.InteropServices.CallingConvention.Cdecl" /> convention produces the
following behavior:</para>
          <list type="table">
            <listheader>
              <term>Element</term>
              <description>Behavior</description>
            </listheader>
            <item>
              <term> Argument-passing order</term>
              <description>Right to left.</description>
            </item>
            <item>
              <term> Stack-maintenance responsibility</term>
              <description>Calling function pops the arguments from the
         stack.</description>
            </item>
          </list>
          <para>
            <block subset="none" type="note">This is the default calling
   convention for functions compiled with 32-bit C and C++ language compilers.</block>
          </para>
        </summary>
        <remarks>To be added.</remarks>
      </Docs>
      <Excluded>0</Excluded>
    </Member>
    <Member MemberName="FastCall">
      <MemberSignature Language="ILASM" Value=".field public static literal valuetype System.Runtime.InteropServices.CallingConvention FastCall = 5" />
      <MemberSignature Language="C#" Value="FastCall" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Runtime.InteropServices.CallingConvention</ReturnType>
      </ReturnValue>
      <Parameters />
      <MemberValue>FastCall</MemberValue>
      <Docs>
        <summary>
          <para>Indicates that the <see langword="fastcall " />
calling convention is appropriate for a method
call. </para>
          <para>
            <block subset="none" type="note">On a Windows platform this convention
   indicates that arguments to functions are to be passed in registers whenever
   possible.</block>
          </para>
        </summary>
        <remarks>To be added.</remarks>
      </Docs>
      <Excluded>0</Excluded>
    </Member>
    <Member MemberName="StdCall">
      <MemberSignature Language="ILASM" Value=".field public static literal valuetype System.Runtime.InteropServices.CallingConvention StdCall = 3" />
      <MemberSignature Language="C#" Value="StdCall" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Runtime.InteropServices.CallingConvention</ReturnType>
      </ReturnValue>
      <Parameters />
      <MemberValue>StdCall</MemberValue>
      <Docs>
        <summary>
          <para>Indicates that the <see langword="stdcall " />
calling convention is appropriate for a
method.</para>
          <para>For example, on a Windows platform the <see cref="F:System.Runtime.InteropServices.CallingConvention.StdCall" /> convention produces the
following behavior:</para>
          <list type="table">
            <listheader>
              <term>Element</term>
              <description>Behavior</description>
            </listheader>
            <item>
              <term> Argument-passing order</term>
              <description>Right to left.</description>
            </item>
            <item>
              <term> Stack-maintenance responsibility</term>
              <description>Called function pops its own arguments from the
 stack.</description>
            </item>
          </list>
        </summary>
        <remarks>To be added.</remarks>
      </Docs>
      <Excluded>0</Excluded>
    </Member>
    <Member MemberName="ThisCall">
      <MemberSignature Language="ILASM" Value=".field public static literal valuetype System.Runtime.InteropServices.CallingConvention ThisCall = 4" />
      <MemberSignature Language="C#" Value="ThisCall" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Runtime.InteropServices.CallingConvention</ReturnType>
      </ReturnValue>
      <Parameters />
      <MemberValue>ThisCall</MemberValue>
      <Docs>
        <summary>
          <para>Indicates that the <see langword="thiscall" /> calling convention is appropriate for a
   method. This convention is similar to the <see cref="F:System.Runtime.InteropServices.CallingConvention.Cdecl" /> calling convention,
   except that the last element that the caller pushes the stack is the
<see langword="this" /> 
pointer.</para>
          <para>For example, on a Windows platform the <see cref="F:System.Runtime.InteropServices.CallingConvention.ThisCall" /> convention
produces the following behavior:</para>
          <list type="table">
            <listheader>
              <term>Element</term>
              <description>Behavior</description>
            </listheader>
            <item>
              <term> Argument-passing order</term>
              <description>Right to left.</description>
            </item>
            <item>
              <term> Stack-maintenance responsibility</term>
              <description>Calling function pops the arguments from the
         stack.</description>
            </item>
            <item>
              <term>
                <see langword="this" /> pointer</term>
              <description>Pushed last onto the stack.</description>
            </item>
          </list>
          <para>
            <block subset="none" type="note">The <see langword="thiscall" /> calling convention is the default
calling convention used by C++ member functions that are not called with
a variable number of arguments.</block>
          </para>
        </summary>
        <remarks>To be added.</remarks>
      </Docs>
      <Excluded>0</Excluded>
    </Member>
    <Member MemberName="Winapi">
      <MemberSignature Language="C#" Value="Winapi" />
      <MemberType>Field</MemberType>
      <ReturnValue>
        <ReturnType>System.Runtime.InteropServices.CallingConvention</ReturnType>
      </ReturnValue>
      <MemberValue>Winapi</MemberValue>
      <Docs>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
  </Members>
  <TypeExcluded>0</TypeExcluded>
  <Attributes>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
</Type>
