Read an Excerpt
Chapter 23: Overview of the Windows NT RegistryService Registration Information for Network Components
The HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services subkey is the service registration area that contains the information used to load a network component into memory. These subkeys contain required information, such as the location of the executable file, the service type, and its start criterion.
Each network component's software registration information (as described in the previous section) contains an entry named ServiceName, whose value is the name of the service corresponding to the network component. This name acts as a symbolic link to the CurrentControlSet\Services parameters.
Some network components are actually sets of services, each of which has its own subkey in the Services subkey. There is usually a "main" service, with the other services listed as its dependencies.
For example, as shown in the previous section, the Etherlink driver's ServiceName value is Elnkii, and this name would appear as a Services subkey that defines the location of the driver file, dependencies, and other startup information. The Elnkii subkey in turn contains other subkeys that define the parameters and linkage rules for the driver.
The Etherlink adapter&339;s ServiceName value is Elnkii02, which also appears as a Services subkey that defines linkage rules for bindings plus physical parameters of the network card, such as its I/0 address and interrupt request (IRQ) number, as specified on the Adapters tab under the Network option in Control Panel.
The value entries for the subkeys describing adapters anddrivers are defined in "Registry Entries for Network Adapter Cards" in the online Help for the Registry.
Bindings for Network Components
For the networking software in a computer to operate properly, several different pieces of software must be loaded, and their relationships with other components must be established. These relationships are often called bindings. To determine the complete set of optimal bindings among an ensemble of configured network components, the system checks the following information in the Registry:
- The set of network components to be configured
- The types of network components in this set
- The constraining parameters for the network components and their bindings
- The possible bindings that could occur
- The proper way to inform each network component about its bindings
During system startup, the CurrentControlSet\Services subkey is checked for binding information for each service. If any is found, a Linkage subkey is created, and values are stored. For example, these two strings might appear in a value entry under the CurrentControlSet\Services\]LanmanWorkstation\Linkage subkey:
Bind = \Device\Nbf_Elnkii01 \Device\Nbf_ElnkiiO2
This entry describes the binding information used by the Windows NT Redirector when two separate network cards are present. Each network card's symbolic name is suffixed with a network card index number. This name is joined to the name of the transport through which the network card is accessed. The names are generated by the system according to the constraints defined by the network component's rules.
Bindings have a usability requirement that means the binding must terminate either at an adapter (that is, a physical device) or at a logical endpoint, which is simply a software component that manages all further interconnection information internally. This requirement avoids loading software components that can never be of actual use. For example, a user might have a running network and then choose to remove the adapter card. Without the usability restriction, the bindings still connect components and prepare them for loading even though the network is entirely unusable.
The following example uses Nbf.sys and Srv.sys in an ensemble with two Etherlink II network cards and an IBM Token Ring card. First, in the values in the CuffentControlSet\Services\Nbf\Linkage subkey are the following:
Under the CurrentControlSet\Services\Srv\Linkage subkey, the following might appear:
The names in the Bind and Export entries are based upon the object names defined in the component's NetRules subkey; these value entries can therefore be different from the actual names of the services, although in the previous example, for the sake of clarity, they are not. The names in the Route entry are the names of the Services subkeys comprising the full downward route through the bindings protocol.
When the system finishes computing the bindings for network components and the results are stored in the Registry, some network components might need to be informed of changes that occurred. For example, TCP/IP must prompt the user for an IP address for any network adapter that has been newly configured. If the NetRules subkey for a network component has a value entry named Review set to a nonzero value, the .inf file for the network component will be checked every time the bindings are changed.
Dependency Handling for Network Components
Services can be dependent upon other services or drivers, which can be dependent upon others, and so on. The system can establish these types of dependencies:
- Specific dependencies, which are represented by the names of the services upon which a service is dependent
- Group dependencies
- Static dependencies, which are required in all circumstances...