title: NDIS Intermediate driver interface to C#
body: <p>I'm developing what is essentially a specialized firewall application.  The solution needs to be 32 and 64-bit compatible.  My company wants to keep the current program interface, which is written in C#.</p>
  
  <p>What I need is this: a way to monitor and manipulate all network traffic on the system.  My research has led me to believe that a NDIS (Network Driver Interface Specification) Intermediate driver is the way to go.  If I can write this kind of driver in C#, great, but I'm not sure that's possible.  At the very least, I need an interface in C# to a driver written in any language.</p>
  
  <p>I found a great resource online for creating one in a series of articles entitled "Extending the Microsoft PassThru NDIS Intermediate Driver":</p>
  
  <ol>
  <li><a href="http://www.wd-3.com/archive/ExtendingPassthru.htm" rel="nofollow noreferrer">Part 1 - Adding a DeviceIoControl Interface</a></li>
  <li><a href="http://www.wd-3.com/archive/ExtendingPassthru2.htm" rel="nofollow noreferrer">Part 2 - Two IP Address Blocking NDIS IM Drivers</a></li>
  <li><a href="http://www.wd-3.com/031504/PTEx3_index.htm" rel="nofollow noreferrer">Part 3 - Supporting Windows XP 64-Bit Edition</a></li>
  </ol>
  
  <p>However, it is dated (2003).  Before I invest in reading and learning what it has to say, I want to make sure I'm not wasting my time.</p>
  
  <p>Is there a better way to do this?  Are there any open source projects or articles that explain the process better than the articles above?  Am I even in the ballpark?  Help please.</p>