Problems on NDIS driver dev

Hi all,

I am a new to NDIS driver. Currently, I am working on a virtual NIC
driver which binds two real NICs. Could anyone here share your
expertise with me on the following problems?

  1. I plan to start my project from the modification to passthru in
    WinDDK sample. In passthru implementation, the driver allocates a new
    buffer from the downlink packet sent to MPSendPacket() and the uplink
    packet received from PTReceive(). Can I skip the memory allocation
    directly to improve the performance, if my virtual driver does nothing
    no the context of passing by packets?

  2. How can I bind two underlying NICs to my virtual NIC? I have
    no idea on how to enable my virtual driver to sense the packet received
    indication from the underlying NICs.

  3. How can I retrieve the debug information after system crush?
    Could you give me an 101 tutorial link on windows kernel debug?

Thanks!

Liang Chen

It is a MUX driver and not PASSTHRU.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: CHEN, LIANG -HCHBJ
To: Windows System Software Devs Interest List
Sent: Thursday, June 02, 2005 5:27 PM
Subject: [ntdev] Problems on NDIS driver dev

Hi all,

I am a new to NDIS driver. Currently, I am working on a virtual NIC driver which binds two real NICs. Could anyone here share your expertise with me on the following problems?

  1. I plan to start my project from the modification to passthru in WinDDK sample. In passthru implementation, the driver allocates a new buffer from the downlink packet sent to MPSendPacket() and the uplink packet received from PTReceive(). Can I skip the memory allocation directly to improve the performance, if my virtual driver does nothing no the context of passing by packets?

  2. How can I bind two underlying NICs to my virtual NIC? I have no idea on how to enable my virtual driver to sense the packet received indication from the underlying NICs.

  3. How can I retrieve the debug information after system crush? Could you give me an 101 tutorial link on windows kernel debug?

Thanks!

Liang Chen


Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com

I am a new to NDIS driver. Currently, I am working on a virtual NIC driver which binds two real NICs. Could anyone here share your expertise with me on the following problems?

  1. I plan to start my project from the modification to passthru in WinDDK sample. In passthru implementation, the driver allocates a new buffer from the downlink packet sent to MPSendPacket() and the uplink packet received from PTReceive(). Can I skip the memory allocation directly to improve the performance, if my virtual driver does nothing no the context of passing by packets?

It is the Packet (NDIS_PACKET) which is allocated and not the Buffer (NDIS_BUFFER). This is a requirement for NDIS Intermediate drivers (even if you don’t modify the packets).

  1. How can I bind two underlying NICs to my virtual NIC? I have no idea on how to enable my virtual driver to sense the packet received indication from the underlying NICs.

Are you sure you want only 1 virtual NIC because Passthru will create atleast as many virtual NICs as real NICs. If you are using Passthru you just have to install the driver and you will start receiving the packets at ProtocolReceive/ProtocolReceivePacket.

  1. How can I retrieve the debug information after system crush? Could you give me an 101 tutorial link on windows kernel debug?

You can start from here: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Good Luck,
Abhijit

You must allocate the second NDIS_PACKET, or use NDIS5 packet stacking. As about the buffers - you can reuse the old buffer chain if you do not change the data.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: Abhijit
Newsgroups: ntdev
To: Windows System Software Devs Interest List
Sent: Friday, June 03, 2005 5:25 PM
Subject: Re:[ntdev] Problems on NDIS driver dev

I am a new to NDIS driver. Currently, I am working on a virtual NIC driver which binds two real NICs. Could anyone here share your expertise with me on the following problems?

  1. I plan to start my project from the modification to passthru in WinDDK sample. In passthru implementation, the driver allocates a new buffer from the downlink packet sent to MPSendPacket() and the uplink packet received from PTReceive(). Can I skip the memory allocation directly to improve the performance, if my virtual driver does nothing no the context of passing by packets?

It is the Packet (NDIS_PACKET) which is allocated and not the Buffer (NDIS_BUFFER). This is a requirement for NDIS Intermediate drivers (even if you don’t modify the packets).

  1. How can I bind two underlying NICs to my virtual NIC? I have no idea on how to enable my virtual driver to sense the packet received indication from the underlying NICs.

Are you sure you want only 1 virtual NIC because Passthru will create atleast as many virtual NICs as real NICs. If you are using Passthru you just have to install the driver and you will start receiving the packets at ProtocolReceive/ProtocolReceivePacket.

  1. How can I retrieve the debug information after system crush? Could you give me an 101 tutorial link on windows kernel debug?

You can start from here: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Good Luck,
Abhijit

Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com

Hi Abhijit,

Probably I’d better select the samples of Netvmini and Mux instead of
passthru as my start point in Virtual driver. The virtual driver is
expected to be a wrapper above multiple real NICs, and we can schedule
the packets to or from these NICs by IOCTL interface.

What confused me is how to bind multiple NICs at the same time. To my
best understand, the problem can be divided into 3 sub-problems. The
first one is how to establish the binding relationship in NDIS
framework. The second is how to dispatch the downlink packet to the
underlying NICs. The last is how to get the packet arrival indication
from underlying NICs and retrieve the packet correctly.

Is there any suggestion or comment on my problem?

Thanks!

  • Liang

From: Abhijit [mailto:xxxxx@yahoo.com]
Sent: Friday, June 03, 2005 9:25 PM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Problems on NDIS driver dev

I am a new to NDIS driver. Currently, I am working on a virtual NIC
driver which binds two real NICs. Could anyone here share your
expertise with me on the following problems?

  1. I plan to start my project from the modification to passthru in
    WinDDK sample. In passthru implementation, the driver allocates a new
    buffer from the downlink packet sent to MPSendPacket() and the uplink
    packet received from PTReceive(). Can I skip the memory allocation
    directly to improve the performance, if my virtual driver does nothing
    no the context of passing by packets?

It is the Packet (NDIS_PACKET) which is allocated and not the Buffer
(NDIS_BUFFER). This is a requirement for NDIS Intermediate drivers (even
if you don’t modify the packets).

  1. How can I bind two underlying NICs to my virtual NIC? I have
    no idea on how to enable my virtual driver to sense the packet received
    indication from the underlying NICs.

Are you sure you want only 1 virtual NIC because Passthru will create
atleast as many virtual NICs as real NICs. If you are using Passthru you
just have to install the driver and you will start receiving the packets
at ProtocolReceive/ProtocolReceivePacket.

  1. How can I retrieve the debug information after system crush?
    Could you give me an 101 tutorial link on windows kernel debug?

You can start from here:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Good Luck,

Abhijit


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument:
‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com

Liang,

The binding process for a MUX type driver is typically controlled by a
NetCfg ?Notify? object. The sample Notify Object implementation in the MUX
sample demonstrates how to interact with the netCfg binding process.

Good Luck,

Dave Cattley

Consulting Engineer

Systems Software Development


From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of CHEN, LIANG -HCHBJ
Sent: Monday, June 06, 2005 4:25 AM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] Problems on NDIS driver dev

Hi Abhijit,

Probably I?d better select the samples of Netvmini and Mux instead of
passthru as my start point in Virtual driver. The virtual driver is
expected to be a wrapper above multiple real NICs, and we can schedule the
packets to or from these NICs by IOCTL interface.

What confused me is how to bind multiple NICs at the same time. To my best
understand, the problem can be divided into 3 sub-problems. The first one
is how to establish the binding relationship in NDIS framework. The second
is how to dispatch the downlink packet to the underlying NICs. The last is
how to get the packet arrival indication from underlying NICs and retrieve
the packet correctly.

Is there any suggestion or comment on my problem?

Thanks!

  • Liang

From: Abhijit [mailto:xxxxx@yahoo.com]
Sent: Friday, June 03, 2005 9:25 PM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Problems on NDIS driver dev

I am a new to NDIS driver. Currently, I am working on a virtual NIC driver
which binds two real NICs. Could anyone here share your expertise with me
on the following problems?

  1. I plan to start my project from the modification to passthru in
    WinDDK sample. In passthru implementation, the driver allocates a new
    buffer from the downlink packet sent to MPSendPacket() and the uplink packet
    received from PTReceive(). Can I skip the memory allocation directly to
    improve the performance, if my virtual driver does nothing no the context of
    passing by packets?

It is the Packet (NDIS_PACKET) which is allocated and not the Buffer
(NDIS_BUFFER). This is a requirement for NDIS Intermediate drivers (even if
you don’t modify the packets).

  1. How can I bind two underlying NICs to my virtual NIC? I have no
    idea on how to enable my virtual driver to sense the packet received
    indication from the underlying NICs.

Are you sure you want only 1 virtual NIC because Passthru will create
atleast as many virtual NICs as real NICs. If you are using Passthru you
just have to install the driver and you will start receiving the packets at
ProtocolReceive/ProtocolReceivePacket.

  1. How can I retrieve the debug information after system crush? Could
    you give me an 101 tutorial link on windows kernel debug?

You can start from here:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Good Luck,

Abhijit


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com

Hi Abhijit,

Probably I’d better select the samples of Netvmini and Mux instead of
passthru as my start point in Virtual driver. The virtual driver is
expected to be a wrapper above multiple real NICs, and we can schedule
the packets to or from these NICs by IOCTL interface.

What confused me is how to bind multiple NICs at the same time. To my
best understand, the problem can be divided into 3 sub-problems. The
first one is how to establish the binding relationship in NDIS
framework. The second is how to dispatch the downlink packet to the
underlying NICs. The last is how to get the packet arrival indication
from underlying NICs and retrieve the packet correctly.

Is there any suggestion or comment on my problem?

Thanks!

  • Liang

From: Abhijit [mailto:xxxxx@yahoo.com]
Sent: Friday, June 03, 2005 9:25 PM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] Problems on NDIS driver dev

I am a new to NDIS driver. Currently, I am working on a virtual NIC
driver which binds two real NICs. Could anyone here share your
expertise with me on the following problems?

  1. I plan to start my project from the modification to passthru in
    WinDDK sample. In passthru implementation, the driver allocates a new
    buffer from the downlink packet sent to MPSendPacket() and the uplink
    packet received from PTReceive(). Can I skip the memory allocation
    directly to improve the performance, if my virtual driver does nothing
    no the context of passing by packets?

It is the Packet (NDIS_PACKET) which is allocated and not the Buffer
(NDIS_BUFFER). This is a requirement for NDIS Intermediate drivers (even
if you don’t modify the packets).

  1. How can I bind two underlying NICs to my virtual NIC? I have
    no idea on how to enable my virtual driver to sense the packet received
    indication from the underlying NICs.

Are you sure you want only 1 virtual NIC because Passthru will create
atleast as many virtual NICs as real NICs. If you are using Passthru you
just have to install the driver and you will start receiving the packets
at ProtocolReceive/ProtocolReceivePacket.

  1. How can I retrieve the debug information after system crush?
    Could you give me an 101 tutorial link on windows kernel debug?

You can start from here:
http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Good Luck,

Abhijit


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: unknown lmsubst tag argument:
‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com