`Ahmad
`
`I lllll llllllll Ill lllll lllll lllll lllll lllll 111111111111111111111111111111111
`US005925127 A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,925,127
`Jul. 20, 1999
`
`[54] METHOD AND SYSTEM FOR MONITORING
`THE USE OF RENTED SOFTWARE
`
`5,758,069
`5,890,664
`
`5/1998 Olsen ................................. 396/187.01
`................................ 380/4
`8/1998 Coley et al.
`
`[75]
`
`Inventor: Arshad Ahmad, Bellevue, Wash.
`
`[73] Assignee: Microsoft Corporation, Redmond,
`Wash.
`
`[21] Appl. No.: 08/831,801
`
`[22] Filed:
`
`Apr. 9, 1997
`
`Related U.S. Application Data
`
`Int. Cl.6
`...................................................... G06F 11/00
`[51]
`[52] U.S. Cl. .............................................................. 713/200
`[58] Field of Search ............................... 395/182.01, 186,
`395/188.01, 187.01; 380/3, 9, 23, 25; 707/203,
`9, 10; 702/203, 9, 10
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,924,378
`5,375,206
`5,438,508
`5,499,340
`5,671,412
`5,708,709
`5,717,604
`5,745,879
`
`.. ... ... ... ... .... ... ... 364/200
`5 /1990 Hershey et al.
`12/1994 Hunter et al. .. ... ... ... ... .... ... ... ... 395 /200
`8/1995 Wyman ................................... 364/401
`3/1996 Barritz ............................... 395/184.01
`9 /1997 Christiano ... ... .... ... ... ... ... ... .... .. 395 /615
`1/1998 Rose ............................................ 380/4
`2/1998 Wiggens ............................. 364/514 C
`4/1998 Wyman ....................................... 705/1
`
`OTHER PUBLICATIONS
`
`Kramer, Matt, "For Rent: Apps Over Net," PC Week, Apr.
`21, 1997, p. 16.
`
`Primary Examiner-Joseph E. Palys
`Attorney, Agent, or Firm-Jones & Askew, LLP
`
`[57]
`
`ABSTRACT
`
`A method and system for monitoring the use of a rented
`software program module. A rented software program mod(cid:173)
`ule is downloaded from an Internet site operated by an
`authorized software rental service provider along with a
`Check-in/Check-out module and a Software Monitor mod(cid:173)
`ule. The Check-in/Check-out module provides required
`licensing information for the rented software program mod(cid:173)
`ule to the Software Monitor module. The Software Monitor
`module monitors use of the rented software program module
`while it is in use by the user. Particularly, the Software
`Monitor prevents use of the rented software program module
`after the expiration of the licensed usage time or licensed
`number of uses. The Software Monitor prevents unautho(cid:173)
`rized copying of the software program module. The desired
`software program module may be rented on a pay-per-use
`basis.
`
`24 Claims, 6 Drawing Sheets
`
`COMPUTER 20 )
`
`,-------------1 _________ _
`------,
`I
`I
`I
`I
`I
`
`120
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`L _________ _
`
`140
`
`APPID +DEFAULT CID+ LICENSE INFO
`
`CICO
`
`SM GENERA TED CID
`
`SOFI'WARE
`MONITOR
`
`LICENSE INFO
`
`PROGRAM
`MODULE
`
`100
`
`-------------------
`
`IPR2016-01271
`UNIFIED 1029
`
`
`
`.....::.
`N
`~
`....
`Ul
`N
`\C
`....
`Ul
`
`O'I
`
`'"""' 0 .....,
`~ .....
`rF.J. =(cid:173)~
`
`~ F-
`
`\C
`\C
`'"""'
`\C
`~=
`N
`
`~ = ......
`~ ......
`~
`•
`\JJ.
`d •
`
`l LOCAL AREA
`'
`I L ________ l
`I
`I
`I
`
`47
`
`\
`
`MONITOR
`\
`
`'\
`
`_fr."-') 1
`
`1· =r-
`
`I
`
`1
`
`I
`I
`I
`I
`
`-
`
`20
`
`......... ..
`
`............. ..
`
`APPLICATION
`
`PROGRAMS
`
`
`
`3€>
`
`...............................
`
`COMPUTER
`
`REMOTE
`
`49
`
`52
`
`ii iii iii iii I B
`KEYBOARD
`
`DATA
`
`42
`
`·.
`
`I NETWORK
`
`INTERFACE
`NETWORK
`
`INTERFACE
`SERIAL PORT
`
`51
`
`4&
`
`------;;-NETWORK
`1 WIDE AREA
`r--_,
`I
`I
`
`I
`1
`I
`
`53
`
`I
`
`34
`
`33
`
`INTERFACE
`
`DISK
`
`OPTICAL
`
`SYSTEM BUS
`
`I
`
`ADAPTER I
`VIDEO
`
`( 48
`
`"l
`
`PROGRAM
`
`MODULES
`PROGRAM
`
`OTHER
`
`37 38~ .......... .
`
`················· ... 29~31
`··.
`
`(@)
`·:...::: .. ::-\ L~ \o t
`
`·· .... 28
`
`27
`
`OPERATING I APPLICATION
`................. ·
`.. ·
`...
`. ··
`..
`·"
`.... ·····
`
`PROGRAMS
`
`SYSTEM
`
`
`
`3€>
`
`35
`
`....... ·
`.. ·
`.·
`
`INTERFACE
`DISK DRIVE
`MAGNETIC
`
`INTERFACE
`
`DRIVE
`
`HARD DISK
`
`____ ....,
`
`23
`
`UNIT
`
`PROCESSING
`
`I
`
`I
`
`22 c21
`
`------
`
`PROGRAM
`
`------~
`
`------
`
`DATA
`
`[-
`
`PROGRAM MODULES
`37
`
`OTHER
`
`PROGRAMS
`APPLICATION 36
`
`SYSTEM
`
`OPERATING 35
`
`~1
`
`(RAM) 25
`
`BIOS
`
`1
`
`--------
`
`(ROM) ~
`SYSTEM MEMORY
`
`-----------------------~
`
`-
`
`-
`
`-
`
`-
`
`-
`
`-
`
`r: --
`
`
`
`.....::.
`N
`~
`....
`Ul
`N
`\C
`....
`Ul
`
`O'I
`0 .....,
`N
`~ .....
`'Jl =(cid:173)~
`
`~ F-
`
`\C
`\C
`""""
`\C
`~=
`N
`
`~ = ......
`
`~ ......
`~
`•
`\JJ.
`d •
`
`~
`
`60
`
`I
`__ If, .---i 2
`
`Lil-
`
`I
`
`88n11
`
`• ••
`
`88b'
`
`•••
`
`STATION
`••• END USER
`
`STATION
`END-USER
`
`COMPUTER
`PERSONAL
`
`70n
`
`POINT
`ACCESS
`
`NETWORK
`
`~-----
`
`•
`•
`•
`
`i----~~~-___, NETWORK
`
`POINT
`ACCESS
`
`• • • • •
`85c
`
`85b
`
`88n
`
`20
`
`POINT OF PRESENCE
`
`LOCAL ACCESS PROVIDER
`
`BACKBONE NETWORK
`
`65n
`
`GSb
`
`• • •
`
`BACKBONE NETWORK
`
`BACKBONE NETWORK
`
`700J
`
`POINT
`ACCESS
`
`NETWORK
`
`65C>.J
`
`(GOVERNMENT)
`(UNIVERSITY) ••• WEB SERVER
`
`SERVER
`
`WEB
`
`• • •
`
`SERVER
`
`WEB
`
`SERVER
`RENTAL
`
`75n
`
`75b
`
`raon I
`
`BOb
`
`L-------________ _J
`I
`I
`I
`I
`I
`I
`I WEB SERVER
`I
`I 80o.;
`i1NTERNET SITE (RENTAL SERVICE PROVIDER)-1JSo.,
`
`
`
`U.S. Patent
`
`Jul. 20, 1999
`
`Sheet 3 of 6
`
`5,925,127
`
`750.,
`
`,---_':=1_ ------------, I
`
`~o
`
`60
`
`USER'S
`COMPUI'ER
`
`i.--
`
`~
`
`~
`
`I 800..\
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`
`I 3
`LA·
`I Uj-
`
`(95
`
`SOITWARE
`MONITOR
`
`140
`-
`
`CICO
`
`120
`-
`
`PROGRAM
`MODULE
`
`100
`-
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`l
`I
`I
`I
`I
`L - - - - - - - - - - - - ______ j
`
`
`
`U.S. Patent
`
`Jul. 20, 1999
`
`Sheet 4 of 6
`
`5,925,127
`
`COMPUTER 20 ~
`
`, _____________ l _____________ _
`I
`
`120
`
`140
`
`APPID +DEFAULT CID+ LICENSE INFO
`
`CICO
`
`SM GENERA TED CID
`
`II
`I
`I
`I
`I
`
`J
`
`I
`I
`I
`
`J
`
`I
`I
`I
`I
`:
`I
`I
`I
`I
`I
`I
`I
`:
`L _____________________________ I
`
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`I
`:
`I
`I
`I
`I
`/
`
`SOFTWARE
`MONITOR
`
`~~~
`
`APPID
`
`PROGRAM
`MODULE
`
`100
`
`3lfllj'- 4-
`1
`
`
`
`U.S. Patent
`
`Jul. 20, 1999
`
`Sheet 5 of 6
`
`5,925,127
`
`CICO OFFERS
`APPIDTOSM
`
`SM STORES
`LICENSE INFO
`
`550
`
`CICOSTORES
`UNIQUE CID
`
`560
`
`CICO
`TRANSFERS
`LICENSE INFO
`TOSM
`
`LA·
`I 5A
`I 37
`
`ERROR(cid:173)
`ILLEGAL USAGE
`
`640
`
`650
`
`TO 660 (F1G S(b))
`
`
`
`U.S. Patent
`
`Jul. 20, 1999
`
`Sheet 6 of 6
`
`5,925,127
`
`FROM 650 (FIG S(a)
`
`SM RETURNS
`VALID MSG TO
`PROGRAM
`MODULE
`
`SM DELETES
`CICO
`
`SM STARTS
`INTERNAL
`TIMER
`
`RUN PROGRAM
`MODULE
`
`660
`
`670
`
`680
`
`685
`
`6~0
`
`YES
`
`USE OF
`PROGRAM
`MODULE
`TERMINATED
`
`Di:./'' 58
`
`I
`
`
`
`5,925,127
`
`1
`METHOD AND SYSTEM FOR MONITORING
`THE USE OF RENTED SOFTWARE
`
`FIELD OF INVENTION
`
`The present invention relates generally to a method and
`system for monitoring the use of a software program
`module, and particularly, relates to a method and system for
`monitoring the use of a rented software program module.
`
`2
`service provider to rent a particular software program mod(cid:173)
`ule and prevent unauthorized copying of that software
`program module by the renter/user.
`There is a further need in the art for a software program
`5 module rental method and system that allow software appli(cid:173)
`cations to be rented on a pay-per-use basis from a remote
`rental service provider while allowing the rental service
`provider to monitor use of the rented software application.
`
`BACKGROUND OF THE INVENTION
`
`10
`
`SUMMARY OF THE INVENTION
`
`Since the dawning of the computer age, users of comput(cid:173)
`ers have quickly come to rely on a variety of software
`program modules to assist them in their daily work or play.
`Typically, a computer user purchases software program
`modules for use on his or her home or office computer.
`Familiar software program modules include word process(cid:173)
`ing applications, data spreadsheet applications and computer
`games. Unfortunately, software program modules can be
`very expensive, and the prospective user may only desire use
`of a particular program module for a brief period of time. For
`example, a business may require the use of a tax application
`only during its year-end tax return preparation. Likewise, a
`person may desire to be entertained by a particular computer
`game only for a few hours.
`To solve these needs, a variety of computer software
`program modules may be rented for specified periods of
`time from a variety of sources, such as local consumer
`electronics retailers, computer program retailers, or from
`television video and computer games vendors. However, a
`problem with the rental of software program modules arises
`because typically the renter/user has physical control of the
`program module on some media such as a floppy disk.
`Unfortunately, the renter/user often copies the program lo
`module onto a personal floppy disk or onto the hard drive of
`his or her computer. Thus, the renter/user can thwart the
`program module owner's copyrights and the license agree(cid:173)
`ments between the program module owner and the rental
`service provider.
`Additionally, the rental service provider has very little
`control over the amount of use that is made of a particular
`program module because it is impractical to rent progr~m
`modules for small periods and because the rental service
`provider has no way of monitoring use of the program
`module. Moreover, attempts to pre-program a set period of
`use, such as four hours, may be easily thwarted by resetting
`the system clock of the user's computer.
`In the prior art, non-software pay-per-use systems are
`available in such areas as the familiar television pay-per-use
`example. Pay-per-use television is mostly restricted to one(cid:173)
`time viewing, such as a single movie or sports event. Some
`pay-per-use systems include standard hourly rates, daily
`rates, or weekend. rates. Unfortunately, as with the rental of
`software program modules, little has been done to prevent
`the renter of such pay-per-use programs from illegally
`copying the programs for subsequent unpaid and unlicensed
`use.
`Therefore, there is a need in the art for a software program
`module rental method and system that allow the rental
`service provider to monitor the use of rented software
`program modules.
`There is also a need in the art for a software program
`module rental method and system that allow the rental
`service provider to rent a particular software program mod(cid:173)
`ule for a set period and to prevent the renter/user of that
`program module from unauthorized extension of the rental
`period.
`There is also a need in the art for a software program
`module rental method and system that allow the rental
`
`25
`
`The present invention satisfies the above described needs
`by providing a method and system for monitoring the use of
`a rented software program module. A desired software
`program module is registered with a central registration site
`15 called a Software Registry. The software program module is
`downloaded along with a Check-in/Check-out module and a
`Software Monitor module. All three software modules may
`be downloaded from a remote server operated by an autho(cid:173)
`rized vendor of the software program module via the Inter-
`20 net. The Check-in/Check-out module provides required
`licensing information for the rented software program mod(cid:173)
`ule to the Software Monitor module. The Software Monitor
`module monitors use of the rented software program module
`while it is in use by the user. The desired software program
`module may be rented on a pay-per-use basis.
`Generally described, in one aspect, the present invention
`provides a method for monitoring the use of a computer
`program. The method includes verifying the user's license to
`use the computer program during a licensed time of use. An
`authorization message is issued to the computer program
`30 which allows the computer program to be used by the user.
`The use of the computer program is tracked during the
`licensed use. Use of the computer program may be termi(cid:173)
`nated after the elapse of the licensed use. The step of
`tracking the use of the computer program during the licensed
`35 time of use may include preventing unauthorized copying of
`the computer program.
`The step of verifying the license to use the computer
`program can be accomplished by causing the computer
`program to call a Software Monitor module for monitoring
`40 the computer program and determining whether the Soft(cid:173)
`ware Monitor module is active. If the computer program
`determines the Software Monitor module is active, the
`computer program sends identification information about
`the computer program to the Software Monitor module. In
`45 response to receipt of the identification information about
`the computer program, the Software Monitor module deter(cid:173)
`mines whether the computer program is licensed for use. If
`the computer program determines the Software Monitor
`module is not active, the computer program issues an error
`50 message to indicate an error state.
`The step in which the Software Monitor module deter(cid:173)
`mines whether the computer program is licensed for use may
`include causing the Software Monitor module to compare
`the identification information about the computer program
`sent by the computer program with identification informa-
`55 tion about the computer program maintained by the Soft(cid:173)
`ware Monitor module. In response to the comparison, the
`Software Monitor module may determine whether the infor(cid:173)
`mation about the computer program sent by the computer
`program matches the identification information about .the
`60 computer program maintained by the Software Momtor
`module.
`The step of tracking the use of the computer program
`during the licensed use can include the Software Monitor
`module starting a timer to record the time of use of the
`65 computer program. The computer program may query the
`Software Monitor module as to whether a licensed time of
`use has expired. In response to the query, the Software
`
`
`
`5,925,127
`
`5
`
`3
`Monitor module can determine whether the licensed time of
`use has expired. The Software Monitor module may deter(cid:173)
`mine whether the licensed time of use has expired by reading
`the elapsed time of use recorded by the timer and comparing
`the elapsed time of use with the licensed time of use.
`Alternatively, the step of tracking the use of the computer
`program during the licensed use can include the Software
`Monitor module starting a counter to record the total number
`of uses of the computer program; querying the Software
`Monitor module as to whether the licensed number of uses
`has been expended; and in response to the query, causing the
`Software Monitor module to determine whether the licensed
`number of uses has been expended. The step of causing said
`Software Monitor module to determine whether the licensed
`number of uses has been expended, comprises the steps of
`reading the total number of uses recorded by the counter;
`and comparing the total number of uses with the licensed
`number of uses. The method may also prevent unauthorized
`copying of said computer program.
`In another aspect of the present invention, a Check-in/
`Check-out (CICO) module, a computer program, and a
`Software Monitor module are launched onto a user's com(cid:173)
`puter. The computer program is launched after the CICO
`module is launched. The CICO module provides licensing
`information for the computer program to the Software
`Monitor module. In response to the licensing information
`provided by the CICO module, the Software Monitor mod(cid:173)
`ule authorizes use of the computer program. Preferably, the
`Software Monitor module stores the licensing information
`and deletes the CICO module after the Software Monitor
`module receives the licensing information from the CICO
`module.
`Preferably the Software Monitor module also secures the
`CICO module from unauthorized use. The step of securing
`the CICO module from unauthorized use may include caus(cid:173)
`ing the Software Monitor module to generate a unique
`identification for the CICO module. The Software Monitor
`encodes the CICO module with the unique identification.
`The Software Monitor module stores the unique CICO
`module identification. After a first use of the CICO module, 40
`the Software Monitor module may prevent subsequent use
`of the CICO module by causing the Software Monitor to
`check whether the unique identification for the CICO mod(cid:173)
`ule previously has been used.
`Prior to the step of causing the Software Monitor module 45
`to generate a unique identification for the CICO module, the
`CICO module preferably sends an identification for the
`computer program to the Software Monitor module. The
`Software Monitor module may store the identification for
`the computer program in a database maintained by the 50
`Software Monitor module. The Software Monitor module
`also may request a CICO module identification (CID) from
`the CICO module. In response to the request, the CICO
`module sends a CID to the Software Monitor module. In
`response to receipt of the CID, the Software Monitor module 55
`may perform a database lookup for a previously stored CID
`matching the CID received from the CICO module. If the
`Software Monitor module finds a previously stored CID
`matching the CID received from the CICO module, the
`Software Monitor module may send an invalid message to 60
`the CICO module.
`In another aspect of the present invention, a computer(cid:173)
`readable medium is provided. A Software Monitor module
`for monitoring the use of a computer program is stored on
`the computer-readable medium. The Software Monitor mod- 65
`ule has instructions which, when executed by a computer,
`perform a number of steps. The Software Monitor module
`
`10
`
`4
`receives identification information for the computer pro(cid:173)
`gram from a Check-in/Check-out (CICO) module. The Soft(cid:173)
`ware Monitor module verifies the CICO module has not
`been previously used and receives licensing information
`from the CICO module for the computer program. The
`Software Monitor module verifies the license to use the
`computer program and issues an authorization message to
`the computer program. The Software Monitor module tracks
`the use of the computer program during the licensed use.
`The step of tracking the use of the computer program
`during the licensed time of use may include preventing
`unauthorized copying of the computer program. That step
`may also include preventing use of the computer program
`after the expiration of the licensed time of use. Alternatively,
`that step may also include preventing use of the computer
`15 program after a licensed number of uses has been expended.
`In another aspect of the present invention, a system for
`monitoring the use of a computer program is provided which
`includes a Software Monitor module and a Check-in/Check
`out module. The CICO module is operative to transfer
`20 identification information for the computer program to the
`Software Monitor module and to transfer licensing informa(cid:173)
`tion for the computer program to the Software Monitor
`module. The Software Monitor module is operative to
`receive the identification information from the CICO
`25 module, to receive the licensing information from the CICO
`module, to verify license to use the computer program
`during a licensed time of use, to issue an authorization
`message to the computer program, and to track the use of the
`computer program during the licensed time of use. The
`30 Software Monitor module may be further operative to deter(cid:173)
`mine whether the CICO module previously has been used,
`and to delete the CICO module after receiving the licensing
`information from the CICO module. The Software Monitor
`module may be further operative to prevent the computer
`35 program from running longer than the licensed time of use,
`and to prevent unauthorized copying of the computer pro-
`gram.
`In another aspect of the present invention, a method for
`monitoring the use of a computer program rented via the
`Internet is provided. A computer program is registered on a
`Software Registry, and the Software Registry may be located
`on a remote server. The computer program is downloaded
`from a remote server to a local computing device via the
`Internet. A Check-in/Check-out (CICO) module and a Soft(cid:173)
`ware Monitor module are also downloaded from the remote
`server to the local computing device via the Internet. Iden(cid:173)
`tification information for the computer program is received
`by the Software Monitor module from the CICO module.
`The Software Monitor module verifies that the CICO mod(cid:173)
`ule has not been previously used. Licensing information is
`received by the Software Monitor module from the CICO
`module for the computer program and the license to use the
`computer program during a licensed time of use is verified.
`An authorization message is issued by the Software Monitor
`module to the computer program. The Software Monitor
`module tracks use of the computer program during the
`licensed time of use.
`These and other features, advantages, and aspects of the
`present invention will be more clearly understood and
`appreciated from a review of the following detailed descrip(cid:173)
`tion of the disclosed embodiments and by reference to the
`appended drawings and claims.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram of a computer that provides a
`portion of the operating environment for an exemplary
`embodiment of the present invention.
`
`
`
`5,925,127
`
`5
`FIG. 2 is a functional block diagram of the Internet
`representing a portion of the operating environment of an
`exemplary embodiment of the present invention.
`FIG. 3 is a simplified block diagram illustrating the
`downloading of software program modules from a remote 5
`server to a user's computer via the Internet.
`FIG. 4 is a simplified block diagram illustrating the
`interaction between three separate software program mod(cid:173)
`ules embodying an exemplary embodiment of the present
`invention.
`FIGS. 5(a) and 5(b) are flow diagrams illustrating the
`operation of an exemplary embodiment of the present inven(cid:173)
`tion.
`
`DETAILED DESCRIPTION
`
`6
`with appropriate physical quantities for computer
`operations, and that these terms are merely conventional
`labels applied to physical quantities that exist within and
`during operation of the computer.
`It should also be understood that manipulations within the
`computer are often referred to in terms such as adding,
`calling, comparing, receiving, sending, transferring,
`transmitting, etc. which are often associated with manual
`operations performed by a human operator. The operations
`10 described herein are machine operations performed in con(cid:173)
`junction with various input provided by a human operator or
`user that interacts with the computer.
`Referring now to the drawings, in which like numerals
`represent like elements throughout the several figures,
`15 aspects of the present invention and the preferred to oper(cid:173)
`ating environment will be described.
`
`20
`
`The present invention is directed to a method and system
`for monitoring the use of a rented software program module
`by a rental service provider of that software program mod(cid:173)
`ule. As will be understood, the present invention may be
`used for monitoring a variety of program modules, such as
`application programs, operating system modules, Internet
`browsers, etc. In an exemplary embodiment of the present
`invention, an application program, such as "WORD," ver(cid:173)
`sion 8.0, produced by Microsoft Corporation of Redmond, 25
`Wash., may be rented by an end user for use during some
`specified period of time. The present invention allows a
`rental service provider to track the use of the rented software
`program module to prevent unauthorized extension of a
`licensed period of use and to prevent unauthorized copying 30
`of the rented software program module.
`The detailed description which follows is represented
`largely in terms of processes and symbolic representations
`of operations by conventional computer components,
`including a processor, memory storage devices for the
`processor, connected display devices, and input devices.
`Furthermore, these processes and operations may utilize
`conventional computer components in a heterogeneous dis(cid:173)
`tributed computing environment, including remote file
`servers, computer servers, and memory storage devices.
`Each of these conventional distributed computing compo(cid:173)
`nents is accessible by the processor via a communication
`network.
`The processes and operations performed by the computer
`include the manipulation of signals by a processor or remote
`server and the maintenance of these signals within data
`structures resident in one or more of the local or remote
`memory storage devices. Such data structures impose a
`physical organization upon the collection of data stored
`within a memory storage device and represent specific
`electrical or magnetic elements. These symbolic represen(cid:173)
`tations are the means used by those skilled in the art of
`computer programming and computer construction to most
`effectively convey teachings and discoveries to others
`skilled in the art.
`For the purposes of this discussion, a process is generally
`conceived to be a sequence of computer-executed steps
`leading to a desired result. These steps generally require
`physical manipulations of physical quantities. Usually,
`though not necessarily, these quantities take the form of
`electrical, magnetic, or optical signals capable of being
`stored, transferred, combined, compared, or otherwise
`manipulated. It is conventional for those skilled in the art to
`refer to these signals as bits, bytes, words, values, elements,
`symbols, characters, terms, numbers, points, records,
`objects, images, files or the like. It should be kept in mind,
`however, that these and similar terms should be associated
`
`Exemplary Operating Environment
`FIG. 1 and the following discussion are intended to
`provide a brief, general description of a suitable computing
`environment in which the invention may be implemented.
`While the invention will be described in the general context
`of an program module that runs on an operating system in
`conjunction with a personal computer, those skilled in the art
`will recognize that the invention also may be implemented
`in combination with other program modules.
`Generally, program modules include routines, programs,
`components, data structures, etc. that perform particular
`tasks or implement particular abstract data types. Moreover,
`those skilled in the art will appreciate that the invention may
`be practiced with other computer system configurations,
`including hand-held devices, multiprocessor systems,
`microprocessor-based or programmable consumer
`electronics, minicomputers, mainframe computers, and the
`35 like. The invention may also be practiced in distributed
`computing environments where tasks are performed by
`remote processing devices that are linked through a com(cid:173)
`munications network. In a distributed computing
`environment, program modules may be located in both local
`40 and remote memory storage devices.
`With reference to FIG. 1, an exemplary system for imple(cid:173)
`menting the invention includes a conventional personal
`computer 20, including a processing unit 21, a system
`memory 22, and a system bus 23 that couples the system
`45 memory to the processing unit 21. The system memory 22
`includes read only memory (ROM) 24 and random access
`memory (RAM) 25. A basic input/output system 26 (BI OS),
`containing the basic routines that help to transfer informa(cid:173)
`tion between elements within the personal computer 20,
`50 such as during start-up, is stored in ROM 24. The personal
`computer 20 further includes a hard disk drive 27, a mag(cid:173)
`netic disk drive 28, e.g., to read from or write to a removable
`disk 29, and an optical disk drive 30, e.g., for reading a
`CD-ROM disk 31 or to read from or write to other optical
`55 media. The hard disk drive 27, magnetic disk drive 28, and
`optical disk drive 30 are connected to the system bus 23 by
`a hard disk drive interface 32, a magnetic disk drive inter(cid:173)
`face 33, and an optical drive interface 34, respectively. The
`drives and their associated computer-readable media provide
`60 nonvolatile storage for the personal computer 20. Although
`the description of computer-readable media above refers to
`a hard disk, a removable magnetic disk and a CD-ROM disk,
`it should be appreciated by those skilled in the art that other
`types of media which are readable by a computer, such as
`65 magnetic cassettes, flash memory cards, digital video disks,
`Bernoulli cartridges, and the like, may also be used in the
`exemplary operating environment.
`
`
`
`5,925,127
`
`8
`present invention. The Internet 60 includes a plurality of
`backbone networks 65a through 65n. These backbone net(cid:173)
`works form an international grid of high-speed, high-
`capacity data communication lines interconnecting a num(cid:173)
`ber of massive computers that serve as large-scale
`processing points or nodes. The backbone networks 65 are
`interconnected with each other through a plurality of net(cid:173)
`work access points 70a through 70n. These network access
`points are interfaces through which information is commu(cid:173)
`nicated from one backbone network to another. The con(cid:173)
`figuration and operation of the Internet backbone is well
`known to those skilled in the art and will not be further
`described herein.
`The Internet 60 includes a plurality of Internet sites 75a
`through 75n. These Internet sites are generally operated by
`corporations, universities, and governmental organizations.
`Each Internet site may include one or more repositories of
`information and resources that may be accessed over the
`Internet. Each Internet site, as represented by the Internet
`site 75a, may include a plurality of web servers 80a through
`80n. Each of these web servers may provide "home pages"
`to be visited, files to be read or downloaded, applications to
`be shared, and the like.
`The Internet 60 also includes a plurality of points of
`presence 85a through 85n that are operated by local access
`providers. These local access providers are in the business of
`providing Internet access to end user stations. In the pre(cid:173)
`ferred embodiment of the present invention, the personal
`computer 20, shown in FIG. 1, is an end-user station. As
`30 shown in FIG. 2, the point of presence 85a provides Internet
`access to the personal computer 20 (end user station) and
`other end user stations 88a through 88n, the point of
`presence 85b provides Internet access to end user stations
`88a' through 88n', etc. All together, the points of presence 85
`35 can provide Internet access to numerous end-user stations
`88. Each point of presence 85, and each end user 88, may,
`but need not, provide home pages for access by others on the
`Internet 60.
`
`7
`A number of program modules may be stored in the drives
`and RAM 25, including an operating system 35, one or more
`program modules 36, other program modules 37, and pro(cid:173)
`gram data 38. A user may enter commands and information
`into the personal computer 20 through a keyboard 40 and 5
`pointing device, such as a mouse 42. Other input devices
`(not shown) may include a microphone, joystick, game pad,
`satellite dish, scanner, or the like. These and other input
`devices are often connected to the processing unit 21
`through a serial port interface 46 that is coupled to the 10
`system bus, but may be connected by other interfaces, such
`as a game port or a universal serial bus (USE). A monitor 47
`or other type of display device is also connected to the
`system bus 23 via an interface, such as a video adapter 48.
`In addition to the monitor, personal computers typically 15
`include other peripheral output devices (not shown), such as
`speakers or printers.
`The personal computer 20 may operate in a to networked
`environment using logical connections to one or more
`remote computers, such as a remote computer 49. The 20
`remote computer 49 may be a server, a router, a peer device
`or other common network node, and typically includes many
`or all of the elements described relative to the personal
`computer 20, although only a memory storage device 50 has
`been illustrated in FIG. 1. The logical connections depicted 25
`in FIG. 1 include a local area network (LAN) 51