Free NDIS Guide

June 30th, 2010

I have discussed in previous posts just how difficult it is to find true quality information on NDIS.  When you are working towards becoming an NDIS programmer, it can be frustrating to find so little information on the Internet that you can use.

Komodia.com is a website that is very well known for their LSP products.  They also have a free LSP guide and free LSP resource page that are fairly popular.  I came across an article recently that reference the free LSP guide and that it was going to become a for-sale ebook in the very near future.  I decided to go and download the guide while it was still free.

It turns out that Komodia.com also has a free NDIS guide as well.  I was able to peruse this guide without having to pay a dime or even opt-in.  I just went to their NDIS.html page and there was the guide – free for the taking.  I wonder how long until this guide becomes an ebook also?  We all might as well go ahead and get this information now while it is still freely given.

This guide is especially beneficial to the NDIS programming newbies, but there is some meatier information as well.  After the general NDIS introduction, there is a fair amount of information on NDIS drivers.  I love free information!

Houdini

Writing For My Atari 2600

June 27th, 2010

When you start out as a developer, there is always going to be a scarcity of information on whatever you are trying to develop.  This is going to prove true no matter what it is you are doing.  Generally it is true because by the time a certain technology gets enough documentation to be truly useful, it is already obsolete.

For me, though, I still cannot find documentation even on older technology.  One of my hobbies is to create new 4 bit Atari games that I can then play on my old Atari systems (the computers or the gaming consoles 400, 600, 800, 2600, 5200, 7800).  You might be amazed that it is actually a lot more difficult for me to develop a game for the Atari then it would be for me to write the same game for the IPhone.

The same has proven true for everything that I try to develop or work on.  There is a great scarcity of QUALITY NDIS information on the net today.  I mean NDIS information that I can immediately use and incorporate into my work.

I have, however, found some free NDIS information in the form of a guide that I am perusing now – this is what inspired this post actually.  Stay tuned for my next post when I am going to discuss it in detail.

Houdini

NDIS Windows 2000

June 25th, 2010

The NDIS (or Network Driver Interface Specification) in Windows 2000 is implemented by a certain file.  This file is called ndis.sys and specific to Windows 2000.  It is also called the Windows NDIS wrapper.

The NDIS wrapper is simply an entire piece of code.  All of the NDIS device drivers are surrounded by the NDIS wrapper and that is where it gets its name.  The NDIS wrapper wraps all of the device drivers.

What the NDIS wrapper does is that it offers an interface between the device drivers and the protocol drivers.  Also, the wrapper contains support routines that assist NDIS driver development.  Generally, the NDIS wrapper assists the overall development of the NDIS drivers and makes it that much easier.

Houdini

Connectionless Networks

June 23rd, 2010

For Windows 2000, the NDIS offers two different interface connections:

  1. connection-oriented interface
  2. connectionless interface

When you consider Windows NT 4.0, it had support for connectionless interfaces.  When using a connectionless network, the data/packets are transmitted without maintaining any connection to the network.  This is obviously in contrast to a connection-oriented network.

There are some potential problems with connectionless interfaces.  Your packets can be undelivered, redelivered, lost, modified, and/or duplicated.  Not to worry though, these will generally be covered by your various network protocols.

Houdini

NDIS Wrapper and Linux

June 21st, 2010

When working between Linux and Windows, the NDIS wrapper is merely a local translator – what Douglas Adams would call a “Babel Fish.”

If a Linux applications requests the services of a NDIS wrapper, the NDIS wrapper must find the appropriate Windows device to communicate with.  It then translates its information into the Windows language (windowsese).  Once it has communicated the information, it simply waits for any reply.  Once the reply/response is received, it is translated into Linux language (linuxese) and reported back to the Linux application.

This allows the too differing OS applications to communicate back and forth.  In this instance, the NDIS wrapper in a Linux driver communicating with a Windows application.

Houdini

NDIS Protocol Drivers

June 19th, 2010

Another NDIS driver is the NDIS Protocol driver.  This driver sends a total set of Protocol processes straight to the bottom edge of the protocol stack.  The protocol driver talks to the NDIS so that it can accept its packets.  It connects with an IM driver or a sub miniport driver which works with the Miniport interface. 

This in turn travels to the top of the protocol stack.  The NDIS Protocol driver also supports the TDI or Transport Driver interface.   .

NDIS Protocol drivers always use their own functional properties to talk to any underlying NDIS driver.  An example of this is when the Protocol driver utilizes a connectionless bottom edge to transfer packets to an underlying NDIS driver.  Here is where NdisSendPackets or NdisSend is used. 

Houdini

NDIS IM Drivers

June 17th, 2010

There are two NDIS IM drivers:

  1. LAN Emulation IM driver
  2. Filter Driver

The LAN (Local Area Network) Emulation IM Driver.  This driver translates the connectionless Transport’s LAN format to the connection oriented format.  An ATM is an example of this type.  The Transport Protocols talk with a separate H/W mechanisms, the Local Area Network Adapter and the Ethernet adapter.  The LAN Emulation IM driver translates the information that is traveling through the layer above.  Then it can be sent through a different medium. 

Then there is the Filter driver.  Filter drivers are another form of NDIS IM driver.  These drivers deal with special operations and procedures.  Special operations are packet tracing, encryption, and compression.  All this takes place when the packets travel through the filter drivers.  Network load balancing services or the Quality of Service, QOS, are examples of working filter drivers.

Houdini

NDIS IM Driver

June 15th, 2010

NDIS Intermediate Driver

One NDIS Driver is the NDIS IM driver or NDIS Intermediate driver.  These IM drivers can be found between the Internet Protocol Layers and the MAC.  NDIS IM drivers can control and monitor all network happenings being accepted by the NIC card. 

The NDIS driver puts into use two interfaces:

  1. the protocol interface and
  2. the miniport interface. 

The miniport driver talks to the miniport interface as the protocol driver talks to the protocol interface.  Both of these can be found in the IM driver.  This allows the IM drivers to be held between the protocol and miniport interfaces.  IM drivers reside above the miniport and below the transport protocol in the network protocol stack. 

Houdini

Common NDIS Problems

June 13th, 2010

NDIS programming is a great field and it will certainly benefit as much from each new programmer that learns it as that programmer will benefit from the new knowledge.  NDIS is as challenging as it is rewarding, and so much care and patience much be used while learning it.  No one said this would be easy – especially not me.

There are some common NDIS problems.  These have been well documented on several sites on the Internet and there have been many solutions offered as well.  A great deal of knowledge can be obtained just by the exploration of these common NDIS problems.

However, not all of these problems have solutions and this is a great area of concern within the field of NDIS programming.  This is the call of all developers – to create solutions for these problems by the next driver release.  Without this, NDIS programming will not be able to go forward or evolve.

Are you the one?

Houdini

NDIS Resources

June 11th, 2010

For every NDIS developer, there can never be enough resources online to help.  Network Driver Interface Specification will never be an easy project to work on.  Developers need every help that they can find.

There are several discussion boards, forums, and other sites that are available online for developers of NDIS.  Often times these sites are used merely to document a problem that one developer has only to have that problem revisited by another developer at a later date.  These sites can be used for rants and frustration venting as well – sometimes that is just as much help as technical assistance.

When more than one developer can tackle the same problem in unison, in concert – that program has a tendancy to get solved more quickly.  Different developers will frequently look at the same problem in different ways – see it in a slightly different perspective.  This will potentially lead to insight and an eventual solution.

Houdini