title: Why is it "Bad" to Build Drivers with Visual Studio?
body: <p>Microsoft Visual Studio's linker has <a href="http://msdn.microsoft.com/en-us/library/43a6z8s4.aspx" rel="noreferrer">a <code>/DRIVER</code> flag</a> specifically for building drivers:</p>
  <blockquote>
  <p>Use the <code>/DRIVER</code> linker option to build a Windows NT kernel mode driver.</p>
  </blockquote>
  <p>However, <a href="http://msdn.microsoft.com/en-us/library/ff554644.aspx" rel="noreferrer">Microsoft says</a>:</p>
  <blockquote>
  <p>You must not build drivers by using the compiler or linker that Microsoft Visual Studio provides.</p>
  </blockquote>
  <p>which begs the question:</p>
  <p><em>Why</em> should I not compile/link drivers with Visual Studio?</p>
  <p>Is the output generated by the DDK/WDK tools different from that generated by Visual Studio?<br />
  If so, how is it different?</p>
  <hr />
  <h3>Edit:</h3>
  <p>Notice that I'm talking about <em>using Visual Studio's <strong>compiler</strong> and <strong>linker</strong></em>, <em>not</em> libraries!</p>
  <p>I use the WDK headers and libraries with VS's compilers and linkers, but Microsoft <em>specifically</em> says that I need to avoid this:</p>
  <blockquote>
  <p>You must not build drivers by using the <strong>compiler</strong> or <strong>linker</strong> that Microsoft Visual Studio provides.</p>
  </blockquote>
  <p>They didn't even <em>mention</em> headers and libraries, so of course that's not my question.</p>
  <p>Why?</p>