|
Sample NDIS Intermediate Driver
|
LAN Emulation - Where the NDIS IM driver is used to make a non-LAN NIC driver (e.g., ATM) look like a LAN NIC driver (e.g., Ethernet). | |||||||||||||||
Packet Filtering - The ability to intercept and
possibly alter the flow of packets between the higher-level transport and lower-level NIC
drivers.
|
Now don't set your expectations too high. PCASIM doesn't include samples that illustrate all of these potential uses for NDIS IM drivers. For example, while PCASIM could conceivably be used as a point of departure for LAN Emulation, that use is too complex to be treated with a general-purpose sample. In addition, PCASIM doesn't include crypto, compression or NAT samples.
What PCASIM does offer is...
a healthy, stable and well documented (internally) baseline NDIS IM driver suite
intended to be a good starting point for NDIS IM development.
Microsoft has actively sought to improve the usefulness of their NDIS samples. Microsoft now has useful sample NDIS Intermediate driver samples for both Windows NT and Windows 2000. So, it is reasonable to ask:
Why even consider PCAUSA NDIS
Intermediate driver samples
when Microsoft offers working pass-through driver
samples for free???
The answer is simple: The Microsoft NDIS IM driver samples are fundamental "pass-through" drivers that provide only the simplest possible illustration of NDIS IM functionality. It has been PCAUSA's experience, as well as the experience of others, that:
The gap between a passive
"pass-through" filter
and
a filter that actively observes and modifies data is
LARGE!!!
PCASIM includes variations of an NDIS IM driver for Windows NT 4.0:
PassThru The base NDIS IM sample. | |
IPPass Adds a simple framework for performing protocol-specific per-packet filtering. | |
IPBlock A working example that illustrates use of the protocol-specific filtering framework to block sends and receives on a list of IP addresses. Includes a simple Win32 console application that can be used to pass a list of IP addresses to block to a specified virtual adapter IPBlock filter. | |
IPDelay - A second working example. This example delays sends and receives of IP packets by a selectable amount. Includes a simple MFC application that can be used to select the delays for each virtual adapter. |
In addition to the driver samples themselves, the PCASIM framework includes:
PCAImApi.DLL - A DLL that exports support functions that simplify access to the PCASIM driver from Win32 applications. Also includes the Binding Review pruning function. | |
Test Applications - That illustrate DeviceIoControl communication between a Win32 application and the PCASIM driver. | |
Internet Protocol Header Files - These header files are useful for manipulating information in IP packets. These headers were originally developed for the Unix operating system by the University of California, Berkeley and its contributors. | |
Internet Protocol Support Functions - Including IP checksum calculation function, byte order conversion functions, etc. |
This is the base NDIS IM sample. It is loosely based on the ImSamp (Thanks, Jim Mateer!) and PassThru samples from Microsoft. The driver most closely resembles ImSamp, and if you have looked at ImSamp, then you will probably recognize some similarity.
Can be installed/removed safely as a Protocol
|
Bug fixes | |||||||||||||||
Simpler than ImSamp, more functional than PassThru
|
Support Functions |
The IPPass variation of PCASIM extends the functionality of the base PassThru sample by adding a simple framework for performing protocol-specific filtering.
Although still a "pass through" sample, the architecture allows all the real work of filtering to be performed in one fairly simple driver module.
The IPBlock variation of PCASIM illustrates the use of the protocol-specific framework developed in the preceding IPPass sample.
In operation, the IPBlock PCASIM driver is passed a list of IP addresses to block from a Win32 application. The IPBlock filter examines each IP packet to be sent or received against this list. IP packets whose IP address are found in the list of addresses to block are tossed by the filter.
The IPBlock variation of PCASIM illustrates the use of the protocol-specific framework developed in the preceding IPPass sample.
The IPDelay version of the PCASIM driver works in conjunction with a MFC application. The MFC application allows the user to independently specify a delay to be introduced in the send and receive paths for IP packets.
Here is an illustration of the Control IP Packet Delay dialog that is used to specify send/receive IP delays:
As each IP packet enters the IPDelay filter, its scheduled send or receive time is calculated based on the user's delay settings. The IP packet is then simply placed on a queue for later processing.
A periodic timer callback function examines the queue of waiting IP packets, and performs the actual send/receive operation when the scheduled time is reached.
The following Ping capture is representative of what you may see on your system as the delay settings are varied:Pinging server166.PCAHOME.COM [172.16.1.32] with 32 bytes of data:
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128Reply from 172.16.1.32: bytes=32 time=110ms TTL=128
Reply from 172.16.1.32: bytes=32 time=110ms TTL=128
Reply from 172.16.1.32: bytes=32 time=110ms TTL=128Reply from 172.16.1.32: bytes=32 time=219ms TTL=128
Reply from 172.16.1.32: bytes=32 time=219ms TTL=128
Reply from 172.16.1.32: bytes=32 time=219ms TTL=128Reply from 172.16.1.32: bytes=32 time=110ms TTL=128
Reply from 172.16.1.32: bytes=32 time=110ms TTL=128
Reply from 172.16.1.32: bytes=32 time=110ms TTL=128Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
Reply from 172.16.1.32: bytes=32 time<10ms TTL=128
If you would like, you can download the PCASIM Sample Executables for evaluation.
[ PCASIM Sample Executables Download Page ]
PCASIM Windows NT Device Drivers - Are built using Microsoft Visual C++ V5.0 and the Microsoft Windows NT 4.0 DDK on the Windows NT 4.0 platform. PCASIM Windows NT Device Drivers - Are built using Microsoft Visual C++ V5.0 and the Microsoft Windows NT 4.0 DDK on the Windows NT 4.0 platform. - Are built using Microsoft Visual C++ V5.0 and the Microsoft Windows NT 4.0 DDK on the Windows NT 4.0 platform.
In order to compile the PCASIM Windows NT device driver you must also have the Windows NT 4.0 Device Driver Kit (DDK) from Microsoft.
Visual C/C++ V6.0 may be used instead of V5.0.
If you are unfamiliar with installing and using the Microsoft Windows NT DDK, then please read topics on this subject in the PCASIM Programmers Guide.
There are several limitations of the current PCASIM sample that you should understand:
PCASIM only works on Windows NT 4.0. PCASIM does not support operation on the RAS/PPP adapters. PCASIM does not include samples that illustrate packet fragmentation/defragmentation.
It is probable that PCASIM will be enhanced to work on Windows 2000 in the near future.
There are no plans to support PCASIM on Windows 9X. However, PCAUSA offers NDIS Pseudo-Intermediate (PIM) driver technology for Windows 9X.
PCAUSA NDIS PIM drivers provide functional capabilities similar to NDIS IM drivers, and work on all variations of Windows 9X.
[ More information on PCAUSA NDIS PIM technology... ].
|
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)
|