|
NDIS Pseudo-Intermediate (PIM) Driver
|
Selectively Pass/Drop Packets | |
Delay/Reorder Packets | |
Encrypt/Decrypt Packets | |
Compress/Decompress Packets | |
Route Packets. |
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. |
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...]
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.
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]
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.
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.
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.
NDIS Pseudo-Intermediate (PIM) Driver Samples For Windows 9X |
||||||||||||||||||||||||||||
|
Prices good through February 28, 2001.
PCAUSA Home · Privacy Statement · Products · Ordering · Support · Utilities · ResourcesRawether for Windows and WinDis 32 are trademarks of Printing Communications Assoc., Inc.
(PCAUSA)
|