The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
A while ago I ported our old NDIS5 protocol driver to NDIS6. Our driver was based on a Microsoft example. I can no longer find the NDIS5 example but the updated NDIS6 example is here:
I followed the NDIS6 example to port our driver and it’s working fine. The problem I’m having is when a Hyper-V virtual adapter is created. At this point the driver can no longer read QoS packets on the physical adapter (only the virtual adapter). You might be tempted to say this is normal, the QoS packets should go to the VLAN however the old NDIS5 driver can read the QoS packets from both the physical adapter and the virtual adapter. Wireshark can also see the QoS packets on the physical adapter. The only way I can make NDIS6 see the packets on the physical adapter is by enabling promiscuous mode.
NDIS5 and NDIS6 are still very similar in the way they open and bind to an adapter - the biggest difference being NdisOpenAdapter() vs NdisOpenAdapterEx(). I suspect NdisOpenAdapterEx() is causing the reception issue (unintentionally or by design). I can’t prove this because NdisOpenAdapter() is no longer available for NDIS6.
Does anyone have any clue how to solve this issue without enabling promiscuous mode? Is this a bug or is NDIS6 simply complying with the 802.1Q specification?
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!|
|Writing WDF Drivers||7 Dec 2020||LIVE ONLINE|
|Internals & Software Drivers||25 Jan 2021||LIVE ONLINE|
|Developing Minifilters||8 March 2021||LIVE ONLINE|