Patent Document

BACKGROUND OF THE INVENTION  
       [0001]     1. Field of the Invention  
         [0002]     The present invention relates to an information processing apparatus and a device driver deletion method.  
         [0003]     2. Description of the Related Art  
         [0004]     When a device such as a scanner, a printer, or a multifunction peripheral (MFP) is operated, a user connects such a device to a computer and installs a device driver corresponding to the device. When the user purchases a new device or no longer uses an old device, a device driver corresponding to the old device is no longer necessary. Then, the user generally uninstalls the device driver to make effective use of a capacity of a hard disk of the computer (Japanese Patent Application Laid-open No. 2005-115440).  
         [0005]     When the user uninstalls the device driver, whether or not the device is connected to the computer depends on the user. For this reason, an uninstaller of the device driver needs to function without a problem regardless of whether or not the device is connected to the computer.  
         [0006]     Most uninstallers of a printer driver, a scanner driver, or a MFP driver use a plurality of application program interfaces (hereinafter referred to as APIs) provided by an operating system (OS). Using the API, the uninstaller acquires a hardware ID from an information file (INF) of a device driver. Then, based on the hardware ID, the uninstaller specifies the device to be deleted and deletes the driver of the device.  
         [0007]     Such a driver deletion process is properly carried out on most OSs regardless whether or not the device is connected to a personal computer (PC). However, depending on a type of the OS, at a timing of an API call for deleting a device information set which is made at the end of a driver deletion process, an entire device tree can be re-enumerated. As a result, when the entire device tree is re-enumerated, the device connected to the PC is detected owing to a plug-and-play function of the OS. Consequently, reinstallation of the driver which is to be deleted is started.  
         [0008]     Conventionally, in order to prevent such a problem, the user has to turn off in advance power supplied to the device or otherwise disconnect the device from the PC.  
       SUMMARY OF THE INVENTION  
       [0009]     The present invention is directed to a method and apparatus for deleting a device driver without starting a driver reinstallation process even when the device is connected to an apparatus.  
         [0010]     According to an aspect of the present invention, an information processing apparatus includes a storage unit configured to store a device driver and an operating system, and a deletion unit configured to delete the device driver. The deletion unit issues a command before deleting the device driver to deactivate a software instance associated with a device corresponding to the device driver.  
         [0011]     Further features and aspects of the present invention will become apparent from the following detailed description of exemplary embodiments with reference to the attached drawings. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0012]     The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate exemplary embodiments, features, and aspects of the invention and, together with the description, serve to explain the principles of the invention.  
         [0013]      FIG. 1  is a block diagram of a configuration of a peripheral apparatus control system including an information processing apparatus and a peripheral apparatus according to an exemplary embodiment of the present invention.  
         [0014]      FIG. 2  is a block diagram illustrating an example of a hardware configuration of a PC.  
         [0015]      FIG. 3  is a block diagram illustrating an example of a hardware configuration of an MFP.  
         [0016]      FIG. 4  illustrates a configuration of a printer driver.  
         [0017]      FIG. 5  is a flowchart illustrating a driver uninstall process according to a first exemplary embodiment of the present invention.  
         [0018]      FIG. 6  is a flowchart illustrating a driver upgrade process according to a second exemplary embodiment of the present invention.  
         [0019]      FIG. 7  is an example of a dialog message.  
         [0020]      FIG. 8  is a flowchart illustrating a driver uninstall process according to a third exemplary embodiment of the present invention.  
         [0021]      FIG. 9  is a flowchart illustrating a deletion process of the driver when power supplied to a device is turned off.  
         [0022]      FIG. 10  is an example of a message (warning dialog message) which is displayed when the printer driver cannot be not deleted.  
         [0023]      FIG. 11  illustrating a status request command transmitted from the PC to the MFP to confirm a status of the MFP.  
         [0024]      FIG. 12  illustrating status reply commands which indicate a status of the MFP.  
         [0025]      FIG. 13  illustrating a power-off command sent from the PC to the MFP to turn off power supplied to the MFP.  
         [0026]      FIG. 14  is a flowchart illustrating a data receiving process in the MFP when the MFP receives data sent from the PC.  
         [0027]      FIG. 15  is a flowchart illustrating a process in the MFP when the MFP receives data acquisition request from the PC.  
         [0028]      FIG. 16  is a flowchart illustrating a driver upgrade process according to a fourth exemplary embodiment of the present invention.  
         [0029]      FIG. 17  is a memory map of a storage medium configured to store various types of data processing programs which can be read out by the peripheral apparatus control system. 
     
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS  
       [0030]     Various exemplary embodiments, features, and aspects of the invention will be described in detail below with reference to the drawings. Among the functions (information) cited and described below, those that are not specially and in detail described, are information publicly disclosed in a site of Microsoft Developer Network (MSDN) as of Apr. 27, 2006. The URL of the site of MSDN is http://msdn.microsoft.com/library/default.asp. In the following description, USB is an abbreviation for Universal Serial Bus which enables bidirectional communication. Since the USB is a publicly known interface, detailed description of the USB shall be omitted.  
         [0031]      FIG. 1  is a block diagram of a configuration of a peripheral apparatus control system including an information processing apparatus and a peripheral apparatus according to an exemplary embodiment of the present invention. In  FIG. 1 , an information processing apparatus  1  is a typical PC. The PC  1  includes a hardware which is described later with reference to  FIG. 2 . Further, an OS  2  is installed in the PC  1 .  
         [0032]     An MFP  3  includes a color scanner and a color inkjet printer. The MFP  3  as described is an example of a peripheral apparatus according to the present embodiment. It is to be noted that a printer, a copier, a fax machine, a scanner, a digital camera, or any apparatus comprising such functions can also be used as the peripheral apparatus of the present embodiment. The MFP  3  includes a hardware configuration described later with reference to  FIG. 3 . The MFP  3  and the PC  1  are connected via a USB interface  9  which enables bidirectional communication.  
         [0033]     An application  30  and an application  60  include a file in an executable file format (*.EXE, etc.). The application  30  is an example of an application according to the present embodiment and serves as an uninstaller configured to delete a driver such as a printer driver or a scanner driver. The application  60  is an updater configured to upgrade such a driver.  
         [0034]     A printer driver  50  is described later in detail referring to  FIG. 4 . An INF  70  is an information file of the printer driver  50 .  
         [0035]      FIG. 2  is a block diagram illustrating an example of a hardware configuration of the PC  1 . As shown in  FIG. 2 , the PC  1  includes a random access memory unit (RAM  1201 ) and a hard disk drive unit (HDD  1202 ) as a storage unit, and also a keyboard unit (KBD  1203 ) as an example of an input unit. Further, the PC  1  includes a central processing unit (CPU)  1204  as a control unit, a liquid crystal display (LCD  1205 ) as an example of a display unit, a network board (NB  1207 ) as an example of a communication control unit, and a bus  1206  connecting the above-mentioned components of the PC  1 .  
         [0036]     A portable compact disc read-only memory (CD-ROM) or an internal read-only memory (ROM) can also be used as the storage unit. Modules of the PC  1  illustrated in  FIG. 1  (i.e., the applications  30  and  60  and the printer driver  50 ) are stored in the HDD  1202 , read out by the RAM  1201  as needed, and executed by the CPU  1204 . Thus, the CPU  1204  realizes functions of these modules illustrated in  FIG. 1 .  
         [0037]      FIG. 3  is a block diagram illustrating a hardware configuration of the MFP  3 . In  FIG. 3 , a CPU  15  includes a microprocessor. According to a program stored in a ROM  16 , the CPU  15  which is a central processing apparatus of the MFP  3  controls a RAM  17 , a communication unit  18 , a recording unit  19 , and a scanning unit  20 . In  FIG. 3 , two-way arrows represent an address data bus.  
         [0038]     The ROM  16  stores a program configured to allow the MFP  3  to perform a recording (printing) process or transmit a recording (printing) status to the PC  1  under control of the printer driver  50 . The RAM  17  temporarily stores print data which is sent from the PC  1  to be printed by the recording unit  19 .  
         [0039]     The communication unit  18  controls communication via USB and includes a connection port for the USB interface  9 . The recording unit  19  includes a recording unit comprising an inkjet-type recording head, color ink tanks, a carriage, and a recording paper feeding mechanism, and also an electric circuit comprising an application specific integrated circuit (ASIC) which generates a print pulse on the recording head based on the print data.  
         [0040]     According to a printing operation regarding an application which enables printing, a content (image data) of a file opened by the application is temporarily stored in the HDD  1202  of the PC  1  as a spool file in an enhanced metafile (EMF) format. The content is converted into print data including a command for controlling the MFP  3  by the printer driver  50 , and then sent to the MFP  3  via the USB interface  9 . The print data is received by the MFP  3 , converted into a print pulse by the recording unit  19 , and printed on recording paper.  
         [0041]     The scanning unit  20  includes a scanning unit including a charge-coupled device (CCD) and a scanning light source, and also an electric circuit including an ASIC configured to process image data scanned by the CCD. The image data controlled by a control command sent from the PC  1  and scanned by the scanning unit  20  is sent to the PC  1  via the USB interface  9 .  
         [0042]      FIG. 4  illustrates a configuration of a printer driver of the PC  1 . The printer driver  50  installed in the PC  1  includes a plurality of modules, that is, a print processor  33 , a graphics driver  34 , a user interface (UI) module  35 , a language monitor  36 , a port monitor  37 , and a class driver  38 . The application  30  enables printing and reading, and also includes an installer of a driver, an uninstaller for deleting a driver, and an updater for upgrading a driver.  
         [0043]     A Graphics Device Interface (GDI)  31  is a part of the OS  2 . A printer queue  32  is a part of a spooler  40  and used when queuing a print job. The print job in a queue is displayed on a printer queue folder.  
         [0044]     The print processor  33  changes a print layout or executes a special processing of a print image. The graphics driver  34  is a core of an image processing performed by the printer driver. Based on a rendering instruction sent from the GDI  31 , the graphics driver  34  performs image processing for printing and creates a print control command.  
         [0045]     The UI module  35  provides and controls a user interface of the printer driver. The language monitor  36  controls transmission and reception of data as a communication interface. The port monitor  37  transmits data sent from the language monitor  36  to an appropriate port and receives data sent from the MFP  3  via the class driver  38 .  
         [0046]     The class driver  38  is a low level module which is the closest to the port. According to the present embodiment, the class driver  38  is a USB printer class driver and controls a USB port.  
         [0047]     Although a scanner driver of the MFP  3  has a different architecture from the printer driver  50 , a basic concept of the scanner driver is similar to that of the printer driver  50  in that it includes an OS module and an independent hardware vendor (IHV) module. For this reason, detailed description of the scanner driver of the MFP  3  is omitted.  
         [0048]      FIG. 5  is a flowchart illustrating an example of an uninstall process of a driver according to the present embodiment. In step S 51 , the user runs an uninstaller  30  of the MFP  3  and the uninstaller  30  starts the following process. In step S 52 , the uninstaller  30  searches an INF  70  which contains a hardware ID of the MFP  3  from the all driver INFs installed in the OS  2  using a plurality of APIs provided by the OS  2 . In addition, a device information set is created.  
         [0049]     Next, in step S 53 , the uninstaller  30  confirms that the printer driver  50  is to be deleted. Then, in step S 54 , the uninstaller  30  determines whether the printer driver  50  is being used. If the uninstaller  30  determines that the printer driver  50  is being used (YES in step S 54 ), the process proceeds to step S 55 . In step S 55 , an error message is displayed informing the user that the printer driver  50  is being used and the process ends.  
         [0050]     On the other hand, if it is determined that the printer driver  50  is not being used (NO in step S 54 ), the process proceeds to step S 56 . In step S 56 , the uninstaller  30  makes an API call by which the MFP  3  is removed from a device manager in terms of software. In other words, a device eject API is called and the device manager inactivates an instance of the MFP  3 . In this way, plug and play is not enabled by the OS  2  even if a signal for the plug and play is sent from the MFP  3 . Until an API for activating the instance is called, the plug and play signal from the MFP  3  is not detected. In other words, when the MFP  3  is removed by the API call in terms of software, plug and play does not occur.  
         [0051]     Next, in step S 57 , the uninstaller  30  deletes the printer driver  50 . In step S 58 , the uninstaller  30  makes an API call to delete a device information set created in step S 52 . Although the OS  2  re-enumerates the entire device tree when this API is called, since the MFP  3  is already removed by an eject process in terms of software from the device manager of the OS  2  in step S 56 , the MFP  3  is not detected by the plug and play function of the OS  2  even if the MFP  3  is connected to the PC  1 . And S 52 , device information set is created.  
         [0052]      FIG. 6  is a flowchart showing an example of an upgrade process of a driver according to a second exemplary embodiment of the present invention. In step S 61 , the user runs an updater  60  of the printer driver  50  of the MFP  3 . In step S 62 , the updater  60  detects and determines whether the printer driver  50  is installed.  
         [0053]     If the printer driver  50  is not detected (NO in step S 62 ), the process ends. On the other hand, if the printer driver  50  is detected (YES in step S 62 ), the process proceeds to step S 63 . In step S 63 , the updater  60  compares a version of a printer driver in an updater package and a version of the printer driver  50  which is already installed.  
         [0054]     If it is determined that the version of the installed printer driver  50  is new (NO in step S 63 ), the process ends. On the other hand, if it is determined that the version of the installed printer driver  50  is old (YES in step S 63 ), the process proceeds to step S 64 . In step S 64 , the updater  60  displays a dialog asking the user whether the user wishes to update the printer driver.  
         [0055]     Next, in step S 65 , the updater  60  determines whether the user has determined to update the printer driver. If the user has determined not to update the printer driver (NO in step S 65 ), the process ends. On the other hand, if the user has determined to update the printer driver (YES in step S 65 ), the process proceeds to step S 66 . In step S 66 , the updater  60  searches the INF  70  which contains a hardware ID of the MFP  3  from the all driver INFs installed in the OS  2  using a plurality of APIs provided by the OS  2 . In addition, a device information set is created.  
         [0056]     Next, in step S 67 , the updater  60  confirms that the printer driver  50  is to be deleted. Then, in step S 68 , the updater  60  determines whether the printer driver  50  is being used. If the updater  60  determines that the printer driver  50  is being used (YES in step S 68 ), the process proceeds to step S 69 . In step S 69 , an error message will be displayed informing the user that the printer driver  50  is being used and the process ends.  
         [0057]     On the other hand, if it is determined that the printer driver  50  is not in use (NO in step S 68 ), the process proceeds to step S 70 . In step S 70 , the updater  60  makes an API call by which the MFP  3  is removed from a device manager in terms of software.  
         [0058]     Next, in step S 71 , the updater  60  deletes the printer driver  50 . In step S 72 , the updater  60  makes an API call to delete a device information set created in step S 66 .  
         [0059]     Although the OS  2  re-enumerates the entire device tree when this API is called, since the MFP  3  is already removed by an eject process in terms of software from the device manager of the OS  2  in step S 70 , the MFP  3  is not detected by the plug and play function of the OS  2  even if the MFP  3  is connected to the PC  1 .  
         [0060]     Next, in step S 73 , a new printer driver is set up by the updater  60 . Then, in step S 74 , the updater  60  displays a dialog message requesting the user to connect the MFP  3  and the PC  1 . If the MFP  3  is already connected to the PC  1 , the updater  60  displays a dialog message requesting the user to unplug the USB cable and plug it back in.  FIG. 7  illustrates an example of the dialog message.  
         [0061]     Next, when the user reconnects the USB cable, the OS  2  puts the MFP  3  which has been removed in terms of software, back to the device manager and installs the printer driver by the plug-and-play function.  
         [0062]      FIG. 8  is a flowchart illustrating an example of a driver uninstall process according to a third exemplary embodiment of the present invention. In  FIG. 8 , steps S 51 , S 52 , S 53 , S 54 , and S 55  are the same as those described above with respect to  FIG. 5 , thus their description is omitted herein.  
         [0063]     In step S 54 , if it is determined that the printer driver  50  is not in use (NO in step S 54 ), the process proceeds to step S 80 . In step S 80 , the uninstaller  30  deletes the driver by turning off power supplied to the device, as described below with respect to  FIG. 9 . Next, in step S 58 , the uninstaller  30  makes an API call to delete a device information set created in step S 52 . Although the OS  2  re-enumerates the entire device tree when this API is called, since the PC  1  is unable to communicate with the MFP via the USB interface  9  since the power to the device is turned off in step S 80 , the MFP  3  is not detected by the plug and play function of the OS  2  even if the MFP  3  is connected to the PC  1 .  
         [0064]      FIG. 9  is a flowchart illustrating a deletion process of the driver when power to the device is turned off. It is to be noted that either the uninstaller  30  or the updater  60  can follow the process described below. In the present embodiment, however, the uninstaller  30  is chosen for the sake of simplicity.  
         [0065]     In step S 1001 , power to the device is turned off and the driver is deleted. Then, the installer  30  performs a following process.  
         [0066]     In step S 1002 , the uninstaller  30  checks a printer queue  32  to see if a print job is in a queue. Then, in step S 1003 , the uninstaller  30  determines whether the print job is available.  
         [0067]     If it is determined that a print job is available (YES in step S 1003 ), the process proceeds to step S 1013 . In step S 1013 , the uninstaller  30  displays a message on the display unit that, for example, a print job is present. An example of the message displayed in step S 1013  is described below with respect to  FIG. 10 . On the other hand, if it is determined that a print job is not present (NO in step S 1003 ), the process proceeds to step S 1004 . In step S 1004 , using a status request command  90  described below with respect to  FIG. 11 , the uninstaller  30  confirms a status of the MFP  3  from status reply commands which the MFP  3  returns to the uninstaller  30 . The status reply commands are described below with respect to  FIG. 12 .  
         [0068]     In step S 1005 , the uninstaller  30  determines whether the MFP  3  is in the printing process based on the status confirmed in step S 1004 . If it is determined that the MFP is in the printing process (YES in step S 1004 ), the process proceeds to step S 1013 . In step S 1013 , the uninstaller  30  displays a message on the display unit indicating that, for example, the MFP  3  is the printing process. On the other hand, if it is determined that the MFP is not in the printing process (NO in step S 1005 ), the process proceeds to step S 1006 . In step S 1006 , the uninstaller  30  determines whether an error has occurred in the MFP  3  based on the status confirmed in step S 1004 .  
         [0069]     If the uninstaller  30  determines that an error has occurred in the MFP  3 , (YES in step S 1006 ), the process proceeds to step S 1013 . In step S 1013 , the uninstaller  30  displays, for example, a message informing the user that an error has occurred. On the other hand, if the uninstaller  30  determines that an error has not occurred in the MFP  3  (NO in step S 1006 ), the process proceeds to step S 1007 . In step S 1007 , the uninstaller  30  determines whether the MFP  3  is on-line and on standby based on the status confirmed in step S 1004 .  
         [0070]     If the uninstaller  30  determines that the MFP  3  is not on-line and on standby (NO in step S 1007 ), the process proceeds to step S 1013 . In step S 1013 , the uninstaller  30  displays a message informing the user, for example, that the MFP  3  is not on-line and on standby. On the other hand, if the uninstaller  30  determines that the MFP  3  is on-line and on standby (YES in step S 1007 ), the process proceeds to step S 1008 . In step S 1008 , the uninstaller  30  issues and transmits a power-off command to the MFP  3  as described below with respect to  FIG. 13 .  
         [0071]     Then in step S 1009 , the uninstaller  30  confirms a status of an USB port of the PC  1  to which the USB interface  9  is connected. Next, in step S 1010 , the uninstaller  30  determines whether the MFP  3  is in a power-off state.  
         [0072]     If it is determined that the MFP  3  is in a power-off state (YES in step S 1010 ), the process proceeds to step S 1014 . In step S 1014 , the uninstaller  30  deletes the printer driver  50  and the process ends. On the other hand, if it is determined that the MFP  3  is in a power-on state (NO in step S 1010 ), the process proceeds to step S 1011 . In step S 1011 , the uninstaller  30  waits for a certain period of time (e.g., 1 second). After that, in step S 1012 , the uninstaller  30  determines whether a time-out has occurred (e.g., 1 minute has passed).  
         [0073]     If the uninstaller  30  determines that the time-out has occurred (YES in step S 1012 ), the process proceeds to step S 1013 . In step S 1013 , the uninstaller  30  displays a message on the display unit informing the user, for example, that power is not turned off. On the other hand, if the uninstaller  30  determines that the time-out has not occurred (NO in step S 1012 ), the process returns to step S 1009 .  
         [0074]     When an OK button  89 , which is displayed together with the message displayed in step S 1013 , is selected by the user, the process of deleting the driver by the power-off of the device ends.  
         [0075]     The uninstaller  30  performs the process of determining an error of MFP  3  in step S 1006 , which is described below with respect to  FIG. 12 . For example, if a warning about a status which does not affect the deletion of the printer driver  50 , such as a paper out warning  92  or an ink low warning  94 , is detected in step S 1004 , the process proceeds to perform the deletion process of the printer driver  50 . However, if an error which may affect the deletion of the printer driver  50 , such as a paper-jam error  93  or an ink-out error  95 , is detected in step S 1004 , the printer driver  50  will not be deleted. In this way, operability is improved while safety is enhanced in the process of the deletion of the printer driver  50 .  
         [0076]      FIG. 10  illustrates an example of a message (e.g., warning dialog message) which is displayed on the display unit when the printer driver  50  can not be deleted. A warning dialog message  88  notifies the user of a status of the MFP  3  and what the user needs to do. When the OK button  89  is selected, the warning dialog message  88  disappears.  
         [0077]      FIG. 11  illustrates a status request command which is transmitted from the PC  1  to the MFP  3  to confirm a status of the MFP  3 . Although data transmitted from the PC  1  to the MFP  3  via the USB interface  9  is binary data, in  FIG. 11 , the binary data is converted into text data for ease of understanding.  
         [0078]      FIG. 11  illustrates a status request command  90 . When the MFP  3  receives the status request command  90  transmitted from the PC  1  to the MFP  3 , the MFP  3  prepares to transmit a status reply command illustrated in  FIG. 12  to the PC  1 . This process of preparing is described below with respect to  FIG. 14 . According to the status request command  90  sent from the PC  1 , the MFP  3  transmits a status reply command which indicating a present status of preparation, to the PC  1 . In this way, the PC  1  confirms the status of the MFP  3 .  
         [0079]      FIG. 12  illustrates status reply commands which are issued to indicate a status of the MFP  3 . A printing status  91  (STS:Printing) is issued to warn the user that the MFP  3  is in the printing process. A paper out status  92  (STS:PaperOutWarning) is issued to warn the user that the print paper is not set in the MFP  3 .  
         [0080]     The paper-jam error  93  (STS:PaperJamError) is issued when a paper jam occurs in the MFP  3 . The ink low warning  94  (STS:InkLowWarning) is issued when ink is running low. The ink-out error  95  (STS:InkOutError) is issued when little ink is left in the MFP  3 . A scanning status  96  (STS:Scanning) is issued when the MFP  3  is in a process of scanning. An on-line status  97  (STS:Online) is issued when the MFP  3  is on-line and on a standby state.  
         [0081]     When the MFP  3  is in a plurality of statuses, for example, a STS:Printing,PaperOutWarning,InkLowWarning  98  is issued. This command is issued when the MFP  3  is in a process of printing but recording paper is not set, and ink is running low.  
         [0082]      FIG. 13  illustrates a power-off command  99  (CMD:Shutdown) sent from the PC  1  to the MFP  3  via the USB interface  9  to turn off power to the MFP  3 . When the MFP  3  receives the power-off command  99 , the power to the MFP  3  is turned off as illustrated in  FIG. 14 .  
         [0083]      FIG. 14  is a flowchart illustrating a process of the MFP  3  when the MFP  3  receives data from the PC  1 . In step S 1501 , the MFP  3  receives the data from the PC  1 .  
         [0084]     Next, in step S 1502 , the MFP  3  confirms the data sent from the PC  1 . Then, in step S 1503 , the MFP  3  determines whether the data is the status request command  90 . If it is determined that the data is the status request command  90  (YES in step S 1503 ), the process proceeds to step S 1504 . In step S 1504 , the MFP  3  confirms the status of the MFP  3 .  
         [0085]     Next, in step S 1505 , the MFP  3  generates and stores a status reply command indicating the state. Then, the process of receiving the data ends.  
         [0086]     On the other hand, if it is determined that the data is not the status request command  90  in step S 1503 , (NO in step S 1503 ), the process proceeds to step S 1506 . In step S 1506 , the MFP  3  determines whether the data is the power-off command  99 .  
         [0087]     If it is determined that the data is the power-off command  99  (YES in step S 1506 ), the process proceeds to step S 1507 . In step S 1507 , the power to the MFP  3  is turned off. Then, the MFP  3  ends the process of receiving the data and remains in a power-off state. In step S 1506 , if it is determined that the data is not the power-off command  99  (NO in step S 1506 ), the process proceeds to step S 1508 . In step S 1508 , the MFP  3  performs a process according to the received data and the process of receiving the data ends.  
         [0088]      FIG. 15  is a flowchart illustrating a process of the MFP  3  when the MFP  3  receives the data acquisition request from the PC  1 . In step S 1601 , the MFP  3  receives the data acquisition request transmitted from the PC  1 .  
         [0089]     In step S 1602 , the MFP  3  sets the status reply command which is stored in step S 1505  of  FIG. 14  in a data transmission buffer. Next in step S 1603 , the MFP  3  transmits the data (status reply command) set in the data transmission buffer to the PC  1 . Then, the process of receiving the data acquisition request ends. The data acquisition request is created using a protocol which is standardized according to a standard USB specification.  
         [0090]      FIG. 16  illustrates an example of a flowchart for an upgrading process of the driver according to a fourth exemplary embodiment of the present invention. In  FIG. 16 , descriptions of steps S 61 -S 69  are omitted herein since these steps are the same as described above with respect to  FIG. 6 .  
         [0091]     In step S 81 , the updater  60  deletes the driver by turning off power to the device, as described with respect to  FIG. 9 . Next, in step S 72 , the updater  60  makes an API call to delete a device information set created in step S 66 .  
         [0092]     Although the OS  2  re-enumerates the entire device tree when this API is called, since the MFP  3  is already removed from the device manager of the OS  2  by an eject process in terms of software in step S 70 , the MFP  3  is not detected by the plug and play function of the OS  2  even if the MFP  3  is connected to the PC  1 .  
         [0093]     Next, in step S 73 , a new printer driver is set up by the updater  60 . Then, in step S 74 , a dialog message is displayed by the updater  60  requesting the user to connect the MFP  3  and the PC  1 . If the MFP  3  is already connected to the PC  1 , the updater  60  displays a dialog message requesting the user to unplug the USB cable and plug it back in.  
         [0094]     Referring now to a memory map illustrated in  FIG. 17 , a configuration of a data processing program which can be read out by a peripheral apparatus control system including an information processing apparatus and a peripheral apparatus according to the above-described embodiments will be described.  
         [0095]      FIG. 17  is a memory map of a storage medium configured to store various types of data processing programs which can be read out by the peripheral apparatus control system. Although not illustrated, information for managing a program group stored in a storage medium, for example, version information and author information are stored in this storage medium. Furthermore, although not illustrated, information which relies on the OS on a program readout side, for example, an icon or the like used for identifying a program, can also be stored in the storage medium.  
         [0096]     In  FIG. 17 , a storage medium  64  is a hard disk. A directory information management unit  65  controls data which is dependent on various types of programs. A program storage unit  66  stores programs for installing various programs in the information processing apparatus and a decompression program which is used when a program to be installed is compressed.  
         [0097]     Also, each function realized by an execution of a process of each flowchart illustrated in  FIGS. 5, 6 ,  8 ,  9 ,  14 ,  15 , and  16  according to the above-described embodiments can also be realized by an information processing apparatus using a program installed from an outside device. In this case, the above-described embodiments can also be applied when an information group including a program is provided to the information processing apparatus or a peripheral apparatus from a storage medium such as a CD-ROM, a flash memory, a floppy disk, or an outside storage medium via a network.  
         [0098]     As described above, a storage medium storing a software program code which realizes a function of the above-described embodiments is supplied to the peripheral apparatus control system or the information processing apparatus, or the peripheral apparatus. Thus, the object of the above-described embodiments can be also achieved when a computer (or a CPU or a MPU) of the peripheral apparatus control system or the information processing apparatus, or the peripheral apparatus reads and executes the program code stored in such a storage medium.  
         [0099]     In this case, the program code itself read out from the storage medium realizes the novel functions described in the above-described embodiments. Thus, the storage medium which stores the program code constitutes the above-described embodiments. As a storage medium which provides the program code, a floppy disk, a hard disk, an optical disk, a magneto-optical disk, a CD-ROM, a CD-R, a magnetic tape, a non-volatile memory card, a ROM, or an EEPROM, etc. may be used.  
         [0100]     A function of the above-described embodiments is realized not only when the computer executes the program code. For example, an OS or the like, which runs on a computer, can execute a part or whole of the actual processing based on an instruction of the program code so that a function of the above-described embodiments can be achieved.  
         [0101]     Further, the uninstaller and the updater (driver updater) were described in the above-described embodiments as an example, but the application  30  according to the embodiments is not limited to such examples. That is, the application  30  can be an arbitrary application configured to delete a driver of an installer or the like adapted to update or install a driver of a peripheral apparatus.  
         [0102]     Furthermore, according to the above-described embodiments, a PC was described as an example of the information processing apparatus, however, the information processing apparatus can be also a DVD video player, a game console, a set-top box, or an Internet appliance.  
         [0103]     Further, according to the above-described embodiments, an MFP was selected as an example of the peripheral apparatus, however a peripheral apparatus such as a printer, a copier, a facsimile machine, a scanner, a digital camera, or a multifunction apparatus having these functions can also be used.  
         [0104]     Furthermore, according to the above-described embodiments, USB interface was used to interface the PC and the MFP. However, the PC and the MFP can also be connected via Ethernet, wireless Local Area Network (wireless LAN), Institute of Electrical and Electronics Engineers (IEEE) 1394, Bluetooth, Infrared Data Association (IrDA), parallel, or serial interface.  
         [0105]     Thus, according to the above-described embodiments, the user can delete the device driver without being disturbed by the driver reinstall processing even when the device is connected to the apparatus.  
         [0106]     While the present invention has been described with reference to exemplary embodiments, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. The scope of the following claims is to be accorded the broadest interpretation so as to encompass all modifications, equivalent structures, and functions.  
         [0107]     This application claims priority from Japanese Patent Application No. 2006-188242 filed Jul. 7, 2006, which is hereby incorporated by reference herein in its entirety.

Technology Category: g