title: In MS x64 Calling convention, is creating a shadow space necessity for WinAPI calls?
body: <p>In MS x64 calling convention I am reading that caller should create a shadow space if we make calls to a Win64 API.</p>
  
  <p>However I created a simple C++ program and making call to MessageBox and after disassembling this is what I see :</p>
  
  <pre><code>00007FF614FC2AD9  mov         r9d,136h  
  00007FF614FC2ADF  lea         r8,[__xt_z+150h (07FF614FD5BF0h)]  
  00007FF614FC2AE6  lea         rdx,[__xt_z+170h (07FF614FD5C10h)]  
  00007FF614FC2AED  xor         ecx,ecx  
  00007FF614FC2AEF  call        qword ptr [__imp_MessageBoxW (07FF614FDF6C0h)]  
  00007FF614FC2AF5  mov         dword ptr [msgboxID],eax  
  </code></pre>
  
  <p>I don't see any Shadow space reservation.(Not even in the preceding instructions that are not shown here) What am I missing ?</p>
  
  <p>Edit: Here is the C++ code for above:</p>
  
  <pre><code>  #include &lt;Windows.h&gt;
  
  
     int main()
     {
          int msgboxID = MessageBox(
          NULL,
          (LPCWSTR) L"Resource not available\nDo you want to try again?",
          (LPCWSTR) L"Account Details",
          MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
          );
       return 0;
     }
  </code></pre>