throbber
United States Patent
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket