Rank 0 modem ID strings are used by the Windows 95 Plug and Play system as hardware IDs. Rank 1 modem ID strings are used as compatible IDs. Using Rank 0 and Rank 1 syntax has user interface implications during a modem install which are listed in the following.
The syntax of the INF item that uses modem ID strings is:
<description> = <install section>, <hardware ID>, <compatible ID>, <Rank 2 ID>
You can use a hardware ID alone or a compatible ID alone. The Rank 2 ID is seldom used; the use of a Rank 2 ID is described in the following.
The rank of a modem ID string in an INF is always indicated by the number of commas in the INF item that contains the modem ID string. For example, in the example INF file listing in the previous section, there are two Rank 0 ID strings:
[Microsoft]
; See INF documentation for additional information on this section.
; This is the list of modems that will appear in the Install New Modem wizard's list
; of modems for this manufacturer.
%Modem1% = Modem1, PCMCIA\RIPICAB-RC144ACL-3BD0
%Modem2% = Modem2, UNIMODEME9DF4BA4
Rank 0 ID strings are considered unique and are automatically installed by Windows 95 autodetection or enumeration. Following is an example Rank 0 ID from an INF file. Note the single comma.
%Reveal1% = Rockwell20, UNIMODEM8CF33BE4
Rank 1 ID strings indicate an exact ID match with some other modem. In other words, the same ID appears elsewhere in the same INF or in another Windows 95 modem INF. It is important to note that whenever Rank 1 ID strings are found in several modems it is likely that a single Rank 0 ID has been created in one of the Windows 95 INF files to attempt an automatic install. It is imperative that any new ID be checked against all other Windows 95 modem INFs. A simple file text search or Grep tool can search all modem INFs for matches.
Following is a Rank 1 ID example. Note the double comma structure. As an aside, the string "Rockwell_Reavea1" is provided to preserve a Rank 0 "placeholder" ID whenever upgrades are done in a Windows 95 machine. That "placeholder ID", which is obviously a nonexistent device ID, is usually built by using the filename of the INF and the modem name between the percent signs. For the moment, simply notice the double comma structure which indicates Rank 1 designation.
%Reveal1% = Rockwell20, Rockwell_Reavea1, UNIMODEM8CF33BE4
Rank 2 ID strings are used sparingly and likewise designate exact match ID strings and further allow a user to select from a pick list when two modems share dissimilar command sets or responses. Following is an example from MDMUSRWP.INF. Note the triple comma structure.
%Modem3b% = Modem3b, USRWP_Modem3b,,PCMCIA\INTEL-MODEM_2400+-9E9E