title: Writing drivers for Windows
body: <p>I recently asked <a href="https://stackoverflow.com/questions/41825256">the question</a> if I could limit bandwidth via a C# WinForms applications much like NetLimiter and NetBalancer. I was told that there's two ways to do this. Either via proper <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa374094(v=vs.85).aspx" rel="nofollow noreferrer">QoS</a> or writing something along the lines of an "<a href="https://msdn.microsoft.com/en-us/windows/hardware/drivers/network/ndis-filter-drivers" rel="nofollow noreferrer">NDIS Network Filter Driver</a>". Using QoS isn't the way I want to take. So I've looked up some of the stuff required to write drivers and found some interesting points. Points such as a good understanding of C/C++, because the executed code being very prone to BSODs since it could be run in something called "Kernel mode". I also found a GitHub "<a href="https://github.com/Microsoft/Windows-driver-samples/tree/master/network/ndis/filter" rel="nofollow noreferrer">dump</a>" which looks interesting and tempts me to investigate and look around in.</p>
  
  <p>As you can see I'm no where near advanced enough to delve into this on a professional level. Ignoring that, what would be a good start to start my adventures into writing drivers to monitor - and further down the line  manipulate the network to introduce throttling.</p>
  
  <p>Any help, guides or information that might be of help is always appreciated.</p>
  
  <p>PS: I am unsure as to whether this is (as afore mentioned in a comment to my previous question) too broad a question to be answered on Stack Overflow. If so, where would I go to ask this?</p>