From: Jess Howe Jess on
Hi,
I am writing a deserialized NDIS virtual miniport driver that indicates
packets up to protocols with NdisMIndicateReceivePacket, one at a time. Under
normal operation, packets are indicated up just fine. However, when I run a
packet sniffer like wireshark on winpcap, the sniffer sees all the packets,
but the app that was using the packets doesn't see the receive packets. For
example, I'll ping a remote computer and it'll receive the ping replies just
fine until I start capturing the packets with wireshark. Then it just times
out. I can see the reply packets getting indicated up just like always in the
windows windbg, but somehow they're not getting copied to tcpip and the
packet capturer. I can't understand why it works fine with the
ndiswdm/ndisprot sample setup and not with mine, when my stuff is based on
netvmini, the same base as ndiswdm.
From: Gianluca Varenni on
Are you sure that ndisprot sets the HW filter to PROMISCUOUS or ALL_LOCAL?
The problem arises when the HW filter is set to either these values (WinPcap
uses these two filters).

Have a nice day
Gianluca Varenni
WinPcap Team


"Jess Howe" <Jess Howe(a)discussions.microsoft.com> wrote in message
news:57A60130-4F27-40E3-86A0-FB1D18C4C107(a)microsoft.com...
> Hi,
> I am writing a deserialized NDIS virtual miniport driver that indicates
> packets up to protocols with NdisMIndicateReceivePacket, one at a time.
> Under
> normal operation, packets are indicated up just fine. However, when I run
> a
> packet sniffer like wireshark on winpcap, the sniffer sees all the
> packets,
> but the app that was using the packets doesn't see the receive packets.
> For
> example, I'll ping a remote computer and it'll receive the ping replies
> just
> fine until I start capturing the packets with wireshark. Then it just
> times
> out. I can see the reply packets getting indicated up just like always in
> the
> windows windbg, but somehow they're not getting copied to tcpip and the
> packet capturer. I can't understand why it works fine with the
> ndiswdm/ndisprot sample setup and not with mine, when my stuff is based on
> netvmini, the same base as ndiswdm.


From: Stephan Wolf [MVP] on
Run the NDISTest tool against your NDIS miniport. See e.g.

"Testing Network Drivers with the NDIS Test Tool"
http://www.wd-3.com/archive/NDISTest.htm

"Using NDISTest During Driver Development"
http://www.microsoft.com/whdc/DevTools/tools/NDIStest.mspx

NDISTest usually finds problems like the one you describe.

Stephan
---
Jess Howe wrote:
> Hi,
> I am writing a deserialized NDIS virtual miniport driver that indicates
> packets up to protocols with NdisMIndicateReceivePacket, one at a time. Under
> normal operation, packets are indicated up just fine. However, when I run a
> packet sniffer like wireshark on winpcap, the sniffer sees all the packets,
> but the app that was using the packets doesn't see the receive packets. For
> example, I'll ping a remote computer and it'll receive the ping replies just
> fine until I start capturing the packets with wireshark. Then it just times
> out. I can see the reply packets getting indicated up just like always in the
> windows windbg, but somehow they're not getting copied to tcpip and the
> packet capturer. I can't understand why it works fine with the
> ndiswdm/ndisprot sample setup and not with mine, when my stuff is based on
> netvmini, the same base as ndiswdm.

From: Jess Howe Jess on
I've run the ndtest suite of tests against it and my driver passed them fine,
at least in the areas that might be affected (It didn't quite pass all the
disable/enable tests :(

Jess

"Stephan Wolf [MVP]" wrote:

> Run the NDISTest tool against your NDIS miniport. See e.g.
>
> "Testing Network Drivers with the NDIS Test Tool"
> http://www.wd-3.com/archive/NDISTest.htm
>
> "Using NDISTest During Driver Development"
> http://www.microsoft.com/whdc/DevTools/tools/NDIStest.mspx
>
> NDISTest usually finds problems like the one you describe.
>
> Stephan
> ---
> Jess Howe wrote:
> > Hi,
> > I am writing a deserialized NDIS virtual miniport driver that indicates
> > packets up to protocols with NdisMIndicateReceivePacket, one at a time. Under
> > normal operation, packets are indicated up just fine. However, when I run a
> > packet sniffer like wireshark on winpcap, the sniffer sees all the packets,
> > but the app that was using the packets doesn't see the receive packets. For
> > example, I'll ping a remote computer and it'll receive the ping replies just
> > fine until I start capturing the packets with wireshark. Then it just times
> > out. I can see the reply packets getting indicated up just like always in the
> > windows windbg, but somehow they're not getting copied to tcpip and the
> > packet capturer. I can't understand why it works fine with the
> > ndiswdm/ndisprot sample setup and not with mine, when my stuff is based on
> > netvmini, the same base as ndiswdm.
>
>
From: Jess Howe on
Gianluca,

Yes, NICSetPacketFilter is called in ndiswdm setting it to PROMISCUOUS, just
like what happens in my driver. It is interesting to note, however, that when
I'm running wireshark on top of ndiswdm, a ping request shows up twice, and
the reply once. And when wireshark is running on my driver, I only see the
request once and the reply once, but the ping app doesn't see the reply.

Regards,
Jess

"Gianluca Varenni" wrote:

> Are you sure that ndisprot sets the HW filter to PROMISCUOUS or ALL_LOCAL?
> The problem arises when the HW filter is set to either these values (WinPcap
> uses these two filters).
>
> Have a nice day
> Gianluca Varenni
> WinPcap Team
>
>
> "Jess Howe" <Jess Howe(a)discussions.microsoft.com> wrote in message
> news:57A60130-4F27-40E3-86A0-FB1D18C4C107(a)microsoft.com...
> > Hi,
> > I am writing a deserialized NDIS virtual miniport driver that indicates
> > packets up to protocols with NdisMIndicateReceivePacket, one at a time.
> > Under
> > normal operation, packets are indicated up just fine. However, when I run
> > a
> > packet sniffer like wireshark on winpcap, the sniffer sees all the
> > packets,
> > but the app that was using the packets doesn't see the receive packets.
> > For
> > example, I'll ping a remote computer and it'll receive the ping replies
> > just
> > fine until I start capturing the packets with wireshark. Then it just
> > times
> > out. I can see the reply packets getting indicated up just like always in
> > the
> > windows windbg, but somehow they're not getting copied to tcpip and the
> > packet capturer. I can't understand why it works fine with the
> > ndiswdm/ndisprot sample setup and not with mine, when my stuff is based on
> > netvmini, the same base as ndiswdm.
>
>
>