title: Is the CallingConvention ignored in 64-bit .NET applications?
body: <p>When interacting with a 64-bit native library through an explicitly 64-bit .NET application via P/Invoke, is the <a href="https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.callingconvention%28v=vs.110%29.aspx">CallingConvention</a> property in the <code>DllImport</code> attribute effectively ignored?</p>
  
  <p>I ask this because on "traditional" x86 you have to specify the way the caller or callee cleans up stack variables (as well as how the function itself might use certain CPU registers etc); but as far as I understand, x64 only has a single convention, <code>__fastcall</code> (the recently added <code>__vectorcall</code> notwithstanding).</p>
  
  <p>So does the CLR just go ahead and marshal function calls with the <code>__fastcall</code> x64 convention, regardless of what you set for the <code>CallingConvention</code> property?</p>