title: How to understand the "NTSTATUS", "NT_SUCCESS" typedef in windows ddk?
body: <p>Two questions:</p>
  
  <p>1.</p>
  
  <p>In "ntdef.h" the <strong>NTSTATUS</strong> is defined as follow:</p>
  
  <pre><code>typedef __success(return &gt;= 0) LONG NTSTATUS;
  </code></pre>
  
  <p>what the hell is the "__success(return >= 0)"?</p>
  
  <p>2.</p>
  
  <p>In "ntstatus.h", <strong>STATUS_SUCCESS</strong> is defined to 0.</p>
  
  <pre><code>#define STATUS_SUCCESS   ((NTSTATUS)0x00000000L) // ntsubauth
  </code></pre>
  
  <p>But the <strong>NT_SUCCESS</strong> macro in "ntdef.h" is:</p>
  
  <pre><code>#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) &gt;= 0)
  </code></pre>
  
  <p>Shouldn't it be "Status == 0" ?</p>