Home Up Contents Search
NDIS PIM 9X

Rawether for Windows PCASIM NDIS PIM 9X TDI Samples Redirector 95/98 License & Warranty Customer Comments

 

Release Notes

NDIS Pseudo-Intermediate (PIM) Driver
for Windows 9X
(NDIS PIM 9X)

 

About NDIS Intermediate (IM) Drivers

The Network Driver Interface Specification (NDIS) version 4.0 introduced a new type of NDIS driver that is layered between an NDIS transport driver (such as MSTCP) and the underlying network interface card (NIC) drivers. This type of NDIS driver is called an NDIS Intermediate (IM) driver.

Actually, an NDIS IM driver layers itself over each existing NIC driver and creates an additional "virtual adapter" for each existing NIC driver, as illustrated below:

wpe7.gif (2392 bytes)

If the binding between the NDIS protocol driver and the real NIC driver is disabled, leaving the binding to the NDIS IM virtual NIC driver, then the NDIS IM driver is logically between the real adapter and the protocol driver. In this position it can view and manipulate each packet sent or received by the protocol.

There are several potential uses for NDIS IM drivers. The most significant use being "packet filtering", which includes the capability to:

Selectively Pass/Drop Packets
Delay/Reorder Packets
Encrypt/Decrypt Packets
Compress/Decompress Packets
Route Packets.

 

About NDIS IM Drivers And Windows 9X

Although NDIS IM drivers are supported on Windows 95 OSR2 and higher, there are still shortcomings, including the following:

NDIS IM Drivers Do Not Support All Windows 9X Versions - By definition.
NDIS IM Drivers Are Difficult To Install - Installation methods are complex from both the perspective of both the developer and the end-user.
Once Installed, NDIS IM Virtual Adapter Bindings Are Confusing - Installation of a single IM driver usually doubles the apparent number of installed network adapters.
Windows 9X IM Drivers Usually Require Companion VxD Support - Except in trivial cases, the NDIS IM driver will need to access Windows 9X VxD services and will need to use Windows 9X-specific DeviceIoControl mechanisms that are significantly different from Windows NT and Windows 2000. Attempts to use binary compatible NDIS IM drivers on Windows 9X result in a complex hybrid SYS/VxD design approach.
Third-Party NDIS Drivers Do Not Work With Dial-Up Adapter - The standard NDIS binding mechanism used by NDIS protocol drivers does not work correctly with the Microsoft-proprietary Dial-Up Adapter.

 

About NDIS Pseudo-Intermediate (PIM) Drivers For Windows 9X

PCAUSA developed the NDIS Pseudo-Intermediate (PIM) driver technology for Windows 9X to solve most of the shortcomings associated with attempting to use NDIS IM drivers on Windows 9X.

The PCAUSA NDIS PIM driver technology achieves the following goals:

Supports All Windows 9X Versions - From the original Windows 95 "Gold" to Windows 98 SE.
Easy To Install - Can be installed and removed as simply as an ordinary Win32 application.
No Virtual Adapter Confusion - No virtual adapters are exposed, and binding is under the control of a companion NDIS PIM Win32 application.
The NDIS PIM Driver Is A VxD - Allowing full access to NDIS and Windows 9X VxD services.
Supports Filtering On Dial-Up Adapter - Does not rely on proprietary or undocumented information or reverse engineering.

Note: It appears that Windows Millennium introduces a hybrid NDIS architecture that differs from Windows 9X. At this time it appears that the NDIS PIM filtering method does NOT work on Windows ME. It is not known whether Microsoft will describe how to install NDIS IM drivers on this platform either. 8/8/00 TFD.

At this time it appears that the NDIS PIM filtering method does NOT work on Windows ME. [More Information...]

 

NDIS PIM 9X Framework Overview

A NDIS PIM driver is "logically similar" to an NDIS IM driver. However, it is implemented differently.

A PCAUSA NDIS PIM driver uses a standard Windows 9X technique called "hooking" to intercept services exported by the Windows 9X NDIS wrapper. The NDIS PIM driver hooks the NDIS wrapper at a point in the VxD load sequence before NDIS protocols begin their binding process.

Because the NDIS PIM driver hooks services exported by the NDIS wrapper, it can intercept each protocol's call to NdisRegisterProtocol and replace the protocol's characteristics table (jump table) with a table containing pointers to functions within the NDIS PIM driver. After that, the NDIS PIM driver intercepts each protocol's call to NdisOpenAdapter so it can track the adapters that are opened.

With a little bookkeeping, the NDIS PIM driver inserts itself between MSTCP and all of the adapters that it binds to. When MSTCP calls NdisSend to send a packet, the packet comes to the NDIS PIM driver first for filtering. Likewise, packets that are to be indicated (received) on MSTCP go to the NDIS PIM driver first where they also can be filtered.

The NDIS PIM driver is organized so that most of your packet filtering code will be in one of two code modules:

MSTCP Protocol Filter Module - Logically similar to the "protocol" part of a NDIS IM driver. This module filters the "upcalls" from the NDIS wrapper and NIC drivers to MSTCP. (e.g., ProtocolReceive callback...)
MSTCP "Wrapper" Filter Module - Logically similar to the "miniport" part of a NDIS IM driver. This module filters the "downcalls" from MSTCP to the NDIS wrapper and NIC drivers. (e.g., NdisSend call...)

In addition, the NDIS PIM driver has a functional DeviceIoControl interface that you can expand to implement your own control functions.

 

IP Link Characteristics Emulator (LCE) Sample

One of the NDIS PIM Framework Samples is called the IP Link Characteristics Emulator for Windows 9X (IP LCE 9X). The IP LCE software filters each IP packet as it is sent and received by the Microsoft TCP/IP (MSTCP) NDIS protocol driver. The filter function emulates the performance a slow network by controlling the bandwidth and latency of a fast network such as Ethernet.

The way the IP LCE emulates the characteristics of a slower network is to delay each IP packet by programmable amounts. Each packet sent by MSTCP or to be received by MSTCP is first put on a linked list called a "delay queue". A timer function is used to examine packets in the delay queue periodically. If the Latency and Bandwidth delay for the packet at the head of the delay queue has expired, then that packet is removed from the delay queue and is actually sent on the network or indicated to MSTCP (depending on direction).

This functionality is actually of interest to a few companies. In addition, the IP LCE serves to illustrate the functionality of the NDIS PIM technology.

If the IP LCE example can illustrate delaying each and every IP packet, it should be clear that the NDIS PIM technology can be adapted to perform other types of packet filtering.

If you would like, you can find out more about the IP LCE Sample and download the IP LCE executables for evaluation.

[IP Link Characteristics Emulator (IP LCE) Information And Download Page] icodownl.gif (151 bytes)

 

Development Environment

NDIS PIM 9X Applications - NDIS PIM 9X sample applications are ordinary Win32 applications. They are currently built using Microsoft Visual C/C++ V6.0.


NDIS PIM 9X Windows 9X Device Drivers - NDIS PIM 9X device drivers are VxDs. They are built using Microsoft Visual C/C++ V6.0 on the Windows 9X platform.

You can use either 1.) VtoolsD VxD development environment or 2.) the Windows 95 DDK to build NDIS PIM 9X driver VxDs. The VtoolsD and Windows 9X DDK driver sources are provided in separate directories.

warning.gif (151 bytes)  In order to compile the NDIS PIM 9X Windows 9X VxD device driver using the Windows 95 DDK you must have Microsoft Windows 95 DDK. As delivered the NDIS PIM 9X sources do not build under the Windows 98 DDK.

warning.gif (151 bytes) Compuware NuMega no longer offers VtoolsD as a stand-alone product, and the price of NuMega bundles that include VtoolsD is too high to justify strictly to support VxD development. So, NDIS PIM 9X is expected to be the last PCAUSA product that supports VtoolsD.

Developers who desire to develop products using the NDIS PIM technology should be proficient in the general area of NDIS driver and Windows 9X VxD driver development. If you are familiar with the Microsoft VPACKET NDIS protocol driver or other NDIS protocol drivers, then you should have only modest difficulty in dealing with the NDIS PIM 9X samples.

 

Pricing And Ordering Information

NDIS Pseudo-Intermediate (PIM) Driver Samples For Windows 9X

SKU

Description

Documentation
Source Code
License

Product Updates

Technical Support

Satisfaction Guarantee

Price

035

NDIS PIM 9X Samples
- Basic -

Yes

90 Days

90 Days

Yes!

US$595.00

036

NDIS PIM 9X Samples
- Subscription (New) -

Yes

1 Year

1 Year

Yes!

US$795.00

037

NDIS PIM 9X Samples
- Subscription (Renewal) -

Yes

1 Year

1 Year

Yes!

US$500.00

Ordering Information...

Prices good through February 28, 2001.

 

 

PCAUSA Home · Privacy Statement · Products · Ordering · Support · Utilities · Resources
Rawether for Windows and WinDis 32 are trademarks of Printing Communications Assoc., Inc. (PCAUSA)
Microsoft, MS, Windows, Windows 95, Windows 98, Windows Millennium, Windows 2000, and Win32 are registered trademarks and Visual C++ and Windows NT are trademarks of the Microsoft Corporation.
Send mail to webmaster@pcausa.com with questions or comments about this web site.
Copyright © 1996-2001 Printing Communications Assoc., Inc. (PCAUSA)
Last modified: September 13, 2000