`Caputo
`
`115
`
`[11] Patent Number:
`[45] Date of Patent:
`
`5,675,831
`Oct. 7, 1997
`
`US00567583 1A
`
`54]
`
`METHOD FOR AUTOMATIC
`INSTALLATION OF A MODEM WHEREIN
`UNIQUE IDENTIFICATION FOR THE
`DEVICE REGISTRY IS COMPUTED FROM
`MODEM RESPONSES TO QUERIES BY THE
`SYSTEM
`
`[75]
`
`Inventor: Christopher P. Caputo, Redmond,
`Wash.
`
`[73]
`
`Assignee: Microsoft Corporation, Redmond,
`Wash.
`
`[21]
`
`Appl. No.: 486,959
`
`[22]
`
`Filed:
`
`Jun. 7, 1995
`
`[63]
`
`151]
`[52]
`
`[58]
`
`[56]
`
`Related U.S. Application Data
`
`Continuation of Ser. No. 356,059, Dec. 13, 1994,
`Tint, C16 ocescssscsssesesesessssssves GO6E 9/00; GOGF 13/10
`US. Ce cesssssssessssneseee 395/830; 395/421.06; 395/281;
`395/828; 395/829; 395/866; 395/882; 395/884:
`395/898; 364/284.2; 364/280.9; 364/947.5;
`- 364/951.1
`Field of Searedy wiccccccsccscsccseeesseeneee 364/238.5, 929,
`364/222.2, 280.2, 284, 231; 395/828, 835,
`836, 882, 883, 413, 419, 421.06, 421.07,
`884, 892
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,038,320
`5,202,899
`5,202,963
`5,450,530
`5,517,646
`5,530,887
`5,530,895
`5,548,759
`5,594,873
`
`
`
`8/1991 Heath et al.
`4/1993 Walsh.....
`
`4/1993 Zelley....
`..
`9/1995 Snyderet al.
`
`5/1996 Piccirillo et al.
`
`...
`6/1996 Harperet al.
`6/1996 Enstrom .
`
`8/1996 Lipe ...
`1/1997 Garrett
`
`395/830
`375/222
`395/883
`375/220
`395/651
`395/800
`395/829
`395/611
`.sssesesesseeunecnsnseereese 395/281
`
`OTHER PUBLICATIONS
`
`IBM Technical Disclosure Bulletin, vol. 29, No.7, p. 2988
`Dec. 1986.
`
`Primary Examiner—Thomas C. Lee
`Assistant Examiner—Ki §. Kim
`Attorney, Agent, or Firm—Klarquist Sparkman Campbell
`Leigh & Whinston
`
`[57]
`
`ABSTRACT
`
`A device independent modem interface employs a call
`control and data transfer application programming interface
`for application programs to access a modem in a device
`independent fashion. A universal modem driver reads device
`specific information from a registry to issue specific control
`commands to a modem.The universal modem driver sepa-
`rates command mode and data mode of the modem trans-
`
`parently to the application. The modem interface also
`includes support for detecting a modem and for loading
`device specific information into the registry based on the
`modem identification.
`
`3,754,217
`
`8/1973 Bell et al.
`
`..csssssssssecerserssserees 395/284
`
`2¢ Claims, 5 Drawing Sheets
`
`START.
`
`HECK COM PORT,
`
`FORMODEM
`
`
`6
`TRY
`NEXT
`THERE AMODEM
`
`AGREES
`BAUD RATE
`PRESENT?
`402
`YES
`INITIALIZE
`PROGRAM
`CRE
`BUILD
`CR
`TABLE
`
`108
`
`110
`
`goon 146
`
`YES
`SEND QUERY
`
`READ RESPONSE
`
`112
`
`114
`
`416
`
`PERFORM CRC
`148
`
`420 oe 32-BIT CRC
`
`
`
`1S QUERY
`ATIO
`NO
`
`ISOueRY
`
`~~YES,,
`418
`
`|USE THEFRSTWORD
`OOF
`FIRST
`LIN
`124
`SE
`toe
`FIRST UNE
`128
`
`,
`
`ES
`
`4 192 NO
`
`GENERIC 1D.
`END
`
`YES,,
`[STORE SIRING UPTO
`STRING
`126
`>
`THISECINTONLY
`ON|GEBALL
`NO
`—
`
`@
`
`Google Exhibit 1048
`Google v. VirtaMove
`
`Google Exhibit 1048
`Google v. VirtaMove
`
`
`
`U.S. Patent
`
`Oct. 7, 1997
`
`Sheet 1 of 5
`
`5,675,331
`
`re
`
`
`
`‘JOVIONLUNICd
`
`‘ANWVOUD)
`
`(D3
`
`9¢
`
`FOIALNdLAO
`
`
`
`AFIINIid“AV1dSIO)
`
`(15
`
`FOVINdNi “
`
`| | | i | | | i I | I | I | | | | I | I I I I i J
`
`reSadLsilOad
`
`TOYLNOOD
`
`LINN
`
`
`
`WALSASAYOWAW
`
`AYOWAW
`
`NIVW
`
`AWVONOOAS
`
`JOVEOLS
`
`
`
`
`
`
`
`
`US. Patent
`
`Oct. 7, 1997
`
`Sheet 2 of 5
`
`5,675,831
`
`9S
`
`TZ
`
`OLOXA'WWODA
`
`08
`
`9L
`
`
`
`QXAIVIdASQXA'W3I0OWINNtl
`
`0S—>
`
`09
`
`asAldd
`
`NOLLYOINNWWOD8gTddV1
`
`v9
`
`—_—_———oeeeeol
`
`wo
`vs)
`
`a+
`mw
`
`
`
`SNOILVOIIddVTWALYIA
`
`ANIHOVW
`
`
`
`
`
`US. Patent
`
`——s_
`
`Oct. 7, 1997
`
`Sheet 3 of 5
`
`5,675,831
`
`FIG.3
`
`VCOMM.VXD
`
`
`
`ENUMERATORS CONFIGURATIONMANAGER
`
`
`
`
`94
`
`98
`
`
`
`U.S. Patent
`
`Oct. 7, 1997
`
`Sheet 4 of 5
`
`5,675,831
`
`FIG. 4A
`
`CHECK COM PORT
`FOR MODEM
`
`
` Ox}
`
`YES
`
`INITIALIZE
`CRC PROGRAM
`
`
`
`TRY NEXT
`BAUD RATE
`
`BUILD
`TABLE
`
`CR
`
`110
`
`QUERY ON
`LIST
`¢
`
`NO
`
`Y
`
`ES
`
`SEND QUERY
`
`READ RESPONSE
`
`IS QUERY
`ATI4 2
`
`USE THE ENTIRE
`FIRSTLINE
`
`
`og
`
`STRING
`use
`NO
`
`150
`
`USE THE FIRST WORD
`OFFIRST LINE
`
`
`
`
`STORE SIRING UPTO
`LIS BOINTONY
`
`146
`
`PERFORM CRC
`148
`
`.
`
`CONVERT 32-BIT CRC
`
`YES
`
`PATCH
`FOR| De
`152 NO
`
`CONSTRUCT
`
` GENERIC LD.
`
`END
`
`
`
`US. Patent
`
`Oct. 7, 1997
`
`Sheet 5 of 5
`
`5,675,831
`
`
`
`STRING ON
`IS
`THE INCLUDE
`
`LIST?
`
`YES
`
`NO
`
`130
`
`USE STRING
`COMPLETELY
`
`132
`
`SKIP
`STRING
`
`136
`
`140}=CLEANSE HEX
`LETTERS
`FIG. 4B
`
`142—.__ICLEANSE LETTERS BY
`THEMSELVES
`
`144 —_} CLEANSE PERIODS,
`LETTERS, AND
`OMMAS
`
`
`
`
`
`
`
`
`5,675,831
`
`1
`METHOD FOR AUTOMATIC
`INSTALLATION OF A MODEM WHEREIN
`UNIQUE IDENTIFICATION FOR THE
`DEVICE REGISTRY IS COMPUTED FROM
`MODEM RESPONSES TO QUERIES BY THE
`SYSTEM
`
`RELATED APPLICATION DATA
`
`This is a continuation of patent application Ser. No.
`08/356,059 to Williams, Caputo, and Laepple entitled
`“DEVICE INDEPENDENT MODEM INTERFACE”filed
`Dec. 13, 1994 still pending, which is hereby incorporated by
`reference.
`
`FIELD OF THE INVENTION
`
`The invention relates to computer communication using a
`modem, and more specifically, to a modem interface in a
`computer system.
`
`BACKGROUND OF THE INVENTION
`
`An increasing number of application programs
`(“applications”) in today’s personal computers must interact
`with a modem to support remote data communication fea-
`tures. Some examples of applications where access to a
`modem may be required include remote network access,
`bulletin board services, fax modem, electronic mail! (e-mail)
`programs etc. Even applications such as word processing
`and spread sheet programs, for example, may include soft-
`ware for controlling a modem to transfer files to other
`computers. As access to a modem becomes an important
`feature of more applications, application developers have
`had to tackle the problem of developing code to support
`modem communication in their applications.
`Thetask of controlling a modem complicates application
`development significantly. To control a modem, the appli-
`cation must understand the command set of the particular
`brand and version of modem connected to the computer.
`Many modems use commands from the Hayes Standard AT
`Command Set established by the Hayes Microcomputer
`Products, Inc. of Norcross, Ga. The AT command set
`includes a number of commandsfor controlling and config-
`uring a modem that are well known and widely used in the
`computer industry. Each brand or version of modem,
`however, typically understands a unique combination of
`commands including some standard AT commands and
`additional commands to support new features. As a result,
`the command set supported in a modem can vary substan-
`tially.
`:
`To complicate matters further, there are number of pro-
`tocols for modems and facsimile transmission established by
`the Comite Consultatif International de Telegraphie et Tele-
`phonie (CCITT), and the International Telecommunications
`Union—Telecommunications Standardization Sector
`Q1IU—T). The application developer must be familiar with
`the AT commandsas well as the modem protocols so that the
`application can properly control a modem.
`With advances in modem technology, it is very difficult
`for application developers to create applications that will
`keep pace with changes in modem features. Each new
`feature is often supported with one or more new commands,
`which may vary with modem brands. In making an appli-
`cation compatible with a range of different modem features,
`the portion of the application devoted to modem support can
`become very complex. The development of this code obvi-
`ously detracts from developmentof the core functions of an
`
`5
`
`2
`application. Even if a developer does a fairly thorough job
`of supporting current modem features, it is very likely that
`the modem support in an application will not support more
`advanced features of tomorrow’s version of modems. After
`an application is released commercially, it is not possible to
`modify it easily to add support for advanced features.
`Besides complicating application development, placing
`modem control
`in a number of applications causes a
`resource contention problem. When each application pro-
`9 Vides its own support for modem control,it is difficult,if not
`impossible, for applications to share the modem resource.
`Typically in these circumstances, the application that first
`gains control of the modem maintains control until it vol-
`untarily relinquishes control. As a result, the application
`controlling the modem precludes other applications from
`participating in a telephonecall. At best, an interface to the
`serial port driver can provide some contention management
`in this situation. This contention management is rather
`limited, however.
`An additional drawback of existing modem support soft-
`ware is that they make modemsdifficult to install in the
`computer system. Applications can be set up to control more
`than one modem type, but they typically require additional
`information from the user to properly set up the application
`for communication with a particular modem type. It would
`be much easier for a user if the installation of modem
`specific information could be performed automatically.
`SUMMARY OF THE INVENTION
`
`15
`
`20
`
`To address the limitations and drawbacks of existing
`modem control systems, the invention provides a device
`independent modem interface. The invention includes a
`method for providing the device independentinterface to a
`modem for applications running in a computer system.
`According to an embodiment of the invention, the inven-
`tion comprises a device independent modem interface
`included as part of a computer operating system. The
`interface includes a call control module for receiving call
`control commands and a communication driver for receiving
`data transfer commands from applications. Applications
`send call control and data transfer commands to the call
`control module and communication driver, respectively, in a
`device independent fashion. A universal modem driver pro-
`vides device specific commands to a modem in response to
`instructions from the call control module. To understand the
`particular capabilities of a specific modem, the universal
`modem driver reads modem specific information from a
`registry data store. Using this information, the universal
`modem driver is able to use device specific commandsfor a
`number of modem types.
`The universal modem driver separates the command
`mode and data mode of the modem transparently to the
`application. When the modem is in command mode, the
`universal modem driver transfers call control commands to
`the modem. When the modem is in data mode,the universal
`modem driver transfers data YO commandsfrom the com-
`munication driver to the modem.
`The invention provides additional installation features.
`One embodiment of the invention includes a class installer
`module to load device specific control information into the
`registry data store. Some modem devices identify them-
`selves to an enumerator detection module loaded for a bus
`in the computer system. During installation, a device iden-
`tification can then be passed to the class installer module so
`that it can load the proper device information.
`In situations where the modem cannot identify itself,
`another embodimentof the invention provides a method for
`
`35
`
`45
`
`50
`
`55
`
`65
`
`
`
`5,675,831
`
`3
`detecting the modem type. This method includes issuing a
`series of queries to a modem, and then cleansing the
`modem’s responseso that device specific information can be
`derived. The response data can then be converted to a device
`identification, which is used to load device specific infor-
`mation.
`
`The various embodimentsof the invention provide several
`advantages over existing communication systems for com-
`puters. The invention makes the application developer’s job
`much easier. The developer can use a simple, common
`interface to talk. to a wide variety of devices. In one
`embodiment of the invention, the control of the modem may
`be broken into levels: at
`the top level, a control and
`communication application programming interface provides
`a device independent interface to a modem;at a lower level
`auniversal modem driver cantranslate high level commands
`to commands for a specific type of modem,and finally at a
`lower level, a port driver can translate modem data and
`commands for a specific type of port.
`After removing the task of modem control from the
`application, a modem control interface can perform resource
`contention more effectively.
`The invention makes the user’s job of installing and
`configuring a modem mucheasier. The user can simply plug
`in a modem, and the system will take care of the rest.
`The universal modem driver eliminates the need for
`installing separate drivers for different types of modems.
`With a universal modem driver, modem specific information
`need only be loaded as needed. Theinstallation of modem
`information can be performed without requiring the user to
`know what type of driver needs to be installed or how to
`install it.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`FIG. 1 is a block diagram of a computer system in which
`an embodimentof the invention is implemented.
`FIG. 2 is a block diagram illustrating the architecture of
`an embodiment of the invention within a computer system.
`FIG. 3 is a block diagram illustrating the installer archi-
`tecture according to one aspect of an embodiment the
`invention.
`
`20
`
`25
`
`30
`
`35
`
`40
`
`FIGS. 4A and 4B together illustrate the steps performed
`in the installation subsystem to detect the type of modem.
`
`45
`
`DETAILED DESCRIPTION
`
`4
`programs. Main memory 38 also includes video display
`memory for displaying images through a display device.
`Input device 24 and output device 26 are typically periph-
`eral devices connected by bus structure 32 to computer 22.
`Input device 24 may be a keyboard, modem, pointing
`device, pen, or other device for providing input data to the
`computer. Output device 26 may be a display device, printer,
`sound device or other device for providing output data from
`the computer.
`A modem 56 can serve as both an input and output device
`24, 26. As an output device,
`the modem may receive
`commands and data from memory under the control of the
`programmed CPU. As an input device, the modem 56 can
`receive fax or computer data and transfer this data to
`memory for further processing or storage. The modem 56
`can support data, fax, or voice calls, or even a combination
`of these types in a single call. If the computer system is
`coupled to a telephone, the computer can initiate a voice call
`by dialing the telephone number. The caller wouldthen carry
`on voice communication through the handset of the phone
`once communication is established. For switched voice and
`data communication,
`the modem 56 can initiate a voice
`communication and establish communication between com-
`puters. It should be understood by those of ordinary skill in
`the industry that many modes of telephone communication
`through a modem are possible.
`The process of physically transferring commands and data
`to the modem varies depending on the type of modem.
`Various standard modem configurations exist and are well-
`known in the field. These configurations include, for
`example, an internal or external modem, or a PCMCIA
`(Personal Computer Memory Card International
`Association) card connection popular in notebook comput-
`ers. An “internal” modem is coupled to the computer
`through a bus structure 32 such as an Industry Standard
`Architecture (ISA) bus, Expanded Industry Standard Archi-
`tecture (EISA) bus, or Micro Channel Architecture (MCA)
`bus. A modem can also be coupled to the bus structure 32 of
`the computer through a PCMCIA port. An “external”
`modem can be coupled to the bus structure 32 of the
`computer through an RS-232serial port or a parallel port. As
`an additional example, a modem may be coupledto a local
`bus structure according to the PCI standard (Peripheral
`ComponentInterconnect, a local bus standard maintained by
`Peripheral ComponentInterconnect Special Interest Group).
`Manyother variations are possible and are well-known to
`those of skill in the art.
`
`FIG. 1 is a block diagram of computer system 20 in which
`an embodiment of the invention is implemented. Computer
`system 20 includes as its basic elements a computer 22,
`input device 24 and output device 26.
`Computer 22 generally includes a central processing unit
`(CPU) 28 and a memory system 30 that communicate
`through a bus structure 32. CPU 28 includes an arithmetic
`logic unit (ALU) 33 for performing computations, registers
`34 for temporary storage of data and instructions and a
`control unit 36 for controlling the operation of computer
`system 20 in response to instructions from a computer
`program. such as an application or an operating system.
`Memory system 30 generally includes high-speed main
`memory 38 in the form of a medium such as random access
`memory (RAM) and read only memory (ROM) semicon-
`ductor devices and secondary storage 40 in the form of a
`medium such as floppy disks, hard disks, tape, CD-ROM,
`etc. and other devices that use optical or magnetic recording
`material. Main memory 38 stores programs such as a com-
`puter’s operating system and currently running application
`
`50
`
`55
`
`60
`
`65
`
`It should be understood that FIG. 1 is a block diagram
`illustrating the basic elements of a general purpose computer
`system; the figure is not intended to illustrate a specific
`architecture for a computer system 20. For example, no
`particular bus structure is shown because various bus struc-
`tures knownin the field of computer design may be used to
`interconnect the elements of the computer system in a
`number of ways, as desired. CPU 28 may be comprised of
`a discrete ALU 33, registers 34 and control unit 36 or may
`be a single device in which these parts of the CPU are
`integrated together, such as in a microprocessor. Moreover,
`the numberand arrangementof the elements of the computer
`system may be varied from what is shown and described in
`ways known in the art (ie., multiple CPUs, client-server
`systems, computer networking,etc.).
`FIG. 2 is a block diagram illustrating the architecture of
`an embodiment of the invention within a computer system.
`This architecture depicts a modem subsystem that provides
`communication applications with hardware independent
`
`
`
`5,675,831
`
`5
`access to a modeminstalled in the computer system 20. This
`particular diagram depicts the specific architecture of a
`modem subsystem in the Windows 95 operating system
`developed by Microsoft Corporation of Redmond, Wash. In
`the architecture of the Windows 95 operating system, there
`are number of levels including ring 3 (50) where virtual
`machines such as DOS applications reside, and ring 0 (52)
`where virtual devices reside. While this diagram illustrates
`a specific example of a modem subsystem in the Windows
`95 environment, it should be understood that the invention
`is not limited to this particular implementation. For example,
`the architecture of the modem subsystem can vary depend-
`ing upon the type of CPU for which the operating system is
`designed. Many variations to the structure of the modem
`subsystem are possible without departing from the scope of
`the invention.
`
`The modem subsystem provides support for one or more
`communication applications 54 requiring access to a modem
`56. Communication applications 54 include remote network
`access, fax applications, e-mail applications, bulletin board
`service applications, to name a few. These and a variety of
`other applications require access to a modem 56 to control
`the modem and perform data I/O through the modem.
`The Telephony Application Programming Interface
`(TAPT module 58 (or “call controller”) provides a device
`independent interface for applications to control a modem
`56. In this implementation, the TAPI module 58 is a dynamic
`linked library (DLL). Called by applications 54 through
`TAPI 60, the TAPI module 58 supports such modem control
`functions such as dialing an outbound call, waiting for
`inbound calls of a particular type, answering inbound calls,
`hanging up current calls, etc. Additional documentation of
`the Telephony Application Programming Interface is pro-
`vided in patent application Ser. No. 08/356,059 to Williams,
`Caputo, and Laepple entitled “DEVICE.INDEPENDENT
`MODEM INTERFACE”filed Dec. 13, 1994, which is
`incorporated by reference above.
`The TAPT module 58 routes application function calls to
`a service provider 62, which performs device specific con-
`trol. In this modem subsystem,the service provider 62 is the
`unimodem. service provider 62. Additional documentation
`on service providers is provided in patent application Ser.
`No. 08/356,059 to Williams, Caputo, and Laepple entitled
`“DEVICE INDEPENDENT MODEM INTERFACE?”filed
`Dec. 13, 1994, which is hereby incorporated by reference.
`The unimodem service provider (unimodem.tsp) 62 is
`also a DLL implementing functions to perform control of a
`modem device when called by the TAPT module 58 through
`a telephony service provider interface 64. These modem
`control functions include dialing, answering, hanging-up,
`etc. The unimodem service provider 62 may also be called
`by applications to display a dialog window, allowing the
`user to configure modem parameters.
`Though data I/O could be incorporated into the call
`control API,
`this modem subsystem provides a separate
`communication interface for this purpose. In the Windows
`95 operating system, applications make function calls to a
`communication application programming interface 66
`(COMM APDto configure a modem 56 and to perform data
`YO through it. Additional information about the communi-
`cations application programming interface is provided in
`patent application Ser. No. 08/356,059 to Williams, Caputo,
`and Laepple entitled “DEVICE INDEPENDENT MODEM
`INTERFACE”filed Dec. 13, 1994, which is incorporated by
`teference above.
`
`The modules supporting the COMM API66in the modem
`subsystem include the communication driver 68 and the
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`355
`
`65
`
`6
`virtual communication driver (VWCOMM)70. The commu-
`nication driver 68 is a ring 3 level module,
`including
`functions to allow applications to open, read from, and write
`to communication devices. The communication driver 68
`supports the COMM API 66, allowing communication
`applications to use a modems in a device independent
`fashion. In the Windows 95 Operating System, the commu-
`nication driver is part of the Win32 kernel. It should be
`understood, however, that this is only one variation of the
`invention, and the communication driver can be imple-
`mented in a variety of conventional ways knownto those of
`skill in the art.
`
`VCOMM 70is a ring 9 level virtual device that manages
`all access to communication resources in the system. These
`“communication resources” include physical or logical
`devices that provide a single asynchronous data stream.
`Serial ports, parallel ports, and modems are examples of
`communication resources.
`The communication driver 68 communicates with
`YCOMMbycalling functions (72) provided by VCOMM.
`VYCOMMserves as a port independent interface to the
`communication resources in the computer system. For more
`information on VCOMM, see the documentation relating to
`VCOMMprovided in patent application Ser. No. 08/356,
`059 to Williams, Caputo, and Laepple entitled “DEVICE
`INDEPENDENT MODEM INTERFACE”filed Dec. 13,
`1994, which is incorporated by reference above.
`The COMM API 66 includes data I/O,user interface, and
`configuration functions. Applicationscall data 1/O functions
`to send and receive data through a modem device 56.
`Through user interface functions, a user can select preferred
`operating characteristics of a modem. A dialog box can
`include modem parameters such as speaker on/off, baud rate,
`compression & error correction protocols, etc. Applications
`call configuration functions to determine or change preferred
`operating characteristics of amodem 56. In response to these
`configuration functions, the communication driver 68 routes
`configuration function calls to a universal modem device
`driver (unimodem device driver or unimodem.vxd) 74
`through VCOMM 70. The functions in the COMM API, and
`supported. in the communication driver 68, are documented
`in patent application Ser. No. 08/356,059 to Williams,
`Caputo, and Laepple entitled “DEVICE INDEPENDENT
`MODEM INTERFACE”filed Dec. 13, 1994, which is
`incorporated by reference above.
`VCOMM 70 is a port-independent interface to the com-
`munication driver 68 and the unimodem device driver 74.
`VCOMM 70 provides access to port drivers to carry out
`hardware operations on communication resources. Port driv-
`ers use VCOMM 70 services to register themselves and
`control access to communications hardware. In addition to
`these services, VCOMM 7¢ provides client virtual device
`services to enable virtual devices to use any communication
`resource for which a port driver is installed. Specifically,
`YCOMM 790 provides services for opening and closing a
`communications resource, configuring a communications
`resource, reading from and writing to a communication
`resource, processing communication events, and calling a
`port driver’s extended functions.
`Port drivers include device specific code to enable appli-
`cations to communicate with the specific physical or logical
`device attached to a port. An example of a port driver is the
`serial port driver (serial.vxd) 76 shown in FIG. 2. The serial
`port driver 76 enables the modem subsystem to communi-
`cate with a serial communication device such as amodem 56
`through a serial port 71. This particular serial port driver 76
`
`
`
`5,675,831
`
`7
`is provided with the Windows Operating System, and its
`operation is well known. Since a modem 56 may be coupled.
`to a computer in many different configurations, it should be
`understood that an alternative port driver could also be used.
`In this implementation, port drivers can be loaded in
`memory at boot time or upon demand.
`As an example of on demand loading, port drivers that
`comply with the Plug and Play Architecture in the Windows
`95 operating system are loaded when a VCOMM client
`attempts to open a port that the driver supports. The Plug and.
`Play Architecture is an installation system designed for
`Windows operating system environments developed by
`Microsoft Corporation. Relevant portions of this architec-
`ture are described in detail with reference to the installation
`subsystem of FIG. 3. Additional documentation of the Plug
`and Play architecture is provided in patent application Ser.
`No. 08/356,059 to Williams, Caputo, and Laepple entitled
`“DEVICE INDEPENDENT MODEM INTERFACE?”filed
`Dec. 13, 1994, which is incorporated by reference above.
`In the modem subsystem illustrated in FIG. 2, a universal
`modem driver provides an interface for both call control
`functions from TAPI 60 and data transmission functions
`from the COMM API 66. The universal modem driver
`includes the telephony service provider called the unimodem
`service provider 62, and a VCOMM port driver called the
`unimodem device driver (unimodem.vxd) 74. The unimo-
`dem service provider 62 communicates with the unimodem
`device driver 74 by making calls to functions (78) imple-
`mented in a protected-mode interface of the unimodem
`device driver. The interface between the unimodem service
`provider 62 and the unimodem device driver 74 can be
`implemented in other ways using conventional techniques
`known to those of skill in the art.
`The unimodem device driver 74 does not make direct
`calls to the modem 56, but rather, makes calls (80) back to
`VCOMM 79to talk to the modem 56. By using VCOMM 70
`as an interface to the port drivers, the unimodem device
`driver 74 is port independent. In this implementation, the
`specific port shownis a serial port driver (serial.vxd) 76, but
`the unimodem device driver 74 could also control a modem
`56 coupled to any type ofport.
`The unimodem device driver 74 controls all communica-
`tion with the modem 56. To accomplish this, call control as
`well as configuration and data I/O pass through the unimo-
`dem device driver 74. For call control,
`the unimodem
`service provider 62 calls the unimodem device driver 74 to
`initiate modem control commandssuchas dial, answer, hang
`up, etc. The unimodem service provider 62 passes these
`control calls to the unimodem device driver 74 through
`VCOMM using interface 78. In response, the unimodem
`device driver 74 translates these call control functions into
`a format compatible with the type of modem 56 coupled to
`the computer system 20. Making calls (80) back to VCOMM
`70, the unimodem device driver 74 then transfers modem
`commandsto the serial port driver 76 through VCOMM 70
`in a port independent fashion.
`For data transfer functions from the COMM API, the
`unimodem device driver 74 monitors data I/O calls. Data /O
`calls originate when an application 54 calls the COMM API
`66. The communication driver 68 passes these calls to the
`unimodem device driver 74 through VCOMM 70. The
`unimodem device driver 74 then passes these commands
`back through VCOMM 70 to the port driver 76 where the
`modem 56 is attached.
`The unimodem device driver 74 separates the command
`and data modes of the modem 56 transparently. When the
`
`8
`modem 56 is in command mode, the unimodem device
`driver 74 passes modem control commandsto the modem 56
`through the port driver 76. Conversely, when the modem 56
`is in data mode, the unimodem device driver 74 passes data
`TV/O commands to the modem 56 through the port driver 76.
`The unimodem device driver 74 switches between command
`and data mode transparently relative to the service provider
`62 and the application 54. “Transparent” control meansthat
`the unimodem service provider 62 is unaware that data is
`being sent to the modem 56 during data mode, and the
`application 54 is unaware that call control commandsare
`being sent to the modem 56 during command mode.
`When the modem is command mode, COMM API func-
`tions relating to configuring and monitoring are processed.
`For example, if the application 54 madea call in the COMM
`API 66 so that it will be notified when 10 bytes of data are
`received, the bytes received from the modem 56 in com-
`mand mode will not be counted. As soon as the modem 56
`is switched to data mode and 10 bytes are received, the
`application 54 will be notified.
`When the modem is in command mode, the unimodem
`device driver does not process data I/O coands from appli-
`cations. The unimodem device driver can, however, process
`modem configuration calls from the COMM API and some
`escape functions relating to call control. These escape func-
`tions include functions such as initialize, dial, and listen. The
`initialize escapeinitializes the modemto the propersettings.
`The unimodem device driver reports when initialization is
`complete by notifying the TAPI module. The dial escape
`requests the unimodem device driver to dial a number. The
`unimodem device driver reports when the modem connects
`and when it fails to connect. The listen escape asks the
`unimodem device driver to answer incomingcalls.
`The universal modem driver 74 is capable of supporting
`a variety of modem types. To support a particular modem 56,
`there is an installation subsystem that loads device specific
`information into the registry. Once this information is
`loaded, the universal modem driver can communicate with
`a modem using device specific commands. This installation
`subsystem is described below with reference to FIG. 3.
`FIG. 3 is a block diagram illustrating the installation
`subsystem architecture according to an embodimentof the
`invention. The installation subsystem includes a configura-
`tion manager 90, enumerators 92, a class installer 94, a
`device loader, and a registry data store 96. VCOMM 70, the
`virtual device discussed above, is the device loader in this
`subsystem.
`The configuration manager module 90 is used to manage
`the communication resourcesin the system including physi-
`cal devices such as modem hardware and logical devices
`such as communication ports. In the Windows operating
`system, the configuration manager 90 is a virtual device
`residing at ring 0. Though the specific location and manner
`of loading is not critical to the invention, the configuration
`manager 90 in this implementation is loaded at system
`start-up by the operating system. When the computer system
`20 is turned on, the CPU performs its start-up routines.
`During this phase, the CPU loads the operating system,
`including the configuration manager 90. The configuration
`manager 90 learns about the system configuration by reading
`information in a registry 96, a data structure including
`configuration information. The configuration manager 90
`loads enumerators to assist in identifying modem devices
`coupled to the computer system 20. The configuration
`manager 90 also performs configuration functions such as
`checking for resource confiicts and reporting information
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`35
`
`65
`
`
`
`5,675,831
`
`9
`about devices in the system to a device loader, which in this
`case is VCOMM 70.If the configuration manager 90 deter-
`mines that a new device has been added to the system
`configuration, it calls the class installer 94.to load informa-
`tion about the new device into the registry 96.
`Enumerators 92 are detecti