I am writing a NDIS filter driver for windows. When I examine NBL flags, say NDIS_NBL_FLAGS_IS_IPV4,it doesn't seem to have set, nor does any other flags of NblFlags field? Which driver in the stack sets these values?
These flags are not guaranteed to be set all the time in all situations. The flags are only needed when running over a native mobile broadband stack (because there is no MAC layer & EtherType to look at).
If you are writing a generic LWF that needs to work in a variety of configurations, you can't rely on this flag, and you'll have to look at the packet payload itself to determine the packet type.