Patent Description:
In general, in order to use a peripheral device, for example, an image forming apparatus, through an information processing apparatus, a specific device driver that supports the peripheral device is installed into an operating system (hereinafter referred to as "OS") operating on the information processing apparatus. That is, to use an image forming apparatus, a printer driver for the image forming apparatus is installed for use.

Meanwhile, in recent years, some OSes have introduced therein a printing system that enables printing by using a specific protocol without using a printer driver. For example, a printing system that supports, for example, AirPrint (trademark) provided by Apple Inc. , or Mopria (trademark) provided by Android (trademark) of Google Inc. or Windows (trademark) of Microsoft Corporation has been introduced. In this case, a printer driver that supports the image forming apparatus is not required to be installed into the OS, and the OS executes both of generation of a print job and transmission of the print job to the image forming apparatus (e.g., refer to the document <CIT>). AirPrint is a part of the function of the OS.

However, an image forming apparatus that does not support a printing system enabling printing without using a printer driver cannot interpret a print job even when the image forming apparatus has received the print job from the OS. In view of this, we are considering to create, in an information processing apparatus, a virtual image forming apparatus (hereinafter referred to as "virtual device") capable of receiving a print job from the OS, and cause this virtual device to transmit the received print job to the image forming apparatus. To achieve this, the OS is used to find the virtual device. The document <CIT> discloses an information processing apparatus, in which an operating system (OS) is executable in such a way that a component operable based on administrator's authority can realize installation of a device driver. The information processing apparatus includes a selection unit configured to select a peripheral device that serves as an output destination of a processing request if the processing request is received from a user via an application, and a management unit configured to control setting processing for a device driver applicable to the selected peripheral device to use the peripheral device. The management unit is configured to request a first component operable on the OS based on administrator's authority to perform setting processing for a device driver applicable to the selected peripheral device.

According to the present disclosure, there are provided an application, which is installable into a computer including an operating system, a computer, having an operating system and an application installed, and a method performed by a computer that includes an operating system executing an application, as defined by the claims.

Further features of the disclosure will become apparent from the following description of exemplary embodiments with reference to the attached drawings.

<FIG> is a diagram for illustrating an example of an overall configuration of a printing system in a first embodiment of the disclosure.

The printing system in the first embodiment includes host computers 101a and 101b and printers <NUM> and <NUM>.

The host computers 101a and 101b are an example of an information processing apparatus, for example, a personal computer (PC). The printers <NUM> and <NUM> are image forming apparatus configured to receive print data in the format of a page description language (hereinafter referred to as "PDL") or raster format and execute printing.

Those apparatus can communicate to/from one another via a network <NUM>. The network <NUM> is, for example, a local area network (LAN) or an intranet, and can include a wide area network (WAN).

The printers <NUM> and <NUM> may be single function printers having only the printing function, or multifunction printers having a printing function, a scanning function, and a copying function.

Further, only one host computer or printer may be connected to the network <NUM>, or three or more host computers or printers may be connected to the network <NUM>.

In the following description, when the host computers 101a and 101b is described without distinction, the host computers 101a and 101b are simply described as a host computer <NUM> by omitting suffixes of "a" and "b", for example. Further, each component of the host computers 101a and 101b is also described by omitting the suffixes of "a" and "b".

<FIG> is a diagram for illustrating an example of a hardware configuration of the information processing apparatus capable of serving as the host computer <NUM>.

A controller including a CPU <NUM> is configured to control an overall operation of the host computer <NUM>. The CPU <NUM> loads a program stored in a ROM <NUM> or an external memory <NUM> into a RAM <NUM>, and executes the program to perform various kinds of control such as control of a user interface (hereinafter referred to as "UI") screen, generation of print data, and transfer of the print data.

The RAM <NUM> is a main memory of the CPU <NUM>, and is used as a working area or a temporary memory area for loading various kinds of programs. The ROM <NUM> stores, for example, a control program or boot program that can be executed by the CPU <NUM>. An external memory I/F <NUM> is an interface for connecting the external memory <NUM> to the controller. The external memory <NUM> stores, for example, an operating system (OS) <NUM>, a virtual printer service <NUM>, and an application <NUM>.

In the first embodiment, an auxiliary storage device, for example, a hard disk drive (HDD) is assumed as the external memory <NUM>. However, a non-volatile memory, for example, a solid state drive (SSD) may be used instead of or in combination with the HDD. In this manner, hardware components such as the CPU <NUM>, the RAM <NUM>, the ROM <NUM>, and the external memory <NUM> construct a so-called computer.

An operation input device I/F <NUM> is an interface for controlling an operation input device <NUM> such as a keyboard, a pointing device (mouse), or a touch input device. The operation input device <NUM> functions as a receiver configured to receive an operation from the user.

The display I/F <NUM> is configured to control display of a screen on the display <NUM>. The display <NUM> functions as a display configured to display information to the user.

The host computer <NUM> is connected to the network <NUM> via a network I/F <NUM>. The network I/F <NUM> is configured to transmit print data to the printers <NUM> and <NUM> on the network <NUM>, or perform communication to/from the printers <NUM> and <NUM> on the network <NUM> via the Internet, for example. Communication of data to/from an external terminal on the network <NUM> is, for example, wireless communication based on the IEEE <NUM> series, or communication via a wired cable, for example, a LAN cable.

The external memory <NUM> of the host computer in the first embodiment has installed therein the OS <NUM>, the virtual printer service <NUM> described later, and various kinds of applications <NUM>, for example. Those pieces of software load a program stored in the ROM <NUM> or the external memory <NUM> into the RAM <NUM>, and are executed by the CPU <NUM> to implement functions of those pieces of software described below.

<FIG> is a diagram for illustrating a software configuration of the host computers 101a and 101b.

There is a printing system 301a as one function of the OS 210a installed in the host computer 101a. The printing system 301a is configured to control a printing operation caused by the host computer 101a. The printing system 301a is a printing system that enables printing by using a specific protocol without using a printer driver. For example, the printing system 301a is a printing system that supports, for example, AirPrint (trademark) provided by Apple Inc. , or Mopria (trademark) provided by Android (trademark) of Google Inc. or Windows (trademark) of Microsoft Corporation.

The virtual printer service 211a includes a job generator 303a and a server 302a.

The server 302a is configured to generate a virtual printer A <NUM> and a virtual printer B <NUM>. In this example, the virtual printer A <NUM> is generated in association with a printer AY <NUM> being an actual printer. Similarly, the virtual printer B <NUM> is generated in association with a printer BZ <NUM> being an actual printer.

When the virtual printer A <NUM> or the virtual printer B <NUM> has received a printer search request (device search request) based on a predetermined search protocol from the OS 210a, the virtual printer A <NUM> or the virtual printer B <NUM> returns printer information in accordance with the above-mentioned search protocol. Further, the virtual printer A <NUM> or the virtual printer B <NUM> also uses the above-mentioned search protocol to perform communication, for example, detection of the state of the associated printer AY <NUM> or printer BZ <NUM>. In the first embodiment, description is made by using a Bonjour (trademark) protocol provided by Apple Inc. as an example of the search protocol supported by the OS <NUM> of the host computer <NUM>. In the Bonjour protocol, the technology of Multicast DNS is used for searching for a device. The search protocol is not limited to the Bonjour protocol, and other protocols with similar functions may be employed as the search protocol.

The virtual printer A <NUM> (virtual printer B <NUM>) is configured to receive a print job from the printing system 301a of the OS <NUM>, which has registered therein the virtual printer A <NUM> (virtual printer B <NUM>) as a transmission destination of the print job based on a response to the above-mentioned search request. The virtual printer A <NUM> (virtual printer B <NUM>) converts the received print job into a predetermined format that can be interpreted by the job generator 303a, and transmits the print job having the format to the job generator 303a. The job generator 303a serves to use the print job received by each virtual printer from the printing system 301a to generate a print job having a format that can be processed by an actual printer (printer AY <NUM> or printer BZ <NUM>), and transmit the print job to the actual printer. The virtual printer may include the function of the job generator <NUM>. That is, the virtual printer may generate a print job that can be processed by the actual printer based on the received print job, and transmit the print job to the actual printer.

The host computer 101b also has a configuration similar to that of the host computer 101a. That is, there is a printing system 301b as one function of the OS 210b installed in the host computer 101b. The printing system 301b is configured to control a printing operation caused by the host computer 101b. The virtual printer service 211b includes a job generator 303b and a server 302b. The server 302b is configured to generate a virtual printer Y <NUM> and a virtual printer Z <NUM>. In this example, the virtual printer Y <NUM> is generated in association with a printer AY <NUM> being an actual printer. Similarly, the virtual printer Z <NUM> is generated in association with a printer BZ <NUM> being an actual printer.

The virtual printer and the virtual printer service are also referred to as "virtual device" and "virtual device service", respectively.

<FIG> is a diagram for illustrating an example of a software configuration of the virtual printer. In <FIG>, the virtual printer A <NUM> is described as an example. However, the same holds true for other virtual printers.

The virtual printer in the first embodiment includes a search request receiver <NUM>, a search request responder <NUM>, a name setter <NUM>, a print job receiver <NUM>, a print job converter <NUM>, and a print job transmitter <NUM>.

The search request receiver <NUM> is configured to receive a request for searching for a printer based on the Bonjour protocol.

The search request responder <NUM> is configured to return (respond) printer information by using the Bonjour protocol in response to the request for searching for a printer.

The search request receiver <NUM> and the search request responder <NUM> respond only to the search request based on the Bonjour protocol.

The name setter <NUM> is configured to add an identifier to a printer name (device name) returned by the search request responder <NUM> in response to the printer search request that is based on the Bonjour protocol. The identifier is illustrated in <FIG> described later.

The print job receiver <NUM> is configured to receive a print job from the printing system 301a in accordance with a specific protocol. The print job receiver <NUM> receives a print job generated by, for example, an application 212a included in the host computer 101a opening a file being a source of the print job and a user giving a printing instruction on the application. This application 212a includes various kinds of applications operable on the OS 210a, such as a word processing application, a spreadsheet application, a web browser application, an image-editing application.

The print job converter <NUM> is configured to convert the print job received by the print job receiver <NUM> into a format that can be recognized by the job generator 303a. The format that can be recognized by the job generator 303a is, for example, a PDF format. However, the format is not limited thereto.

The print job transmitter <NUM> is configured to transmit the print job converted by the print job converter <NUM> to the job generator 303a.

<FIG> is a diagram for illustrating an example of a software configuration of an installation package for installing the virtual printer service.

An installation package <NUM> includes an installer <NUM> and the virtual printer service <NUM>. When the installation package <NUM> is executed on the host computer <NUM>, the installer <NUM> operates to execute processing of installing the virtual printer service <NUM> into the host computer <NUM>. As a result of this installation processing, the virtual printer service <NUM> is stored into the external memory <NUM> of the host computer <NUM>, and is loaded into the RAM <NUM> at the time of execution of the program to be executed by the CPU <NUM>. The virtual printer service <NUM> is an application, and can generate a plurality of virtual printers.

<FIG> is a flow chart for illustrating an example of the processing of installing the virtual printer service <NUM>. This installation processing is started by the OS <NUM> of the host computer executing the installation package <NUM> of the virtual printer service downloaded from a predefined website (or recorded in a recording medium, for example, a CD-ROM), for example.

In Step S501, the installer <NUM> included in the installation package <NUM> executes processing of selecting an installation destination of the virtual printer service. The installer <NUM> displays an installation destination selection screen (not shown) on the display <NUM> of the host computer <NUM>, and acquires information on an installation destination input by the user on the installation destination selection screen. On the installation destination selection screen, a message indicating, for example, "Please select a disk for installing the virtual printer service" is displayed to prompt selection of an external memory for installing the virtual printer service.

Next, in Step S502, the installer <NUM> installs the virtual printer service <NUM> into the host computer <NUM>. The installation destination is a location that depends on the information on the installation destination acquired in Step S501 described above. The installed virtual printer service <NUM> is executed and activated by the OS <NUM>. When the virtual printer service <NUM> is activated and there is no generated virtual printer, a main UI (<FIG> described later) of the virtual printer service <NUM> is displayed. This main UI can also be displayed by a user operation. When the main UI (<FIG> described later) of the virtual printer service <NUM> is displayed, the virtual printer service <NUM> starts processing of generating a virtual printer illustrated in <FIG>.

<FIG> is a flow chart for illustrating an example of the processing of generating the virtual printer. The processing of this flow chart is executed by the virtual printer service <NUM>.

In Step S601, when the user has pressed an add button on the main UI, the virtual printer service <NUM> detects this operation. The add button is a "+" (plus) button <NUM> of <FIG> described later. The virtual printer service <NUM>, which has detected that the "+" button <NUM> is pressed, displays a screen for adding a virtual printer illustrated in <FIG> described later, and advances the processing to Step S602. Now, the UI of the virtual printer service <NUM> is described with reference to <FIG>.

<FIG> are diagrams for illustrating examples of the UI of the virtual printer service <NUM>. The UI of the virtual printer service <NUM> is displayed on the display <NUM> of the host computer <NUM> on which the virtual printer service <NUM> is activated.

<FIG> is an illustration of an example of the main UI of the virtual printer service.

In <FIG>, a list of virtual printers created by the server <NUM> is displayed on a printer list region <NUM>. The example of <FIG> shows a UI in a state in which two virtual printers (printer A and printer B) are already registered.

The icon, name, and status of the virtual printer A <NUM> are displayed on a region <NUM>. Similarly, the icon, name, and status of the virtual printer B <NUM> are displayed on a region <NUM>. The virtual printer service <NUM> immediately after being installed has generated no virtual printer, and thus no virtual printer is displayed on the list of virtual printers of the region <NUM>.

The user can press the "+" (plus) button <NUM> to add a virtual printer. A UI in the case of pressing the "+" (plus) button <NUM> is described later with reference to <FIG>. Further, a "-" (minus) button <NUM> can be pressed to delete a virtual printer selected on the printer list region <NUM>.

Further, more detailed information on the virtual printer selected on the printer list region <NUM> is displayed on a region <NUM>. Specifically, for example, an icon representing a printer, and the name, location, and status of the printer are displayed. Further, an "activate status monitor" button <NUM> can also be pressed to display the state of the printer AY <NUM> more in detail.

<FIG> is an illustration of an example of the UI (virtual printer addition screen) to be displayed when the "+" button <NUM> illustrated in <FIG> is pressed. A region <NUM> of <FIG> displays a list of printers that are supported by the virtual printer service <NUM> among printers existing in or connected through USB to a network to which the host computer <NUM> is connected. In this example, the printer AY <NUM> and the printer BZ <NUM> connected to the network <NUM> are displayed on a region <NUM> and a region <NUM>, respectively. The user selects, on this list, a printer for which a virtual printer is to be created, inputs a name <NUM> and a location <NUM>, and presses an add button <NUM>. With this, the UI returns to <FIG>, and the virtual printer name (the name input on the name <NUM>) of the added virtual printer is added to and displayed on the printer list region <NUM>.

Now, the description returns to the flow chart of <FIG>.

The virtual printer service <NUM>, which has displayed the screen (<FIG>) for adding a virtual printer, executes processing of searching for a printer in Step S602. The processing of searching for a printer is implemented by executing processing as illustrated in <FIG> described later.

Next, in Step S603, the virtual printer service <NUM> determines whether the printers retrieved in Step S602 described above include a target printer of the virtual printer service <NUM>. Determination of whether a relevant printer is the target printer uses a list of target printers of the virtual printer service held in the virtual printer service <NUM>. When a printer retrieved in Step S602 described above is included in the list, the virtual printer service <NUM> determines this printer as the target printer.

Table <NUM> represents an example of information on the list of target printers of the virtual printer service.

The list of target printers shows only the printer that is supported by the virtual printer service <NUM> among printers that do not support a printing system that enables printing without using a printer driver (that is, that do not support specific protocol). This list is held in the virtual printer service <NUM> before installation of the virtual printer service <NUM>.

In Table <NUM>, the printer name indicates the name of the printer.

Further, Table <NUM> represents an example of information on a list of printers retrieved in Step S602 described above.

In Table <NUM>, the printer name represents the name of the printer. The printer name is the name of a printer held in advance in the printer, and corresponds to a printer name returned by a printer to the host computer <NUM> when the printer is retrieved in Step S602 described above. The printer name is generally a name relating to a printer type, and this printer name is also used in Table <NUM>.

Further, the IP address indicates an address of the printer on the network.

Further, the services type indicates a service that is supported by the printer. For example, when a device has the service type of "_printer. _tcp", it is indicated that the device is a printer that supports the Line Printer Daemon (LPD) protocol.

The list of Table <NUM> shows all the printers retrieved in Step S602 described above.

The virtual printer service <NUM> compares the printers shown in Table <NUM> and Table <NUM> with one another, to thereby determine whether the retrieved printer is a target printer of the virtual printer service. In the example shown in Table <NUM> and Table <NUM>, the printer AY and the printer BZ are determined to be the target printer. In this determination, there is illustrated an example of using a list (so-called "whitelist") of printers that do not support a specific protocol and that are supported by the virtual printer service <NUM>. That is, there is illustrated a configuration of determining a retrieved printer as the target printer when the retrieved printer is included in this list. However, this determination may be performed by using a list (so-called "blacklist") of printers that support a specific protocol or that are not supported by the virtual printer service <NUM>. In this case, there is adopted a configuration of determining a retrieved printer as the target printer when the retrieved printer is not included in this list. That is, there may be adopted a configuration of selecting a printer for which a virtual printer is to be generated by the virtual printer service <NUM> based on information on, for example, a list that can identify a printer that does not support a specific protocol or a printer that is supported by the virtual printer service <NUM>.

In Step S603 described above, when the printers retrieved in Step S602 described above include no target printer of the virtual printer service (NO in Step S603), the virtual printer service <NUM> finishes the processing of this flow chart.

On the contrary, in Step S603 described above, when the printers retrieved in Step S602 described above include a target printer of the virtual printer service (YES in Step S603), the virtual printer service <NUM> advances the processing to Step S604.

In Step S604, the virtual printer service <NUM> displays the printer name of a printer determined to be a target printer in Step S603 described above on the region <NUM> of the virtual printer addition screen (<FIG>). In the above-mentioned example, the printer names of the printer AY <NUM> and the printer BZ <NUM> connected to the network <NUM> are displayed on the region <NUM> and the region <NUM>, respectively. That is, the virtual printer service <NUM> presents, to the user, a list of printers selected based on the above-mentioned list (e.g., list shown in Table <NUM>) from among printers retrieved in Step S602 described above.

Next, in Step S605, the virtual printer service <NUM> executes processing of selecting a printer being a destination to which the virtual printer is to be connected. When the user has pressed the add button <NUM> under a state in which any one of printers is selected on the region <NUM> of <FIG>, the virtual printer service <NUM> detects this operation. Then, the virtual printer service <NUM> acquires, from the virtual printer addition screen (<FIG>), information on the printer name, the name <NUM>, and the location <NUM> of the printer selected on the region <NUM>. In the example of <FIG>, "printer AY" is selected as the information on the printer name of the selected printer, "printer A" is selected as the information on the name, and "3rd floor in this building" is selected as the information on the location.

Next, in Step S606, the virtual printer service <NUM> executes processing of generating a virtual printer. This processing involves associating the printer selected in Step S605 described above as a connection destination, and generating a virtual printer based on the name and location acquired in Step S605 described above. The virtual printer generated in this processing has information to be notified by the printer, which is defined in the Bonjour protocol. This information includes, for example, a connection destination of the virtual printer, a name of the virtual printer, a function of the virtual printer, a service type of the virtual printer, and a printer name of the virtual printer to be notified by using the Bonjour protocol. The connection destination of the virtual printer corresponds to an IP address of the printer selected in Step S605 described above, for example. Specifically, the connection destination is an IP address (exemplified in Table <NUM>) acquired at the time of search of Step S603 described above. Further, the function of the virtual printer corresponds to, for example, supporting a page description language (PDL) or other supporting functions. The function of this virtual printer is different for each printer selected in Step S605 described above, and is held in the virtual printer service <NUM> before installation of the virtual printer service. Further, the printer name of the virtual printer to be notified by using the Bonjour protocol described above is generated in the following manner.

The virtual printer service <NUM> first temporarily sets the printer name of the virtual printer to be notified by using the Bonjour protocol as the above-mentioned name of the virtual printer, and further executes identifier addition processing illustrated in <FIG>. With this, the printer name of the virtual printer to be notified by using the Bonjour protocol is generated.

<FIG> is a flow chart for illustrating an example of the identifier addition processing to be executed in Step S606 of <FIG>. This processing corresponds to processing of adding an identifier to the printer name of the virtual printer to be notified by using the Bonjour protocol. Now, description is made by using an example of adding an identifier to the printer name of the virtual printer A <NUM> to be notified by using the Bonjour protocol. However, the same holds true for other virtual printers.

In Step S1201, the virtual printer service <NUM> acquires, for the virtual printer (hereinafter referred to as "target virtual printer") generated in Step S606 of <FIG>, the printer name of the virtual printer to be notified by using the Bonjour protocol. For example, when the target virtual printer is the virtual printer A <NUM>, "virtual printer A" is acquired.

Next, in Step S1202, the virtual printer service <NUM> determines whether the printer name acquired in Step S1201 described above includes an identifier. The identifier includes information <NUM> indicating that the relevant printer is a virtual printer, and information <NUM> on a host computer operating the target virtual printer. The information on a host computer corresponds to information such as the computer name or login name, which can be acquired from the host computer.

In Step S1202 described above, when the printer name acquired in Step S1201 described above includes an identifier (YES in Step S1202), the virtual printer service <NUM> finishes the processing of this flow chart.

On the contrary, when the printer name acquired in Step S1201 described above does not include an identifier (NO in Step S1202), the virtual printer service <NUM> advances the processing to Step S1203.

In Step S1203, the virtual printer service <NUM> acquires information on a host computer operating the target virtual printer. When the target virtual printer is the virtual printer A <NUM>, the virtual printer service <NUM> acquires information on the host computer 101a. The information acquired in this case is information that can identify the host computer 101a, such as the computer name or login name of the host computer. The information may be information other than the computer name or login name as long as the information can identify the host computer.

Next, in Step S1204, the virtual printer service <NUM> adds, to the printer name acquired in Step S1201 described above, information on the host computer acquired in Step S1203 described above. The processing of Step S1203 and Step S1204 may be performed in order of Step S1204 and Step S1203.

Further, in Step S1205, the virtual printer service <NUM> adds information indicating that the relevant printer is a virtual printer to the printer name to which the information on the host computer name is added in Step S1204 described above. The information indicating that the relevant printer is a virtual printer is a character string of "virtual", for example.

<FIG> is a diagram for illustrating an example of the printer name of the virtual printer to be notified by using the Bonjour protocol, to which the identifier is added through the processing of from Step S1203 to Step S1205 of <FIG>.

Printer names <NUM> to <NUM> of the virtual printer to be notified by using the Bonjour protocol are printer names obtained by adding an identifier to a printer name <NUM> of the virtual printer created in Step S606 of <FIG>. The identifier includes the information <NUM> indicating that the relevant printer is a virtual printer, and information <NUM> on a host computer operating the virtual printer. The order of the pieces of information <NUM>, <NUM>, and <NUM> are not limited thereto. Further, only one of the pieces of information <NUM> and <NUM> may be added to the information <NUM> as the identifier.

In the first embodiment, a character string of "virtual" is used for the information <NUM> indicating that the relevant printer is a virtual printer, and a user name is used for the information <NUM> on the host computer. However, those pieces of information may be other types of information as long as those pieces of information enable identification of a virtual printer and a host computer.

The printer name to which an identifier is added through the above-mentioned identifier addition processing is the printer name of a virtual printer to be notified by using the Bonjour protocol. That is, an identifier is not added to printer names (<NUM> and <NUM>) displayed on the main UI of the virtual printer service illustrated in <FIG>. For example, a specific case in which the host computer 101a logged in by the user A has generated the virtual printer A <NUM> is considered. In this case, the printer name of the virtual printer displayed on the region <NUM> of <FIG> is "printer A", and the printer name of the virtual printer to be notified by using the Bonjour protocol is "printer A_virtual_user A".

Through the above-mentioned processing, it is possible to generate a virtual printer with its printer name to be notified by using the Bonjour protocol being a printer name including an identifier formed of information on a host computer and information indicating that the relevant printer is a virtual printer.

In order to execute printing by using the generated virtual printer, the OS <NUM> is used to register the virtual printer as a service program. The virtual printer registered in the OS <NUM> as a service program is constantly operating during execution of the OS <NUM>, and responds to an inquiry from other programs or information devices. A sequence indicating the device search processing illustrated in <FIG> described later is one example. With this, the virtual printer seems as if the virtual printer were existing as an actual printer from the viewpoint of other programs or information devices.

Now, processing of registering the virtual printer in the OS is described.

<FIG> is a flow chart for illustrating an example of the printer registration processing to be executed by the OS <NUM>. The processing of this flow chart is started when the main UI (<FIG>) for registering a printer that executes printing in the OS <NUM> is displayed through a user operation.

In Step S701, when the user has pressed the add button, the printing system <NUM> of the OS <NUM> detects this operation. This add button is a "+" (plus) button <NUM> in <FIG> described later. When the printing system <NUM> of the OS <NUM> has detected that the "+" button <NUM> is pressed, the printing system <NUM> of the OS <NUM> displays a screen for registering a printer illustrated in <FIG>, and advances the processing to Step S702. Now, the UI for registering a printer that executes printing in the OS <NUM> is described with reference to <FIG>.

<FIG> are diagrams for illustrating an example of the UI for registering a printer that executes printing in the OS <NUM>. The UI for registering a printer that executes printing in the OS <NUM> is displayed on the display <NUM> of the host computer <NUM> operating the OS <NUM>.

<FIG> is an illustration of the main UI for registering a printer that executes printing in the OS <NUM>.

A printer list region <NUM> of <FIG> displays a list of printers already registered in the OS <NUM> as a printer that executes printing. The example of <FIG> is an illustration of a UI in a state in which two printers (printer AY and printer BZ) are already registered.

The icon, name, and status of the virtual printer AY are displayed on a region <NUM>. Similarly, the icon, name, and status of the virtual printer BZ are displayed on a region <NUM>.

The user can press the "+" (plus) button <NUM> to add a printer. A UI in the case of pressing the "+" (plus) button <NUM> is described later with reference to <FIG>. Further, a "-" (minus) button <NUM> can be pressed to delete a printer selected on the printer list region <NUM>.

Further, more detailed information on the printer selected on the printer list region <NUM> is displayed on a region <NUM>. Specifically, for example, an icon representing a printer, and the name, location, and status of the printer are displayed. Further, an "open print queue" button <NUM> can also be pressed to display more in detail the state of the printer selected on the region <NUM>. Further, an "option" button <NUM> can be pressed to change settings of options (not shown) of the printer selected on the region <NUM>, or to display, for example, a screen displaying the remaining amount of a printing agent, such as toner or ink.

<FIG> is an illustration of an example of the UI (printer addition screen) to be displayed when the "+" button <NUM> of <FIG> is pressed. On a region <NUM> of <FIG>, a list of an actual printer on the connected network, an actual printer connected through USB to the network, and a virtual printer is displayed, and presented to the user. The user can select a printer to be registered from the list on the region <NUM>, and input a name <NUM> and a location <NUM>. Then, an add button <NUM> is pressed last, and thus the UI returns to <FIG>, and the registered printer is added to the printer list region <NUM> and displayed.

In Step S702, the printing system <NUM> of the OS <NUM>, which has displayed the screen for registering a printer of <FIG>, executes processing of searching for a printer. The search processing is implemented by executing such processing as illustrated in <FIG> and <FIG> described later. For example, the OS <NUM> transmits a search request using the Bonjour protocol to the network <NUM>, and receives a response to the search request from a device on the network <NUM>, to thereby execute the search processing.

Next, in Step S703, the printing system of the OS determines whether a printer is retrieved in Step S702 described above.

Further, Table <NUM> represents an example of information on a list of printers retrieved in Step S703 described above.

In Table <NUM>, the printer name indicates the name of the printer, and corresponds to a printer name to be notified by using the Bonjour protocol from that printer.

The IP address indicates an address of the printer on the network.

The services type indicates a service that is supported by the printer. For example, when a device has the service type of "_printer. _tcp", it is indicated that the device is a printer that supports an LPD protocol. Further, it is indicated that a device having the service type of "_ipp. _tcp" is a printer that supports an internet printing protocol (IPP).

A device having the service type of "_printer. _tcp" or "_ipp. _tcp" is determined to be a printer. Printers shown in Table <NUM> and satisfying the condition are "printer A_virtual_user A", "printer B_virtual_user C", "printer Y_virtual_user E", "printer Z_virtual_user F", "printer AY", and "printer BZ".

In Step S703 described above, when no printer is retrieved in Step S702 described above (NO in Step S703), the printing system of the OS ends the processing of this flow chart.

On the contrary, in Step S703 described above, when a printer is retrieved in Step S702 described above (YES in Step S703), the printing system of the OS advances the processing to Step S704.

In Step S704, the printing system of the OS displays, as a printer, a list of devices determined to be a printer in Step S703 described above on the region <NUM> of <FIG>. Thus, a list of an actual printer on the connected network, an actual printer connected through USB to the network, and a virtual printer is displayed on the region <NUM>. That is, the listed virtual printers include not only a virtual printer created in the host computer, but also a virtual printer created in another host computer, which is on the connected network. In the example of <FIG>, the printer names of the actual printers AY and BZ connected to the network are displayed on a region <NUM> and a region <NUM>, respectively. Further, the printer names of the virtual printers A and B created in the host computer (101a in this case) displaying this UI are displayed on a region <NUM> and a region <NUM>, respectively. Further, the printer names of the virtual printers Y and Z created in another host computer (101b in this case) on the network <NUM> are also displayed on a region <NUM> and a region <NUM>, respectively. Only the printer supported by the printing system of the OS <NUM> (supporting specific protocol) may be displayed on the region <NUM> of <FIG>.

The printer name to be displayed on the region <NUM> of <FIG> is a printer name to be notified by using the Bonjour protocol from that printer. Thus, in the case of a virtual printer in the first embodiment, a printer name of the virtual printer to which the above-mentioned identifier is added is displayed. For example, the virtual printer A <NUM> is displayed by "printer A_virtual_user A", and the virtual printer B <NUM> is displayed by "printer B_virtual_user C". Further, the printer names of retrieved printers, that is, the printer names of the virtual printer Y361 and the virtual printer Z362 are displayed by "printer Y_virtual_user E" and "printer Z_virtual_user F", respectively.

Next, in Step S705, the printing system <NUM> of the OS <NUM> executes processing of selecting a printer to be registered in the OS <NUM>. When the user has pressed the add button <NUM> under a state in which a printer is selected on the region <NUM> of <FIG>, the printing system <NUM> of the OS <NUM> detects this operation. Then, the printing system <NUM> acquires, from the printer registration screen (<FIG>), information on the printer name, the name <NUM>, and the location <NUM> of the selected printer. In the example of <FIG>, "printer A_virtual_user A" is selected as the information on the printer name of the selected printer, "printer A" is selected as the information on the name, and "3rd floor in the main building" is selected as the information on the location. When the user selects a printer from the list of the region <NUM>, the user is to distinguish between a virtual printer created in the own host computer and a virtual printer created in another host computer. In the first embodiment, as described above, a list of printer names to which an identifier is added is displayed, and thus the user can easily select a virtual printer created in the host computer.

Next, in Step S706, the printing system <NUM> of the OS <NUM> registers a printer in the OS <NUM>. This processing involves registering the printer selected in Step S705 described above in the OS <NUM>. The connection destination information is set to be an IP address (exemplified in Table <NUM>) acquired at the time of search of Step S703 described above, and the printer is registered in the OS <NUM> based on the information on the name and location of the printer acquired similarly in Step S705 described above.

The connection destination IP address, name, and location of the registered printer are stored in the external memory <NUM> of the host computer <NUM>. Then, the UI returns to <FIG>, and the registered printer is added to the printer list region <NUM> and displayed. After that, the registered printer can be selected as a transmission destination of a print job on a printing settings screen (not shown) of the OS <NUM>, which is opened in the application <NUM>, and printing using a specific protocol can be executed.

Through the above-mentioned configuration, the user can easily distinguish between a virtual printer created in the host computer, which executes processing of registering a printer in the OS, and a virtual printer created in another host computer. As a result, the user can easily select a virtual printer created in the host computer, which executes processing of registering a printer in the OS, and register the virtual printer in the OS. Further, it is possible to prevent a virtual printer created in another host computer from being registered in the OS.

When the identifier as in the first embodiment is not added, the region <NUM> of the printer addition screen displays, for example, a list of the printer A, the printer B, the printer Y, the printer Z, the printer AY, and the printer BZ. In this case, the user has a difficulty in determining which printer is an actual printer, a virtual printer created in the own apparatus, or a virtual printer created in another apparatus. As a result, a virtual printer created in another host computer is more likely to be registered in the OS. In a case where a virtual printer created in another host computer is registered in the OS, even when the registered virtual printer is selected for printing, printing cannot be executed under a state in which the another host computer is not activated. In the first embodiment, it is possible to suppress occurrence of such a phenomenon, and the user can easily select a virtual printer created in the information processing apparatus of the user through the printing system of the OS, and register the virtual printer in the OS. As a result, it is possible to prevent a virtual printer created in another information processing apparatus from being registered in the OS.

Now, a sequence of the search processing for a device on the network is described.

<FIG> is a sequence diagram in a case where the printer AY <NUM> notifies of its existence in the search processing for a device on the network.

When the printer AY <NUM> joins the network, the printer AY <NUM> uses the technology of Multicast DNS to notify devices on the same network of an IP address <NUM>, a device name <NUM>, and a service type <NUM> of the printer AY <NUM> (<NUM>). That is, the printer AY <NUM> notifies of printer information in accordance with the Bonjour protocol. The service type is a value indicating a service supported by the device in the Bonjour protocol. An example of the service type indicating a printer is shown in Table <NUM>.

The host computer 101a, which has received the notification from the printer AY <NUM>, adds the IP address <NUM>, the device name <NUM>, and the service type <NUM> of the printer AY <NUM> to cache information <NUM> (<NUM>). The cache information is information to be used by a system for reducing a load on the network in the Bonjour protocol. An example of information included in this cache information is shown in Table <NUM>.

After that, when the host computer 101a searches for a device on the network, the host computer 101a first searches for a device having a service type described in Table <NUM> from cache information <NUM> (<NUM>). When information on the printer AY <NUM> is included in the cache information, information on the printer AY <NUM> included in the cache information is used for subsequent processing (<NUM>).

Further, the host computer 101a uses the technology of Multicast DNS to transmit an inquiry for the supported service to a device on the same network at a fixed interval (<NUM>). That is, is, a device search request based on the Bonjour protocol is transmitted. The host computer 101a notifies the device on the same network of a list (list based on cache information <NUM>) of devices already known by the host computer 101a together with the inquiry.

The printer AY <NUM>, which has received the inquiry from the host computer 101a, checks whether the printer AY <NUM> is included in the list <NUM> of devices already known by the host computer 101a (<NUM>). In this example, the printer AY <NUM> determines that the printer AY <NUM> is included in the list <NUM> of devices already known by the host computer 101a, and does not respond to the inquiry transmitted by the host computer 101a (<NUM>).

<FIG> is a sequence diagram in a case where the printer AY <NUM> notifies of the IP address <NUM>, the device name <NUM>, and the service type <NUM> in response to a search from the host computer 101a in the search processing for a device on the network.

The host computer 101a searches for a device having a service type described in Table <NUM> from cache information <NUM> (<NUM>). When there is no corresponding device in the cache information <NUM>, the host computer 101a uses the technology of Multicast DNS to transmit an inquiry for the supported service to a device on the same network (<NUM>). That is, a device search request based on the Bonjour protocol is transmitted. Even when there is a corresponding device, the host computer 101a transmits an inquiry for the supported service to the device on the same network at a fixed interval, which is shown in <NUM> of <FIG> described above. The host computer 101a notifies the device on the same network of the list <NUM> of devices already known by the host computer 101a together with the inquiry.

The printer AY <NUM> checks whether the printer AY <NUM> is included in the list (list based on cache information <NUM>) of devices already known by the host computer 101a (<NUM>). In this example, the printer AY <NUM> determines that the printer AY <NUM> is not included in the list <NUM> of devices already known by the host computer 101a. Then, the printer AY <NUM> uses the technology of Multicast DNS to notify a device on the same network of the IP address <NUM>, the device name <NUM>, and the service type <NUM> of the printer AY <NUM> (<NUM>). That is, printer information is returned in accordance with the Bonjour protocol.

Then, the host computer 101a adds the IP address <NUM>, the device name <NUM>, and the service type <NUM> of the printer AY <NUM> to the cache information <NUM> (<NUM>).

The host computer 101a uses the information received from the printer AY <NUM> for subsequent processing (<NUM>).

<FIG> is a sequence diagram for illustrating processing of searching for a virtual printer created in the host computer.

The virtual printer A311 and the virtual printer B <NUM> are created in the host computer 101a. In this case, the virtual printer A <NUM> transmits a notification of its existence from the virtual printer A <NUM>. Further, an example in which the virtual printer B <NUM> transmits a notification of its existence in response to a search from the host computer 101a is described.

The virtual printer A <NUM> uses the technology of Multicast DNS to notify host computer 101a of an IP address <NUM>, a device name <NUM>, and a service type <NUM> of the virtual printer A <NUM> (<NUM>). That is, the virtual printer A <NUM> notifies of printer information in accordance with the Bonjour protocol. At this time, the virtual printer A <NUM> in the first embodiment notifies of, as the device name <NUM>, "VP", which is an abbreviation for a virtual printer, as information indicating that the relevant printer is a virtual printer and information to which "User A" is added as information on the host computer. In this example, an example of using a character string of "VP" as the information indicating that the relevant printer is a virtual printer is described. However, a character sting of "virtual" may be used as described above.

The host computer 101a, which has received the notification from the virtual printer A <NUM>, adds the IP address <NUM>, the device name <NUM>, and the service type <NUM> of the virtual printer A <NUM> to cache information (<NUM>) (<NUM>).

After that, when the host computer 101a searches for a virtual printer in the host computer 101a, the host computer 101a first searches for a device having a service type described in Table <NUM> from cache information <NUM> (<NUM>). When information on the virtual printer A <NUM> is included in the cache information, information on the virtual printer A <NUM> included in the cache information is used for subsequent processing (<NUM>).

Further, the host computer 101a uses the technology of Multicast DNS to transmit an inquiry for the supported service to a virtual printer in the host computer 101a at a fixed interval (<NUM>). That is, a device search request based on the Bonjour protocol is transmitted. The host computer 101a notifies the virtual printer in the host computer 101a of a list (list based on cache information <NUM>) of devices already known by the host computer 101a together with the inquiry.

The virtual printer A <NUM>, which has received the inquiry from the host computer 101a, checks whether the virtual printer A <NUM> is included in the list <NUM> of devices already known by the host computer 101a (<NUM>). The virtual printer A <NUM> determines that the virtual printer A <NUM> is included in the list <NUM> of devices already known by the host computer 101a, and does not respond to the inquiry transmitted by the host computer 101a (<NUM>).

The virtual printer B <NUM>, which has received the inquiry from the host computer 101a, checks whether the virtual printer B <NUM> is included in the list <NUM> of devices already known by the host computer 101a (<NUM>). In this example, the virtual printer B <NUM> determines that the virtual printer B <NUM> is not included in the list <NUM> of devices already known by the host computer 101a. Then, the virtual printer B <NUM> uses the technology of Multicast DNS to notify the host computer 101a of an IP address <NUM>, a device name <NUM>, and a service type <NUM> of the virtual printer B <NUM> (<NUM>). That is, printer information is returned in accordance with the Bonjour protocol. At this time, the virtual printer B <NUM> in the first embodiment notifies of, as the device name <NUM>, "VP" as information indicating that the relevant printer is a virtual printer and information to which "User C" is added as information on the host computer.

The host computer 101a adds the IP address <NUM>, the device name <NUM>, and the service type <NUM> of the virtual printer B <NUM> to the cache information <NUM> (<NUM>).

<FIG> is a flow chart for illustrating an example of processing to be executed at the time of execution of printing by the virtual printer.

In Step S1801, when the virtual printer (e.g., virtual printer A <NUM>) has received a print job from the printing system <NUM> in the OS <NUM>, the virtual printer advances the processing to Step S1802.

In Step S1802, the virtual printer converts the print job received in Step S1801 described above into a format that can be recognized by the job generator <NUM>. In this case, the format that can be recognized by the job generator <NUM> is, for example, a PDF format.

Next, in Step S1803, the virtual printer transmits the print job converted in Step S1802 described above to the job generator <NUM>, and ends the processing of this flow chart.

<FIG> is a flow chart for illustrating an example of processing to be executed at the time of execution of printing by the job generator <NUM>.

In Step S1901, when the job generator <NUM> in the virtual printer service <NUM> has received a print job from a virtual printer (e.g., virtual printer A <NUM>), the job generator <NUM> advances the processing to Step S1902.

In Step S1902, the job generator <NUM> converts the print job received in Step S1901 described above into a format that can be recognized (interpreted) by an actual printer (e.g., printer AY <NUM>) with which the virtual printer being a transmission source of the above-mentioned print job is associated. In this case, the format that can be recognized by an actual printer is, for example, a raster format.

Next, in Step S1903, the job generator <NUM> transmits the print job converted in Step S1902 described above to the actual printer with which the virtual printer being a transmission source of the above-mentioned print job is associated, and ends the processing of this flow chart.

In the first embodiment, the configuration of executing the identifier addition processing of <FIG> at the time of generation of a virtual printer, that is, in Step S606 of <FIG> has been described. In the case of this configuration, when a virtual printer is generated, the virtual printer holds a printer name to which an identifier is added as the printer name of the virtual printer to be notified by using the Bonjour protocol. However, aspects of the disclosure included in the first embodiment are not limited to this configuration. There may be adopted a configuration of executing the identifier addition processing of <FIG> and adding an identifier to a printer name of a virtual printer at a time of, for example, notifying of (returning) the printer name by using the Bonjour protocol, and notifying of (returning) the printer name of the virtual printer to which the identifier is added. That is, the identifier addition processing of <FIG> may be executed to add an identifier to a printer name and give a notification at a time of, for example, notification (notification of its existence) of <NUM> of <FIG> or notification (response to inquiry from host computer <NUM>) of <NUM> of <FIG>.

As described above, through use of the virtual printer in the first embodiment, it is possible to transmit a print job to an image forming apparatus that does not support a specific protocol from a printing system that enables printing without using a printer driver by using the specific protocol. Regarding the virtual printer in the first embodiment, it is possible to easily distinguish between a virtual printer created in a host computer that executes the processing of registering a printer in the OS and a virtual printer created in another host computer. Thus, the user can easily select a virtual printer created in a host computer that executes the processing of registering a printer in the OS, and register the virtual printer in the OS. Further, it is possible to prevent a virtual printer created in another computer from erroneously being registered in the OS. As a result, it is possible to suppress occurrence of such a phenomenon that when a virtual printer created in another host computer is selected for printing, printing cannot be executed because another host computer is not activated.

In the first embodiment, description has been made of the configuration of notifying of, as the printer name of a virtual printer to be notified by using the Bonjour protocol, a printer name to which an identifier including information indicating that the relevant printer is a virtual printer and information on a host computer is added. A second embodiment of the disclosure adopts a configuration in which an access range of a virtual printer is set, and another host computer is not notified of the printer name of the virtual printer by using the Bonjour protocol. As a result, a host computer other than a host computer operating a virtual printer cannot find the virtual printer. Thus, it is possible to prevent the user from erroneously registering a virtual printer created in another host computer in the OS. With this, it is possible to prevent such a phenomenon that when a virtual printer created in another computer is selected for printing, printing cannot be executed because another host computer is not activated. Now, a configuration of the second embodiment is described in detail. In the second embodiment, the identifier addition processing of <FIG> is not executed as in the first embodiment, and a virtual printer notifies of (returns) a printer name to which the above-mentioned identifier is not added.

<FIG> is a flow chart for illustrating an example of processing to be executed at the time of activation of a virtual printer in the second embodiment. This processing is executed when the virtual printer service <NUM> activates a virtual printer. When the virtual printer service <NUM> is activated, the virtual printer service <NUM> activates a virtual printer generated in the virtual printer service <NUM>. Further, when the virtual printer is generated, the virtual printer service <NUM> activates the generated virtual printer.

In Step S1301, the virtual printer service <NUM> receives settings of an access range of a virtual printer to be activated. The virtual printer service <NUM> displays a screen (not shown) for setting the access range of the virtual printer on the display <NUM> of the host computer <NUM> operating the virtual printer service <NUM>, and receives settings of the range of access from the user. Reception of the settings of the access range is performed by selecting "within host computer operating virtual printer" or "public", for example. When the virtual printer service <NUM> has received the settings of the access range from the user, the virtual printer service <NUM> advances the processing to Step S1302.

In Step S1302, the virtual printer service <NUM> determines the access range of the virtual printer whose settings are input in Step S1301 described above. When the access range is "within host computer operating virtual printer" (YES in Step S1302), the virtual printer service <NUM> advances the processing to Step S1303.

In Step S1303, the virtual printer service <NUM> sets the access range of the virtual printer to be activated to "within host computer operating virtual printer", and activates the virtual printer in Step S1305.

On the contrary, in Step S1302 described above, when the access range is "public" (NO in Step S1302), the virtual printer service <NUM> advances the processing to Step S1304.

In Step S1304, the virtual printer service <NUM> sets the access range of the virtual printer to be activated to "public", and in Step S1305, activates the virtual printer.

<FIG> is a flow chart for illustrating an example of processing of notifying a device in the network of information on a virtual printer in the second embodiment. As described above, the virtual printer uses the Bonjour protocol to notify the OS <NUM> of the host computer <NUM> operating the virtual printer of the printer name of the virtual printer (e.g., notification of <NUM> or notification of <NUM> of <FIG>). In response to this, the OS <NUM> of the host computer <NUM> notifies a device on the network to which the host computer <NUM> is connected of information based on the notification. When the OS <NUM> in the second embodiment has received a notification of printer information (including printer name of virtual printer, for example) by using the Bonjour protocol from the virtual printer, the OS <NUM> executes the processing of this flow chart. Now, a case of notifying a device on the network of information on the virtual printer A <NUM> is described as an example. However, the same holds true for other virtual printers.

In Step S1401, the OS 210a of the host computer 101a acquires information on the access range of the virtual printer A311 being a notification source of the received printer information.

Next, in Step S1402, the OS 210a determines the access range acquired in Step S1401 described above. Then, when the access range is "within host computer operating virtual printer" (YES in Step S1402), the OS 210a ends the processing of this flow chart.

On the contrary, in Step S1402 described above, when the access range is "public" (NO in Step S1402), the OS 210a advances the processing to Step S1403.

In Step S1403, the OS 210a uses the technology of Multicast DNS to notify a device on the same network of the IP address, device name, and service type of the virtual printer A <NUM>. That is, printer information is notified to a device on the same network in accordance with the Bonjour protocol. Then, the OS 210a ends the processing of this flow chart.

<FIG> are flow charts for illustrating an example of processing for an inquiry for a supported service from a device on the same network in the second embodiment. The processing of <FIG> is started by the OS <NUM> of the host computer <NUM> operating the virtual printer.

First, the flow chart of <FIG> is described. Now, the host computer 101a is described as an example. However, the same holds true for other host computers.

In Step S1501, the OS 210a of the host computer 101a uses the technology of Multicast DNS to receive an inquiry for the supported service from the host computer 101b and a list of devices already known by the host computer 101b. That is, a device search request based on the Bonjour protocol is received. In response to this reception, the OS 210a performs such control as to execute processing of from Step S1502 to Step S1506 for each virtual printer generated in the host computer 101a.

First, in Step S1502, the OS 210a acquires one unprocessed virtual printer (hereinafter referred to as "processing target virtual printer") from among virtual printers generated in the host computer 101a. Further, the OS 210a acquires information on the access range of the processing target virtual printer.

Next, in Step S1503, the OS 210a determines the access range acquired in Step S1502 described above. Then, when the access range is limited to the host computer operating the processing target virtual printer (YES in Step S1503), the OS 210a advances the processing to Step S1507.

On the contrary, in Step S1503 described above, when no limitation is set on the access range (NO in Step S1502), the OS 210a advances the processing to Step S1504.

In Step S1504, the OS 210a uses the technology of Multicast DNS to transmit, to the processing target virtual printer, the inquiry for the supported service from the host computer 101b received in Step S1501 described above, and a list of devices already known by the host computer 101b. That is, a device search request from the outside, which is based on the Bonjour protocol, is transmitted to the processing target virtual printer.

Now, processing to be executed by the virtual printer that has received an inquiry in Step S1504 described above is described with reference to <FIG>. Now, the virtual printer A <NUM> is described as an example. However, the same holds true for other virtual printers.

In Step S1511, the virtual printer A <NUM> receives an inquiry (search request) transmitted by the OS 210a in Step S1504 described above, which is based on the Bonjour protocol, and a list of devices already known by the host computer 101b.

Next, in Step S1512, the virtual printer A <NUM> acquires the list of devices already known by the host computer 101b.

Next, in Step S1513, the virtual printer A311 determines whether the virtual printer A <NUM> is included in the list of devices already known by the host computer 101b in Step S1512 described above.

In Step S1513 described above, when the virtual printer A <NUM> is included in the list of devices already known by the host computer 101b (YES in Step S1513), the virtual printer A311 ends the processing of this flow chart. In this case, the virtual printer A <NUM> does not respond to the inquiry received in Step S1511 described above.

On the contrary, when the virtual printer A <NUM> is not included in the list of devices already known by the host computer 101b (NO in Step S1513), the virtual printer A <NUM> advances the processing to Step S1514.

In Step S1514, the virtual printer A <NUM> uses the technology of Multicast DNS to notify the OS 210a of the IP address, device name, and service type of the virtual printer A <NUM>. That is, printer information is returned in accordance with the Bonjour protocol, and the processing of this flow chart is brought to an end.

In Step S1505, the OS 210a determines whether the OS 210a has received a response (IP address, device name, and service type of processing target virtual printer) to the inquiry transmitted in Step S1504 described above from the processing target virtual printer. When there is no response from the processing target virtual printer (NO in Step S1505), the OS 210a advances the processing to Step S1507.

On the contrary, when the OS 210a has received a response from the processing target virtual printer (YES in Step S1505), the OS 210a advances the processing to Step S1506.

In Step S1506, the OS 210a uses the technology of Multicast DNS to notify a device on the same network of the IP address, device name, and service type of the processing target virtual printer, which are received in Step S1505 described above. That is, printer information is returned in accordance with the Bonjour protocol. After the processing of Step S1506, the OS 210a advances the processing to Step S1507.

In Step S1507, the OS 210a determines whether the processing illustrated in Step S1502 to Step S1506 described above is finished for all the virtual printers generated in the host computer 101a. When there is a virtual printer for which the processing is not finished yet (NO in Step S1507), the OS 210a returns to the processing of Step S1502, and transitions to processing for a next virtual printer.

On the contrary, when the processing illustrated in Step S1502 to Step S1506 described above is finished for all the virtual printers generated in the host computer 101a (YES in Step S1507), the OS 210a ends the processing of this flow chart.

There may be adopted a configuration of executing the processing of <FIG> and avoiding executing the processing of <FIG>. That is, there may be adopted a configuration in which the host computer <NUM> passes a device search request received from the outside to the internal virtual printer, but does not return a response from the virtual printer to the outside. Also with this configuration, it is possible to obtain a similar effect.

Further, in the above description of the configuration, the OS <NUM> of the host computer <NUM> determines the access range of the virtual printer, and does not transmit a notification from the virtual printer to the outside of the access range, and does not pass a search request from the outside of the access range to the virtual printer. However, the disclosure included in the second embodiment is not limited thereto. For example, the OS <NUM> may execute processing similar to that of the first embodiment, and the virtual printer may determine the access range of the virtual printer itself and avoid giving a notification to the outside of the access range or avoid responding to a search request from the outside of the access range.

As described above, in the second embodiment, processing that depends on the access range of the virtual printer is performed, and the access range is set to the host computer operating the virtual printer, to thereby prevent the virtual printer from responding to a search from a device on the network. With this configuration, in the second embodiment, a host computer other than a host computer operating the virtual printer cannot find its virtual printer. Thus, when the processing of registering a printer in the OS is performed, a virtual printer generated in a host computer other than the host computer operating the virtual printer that is executing the processing of registering a printer in the OS is not displayed on the printer registration screen of <FIG>. With this, it is possible to prevent the user from erroneously registering a virtual printer created in another host computer in the OS. As a result, it is possible to prevent such a phenomenon that when a virtual printer created in another computer is selected for printing, printing cannot be executed because another host computer is not activated.

In this manner, according to each embodiment, it is possible to transmit, to an image forming apparatus that does not support a specific protocol, a print job that can be interpreted by the image forming apparatus from a printing system that enables printing without using a printer driver. Further, it is possible to suppress a situation in which the user erroneously registers a virtual printer created in another host computer in the OS. As a result, it is possible to suppress such a phenomenon that when a virtual printer created in another computer is selected for printing, printing cannot be executed because another host computer is not activated.

The function of each piece of software of the host computer <NUM> described in each embodiment described above is implemented by the CPU <NUM> loading a program (for example, <NUM>, <NUM>, and <NUM>) read or downloaded from, for example, an external memory onto the RAM <NUM>, and executing the program. That is, each piece of software in each embodiment described above is used for causing the information processing apparatus to implement the function of each embodiment described above.

The configuration and details of various kinds of pieces of data described above are not limited to this, and it is to be understood that those pieces of data may have various kinds of configurations or details depending on the application or purpose.

Embodiments of the disclosure have been described above, but the disclosure may be embodied as a system, an apparatus, a method, a program, or a storage medium, for example. Specifically, the disclosure may be applied to a system formed of a plurality of devices, or to an apparatus formed of one device.

Further, all configurations obtained by combining the above-mentioned embodiments are encompassed in the disclosure.

Embodiment(s) of the disclosure can also be realized by a computer of a system or apparatus that reads out and executes computer executable instructions (e.g., one or more programs) recorded on a storage medium (which may also be referred to more fully as a 'non-transitory computer-readable storage medium') to perform the functions of one or more of the above-described embodiment(s) and/or that includes one or more circuits (e.g., application specific integrated circuit (ASIC)) for performing the functions of one or more of the above-described embodiment(s), and by a method performed by the computer of the system or apparatus by, for example, reading out and executing the computer executable instructions from the storage medium to perform the functions of one or more of the above-described embodiment(s) and/or controlling the one or more circuits to perform the functions of one or more of the above-described embodiment(s).

Further, the aspect of the embodiments may be applied to a system formed of a plurality of devices, or may be applied to an apparatus formed of one device.

Claim 1:
An application (211a, 211b), which is installable into a computer (<NUM>, 101a, 101b) including an operating system (<NUM>, 210a, 210b), wherein a printing system (301a, 301b) of the operating system is configured to transmit print data according to a predetermined protocol, wherein the application, when executed on the computer, causes the computer to execute:
searching (S602) for a printer (<NUM>, <NUM>) via a network (<NUM>);
determining (S603) one or more target printers from among printers found by the searching, wherein a target printer is a printer which is supported by the application among printers that do not support the predetermined protocol;
receiving (S605) a selection of a printer from among the one or more determined target printers from a user, wherein a name and a location of the selected printer is acquired;
generating (S606) a virtual printer (<NUM>, <NUM>, <NUM>, <NUM>) on the application based on the acquired name and location of the selected printer, the virtual printer corresponding to the selected printer;
notifying (S703, S706) the operating system of information (<NUM>-<NUM>) of the virtual printer, wherein the information of the virtual printer on the application is registered on the operating system;
receiving (S1801, S1901) print data from the printing system (<NUM>) of the operating system;
converting (S1802, S1902) the print data so that the selected printer corresponding to the virtual printer on the application is capable of processing the print data; and
transmitting (S1803, S1903) the converted print data to the selected printer corresponding to the virtual printer on the application.