Installing Network Components

Network components are installed by the network configuration subsystem.

To create a driver package with a notify object that is executed from the Driver Store, you must have a minimum OS build number of 25341. You can't successfully install a driver package in this scenario on older versions of Windows.

To install a network component

  1. The network configuration subsystem calls the class installer for the particular component type. The class installer then calls the Setup API to retrieve information from the component's INF file and to install the component.

    If the component owns a notify object, the class installer retrieves the name of the DLL that houses the notify object. This DLL appears in the component's INF file as follows:

    HKR, Ndi, ComponentDll,     0,     "notifyobject.dll"
    

    The class installer calls the DLL's entry-point function to register the notify object. The network configuration subsystem creates an instance of the notify object and calls the object's INetCfgComponentControl::Initialize method. This method initializes the object and provides access to the component and all aspects of network configuration.

  2. To perform operations required to install the component, the network configuration subsystem calls the notify object's INetCfgComponentSetup::Install method.

    If installation of the component is unattended, the network configuration subsystem calls the notify object's INetCfgComponentSetup::ReadAnswerFile method. This method opens and retrieves the component's parameters from a file for unattended setup that is known as an answer file.

  3. After the network configuration subsystem creates an instance of and initializes the notify object, the subsystem calls the notify object's INetCfgComponentNotifyGlobal::GetSupportedNotifications method to retrieve the types of notifications required by the object. The subsystem uses this information to send required notifications to the object. The object can use these notifications to control aspects of networking setup and configuration that might affect the component that owns the object. For example, if the subsystem calls the INetCfgComponentNotifyGlobal::SysNotifyComponent method to notify the object that the subsystem installed or removed another network component, the object has the opportunity to perform operations related to the change.

    After the network configuration subsystem creates an instance of and initializes the notify object, the subsystem also calls any of the methods of the notify object's INetCfgComponentNotifyBinding interface to notify the object about changes to the way the subsystem binds other network components to the component that owns the notify object.

  4. When the network configuration subsystem is ready to apply the component's properties to the operating system, it calls the notify object's INetCfgComponentControl::ApplyRegistryChanges method to assign the component's parameters under the component's registry key. The notify object calls its component's INetCfgComponent::OpenParamKey method to open and retrieve the component's registry key.

  5. To configure the component's driver, the network configuration subsystem calls the notify object's INetCfgComponentControl::ApplyPnpChanges method and passes the INetCfgPnpReconfigCallback interface. The notify object calls the INetCfgPnpReconfigCallback::SendPnpReconfig method to send configuration information to its component's driver.

For more information about the Setup API and on files for unattended setup, see the Microsoft Windows SDK.