NDIS supports two types of NIC drivers:
While the NDIS V4.0 library will continue to support NDIS V3.0 full NIC drivers for legacy netcards, only NDIS miniport NIC drivers can take advantage of the enhanced functionality and performance characteristics of NDIS V4.0 for their NICs. Only NDIS miniport NIC drivers can take advantage of the enhancements and functionality planned for future versions of the NDIS library.
For new NICs, the smaller, easier-to-write miniport should be developed to take advantage of new features in new versions of NDIS that are not available to full NIC drivers. Legacy full NIC drivers required driver developers to write a large amount of code to deal with issues that are common across all NDIS drivers. About fifty percent of the code written for a full NIC driver is common to all NDIS drivers, while the other half is specific to the hardware. Writing a full NIC driver places the full burden of coding multiprocessor support and other more difficult operating system programming issues on the NIC driver developer.
To make development of NIC drivers easier, this common code is merged into the NDIS library. NDIS removes all concerns for open bindings, queuing of requests, queuing of transmits, and many synchronization issues from the NIC driver writer. By providing this support for much smaller and simpler miniport drivers, developers can write only hardware-specific code.