passthru driver in win98

Hi All:
I want to develop NDIS intermedia driver in 98SE platform,but I found in 98 DDK there only have NDIS3.0 header,
I want to use ndis4.0 or ndis5.0 ,How could I to do?
Also There are two type of driver for us. one is Vxd,the other is WDM.which is more easier and better for me?
If anyone have develop the passthru driver in win98 platform,would you give me some suggestion and show me what diffirent between 98 an 2k?
I have got many useful information in it,I found it is really a good palce for new comer and all of you are so friendly ,Sincerely thanks.:slight_smile:

david

???y˫???+.n?+???u?ڲ˛??^r*D???kN???r??zǧu??jy???^j???ׯ??? 0?j?b??(??(

You actually build NDIS IM drivers for Windows 98 and ME using the Windows 2000 DDK.

The basic strategy is to start with the Windows 2000 DDK NDIS IM sample and remove from it NDIS functions that are not supported on the Windows various Windows 9X ME platforms. Unfortunately, each Windows 98/Windows ME version supports a different subset of the “full-fledged” functions provided on Windows 2000.

One way to determine what functions to remove/revise is to copy your Windows 2000 DDK NDIS IM driver to each Windows 98/Windows ME platform of interest to you. You don’t have to install the NDIS IM driver at this point. Just sopy it to the platform.

Then use Walter Oney’s WdmCheck utility to list the functions that you are using that are not supported on that platform. See the following URL for Walter’s WdmCheck tool:

http://www.oneysoft.com

Once you have the list of functions that you must remove/revise, find a way to do without them.

Actually, building a working NDIS IM driver for 98/ME is the easy part. Installing it is the pits; I frankly gave up and offer absolutely no help in this area…

Although the Windows 2000 NDIS IM driver runs on NDISWANIP, don’t expect the same on 98/ME.

There are a few other wrinkles. For example, you CAN use DeviceIoControl to communicate with your 98/ME NDIS IM driver; However, you CANNOT use ReadFile/WriteFile to communicate with a 98/ME driver; you will have to modify any code that uses ReadFile/WriteFile to use DeviceIoControl instead.

Good luck,

Thomas F. Divine

PCAUSA - Toolkits & Resources For Network Software Developers
NDIS Protocol - NDIS Intermediate - TDI Client
http: - http:

----- Original Message -----
From: xudavid
To: NT Developers Interest List
Sent: Thursday, July 12, 2001 10:22 PM
Subject: [ntdev] passthru driver in win98

Hi All:
I want to develop NDIS intermedia driver in 98SE platform,but I found in 98 DDK there only have NDIS3.0 header,
I want to use ndis4.0 or ndis5.0 ,How could I to do?
Also There are two type of driver for us. one is Vxd,the other is WDM.which is more easier and better for me?
If anyone have develop the passthru driver in win98 platform,would you give me some suggestion and show me what diffirent between 98 an 2k?
I have got many useful information in it,I found it is really a good palce for new comer and all of you are so friendly ,Sincerely thanks.:slight_smile:

david

b???.???????v??ׯj?]???z??Ɯ?d??{.n???zwZnV??隊[h???z{]z?y??b??(??(


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com</http:></http:>

One comment in addition to those of my previous post.

In your SOURCES file replace “-DNDIS50” etc. with “-DNDIS40”, etc. That is, you will be building a NDIS 4.0 driver, not NDIS 5.0.

I move the SOURCES and makefile to a subdirectory below the directory containing the driver source code. I have one for each variation. for example: XPBuild, W2KBuild, MEBuild… Each SOURCES file has the defines necessary for the particular target platform. The source code uses #ifdef’s to distinguish between compile-time differences. You can also use IoIsWdmVersionAvailable to accomodate runtime-detectable differences.

Good luck,

Thomas F. Divine

PCAUSA - Toolkits & Resources For Network Software Developers
NDIS Protocol - NDIS Intermediate - TDI Client
http: - http:

----- Original Message -----
From: xudavid
To: NT Developers Interest List
Sent: Thursday, July 12, 2001 10:22 PM
Subject: [ntdev] passthru driver in win98

Hi All:
I want to develop NDIS intermedia driver in 98SE platform,but I found in 98 DDK there only have NDIS3.0 header,
I want to use ndis4.0 or ndis5.0 ,How could I to do?
Also There are two type of driver for us. one is Vxd,the other is WDM.which is more easier and better for me?
If anyone have develop the passthru driver in win98 platform,would you give me some suggestion and show me what diffirent between 98 an 2k?
I have got many useful information in it,I found it is really a good palce for new comer and all of you are so friendly ,Sincerely thanks.:slight_smile:

david

b???.???????v??ׯj?]???z??Ɯ?d??{.n???zwZnV??隊[h???z{]z?y??b??(??(


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com</http:></http:>

Make sure you declare BINARY_COMPATIBLE in your 9x/ME project. Many
Ndis functions (i.e., NdisSend) are implemented as macros in the Windows
2000 DDK, which are not available in 9x. By declaring
BINARY_COMPATIBLE, these ‘functions’ revert from macros back to true
NDIS calls to NDIS.SYS/VxD.

Also, another way to find unsupported functions is to install the
debug/checked binary of VxDLDR.VxD (the VxD loader) into the
Windows\Systsm\VMM32 folder. It will output debug spew specifying any
function it couldn’t resolve and the library where it looked.

I have a working PASSTHRU under Windows 9x/Me that I can provide you.
Contact me directly. Installation is a problem, but its .Inf file will
serve as a good starting point.

Bryan S. Burgin

xxxxx@microsoft.com

-----Original Message-----
From: Thomas F. Divine [mailto:xxxxx@pcausa.com]
Sent: Thursday, July 12, 2001 10:08 PM
To: NT Developers Interest List
Subject: [ntdev] Re: passthru driver in win98

One comment in addition to those of my previous post.

In your SOURCES file replace “-DNDIS50” etc. with “-DNDIS40”, etc. That
is, you will be building a NDIS 4.0 driver, not NDIS 5.0.

I move the SOURCES and makefile to a subdirectory below the directory
containing the driver source code. I have one for each variation. for
example: XPBuild, W2KBuild, MEBuild… Each SOURCES file has the defines
necessary for the particular target platform. The source code uses
#ifdef’s to distinguish between compile-time differences. You can also
use IoIsWdmVersionAvailable to accomodate runtime-detectable
differences.

Good luck,

Thomas F. Divine

PCAUSA - Toolkits & Resources For Network Software Developers
NDIS Protocol - NDIS Intermediate - TDI Client
http: - http:

----- Original Message -----

From: xudavid mailto:xudavid

To: NT Developers Interest List mailto:xxxxx

Sent: Thursday, July 12, 2001 10:22 PM

Subject: [ntdev] passthru driver in win98

Hi All:

I want to develop NDIS intermedia driver in 98SE
platform,but I found in 98 DDK there only have NDIS3.0 header,

I want to use ndis4.0 or ndis5.0 ,How could I to do?

Also There are two type of driver for us. one is Vxd,the
other is WDM.which is more easier and better for me?

If anyone have develop the passthru driver in win98
platform,would you give me some suggestion and show me what diffirent
between 98 an 2k?

I have got many useful information in it,I found it is
really a good palce for new comer and all of you are so friendly
,Sincerely thanks.:slight_smile:

david

b嫐.Ф\??辷?底痡薦婙?浩湤d韬{.n?壏瑉wZnV闅奫h曟痾{]z齳喙b槽(卜(


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

???y˫???+.n?+???u?ڲ˛??^r*D???kN???r??zǧu??jy???^j???ׯ??? 0?j?b??(??(</mailto:xxxxx></mailto:xudavid></http:></http:>

> Actually, building a working NDIS IM driver for 98/ME is the easy part. =

Installing it is the pits; I frankly gave up and offer absolutely no =
help in this area…

There are a couple of example NDIS IM drivers for Win98/ME. The first is
the ATMLANE driver and the second is Robert Schlabbach’s RASPPPoE here:

http://user.cs.tu-berlin.de/~normanb/

If you take the ATMLANE inf and convert it to work with your own driver,
you are almost there. The one trick is to have the INF or a coinstaller
delete *.bin from the target machine’s INF directory. The bin files are
essentially an INF list and are generated, so deleting them will just cause
the OS to regenerate them the next time it needs them. The ATMLANE driver
installs automagically because it is already in the list, but your IM won’t
be. If you don’t delete these bin files and force the OS to recreate the
INF list, your install will get really screwed up. Figuring this out the
first time was a total pain in the butt BTW.

There is one really bad thing to be aware of as well. An IM installed this
way will show up under the NetTrans instead of the Net hive in the
registry. Some older protocols don’t bind by the rules, but rather walk
the Net hive directly to find miniports to bind too. They will not bind to
your IM because of this. We had a huge problem with this as there are a
large number of third-party protocols that bind this way, especially
firewall products. There isn’t a real good solution to this problem that I
am aware of either, except have the vendors fix their broken protocols to
be NDIS compliant. All of Microsoft’s protocols are correct in this regard
and will bind to your IM just fine.

Bill M.


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Oops forgot to mention, after deleting the *.bin files you have to copy
your INF file to the INF directory before the bin files are regenerated.

Bill M.

On 07/19/01, “xxxxx@bsquare.com” wrote:

> Actually, building a working NDIS IM driver for 98/ME is the easy part. =
> Installing it is the pits; I frankly gave up and offer absolutely no =
> help in this area…
>

There are a couple of example NDIS IM drivers for Win98/ME. The first is
the ATMLANE driver and the second is Robert Schlabbach’s RASPPPoE here:

http://user.cs.tu-berlin.de/~normanb/

If you take the ATMLANE inf and convert it to work with your own driver,
you are almost there. The one trick is to have the INF or a coinstaller
delete *.bin from the target machine’s INF directory. The bin files are
essentially an INF list and are generated, so deleting them will just cause
the OS to regenerate them the next time it needs them. The ATMLANE driver
installs automagically because it is already in the list, but your IM won’t
be. If you don’t delete these bin files and force the OS to recreate the
INF list, your install will get really screwed up. Figuring this out the
first time was a total pain in the butt BTW.

There is one really bad thing to be aware of as well. An IM installed this
way will show up under the NetTrans instead of the Net hive in the
registry. Some older protocols don’t bind by the rules, but rather walk
the Net hive directly to find miniports to bind too. They will not bind to
your IM because of this. We had a huge problem with this as there are a
large number of third-party protocols that bind this way, especially
firewall products. There isn’t a real good solution to this problem that I
am aware of either, except have the vendors fix their broken protocols to
be NDIS compliant. All of Microsoft’s protocols are correct in this regard
and will bind to your IM just fine.

Bill M.


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

The NETLANE.INF (ATMLANE.SYS) file works well because there are no
conflicts with the upper edge name “atmlane” or the lower edge name
“ndisatm”. Only one thing presents itself as a binding partner in both
cases.

However, in passthru, the upper edge is specified (DefUpper) as
“ndis3,ndis4,ndis5.” This causes the network class installer
(NetDI.dll) to create bindings that you don’t want – specifically, the
original binding between the protocols and the existing miniport,
causing TCPIP to be bound to your miniport and to the existing miniport.
The only way I’ve been able to resolve this has been to break that
binding myself. Writing a co-installer (actually, a custom NDI
procedure) in 9x won’t help because it won’t get to veto this binding
because it won’t see queries for bindings that doesn’t seem to involve
the IM driver.

Also, you are correct regarding some firewall products, etc, mining the
registry looking for Class=Net drivers to identify miniports and missing
IM drivers. I can confirm that there is no good solution to this.

Bryan

-----Original Message-----
From: xxxxx@bsquare.com [mailto:xxxxx@bsquare.com]
Sent: Friday, July 20, 2001 11:20 AM
To: NT Developers Interest List
Subject: [ntdev] Re: passthru driver in win98

Oops forgot to mention, after deleting the *.bin files you have to copy
your INF file to the INF directory before the bin files are regenerated.

Bill M.

On 07/19/01, “xxxxx@bsquare.com” wrote:

> Actually, building a working NDIS IM driver for 98/ME is the easy
part. =
> Installing it is the pits; I frankly gave up and offer absolutely no
=
> help in this area…
>

There are a couple of example NDIS IM drivers for Win98/ME. The first
is
the ATMLANE driver and the second is Robert Schlabbach’s RASPPPoE
here:

http://user.cs.tu-berlin.de/~normanb/

If you take the ATMLANE inf and convert it to work with your own
driver,
you are almost there. The one trick is to have the INF or a
coinstaller
delete *.bin from the target machine’s INF directory. The bin files
are
essentially an INF list and are generated, so deleting them will just
cause
the OS to regenerate them the next time it needs them. The ATMLANE
driver
installs automagically because it is already in the list, but your IM
won’t
be. If you don’t delete these bin files and force the OS to recreate
the
INF list, your install will get really screwed up. Figuring this out
the
first time was a total pain in the butt BTW.

There is one really bad thing to be aware of as well. An IM installed
this
way will show up under the NetTrans instead of the Net hive in the
registry. Some older protocols don’t bind by the rules, but rather
walk
the Net hive directly to find miniports to bind too. They will not
bind to
your IM because of this. We had a huge problem with this as there are
a
large number of third-party protocols that bind this way, especially
firewall products. There isn’t a real good solution to this problem
that I
am aware of either, except have the vendors fix their broken protocols
to
be NDIS compliant. All of Microsoft’s protocols are correct in this
regard
and will bind to your IM just fine.

Bill M.


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Ah, I forgot about that. Actually, I don’t remember exactly how the
bindings got fixed, but we had something come in and straighten all of the
bindings out after install. I thought it was the netdi.dll, but its been
over a year since I messed with that, so it might as well be 10 :-). Also,
I believe all protocols on Win9x/ME are ndis3, (regardless if they really
are or not), and that was the only type specified for DefUpper. If you are
only going to use this IM over a particular piece or type of hardware, then
you can have the miniport expose, and the protocol portion of the IM only
bind to, a custom interface type so that the IM only binds to that miniport
or miniport type. This prevents the IM from trying to bind to itself as
well.

Bill M.

-----Original Message-----
From: Bryan Burgin [mailto:xxxxx@microsoft.com]
Sent: Friday, July 20, 2001 5:51 PM
To: NT Developers Interest List
Cc: Bill McKenzie
Subject: RE: [ntdev] Re: passthru driver in win98

The NETLANE.INF (ATMLANE.SYS) file works well because there are no conflicts
with the upper edge name “atmlane” or the lower edge name “ndisatm”. Only
one thing presents itself as a binding partner in both cases.

However, in passthru, the upper edge is specified (DefUpper) as
“ndis3,ndis4,ndis5.” This causes the network class installer (NetDI.dll) to
create bindings that you don’t want – specifically, the original binding
between the protocols and the existing miniport, causing TCPIP to be bound
to your miniport and to the existing miniport. The only way I’ve been able
to resolve this has been to break that binding myself. Writing a
co-installer (actually, a custom NDI procedure) in 9x won’t help because it
won’t get to veto this binding because it won’t see queries for bindings
that doesn’t seem to involve the IM driver.

Also, you are correct regarding some firewall products, etc, mining the
registry looking for Class=Net drivers to identify miniports and missing IM
drivers. I can confirm that there is no good solution to this.

Bryan

-----Original Message-----
From: xxxxx@bsquare.com [mailto:xxxxx@bsquare.com]
Sent: Friday, July 20, 2001 11:20 AM
To: NT Developers Interest List
Subject: [ntdev] Re: passthru driver in win98

Oops forgot to mention, after deleting the *.bin files you have to copy
your INF file to the INF directory before the bin files are regenerated.

Bill M.

On 07/19/01, “xxxxx@bsquare.com” wrote:

> Actually, building a working NDIS IM driver for 98/ME is the easy part.
=
> Installing it is the pits; I frankly gave up and offer absolutely no =
> help in this area…
>

There are a couple of example NDIS IM drivers for Win98/ME. The first is
the ATMLANE driver and the second is Robert Schlabbach’s RASPPPoE here:

http://user.cs.tu-berlin.de/~normanb/

If you take the ATMLANE inf and convert it to work with your own driver,
you are almost there. The one trick is to have the INF or a coinstaller
delete *.bin from the target machine’s INF directory. The bin files are
essentially an INF list and are generated, so deleting them will just
cause
the OS to regenerate them the next time it needs them. The ATMLANE driver
installs automagically because it is already in the list, but your IM
won’t
be. If you don’t delete these bin files and force the OS to recreate the
INF list, your install will get really screwed up. Figuring this out the
first time was a total pain in the butt BTW.

There is one really bad thing to be aware of as well. An IM installed
this
way will show up under the NetTrans instead of the Net hive in the
registry. Some older protocols don’t bind by the rules, but rather walk
the Net hive directly to find miniports to bind too. They will not bind
to
your IM because of this. We had a huge problem with this as there are a
large number of third-party protocols that bind this way, especially
firewall products. There isn’t a real good solution to this problem that
I
am aware of either, except have the vendors fix their broken protocols to
be NDIS compliant. All of Microsoft’s protocols are correct in this
regard
and will bind to your IM just fine.

Bill M.


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Follow-up to Bill’s “I believe all protocols on Win9x/ME are ndis3”
comment (below) and a bit off the subject: Windows ME requires
“ndis3,ndis4,ndis5” to be declared. Declaring ndis3 alone will be
ignored, even if it’s finds an ndis3 binding partner. This was by
design. See KB Q282778, which speaks about LowerRange; but I believe
the same to be true for both edges. Also see KB Q282757 regarding new
debug capabilities in NetDI for Windows ME.

Bryan

-----Original Message-----
From: Bill McKenzie [mailto:xxxxx@bsquare.com]
Sent: Friday, July 20, 2001 4:40 PM
To: NT Developers Interest List
Subject: [ntdev] Re: passthru driver in win98

Ah, I forgot about that. Actually, I don’t remember exactly how the
bindings got fixed, but we had something come in and straighten all of
the
bindings out after install. I thought it was the netdi.dll, but its
been
over a year since I messed with that, so it might as well be 10 :-).
Also,
I believe all protocols on Win9x/ME are ndis3, (regardless if they
really
are or not), and that was the only type specified for DefUpper. If you
are
only going to use this IM over a particular piece or type of hardware,
then
you can have the miniport expose, and the protocol portion of the IM
only
bind to, a custom interface type so that the IM only binds to that
miniport
or miniport type. This prevents the IM from trying to bind to itself as
well.

Bill M.

-----Original Message-----
From: Bryan Burgin [mailto:xxxxx@microsoft.com]
Sent: Friday, July 20, 2001 5:51 PM
To: NT Developers Interest List
Cc: Bill McKenzie
Subject: RE: [ntdev] Re: passthru driver in win98

The NETLANE.INF (ATMLANE.SYS) file works well because there are no
conflicts
with the upper edge name “atmlane” or the lower edge name “ndisatm”.
Only
one thing presents itself as a binding partner in both cases.

However, in passthru, the upper edge is specified (DefUpper) as
“ndis3,ndis4,ndis5.” This causes the network class installer
(NetDI.dll) to
create bindings that you don’t want – specifically, the original
binding
between the protocols and the existing miniport, causing TCPIP to be
bound
to your miniport and to the existing miniport. The only way I’ve been
able
to resolve this has been to break that binding myself. Writing a
co-installer (actually, a custom NDI procedure) in 9x won’t help because
it
won’t get to veto this binding because it won’t see queries for bindings
that doesn’t seem to involve the IM driver.

Also, you are correct regarding some firewall products, etc, mining the
registry looking for Class=Net drivers to identify miniports and missing
IM
drivers. I can confirm that there is no good solution to this.

Bryan

-----Original Message-----
From: xxxxx@bsquare.com [mailto:xxxxx@bsquare.com]
Sent: Friday, July 20, 2001 11:20 AM
To: NT Developers Interest List
Subject: [ntdev] Re: passthru driver in win98

Oops forgot to mention, after deleting the *.bin files you have to copy
your INF file to the INF directory before the bin files are regenerated.

Bill M.

On 07/19/01, “xxxxx@bsquare.com” wrote:

> Actually, building a working NDIS IM driver for 98/ME is the easy
part.
=
> Installing it is the pits; I frankly gave up and offer absolutely no
=
> help in this area…
>

There are a couple of example NDIS IM drivers for Win98/ME. The first
is
the ATMLANE driver and the second is Robert Schlabbach’s RASPPPoE
here:

http://user.cs.tu-berlin.de/~normanb/

If you take the ATMLANE inf and convert it to work with your own
driver,
you are almost there. The one trick is to have the INF or a
coinstaller
delete *.bin from the target machine’s INF directory. The bin files
are
essentially an INF list and are generated, so deleting them will just
cause
the OS to regenerate them the next time it needs them. The ATMLANE
driver
installs automagically because it is already in the list, but your IM
won’t
be. If you don’t delete these bin files and force the OS to recreate
the
INF list, your install will get really screwed up. Figuring this out
the
first time was a total pain in the butt BTW.

There is one really bad thing to be aware of as well. An IM installed
this
way will show up under the NetTrans instead of the Net hive in the
registry. Some older protocols don’t bind by the rules, but rather
walk
the Net hive directly to find miniports to bind too. They will not
bind
to
your IM because of this. We had a huge problem with this as there are
a
large number of third-party protocols that bind this way, especially
firewall products. There isn’t a real good solution to this problem
that
I
am aware of either, except have the vendors fix their broken protocols
to
be NDIS compliant. All of Microsoft’s protocols are correct in this
regard
and will bind to your IM just fine.

Bill M.


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com