Windows 95 Layout

To support a variety of ISDN boards, the Windows® 95 registry layout adopts a hierarchy of lines and channels for each driver. In this context, lines are the actual physical ISDN lines that plug into the adapter. (This is different from TAPI's logical line device.) For example, the first adapter shown (see preceding) would have only one line while the second adapter would have two. Each line has a number of channels which depends on the type of ISDN line. A ISDN BRI line has two B-channels maximum although only one may actually be used. An ISDN PRI line has up to 23 or 31 B-channels, depending on whether it is in North America or Europe. Conceivably, a driver could have 31 channels for each of the lines the adapter supports.

A skeletal example of a Windows 95 driver registry key follows. A description of this driver key layout follows the example.

\HKLM\System\CurrentControlSet\
    Services\Net\
        0000\
            <PnP config values>
            BoardName = (LPSTR) "ISDNBoard - 1 Line"
            BoardType = (LPSTR) "ISDNBoardType - 1 Line"
            DeviceVxDs = (LPSTR) "driver.sys"
            DevLoader = (LPSTR) "*ndis"
            DriverDesc = (LPSTR) "ISDN Adapter"
            EnumPropPages = (LPSTR) "netdi.dll,EnumPropPages"
            InfPath = (LPSTR) "COMPANYX.INF"
            InterruptNumber = (BINARY) 05 00 00 00
            NumberOfLines = (STRING) "1"
            Line0.SwitchType = (STRING) "1" 
            Line0.Properties = (STRING) "0" 
            Line0.Channel0.Properties = (STRING) "0" 
            Line0.Channel0.Phone = (STRING) "5551111" 
            Line0.Channel0.SPID = (STRING) "015551111000"
            Line0.Channel1.Properties = (STRING) "0" 
            Line0.Channel1.Phone = (STRING) "5552222" 
            Line0.Channel1.SPID = (STRING) "015552222000"
            TAPI\
                DeviceCaps = (BINARY) 00 00 ... 00 00
                Properties = (BINARY) 00 00 00 00
                VendorConfig = (BINARY) 00 00 ... 00 00
                Line0\
                    LineCaps = (BINARY) 00 00 ... 00 00
                    Properties = (BINARY) 00 00 00 00
                    SwitchType = (BINARY) 00 00 00 00
                    VendorConfig = (BINARY) 00 00 ... 00 00
                    Channel0\
                        ChannelCaps = (BINARY) 00 00 00 00
                        Properties = (BINARY) 00 00 00 00
                        Phone = (STRING) ""
                        SPID = (STRING) ""
                        VendorConfig = (BINARY) 00 00 ... 00 00
                    Channel1\
                        ChannelCaps = (BINARY) 00 00 00 00
                        Properties = (BINARY) 00 00 00 00
                        Phone = (STRING) ""
                        SPID = (STRING) ""
                        VendorConfig = (BINARY) 00 00 ... 00 00
 

The driver key contains one child key per physical line that plugs into the adapter. These key names are displayed as LineX, where X is a monotonically increasing decimal number. Similarly, each LineX key contains one child key per B-channel that the line supports. These key names are displayed as ChannelY, where Y is a monotonically increasing decimal number. The WANTSP provides a mapping between the flat key layout used by the driver and the hierarchical layout used by the ISDN UI. The values which are mapped by the WANTSP are the following:

Line level mappings. These two values are mapped for all lines present.

LineX.SwitchType STRING This value corresponds to the SwitchType setting for the particular line. It represents the selected bit flag corresponding to a particular switch, for example, ISDN_SWITCH_NI1. It is stored as a STRING key, and it should be read by the driver as NdisParameterHexInteger.
LineX.Properties STRING This is a four-byte value containing the current line configuration settings. The legal values are the ISDN_LINE_* manifest constants. This key controls whether the line is active or inactive. It is stored as a STRING key, and it should be read by the driver as NdisParameterHexInteger. If not present it should be interpreted as ISDN_LINE_DEFAULT.

Channel level mappings. These two values are mapped for all channels present for each line present.

LineX.ChannelY.SPID STRING This value corresponds to the SPID setting for the particular channel. This value should be used as the Service Profile ID corresponding to this B channel. This value will be numeric only with no separators.
LineX.ChannelY.Phone STRING This value corresponds to the Phone setting for the particular channel. This value should be used as the directory number (w/o area code) corresponding to this B channel. This value will be numeric only with no separators.
LineX.ChannelY.Properties STRING This is a four-byte value containing the current channel configuration settings. The legal values are the ISDN_LINE_* manifest constants. This key controls whether the channel is active or inactive. It is stored as a STRING key, and it should be read by the driver as NdisParameterHexInteger. If not present it should be interpreted as ISDN_CHANNEL_DEFAULT.

The registry value names, types, and descriptions for the \Net\xxxx\TAPI registry key are as follows:

Properties BINARY This is a four-byte value containing the current configuration flags for the device. The legal values are the ISDN_* manifest constants. This key controls whether the device is active or inactive.
DeviceCaps BINARY Capabilities of the driver. This is five DWORDs in size, and determines the entire contents of the ISDNDEVCAPS structure (see the following).
VendorConfig BINARY Optional value that contains opaque, driver specific data related to the driver.

The registry value names, types, and descriptions for the \Net\xxxx\TAPI\LineX registry keys are as follows:

Properties BINARY This is a four-byte value containing the current line configuration settings. The legal values are the ISDN_LINE_* manifest constants. This key controls whether the line is active or inactive.
LineCaps BINARY Capabilities of the line. This is seven DWORDs in size, and determines the entire contents of the ISDNLINECAPS structure (see the following).
SwitchType BINARY This is a four-byte value containing the current switch setting.
VendorConfig BINARY Optional value that contains opaque, driver specific data related to the specific line.

The registry value names, types, and descriptions for the \Net\xxxx\TAPI\LineX\ChannelY registry keys are as follows:

Properties BINARY This is a four-byte value containing the current channel configuration settings. The legal values are the ISDN_CHANNEL_* constants. This key controls whether the channel is active or inactive.
ChannelCaps BINARY This is a four-byte value containing the configuration flags for the channel. These flags are effective only if the device is capable of the respective support. The legal values are the ISDN_CHANNEL_* constants. These flags represent the capability of the channel.
Phone STRING The phone number of the channel. See LineX.ChannelY.Phone.
SPID STRING The SPID of the channel. See LineX.ChannelY.SPID.
VendorConfig BINARY Optional value that contains opaque, driver specific data related to the specific line.