Network Provider SPI

The WinNet application programming interface (API) was introduced in Microsoft(r) Windows(r) version 3.0 to provide a generic network interface for the Windows shell and system utilities, providing an interface which is generally available across many networks. It was used only by Windows, and was not documented for third-party application developers. Major categories of functionality included making and breaking network connections, and printing.

In Windows for Workgroups 3.1, support was added so that two networks could coexist, each with their own implementation of the WinNet API. This was achieved by adding an extra layer of routing software that was used when two networks were running.

In Windows NT the layer of routing software (the Multiple Provider Router, or MPR) was made mandatory, even for one network. The layer contains the network-independent APIs that are generally available to all application writers and are documented in the Win32 API Specification. Making the layer mandatory simplifies writing the networking software for a specific network to interface to Windows (the network provider, or NP software).

Features that are common to all networks are implemented once in the MPR, which reduces the code base of each NP and ensures common behavior between networks. For example, NPs do not implement persistent connections. This feature is implemented in the MPR and is entirely transparent to an NP.

In Windows 95, the same approach is taken as in Windows NT. Extensions have been added to the Windows NT interfaces to provide a greater level of integration between the shell, the desktop, and the networks. Particular features that are more tightly integrated are network browsing, viewing network specific information, and connecting to networks.

The set of interfaces that a network vendor implements in the NP to interface to Windows is the network service provider interface (SPI). Applications do not call these SPIs directly. Instead, the Win32 functions they call are routed by the MPR to the SPIs of the appropriate provider.

In summary, in Windows 95 each network implements a provider, and Windows handles communicating with all the providers present to provide an integrated network interface to the user. The integration is handled by the MPR Windows component, which is implemented as a DLL. The MPR calls an NP through the SPIs implemented by the NP.

This documentation describes how a network vendor should implement the SPIs in an NP to integrate its network into Windows 95.