Anzeige

Am Puls von Microsoft

Anzeige

Virtual NDIS Treiber.

T

tvemuu

Gast
Guten Abend

Bin gerade beim Stöbern in meinem 2003er Winddk auf einen Treiber gestoßen der NDIS emuliert..

Was ist NDIS und was genau wird da hadwaretechnisch emuliert?

Hier mal der Text

The purpose of this sample is to illustrate functionality of an NDIS-WDM miniport driver. An NDIS-WDM driver exposes NDIS miniport interface at its upper edge and uses IRPs to interact with other WDM drivers such as USB, IEEE 1394, and serial at its lower edge. Unlike NDIS miniports, which can call only NDIS functions, an NDIS-WDM driver can call both NDIS and non-NDIS functions. However, whenever possible, the miniport driver should call NDIS functions. For example, a miniport driver that controls devices on either Universal Serial Bus (USB) or IEEE 1394 (firewire) buses must expose a standard NDIS miniport driver interface at its upper edge and use the class interface for the particular bus at its lower edge. Such a miniport driver communicates with devices that are attached to the bus by sending I/O request packets (IRPs) to the bus.

This sample is built upon the NETVMINI sample available in the Windows Server 2003 DDK. Unlike the NETVMINI, this sample is fully functional. It uses the NDISPROT (NDIS protocol sample available in the Windows Server 2003 DDK) as its lower WDM edge driver to read and write packets to the physical network interface card (NIC) as shown in the diagram below. In order to test this sample, you should at least have one physical NIC on the test machine.

---------------------
| |
| TCP/IP |
| |
---------------------
^
| <-------------- NDIS Interface
V
---------------------
| |
| Sample NDISWDM |
| Miniport |
| |
---------------------
^
| <--------------- IRPs
V
---------------------
| |
| NDISPROT |
| |
---------------------
^
| <--------------- NDIS Interface
V
---------------------
| |
| NDIS Miniport |
| for physical NIC |
| |
---------------------
^
| <-------------- Talk to the hardware using I/O resources
V
---------------
| H/w NIC |
---------------
|||||||
-------


Note: This sample provides an example of a minimal driver intended for educational purposes. Neither the driver nor its sample test programs are intended for use in a production environment.

Operating System
Can sample be built in the OS? Does sample work in the OS? Can sample be used in a production environment for the OS?
Windows Server 2003 Yes Yes No
Windows XP Yes Yes No
Windows 2000 Yes Yes No
Windows Me

See Compatibility below.


See Compatibility below.


No
Windows 98 SE

See Compatibility below.


See Compatibility below.


No

The driver can be built in the Windows® 2000, Windows® XP, and Server 2003 DDK build environment.

The driver can be installed in the Windows 2000, XP, and Server 2003 operating systems. Windows 2000 supports only NDIS version 5.0 miniport driver. Windows XP and Server 2003 support NDIS versions 5.0 and 5.1 of miniport driver.
BUILDING THE SAMPLE

Click the Free Build Environment or Checked Build Environment icon under your Development Kit's program group to set basic environment variables needed by the build utility.

Change to the directory containing the device source code, such as CD Src\network\ndis\NDISWDM.

Run build -ceZ, or use the macro BLD. Using these tools invokes the Microsoft make routines that produce log files called Buildxxx_yyy_zzz.log, and also Buildxx_yyy_zzz.wrn and Buildxx_yyy_zzz.err if there are any warnings or errors. Where xxx stands for fre or chk depending on the environment chosen, yyy stands for the OS version (W2K, WXP, or Wnet), and zzz stands for platform version (x86, IA64, or AMD64).

If the build succeeds, the driver, ndiswdm.sys, will be placed in a platform specific subdirectory of your %TargetPath% directory specified in the 'Sources' file. Depending on the build environment, the driver will be either an NDIS 5.0 or NDIS 5.1 miniport driver. If you build in the Windows 2000 build environment, you will get NDIS version 5.0 of the miniport driver. If you build in the Windows XP or Server 2003 environments, you will get NDIS version 5.1 of the miniport driver.
INSTALLATION

You can install the NDISWDM driver and use it as your primary miniport by doing one of the following:

* Disable the bindings of TCP/IP with the physical NIC's miniport and have the NDISWDM miniport to assume the MAC address of the physical NIC. This is the default case.
* Don't alter the bindings of TCP/IP with the physical NICs miniport. Instead, have the NDISWDM miniport set the physical NIC into Promiscuous mode by using the Advanced Property dialog of NDISWDM in the Device Manager. This way, the NDISWDM can send and receive packets that have different MAC addresses. In this mode, the NDISWDM miniport generates its own locally administered MAC address instead of using the physical NIC's MAC address as its current address.

Installation steps

1. Install the NDISPROT sample from the Windows Server 2003 DDK and start the driver. Instruction on how to install and load the driver is given in the NDISPROT.HTM that comes with the sample. Make sure to rebuild the driver with EX_CALLBACK interface defined in the 'Sources' file. This enables the driver to notify NDISWDM whenever it gets loaded. Read the Code Tour section in this document for further information.
2. Double-click Network Connections in Control panel, right-click the Local Area Connection applet of the physical NIC, and select Properties. Clear the TCP/IP bindings check box.
3. Install the NDISWDM miniport driver. Steps for installing the driver on Windows 2000, XP, and Server 2003 DDK are listed below:

To install the driver on a Windows 2000 machine


1. Build the driver in a Win2K build environment to get the NDIS version 5.0 of the driver.
2. Copy the driver and the NDISWDM.INF file to a floppy disk or to a directory on the target test machine.
3. Open Control Panel, and double-click Add New Hardware.
4. Click Next.
5. Select Add a new device.
6. Select No, I Want to Select the Hardware from a list.
7. Select Network Devices, and then click Next.
8. Click Have Disk, and point to the directory that contains NDISWDM.INF file.

To install the driver on a Windows XP or Server 2003 machine

1. Copy the NDIS version 5.1 of the driver and the INF file to a floppy disk or to a directory on the target machine.
2. Open Control Panel and double-click Add Hardware.
3. At the Welcome to the Add Hardware Wizard screen, click Next.
4. Select Yes, I have already connected the hardware, and click Next.
5. Select Add a new hardware device from the list, and click Next.
6. Select Install the hardware that I manually select from a list (Advanced), and click Next.
7. Select Network adapters, and click Next.
8. Click Have Disk, make sure that A:\ is in the Copy manufacturer's files from box, and click OK.
9. Click on the desired entry, and click Next.
10. At The wizard is ready to install your hardware screen, click Next.
11. Click Finish.

Alternatively, you can use the DEVCON.EXE from the DDK to install the driver programmatically.

c:\>DEVCON.EXE INSTALL ndiswdm.inf "root\ndiswdm"

The system copies the NDISWDM.sys file to %systemroot%\system32\drivers directory and loads the driver. Instead of root-enumerating the driver as described above, you can use the toaster bus driver to bus enumerate the driver.
4. Check the configuration of the miniport by running IPCONFIG /All. You should be able to browse the internet or copy files from another machine.

This the default configuration - NDISPROT driver is started before NDISWDM miniport - and the miniport is using the MAC address of the real NIC. If you reboot the machine, you will notice that the network connectivity through the miniport is broken. This is because the NDISPROT hasn't been loaded or loaded after the miniport. When the miniport fails to open the NDISPROT interface during init, it reports a locally administered MAC address as the current address and completes the initialization. After that, even if the miniport is able to successfully open the NDISPROT interface in the ExCallback, it cannot report the Real NIC's MAC address. As a result, no network communication will take place because the real NIC will not receive or send packets that doesn't match with it's MAC address. In such a scenario, you can re-establish the network connectivity by disabling and re-enabling the miniport instance in the device manager to make sure that the miniport opens the target device during MiniportInitialize and reports the target NIC's MAC address.

If you like to get this configuration to work across reboots, you should configure the NDISWDM driver to set the target NIC filter to promiscuous mode. You can do that by using Advanced Property of the miniport in the device manager or by changing the value in the INF file before installing the miniport.
TESTING

Install NDIS Tester from the WHQL Web site and run all the client and server tests.
Und wofür ist der emulator gedacht?
 
Zuletzt bearbeitet von einem Moderator:
Anzeige
OK d.h. dieser Treiber den ich mir da aus dem DDK runtergeladen und kompiliert habe simuliert solch eine NDIS Umgebung richtig?
 
Anzeige
Oben