From a Netcard driver perspective, there is no difference between a well-written NDIS 3.0 driver and an NDIS 3.1 driver. Sources from a driver compiled to run under Windows for Workgroups 3.11 can simply be recompiled under the Windows 95 DDK to take advantage of NDIS 3.1 functionality. There are no new driver functions in NDIS 3.1.
NDIS 3.1, for Windows 95, means the following:
If your NDIS 3.0 driver uses standard macro definitions from the samples, these macros have been redefined to fit the NDIS 3.1 dynamic loading/unloading scenario.
You should make all noncritical code pageable (typically Init and Removal/Unload code).
In NDIS 3.0, the protocol loads first, and all adapters are bound to the protocols. In Windows 95, the adapter is detected and opened by the Configuration Manager and the Wrapper first, and protocols are bound to the available adapters. As a result, OpenAdapter is no longer called from within the AddAdapter procedure. So, make sure no local variables are used to pass data between these two procedures.