Storage medium, control method, and program

JP2024166332A5Pending Publication Date: 2025-11-21CANON KK
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024159807
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-09-17
Publication Date
2025-11-21

AI Technical Summary

Technical Problem

Existing information processing devices face challenges in appropriately executing device search processes due to compatibility issues between different operating systems, particularly when running applications on guest OS environments like Chrome OS, which hinder effective communication methods such as broadcast, multicast, and Wi-Fi Direct searches.

Method used

A predetermined program runs on the host OS of an information processing device, employing multiple search methods based on the OS environment, including broadcast, multicast, and Wi-Fi Direct, to ensure appropriate device discovery and communication, and handles search results accordingly.

Benefits of technology

Enhances the accuracy and effectiveness of device search and communication processes by adapting search strategies based on the OS environment, ensuring compatibility and functionality across various systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

To more appropriately execute processing for searching for a communication device.SOLUTION: Provided is a program that causes a computer of an information processing device to execute a first execution step including: executing first processing, by a predetermined program, for searching for a device on a network to which the information processing device belongs, with a first method when the predetermined program is running on a host OS of the information processing device and the predetermined program is not running on a guest OS different from the host OS; and executing second processing, by the predetermined program, for searching for a device on the network to which the information processing device belongs, with a second method different from the first method when the guest OS is running on the host OS and the predetermined program is running on the guest OS.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to an information processing device, a control method, and a program. [Background technology]

[0002] Patent Document 1 proposes a technique in which an information processing device searches for a communication device by broadcasting or Wi-Fi Direct (registered trademark). [Prior art documents] [Patent documents]

[0003] [Patent Document 1] Patent Publication No. 2017-010324 Summary of the Invention [Problem to be solved by the invention]

[0004] Incidentally, as the practice of information processing devices searching for communication devices becomes widespread, there is a demand for more appropriately executing processing for searching for communication devices.

[0005] SUMMARY OF THE PRESENT DISCLOSURE In view of the above, an object of the present invention is to more appropriately execute processing for searching for a communication device. [Means for solving the problem]

[0006] The present invention has been made to solve the above-mentioned problems, and is characterized by having a predetermined program execute, in a computer of an information processing device, a first execution step of executing, by the predetermined program, a first process for searching for devices on a network to which the information processing device belongs by a first method, based on the fact that the predetermined program is running on a host OS of the information processing device and that the predetermined program is not running via a guest OS different from the host OS, and executing, by the predetermined program, a second process for searching for devices on the network to which the information processing device belongs by a second method different from the first method, based on the fact that the guest OS is running on the host OS and that the predetermined program is running on the guest OS; and a second execution step of executing, when the first process is executed, a process based on a result of the search by the first method, and when the second process is executed, a process based on a result of the search by the second method. Effect of the Invention

[0007] According to the present invention, it is possible to more appropriately execute the process for searching for a communication device. [Brief description of the drawings]

[0008] [Figure 1] FIG. 1 is a diagram illustrating an example of a configuration of a communication system. [Diagram 2] A diagram showing the wireless connection sequence in WFD mode [Diagram 3] FIG. 2 is a diagram showing a software configuration of the information processing device. [Figure 4] FIG. 13 is a flowchart showing a process for searching for a device using a communication app. [Diagram 5] FIG. 13 is a diagram showing an example of XML data returned by a communication device as a response result. [Figure 6] Flowchart of the scan function using a communication app [Figure 7] FIG. 13 is a diagram showing an example of a notification screen. [Figure 8]Flowchart of the scan function using a communication app DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0009] Preferred embodiments of the present invention will be described below with reference to the drawings. However, it should be understood that the scope of the present invention includes any modifications and improvements to the embodiments described below that are made based on the ordinary knowledge of those skilled in the art without departing from the spirit of the present invention.

[0010] (First embodiment) An information processing device and a communication device included in the communication system of the present embodiment will be described. In the present embodiment, a smartphone is exemplified as the information processing device, but the present embodiment is not limited thereto, and various devices such as a mobile terminal, a notebook PC, a tablet terminal, a PDA (Personal Digital Assistant), and a digital camera can be applied. In addition, various devices that can perform wireless communication with the information processing device can be applied as the communication device. For example, if it is a printer, it can be applied to an inkjet printer, a full-color laser beam printer, a monochrome printer, and the like. In addition to printers, it can also be applied to scanners, copiers, facsimile machines, mobile terminals, smartphones, notebook PCs, tablet terminals, PDAs, digital cameras, music playback devices, televisions, smart speakers, and the like. In addition, it can also be applied to multifunction machines having multiple functions such as a copying function, a FAX function, a printing function, and a scanner function. In the present embodiment, the communication device is a multifunction printer having a printing function, a scanner function, and the like.

[0011] <Hardware configuration of each device> First, the configuration of an information processing device included in the communication system of this embodiment and a communication device capable of communicating with the information processing device will be described with reference to the block diagram of Fig. 1. In addition, the following configuration will be described as an example in this embodiment, but the functions are not particularly limited to those shown in this diagram.

[0012] The information processing device 101 includes an input interface 102, a CPU 103, a ROM 104, a RAM 105, an external storage device 106, an output interface 107, an operation display unit 108, a communication unit 109, a short-range wireless communication unit 110, an image capturing device 111, and the like.

[0013] The input interface 102 is an interface for receiving data input and operational instructions from a user, and is composed of a physical keyboard, buttons, a touch panel, etc. Note that the output interface 107 described below and the input interface 102 may be configured in the same manner, so that the screen output and the reception of operations from the user are performed by the same configuration.

[0014] The CPU 103 is a system control unit, and controls the entire information processing device 101 .

[0015] The ROM 104 stores fixed data such as control programs and data tables executed by the CPU 103, and embedded operating system (hereinafter referred to as OS) programs. In this embodiment, each control program stored in the ROM 104 performs software execution control such as scheduling, task switching, and interrupt processing under the management of the embedded OS stored in the ROM 104. Note that in this embodiment, the OS held by the ROM 104 and running on the information processing device 101 is the Android (registered trademark) OS provided by Google Inc. or the Chrome (registered trademark) OS provided by Google Inc. If the OS running on the information processing device 101 is the Chrome OS, the ROM 104 also holds a virtual Android OS for running an application for the Android OS, which will be described later, on the information processing device 101.

[0016] The RAM 105 is composed of a static random access memory (SRAM) that requires a backup power source. Since the RAM 105 holds data using a primary battery (not shown) for data backup, it can store important data such as program control variables without volatilizing the data. The RAM 105 also has a memory area for storing setting information for the information processing device 101, management data for the information processing device 101, and the like. The RAM 105 is also used as the main memory and work memory for the CPU 103.

[0017] The external storage device 106 includes an application program (hereinafter, referred to as a communication application) having a function of communicating with the communication device 151. The communication application is specifically, for example, an application having a print function for causing the communication device 151 to execute printing, or a scan function for causing the communication device 151 to execute scanning. However, the communication application is not limited to this form, and may be an application having either a print function or a scan function, or may be an application having other functions. The external storage device 106 also includes various programs such as a print information generation program for generating print information that can be interpreted by the communication device 151, and an information transmission / reception control program for transmitting / receiving information to / from the communication device 151 connected via the communication unit 109. The external storage device 106 stores various information used by these programs. The external storage device 106 also stores image data obtained from other information processing devices or the Internet via the communication unit. In this embodiment, the communication application is an application for the Android OS.

[0018] The output interface 107 is an interface that controls the operation display unit 108 to display data and notify the status of the information processing device 101 .

[0019] The operation display unit 108 is composed of an LED (light emitting diode) and an LCD (liquid crystal display), and displays data and notifies the status of the information processing device 101. Note that a soft keyboard having keys such as numeric input keys, a mode setting key, a decision key, a cancel key, and a power key may be provided on the operation display unit 108 to accept input from the user via the operation display unit 108.

[0020] The communication unit 109 is configured to connect to a device such as the communication device 151 and execute data communication. For example, the communication unit 109 can be connected to an access point (not shown) in the communication device 151. When the communication unit 109 is connected to the access point in the communication device 151, the information processing device 101 and the communication device 151 can communicate with each other. Hereinafter, the access point may be expressed as AP. The communication unit 109 may directly communicate with the communication device 151 by wireless communication, or may communicate via an access point 131 that is located outside the information processing device 101 and outside the communication device 151. In this embodiment, the communication standard of the IEEE802.11 series is used as the wireless communication method. The communication standard of the IEEE802.11 series is Wi-Fi (registered trademark).

[0021] Moreover, the access point 131 may be, for example, a device such as a wireless LAN router. In this embodiment, a method in which the information processing device 101 and the communication device 151 are directly connected to each other without going through an external access point is called a direct connection method. Also, a method in which the information processing device 101 and the communication device 151 are connected to each other through an external access point 131 is called an infrastructure (hereinafter, referred to as infrastructure) connection method.

[0022] The short-range wireless communication unit 110 is configured to perform data communication by wirelessly connecting to a device such as the communication device 151 at a short distance, and performs communication by a communication method different from that of the communication unit 109. Examples of the short-range wireless communication method used by the short-range wireless communication unit 110 include Bluetooth (registered trademark) and NFC (Near Field Communication). Bluetooth may be Bluetooth Classic or Bluetooth Low Energy. The short-range wireless communication unit 110 is connectable to a short-range wireless communication unit 157 in the communication device 151.

[0023] The photographing device 111 is a device that converts an image photographed by a photographing element into digital data. The digital data is temporarily stored in the RAM 105. After that, the digital data is converted into a predetermined image format by a program executed by the CPU 154, and is stored in the external storage device 106 as image data.

[0024] The ROM 152 stores fixed data such as the control program executed by the CPU 154, data tables, and the OS program.

[0025] The communication device 151 includes a ROM 152, a RAM 153, a CPU 154, a print engine 155, a communication unit 156, a short-range wireless communication unit 157, an input interface 158, an output interface 159, an operation display unit 160, and a scan control unit 161. The communication device 151 can operate in a connection mode (communication mode) that is set by the connection mode being set.

[0026] The communication unit 156 is a component for the communication device 151 to communicate with other devices, and in this embodiment, the communication unit 156 communicates according to the IEEE802.11 series of communication standards. The communication unit 156 has an access point for connecting to devices such as the information processing device 101 as an access point inside the communication device 151. The access point can be connected to the communication unit 109 of the information processing device 101. The communication unit 156 may directly communicate with the information processing device 101 by wireless communication, or may communicate via the access point 131. The communication unit 156 may include hardware that functions as an access point, or may operate as an access point by software for functioning as an access point. In this embodiment, the communication unit 156 and the short-range wireless communication unit 157 are realized by one wireless chip. That is, in this embodiment, a combo chip that supports both the communication function of the IEEE802.11 series of communication standards and the communication function by the short-range wireless communication method is used. However, the present invention is not limited to this embodiment, and the communication unit 156 and the short-range wireless communication unit 157 may be realized by separate wireless chips.

[0027] The RAM 153 is composed of a DRAM or the like that requires a backup power source. Since the RAM 153 holds data by being supplied with a data backup power source (not shown), it can store important data such as program control variables without volatilizing the data. The RAM 153 is also used as the main memory and work memory of the CPU 154, and stores a reception buffer for temporarily storing print information received from the information processing device 101, etc., and various other information.

[0028] ROM 152 stores fixed data such as control programs, data tables, and OS programs executed by CPU 154. In this embodiment, each control program stored in ROM 152 performs software execution control such as scheduling, task switching, and interrupt processing under the management of an embedded OS stored in ROM 152. ROM 152 also has a memory area for storing data that needs to be held even when power is not supplied, such as setting information for communication device 151 and management data for communication device 151.

[0029] The CPU 154 is a system control unit, and controls the entire communication device 151 .

[0030] Based on the information stored in the print engine 155 and the RAM 153 and the print job received from the information processing device 101, etc., an image is formed on a recording medium such as paper using a recording agent such as ink, and the print result is output. At this time, the print job transmitted from the information processing device 101, etc., has a large amount of transmission data and requires high-speed communication, so it is received via a communication unit 156 that can communicate faster than the short-range wireless communication unit 157.

[0031] The short-range wireless communication unit 157 is a component for wirelessly connecting to a device such as the information processing device 101 at a short distance and performing data communication, and performs communication by a communication method different from that of the communication unit 156. Examples of the short-range wireless communication method used by the short-range wireless communication unit 110 include Bluetooth (registered trademark) and NFC. Bluetooth may be Bluetooth Classic or Bluetooth Low Energy. The short-range wireless communication unit 157 is connectable to the short-range wireless communication unit 110.

[0032] The input interface 158 is an interface for receiving data input and operation instructions from the user, and is composed of a physical keyboard, buttons, a touch panel, etc. Note that the output interface 159 described below and the input interface 158 may have the same configuration, and may output the screen and receive operations from the user with the same configuration. The output interface 159 is an interface that controls the operation display unit 160 to display data and notify the status of the communication device 151.

[0033] The operation display unit 160 is composed of a display unit such as an LED (light emitting diode) or an LCD (liquid crystal display), and displays data and notifies the state of the communication device 151. Note that a soft keyboard having keys such as numeric input keys, a mode setting key, a decision key, a cancel key, and a power key may be provided on the operation display unit 160 to accept input from the user via the operation display unit 160.

[0034] The scan control unit 161 includes an image sensor unit (reading unit) that scans the document placed on the document tray or ADF shown in the attached drawings. The image sensor unit includes a light source that irradiates the document with light and an image sensor in which elements that read the reflected light and perform photoelectric conversion are arranged. The scan control unit 161 acquires image data by A / D (analog / digital) conversion of an analog electrical signal obtained by reading the document with the image sensor unit. The scan control unit 161 also includes a circuit that performs DMA (direct memory access) transfer to store the acquired image data in the RAM 153.

[0035] <About the direct connection method> A direct connection refers to a form in which devices are directly (i.e., peer-to-peer) wirelessly connected to each other without going through an external device such as the access point 131. The communication device 151 can operate in a mode for communicating via a direct connection (direct connection mode) as one of the connection modes. In Wi-Fi communication, there are multiple modes for communicating via a direct connection, such as a software AP mode and a Wi-Fi Direct (registered trademark) mode. Wi-Fi Direct is hereinafter abbreviated as WFD.

[0036] A mode in which a direct connection is performed by WFD is called a WFD mode. WFD is a standard established by the Wi-Fi Alliance, and is included in the IEEE802.11 series of communication standards. In the WFD mode, after a device to be a communication partner is searched for by device search information, the roles of a P2P group owner (GO) and a P2P client are determined, and the remaining wireless connection processing is performed. The group owner corresponds to a Wi-Fi parent station (parent device), and the client corresponds to a Wi-Fi child station (child device). This role determination corresponds to, for example, GO Negotiation in P2P. Note that in the WFD mode before the role determination, the communication device 151 is in a state of neither a parent station nor a child station. Specifically, first, one device issues device search information between devices to communicate with each other, and searches for a device to connect to in WFD mode. When the other device to be a communication partner is searched for, the two devices confirm information about services and functions that can be provided by each other's devices. Note that this device provision information confirmation is optional and not required. This device provision information confirmation phase corresponds to, for example, Provision Discovery of P2P. Next, by mutually confirming this device provision information, it is determined which one will be the P2P client and which one will be the P2P group owner as their roles. Next, when the client and the group owner are determined, parameters for performing communication by WFD are exchanged between them. Based on the exchanged parameters, the remaining wireless connection processing and IP connection processing are performed between the P2P client and the group owner. Note that in the WFD mode, the communication device 151 may always operate as a GO without executing the above-mentioned GO Negotiation. That is, the communication device 151 may operate in a WFD mode that is an autonomous GO mode. Also, the state in which the communication device 151 operates in the WFD mode is, for example, a state in which the communication device 151 operates as a GO even though a WFD connection is not established, or a state in which a WFD connection is established and the communication device 151 operates as a GO.

[0037] In the software AP mode, between devices that communicate (for example, the information processing device 101 and the communication device 151), one device (for example, the information processing device 101) becomes a client that plays a role of requesting various services. Then, the other device realizes the function of an access point in Wi-Fi by software settings. The software AP corresponds to a parent station of Wi-Fi, and the client corresponds to a child station of Wi-Fi. In the software AP mode, the client searches for a device that will become a software AP using device search information. When the software AP is searched, the remaining wireless connection processing (establishment of a wireless connection, etc.) between the client and the software AP is performed, and then the IP connection processing (assignment of an IP address, etc.) is performed. Note that commands and parameters transmitted and received when realizing a wireless connection between the client and the software AP may be those specified in the Wi-Fi standard, and therefore a description thereof will be omitted here.

[0038] In this embodiment, when the communication device 151 establishes and maintains a direct connection, it operates as a master station in the network to which the communication device 151 belongs. The master station is a device that constructs a wireless network and provides a slave station with parameters used for connecting to the wireless network. The parameters used for connecting to the wireless network are, for example, parameters related to a channel used by the master station. By receiving the parameters, the slave station connects to the wireless network constructed by the master station using the channel used by the master station. In the direct connection mode, the communication device 151 operates as a master station, so that the communication device 151 can determine which frequency band and which channel to use for communication in the direct connection mode. In this embodiment, the communication device 151 is capable of using a channel corresponding to a 2.4 GHz frequency band and a channel corresponding to a 5 GHz frequency band for communication in the direct connection mode. Then, which frequency band to use (i.e., which channel of the frequency band to use) can be arbitrarily set by a user through a setting on a screen displayed by the communication device 151. However, in this embodiment, even if 5 GHz is selected on the screen displayed by the communication device 151, the communication device 151 does not use a channel corresponding to the DFS (Dynamic Frequency Selection) band in the 5 GHz frequency band for communication in the direct connection mode. In other words, the communication device 151 uses only channels corresponding to frequency bands other than the DFS band in the 5 GHz frequency band for communication in the direct connection mode. Note that, when a channel corresponding to the DFS band is being used and a radar wave in the frequency band corresponding to the channel is detected, the channel currently being used must be changed. Such a frequency band in which a channel change may occur due to the detection of a radar wave is called a DFS band. Note that, for example, when a wireless chip compatible with the DFS function is used, a channel corresponding to the DFS (Dynamic Frequency Selection) band in the 5 GHz frequency band may be available for communication in the direct connection mode.

[0039] 2 is a diagram showing a wireless connection sequence in WFD mode. Note that the processing executed by each device in this sequence is realized by the CPU of each device reading various programs stored in a memory such as a ROM of each device into a RAM and executing them. Also, this processing is assumed to be started when a predetermined operation for establishing a connection by WFD is received from a user in a state in which each device is running a predetermined application for executing a WFD function. Note that an example of the predetermined operation for establishing a connection by WFD is an operation of selecting the "Enable / Disable Direct Connection Mode" button. Note that this operation corresponds to an operation for starting the direct connection mode.

[0040] First, in S201, the information processing device 101 transmits device search information and searches for a device that supports the WFD function as a communication partner device.

[0041] Next, in S202, if the received device search information is information that has been transmitted using the same channel as the channel currently being used for the direct connection mode, the communication device 151 transmits a device search response, which is a response to the information, to the information processing device 101. As a result, the information processing device 101 discovers the communication device 151 as a device that supports the WFD function. Note that after the information processing device 101 discovers the communication device 151, a process of exchanging information about services and functions that each device can provide may be performed between the devices.

[0042] Next, in S203, GO Negotiation is executed between the information processing device 101 and the communication device 151. Once the client and the group owner are determined, parameters for communication by WFD are exchanged between them. Based on the exchanged parameters, the remaining wireless connection processing and IP connection processing are performed between the P2P client and the group owner. As described above, the communication device 151 may operate in the Autonomous GO mode, so that the GO Negotiation is omitted and the communication device 151 always operates as the GO. Also, when the communication device 151 operates as the GO, the communication device 151 determines the frequency band and channel to be used for WFD communication as the master station. Therefore, the communication device 151 operating as the GO can select which frequency band to use, 5 GHz or 2.4 GHz, and which channel to use from among the channels corresponding to the determined frequency band.

[0043] Thereafter, in S204, each device executes a process of establishing a wireless connection by WFD based on the exchanged parameters and on the channel determined by the GO.

[0044] <About infrastructure connection method> The infrastructure connection is a connection form in which devices that communicate with each other (for example, the information processing device 101 and the communication device 151) are connected to an access point (for example, the access point 131) that manages a network of the devices, and the devices communicate with each other via the access point. The communication device 151 can also operate in a mode for communicating via an infrastructure connection (infrastructure connection mode) as one of the connection modes.

[0045] In infrastructure connections, each device searches for an access point using device search information. Once an access point is found, the remaining wireless connection processing (establishment of a wireless connection, etc.) is carried out between the device and the access point, and then IP connection processing (assignment of an IP address, etc.) is carried out. Note that commands and parameters sent and received when establishing a wireless connection between a device and an access point can be those specified in the Wi-Fi standard, and so a description thereof will be omitted here.

[0046] In this embodiment, when the communication device 151 operates in the infrastructure connection mode, the access point 131 operates as a parent station, and the communication device 151 operates as a child device. That is, in this embodiment, the infrastructure connection refers to a connection between the communication device 151 operating as a child device and a device operating as a parent device. When the communication device 151 has established an infrastructure connection and the information processing device 101 has also established an infrastructure connection with the access point 131, communication between the communication device 151 and the information processing device 101 via the access point 131 is possible. Since the channel used for communication in the infrastructure connection is determined by the access point 131, the communication device 151 executes communication in the infrastructure connection using the channel determined by the access point 131. In this embodiment, the communication device 151 is assumed to be able to use a channel corresponding to the 2.4 GHz frequency band and a channel corresponding to the 5 GHz frequency band for communication in the infrastructure connection. Note that the communication device 151 is also able to use a channel corresponding to the DFS band in the 5 GHz frequency band for communication in the infrastructure connection. In order for the information processing device 101 to communicate with the communication device 151 via the access point 131, the information processing device 101 needs to recognize that the communication device 151 belongs to the network formed by the access point 131 and to which the information processing device 101 belongs.

[0047] Furthermore, when the information processing device 101 and the communication device 151 are connected to the access point 131 by infrastructure connection, it becomes possible for the information processing device 101 to discover the communication device 151 by broadcasting.

[0048] <Software configuration of the information processing device 101> Next, the software configuration of the information processing device 101 in this embodiment will be described. FIG. 3(a) is an example of the software configuration of the information processing device 101 in the case where the host OS operating on the information processing device 101 is the Android OS. In this embodiment, an application for the Android OS operates on the Android OS. In this embodiment, the software configuration of the information processing device 101 does not include the Chrome OS. In this embodiment, an environment in which the OS operating on the lowest layer of the information processing device 101 is the Android OS (not the Chrome OS) is referred to as the first environment hereinafter. Specifically, the first environment is, for example, an environment in which the information processing device 101 is equipped with a host OS but not with a guest OS, and a communication application operates on the host OS. Also, for example, the first environment is, for example, an environment in which the information processing device 101 is equipped with both the host OS and the guest OS, and the communication application operates on the host OS without going through the guest OS (does not operate on the guest OS).

[0049] FIG. 3(b) is an example of the software configuration of the information processing device 101 in the case where the host OS operating on the information processing device 101 is the Chrome OS. In this embodiment, a virtual Android OS, which is a virtual OS, operates on the Chrome OS. Then, an application for the Android OS operates on the virtual Android OS. As in this embodiment, the OS operating on the lowest layer of the information processing device 101 is the Chrome OS, and an environment in which the virtual Android OS operates on the Chrome OS is hereinafter referred to as a second environment. Note that in this embodiment, the virtual OS is a program for operating an application that is not compatible with the host OS on the host OS, and is a guest OS. Note that the virtual OS may be the entire existing OS such as the Android OS, may be an existing OS with some modules omitted, or may be a program created separately from the existing OS. The virtual OS is realized by a virtualization technology such as a Virtual Machine method or a container method.

[0050] Here, when running an Android OS application in the second environment, the following problems arise.

[0051] First, a method called broadcast search is conventionally known as a method for the information processing device 101 to search for a device with which the information processing device 101 will communicate using a communication application. The broadcast search is a method for discovering a device by transmitting a broadcast search packet and receiving a response. In the broadcast search, specifically, the communication application executes a socket API (Application Programming Interface) to instruct the OS of the information processing device 101 to transmit a broadcast search packet. Then, the OS transmits the broadcast search packet to an access point (here, the access point 131) forming a network to which the information processing device 101 belongs (connects). The broadcast search packet is a packet in which a value for broadcast search, which corresponds to not specifying the destination of the packet, is set in an area in which an IP address is stored. In this embodiment, the contents of the broadcast search packet are specified by the communication application. That is, a device capable of interpreting the contents of the broadcast search packet is a device compatible with the communication application. And, specifically, a device compatible with the communication application is, for example, a printing device provided by a vendor of the communication application. In this embodiment, the communication device 151 is a device compatible with the communication application. The access point 131 that receives the broadcast search packet transmits the packet to all devices that belong to the network that the access point 131 forms. If a device that can interpret the packet receives the packet, it transmits a response to the information processing device 101 that is the sender of the packet via the access point 131. The OS of the information processing device 101 receives the response and transmits the received response to the communication application. This allows the information processing device 101 to discover each device that has transmitted a response using the communication application, and can execute processing based on the results of the broadcast search. Specifically, the processing based on the results of the search is, for example, processing to display the search results and processing to communicate with devices discovered by the search.

[0052] Also, a method called multicast search is known as a method for the information processing device 101 to search for a device with which the information processing device 101 will communicate using a communication application. The multicast search is a method for discovering a device by transmitting a multicast search packet and receiving a response. In the multicast search, specifically, the communication application first executes a socket API to instruct the OS of the information processing device 101 to transmit a multicast search packet. Then, the OS transmits the multicast search packet to an access point (here, the access point 131) forming a network to which the information processing device 101 belongs (connects). The multicast search packet is a packet in which a value for multicast search is set in an area in which an IP address is stored, and which corresponds to specifying a specific type of device as the destination of the packet. In this embodiment, the content of the multicast search packet is specified by the communication application. That is, a device capable of interpreting the content of the multicast search packet is a device compatible with the communication application. The access point 131 that receives the multicast search packet transmits the packet to a device of the type specified by the multicast search packet among all devices that belong to the network that it forms. When a device capable of interpreting the packet receives the packet, it transmits a response to the information processing device 101, which is the sender of the packet, via the access point 131. The OS of the information processing device 101 then receives the response and transmits the received response to the communication application. This enables the information processing device 101 to discover each device that transmitted a response using the communication application, and enables processing based on the results of the multicast search.

[0053] Incidentally, the communication application is responsible for specifying the contents of the broadcast search packet or the multicast search packet, but the OS operating at the lowest layer in the information processing device 101 is responsible for transmitting these packets. Therefore, in the second environment in which an application for Android OS is operating, Chrome OS needs to execute a broadcast search or a multicast search. However, when an application for Android OS is operating in the second environment, Chrome OS may control by its own firewall not to execute a broadcast search or a multicast search in which an application for Android OS is the instruction source and a socket API is used. As a result, when a communication application is operating in the second environment, there is a problem that the communication application may not be able to execute a process based on the result of a broadcast search or a multicast search. Note that a broadcast search or a multicast search in which an application for Chrome OS is the instruction source is not blocked by the firewall of Chrome OS. Therefore, if the information processing device 101 is operating an application for Chrome OS on Chrome OS, and an instruction to execute a broadcast search or a multicast search is issued from the application by the socket API, Chrome OS can execute a broadcast search or a multicast search.

[0054] In the present embodiment, the communication application supports device searches using WFD. Therefore, if the information processing device 101 on which the communication application is running supports WFD, the communication application can instruct the OS of the information processing device 101 to search for devices using WFD, and can receive the results of the search to execute processing based on the results of the search.

[0055] However, devices equipped with Chrome OS and Chrome OS itself do not support WFD, and device searches using WFD are often not possible. When a communication app is running in the second environment, the communication app may not be able to execute a process based on the results of a device search using WFD.

[0056] Furthermore, in this embodiment, the communication application has a function (scan function) of transmitting a scan job for causing the communication device 151 to execute a scan, and acquiring image data (scan data) acquired by the scan executed by the scan job from the communication device 151. However, when the communication application is operating in the second environment, there is a problem that the communication application may not be able to acquire the scan data acquired by the communication device 151.

[0057] When the communication application transmits a scan job to the communication device 151 that executes push scan, the communication application starts a Web-based Distributed Authoring and Versioning (WebDAV) server in the communication application. At this time, when the environment in which the communication application operates is the second environment, the virtual Android OS assigns an IP address of a virtual interface that is set as an interface used by the WebDAV server. This IP address is called a first address. Then, the communication application instructs the virtual Android OS to transmit a scan job. Here, the scan job includes the first address as a source address, the IP address of the communication device 151 as a destination address, and the first port number as a source port number. Then, the virtual Android OS instructs the Chrome OS to transmit the scan job. At this time, the Chrome OS executes NAT (Network Address Translation), which is an address conversion process. Specifically, for example, the Chrome OS converts the source address from the first address to the second address, and converts the source port number from the first port number to the second port number. Then, the scan job is transmitted to the communication device 151 using the converted address and port number. The converted address is stored in the header of the scan job packet.

[0058] Here, it is assumed that the communication device 151 is a device that executes push scanning. Therefore, when a scan job is received by the communication device 151, the communication session between the information processing device 101 and the communication device 151 is temporarily disconnected. Therefore, in order for the communication device 151 to transmit scan data to the information processing device 101, it is necessary to re-establish the communication session between the information processing device 101 and the communication device 151.

[0059] In this case, the communication device 151 needs to specify an IP address indicating the destination of the scan data, but as described above, the scan job received by the communication device 151 includes the second address, which is the IP address obtained after the first address is converted by the chrome OS. Therefore, the communication device 151 cannot acquire the first address. Even if the first address can be acquired by, for example, referring to the first address included in a portion other than the header of the packet of the scan job, the communication device 151 cannot send data to the first address in the newly established session because the first address is a private IP address inside the information processing device 101. As a result, in the second environment, there is a problem that the communication app may not be able to acquire the scan data obtained by the scan executed by the communication device 151 by the scan job for causing the communication device 151 to execute a push scan.

[0060] <About searching for devices using communication apps> 4 shows a flowchart of device search by the communication application in this embodiment. This flowchart is realized by CPU 103 reading various programs stored in a memory such as external storage device 106 into RAM 105 and executing them. Specifically, this flowchart is realized by execution of the communication application. This process is started when a user performs an operation that triggers a device search on a screen displayed by the communication application. This is not limited to this form, and for example, this process may be started based on the start of the communication application.

[0061] In S401, CPU 103 executes an API of the Android OS from the communication application to obtain environmental information regarding the environment in which the communication application is running. If the environment in which the communication application is running is a first environment, information corresponding to the first environment is obtained as the environmental information. On the other hand, if the environment in which the communication application is running is a second environment, the API to be executed is an API of a virtual Android OS, and information corresponding to the second environment is obtained as the environmental information.

[0062] In S402, the CPU 103 determines whether the environment in which the communication application is running is the first environment based on the environment information acquired in S401. If the result of this determination is YES, the CPU 103 proceeds to S403, and if the result of this determination is NO, the CPU 103 proceeds to S411.

[0063] In S403, CPU 103 determines the content of the broadcast search packet by the communication application. Then, CPU 103 instructs the Android OS to transmit a packet with the determined content by executing a socket API from the communication application. That is, CPU 103 executes a process for broadcast search by the communication application. As a result, CPU 103 executes transmission of the broadcast search packet to access point 131 by Android OS. In addition, in this embodiment, the broadcast search packet is configured so that only a device compatible with the communication application can respond to the packet. In addition, in this embodiment, multiple types of broadcast search packets are broadcast. Specifically, multiple types of broadcast search packets include a type of packet configured so that only an inkjet printer can respond and a type of packet configured so that only an electrophotographic printer can respond. Note that a type of packet configured so that only an old model of inkjet printer can respond and a type of packet configured so that only a new model of inkjet printer can respond may be included. Specifically, for example, CPU 103 controls to change the device to be searched by changing the port number set in the broadcast search packet. This makes it possible to discover only the desired device through a broadcast search, and to determine what type of device the device discovered through the broadcast search is (whether it is an inkjet printer or an electrophotographic printer, for example).

[0064] In S404, the CPU 103 obtains a response to the broadcast search packet from the Android OS using a communication application. As a result, the device that is the sender of the response is identified as a device discovered by the broadcast. FIG. 5 shows an example of XML data that the communication device 151 returns as a response result to the broadcast. The status tag represents the response result to the inquiry, and in this example, it represents that the inquiry was successful. The device_type tag and model_name tag represent the type of device and the model name, respectively. Since the information processing device 101 can recognize an apparatus having information about a printer in the device_type tag as a printer, in this example, the model of the communication device is a printer, and the model name is "Communication apparatus 151". The ip_address tag represents the IP address of the communication device, and in this example, it represents that the IP address of the communication device is 192.168.0.2. The mac_address tag represents the MAC address of the communication device, and it represents that the MAC address is aa:bb:cc:dd:ee:ff. The information and data format described in the data returned by the communication device as a response result are not limited to those described above, and various information related to the communication device may be described.

[0065] In the above, the process for a broadcast search is executed in S403 and S404, but the process for a multicast search may be executed instead. That is, in S403, CPU 103 may determine the content of a multicast search packet using a communication application, and instruct the Android OS to transmit a packet with the determined content by executing a socket API from the communication application. Then, in S404, CPU 103 may obtain a response to the multicast search packet from the Android OS using the communication application.

[0066] In S405, the CPU 103 executes an API for WFD to instruct the Android OS to execute a search by WFD (i.e., to transmit device search information by WFD) using a communication application. As a result, the CPU 103 executes transmission of device search information by the Android OS. Then, the Android OS receives a device search response from a WFD-compatible device in the vicinity of the information processing device 101. This process corresponds to the processes of S201 and S202.

[0067] In S406, the CPU 103 acquires a device search response from the Android OS using a communication application. As a result, the device that is the sender of the device search response is identified as a device discovered by a search using WFD. At this time, among the devices that are the senders of the device search response, only devices that support the print service may be identified as devices discovered by a search using WFD. Which device supports which service can be confirmed by communication between the device that is the sender of the device search response and the information processing device 101.

[0068] In S407, the CPU 103 displays a search result screen, which is a screen showing a list of one or more devices discovered by the broadcast search and one or more devices discovered by the search using the WFD, by using the communication application based on the information acquired in S404 and S406. Note that the above list may be displayed on the search result screen so that one or more devices discovered by the broadcast search and one or more devices discovered by the search using the WFD can be distinguished from each other. Specifically, for example, on the search result screen, a display item corresponding to a device discovered by the broadcast search may be provided with an icon indicating that the device is discovered by the broadcast search. Similarly, on the search result screen, a display item corresponding to a device discovered by the search using the WFD may be provided with an icon indicating that the device is discovered by the WFD. Also, on the search result screen, the above list may be displayed so that an inkjet printer and an electrophotographic printer can be distinguished from each other. Then, the CPU 103 accepts a selection of one of the devices displayed on the search result screen from the user by using the communication application.

[0069] In S408, CPU 103 determines whether the selected device is a device discovered by broadcasting. If the result of this determination is YES, CPU 103 proceeds to S410, and if the result of this determination is NO, CPU 103 proceeds to S409.

[0070] In S409, the CPU 103 instructs the Android OS from the communication application to establish a connection between the selected device and the information processing device 101 by WFD. As a result, the Android OS executes a process for establishing a connection between the selected device and the information processing device 101 by WFD. This process corresponds to the processes of S203 and S204. Note that in this embodiment, the information processing device 101 is capable of maintaining a connection by WFD and a connection by normal Wi-Fi in parallel. Therefore, here, the CPU 103 is assumed to establish a connection by WFD between the selected device and the information processing device 101 while maintaining the Wi-Fi connection between the access point 131 and the information processing device 101.

[0071] In S410, the CPU 103 acquires capability information from the selected device. Specifically, the capability information includes information on whether the device supports a print function or a scan function, information on whether the device supports double-sided printing or color / monochrome printing, and information on the type of recording material and recording medium supported by the device. The capability information may include identification information of the device, such as a MAC address, a model name, or an IP address. The communication application registers the selected device in the communication application by associating the selected device with the capability information and managing it. Thereafter, the communication application becomes capable of transmitting various jobs to the device registered in the communication application. In turn, the communication application becomes capable of causing the device registered in the communication application to execute processing corresponding to various jobs. Then, the processing of this flowchart ends.

[0072] On the other hand, if the determination result in S402 is NO, in S411, the CPU 103 executes a process for searching for devices on the network to which the information processing device 101 belongs, by using an API different from the socket API, by the communication application. Specifically, the API used here is a network service discovery (NSD) API. This API is executed from the communication application to execute a search called NSD. NSD is a multicast search executed by using a DNS based service discovery protocol. NSD is also a search that can be executed in the second environment by an instruction from the communication application. Specifically, in this process, when this API is executed from the communication application, the virtual Android OS instructs the Chrome OS to execute NSD. Then, the Chrome OS executes NSD to discover a device on the network to which the information processing device 101 belongs, which corresponds to the NSD. Note that in executing the NSD API, the communication application can specify which service-compatible device is to be searched for by the NSD. Note that the service is specified by, for example, specifying a protocol. Therefore, in this embodiment, the communication application specifies that it searches for a device (i.e., a printer) that supports the print service by specifying the Internet Printing Protocol (IPP). Note that, in a search instruction using the socket API, the communication application specifies an IP address as the device to which the packet is to be sent, but in a search instruction using the NSD API, the communication application does not specify an IP address.

[0073] Next, in S412, the CPU 103 acquires information about the discovered device as a result of the search by the NSD. Specifically, the information acquired here is, for example, the IP address, port number, and service name of the discovered device.

[0074] Next, in S413, the CPU 103 executes a process for executing a unicast search for one or more devices discovered by the NSD. Note that in this embodiment, a process for executing a unicast search for all devices discovered by the NSD is executed, but this is not limited to this form. A process for executing a unicast search for some devices among the devices discovered by the NSD may be executed. The unicast search is a method of specifying a device to be searched by IP address and searching on the network to which the information processing device 101 belongs. Since the IP address of the device discovered by the NSD is acquired by the communication application as the search result of the NSD, it is possible to search for the device discovered by the NSD again by unicast search. Note that the broadcast search has a search target range within the subnetwork to which the information processing device 101 belongs, whereas the unicast search has a search target range not only within the subnetwork to which the information processing device 101 belongs but also within other subnetworks connected to the subnetwork. Note that a subnetwork refers to a unit of one network configured by one access point. Note that the unicast search is a search that can be executed by an instruction from the communication application even in the second environment. Specifically, in this process, CPU 103 determines the contents of a unicast search packet using a communication application. Then, CPU 103 executes a socket API to instruct the virtual Android OS to transmit a packet with the determined contents using the communication application. The unicast search packet is a packet in which a value for unicast search is set in an area in which an IP address is stored, and which corresponds to a value that specifies the destination of the packet (in other words, the destination of the device to be searched). In this embodiment, the unicast search packet is configured so that only a device compatible with the communication application can respond to the packet. In this embodiment, multiple types of unicast search packets are transmitted to one device.Specifically, the multiple types of unicast search packets include a type of packet that is configured so that only an inkjet printer can respond, and a type of packet that is configured so that only an electrophotographic printer can respond. Note that the packets may include a type of packet that is configured so that only an old model of inkjet printer can respond, and a type of packet that is configured so that only a new model of inkjet printer can respond. This allows only a desired device to be found by unicast search. Then, it is possible to determine which device (such as an inkjet printer or an electrophotographic printer) is found by unicast search. In this embodiment, the contents of the unicast search packet differ from the contents of the broadcast search packet only in the IP address indicating the destination of the packet. After that, the virtual Android OS instructs the Chrome OS to perform a unicast search. Then, the Chrome OS performs a unicast search by transmitting a unicast search packet. As a result, a response is received from a device on the network to which the information processing device 101 belongs, which corresponds to the IP address specified in the unicast search packet, and the device is discovered.

[0075] Next, in S414, CPU 103 acquires information on the devices discovered by the communication application as a result of the unicast search. Specific examples of the information acquired here include the IP address, MAC address, model name (model name), and serial number of the discovered device. By executing the unicast search after the NSD, it is possible to identify a device that corresponds to the communication application among the devices discovered by the NSD. Also, it is possible to acquire information that could not be acquired by the NSD.

[0076] Next, in S415, CPU 103 uses the communication application to display a search result screen, which is a screen showing a list of devices found in the unicast search. Note that the list may be displayed on the search result screen so that inkjet printers and electrophotographic printers can be distinguished from each other. CPU 103 then uses the communication application to accept a selection from the user of any of the devices displayed on the search result screen. CPU 103 then proceeds to 310 to register the selected device.

[0077] In this manner, in this embodiment, whether or not to execute a broadcast search is switched based on the environment in which the communication application operates. Specifically, a broadcast search is executed based on the environment in which the communication application operates being a first environment, and a different process is executed without executing a broadcast search based on the environment in which the communication application operates being a second environment. Specifically, the different process is, for example, a search by NSD or a unicast search. This allows the communication application to execute an appropriate process based on the environment in which the communication application operates.

[0078] The communication application determines whether to instruct a broadcast search, a multicast search, or a unicast search by specifying an IP address when executing the socket API, and by specifying the content of the address as the IP address included in the packet sent for the search. Therefore, in other words, this embodiment is a form in which the content of the IP address specified in the packet used for the search is switched based on the environment in which the communication application operates.

[0079] The process executed based on the fact that the environment in which the communication application operates is the second environment is not limited to the above-mentioned form. For example, the process may be a process of displaying a notification screen for notifying the user that a broadcast search cannot be executed. In addition, in the form in which the notification screen is displayed, a search by NSD or a unicast search may not be executed. In addition, the notification screen may be, for example, a screen for notifying the user that the environment in which the communication application operates is the second environment, a screen for notifying the user that a communication device cannot be registered in the communication application, or a screen for prompting the user to operate the communication application in the first environment.

[0080] The search method is not limited to the above-mentioned method. For example, the order of the process for the search by broadcast (S403, S404) and the process for the search by WFD (S405, S406) may be reversed, or each search may be performed in parallel. Also, instead of displaying the search result screen after each search is completed, each time a device is found by each search, the discovered device may be added to the search result screen.

[0081] The communication application may be capable of separately receiving an operation for instructing the execution of a search by broadcast and an operation for instructing the execution of a search by WFD from the user. When an operation for instructing the execution of a search by broadcast is performed, the flowchart of FIG. 4 may be executed without executing the process for the search by WFD. Similarly, when an operation for instructing the execution of a search by WFD is performed, the flowchart of FIG. 4 may be executed without executing the process for the search by broadcast. The communication application may be an application that supports only one of the search by broadcast and the search by WFD. That is, when the application supports only the search by broadcast, the flowchart of FIG. 4 may be executed without executing the process for the search by WFD. Similarly, when the application supports only the search by WFD, the flowchart of FIG. 4 may be executed without executing the process for the search by broadcast.

[0082] In the above description, the process for the NSD (S411, S412) is followed by the process for the search by unicast (S413, S414), but the present invention is not limited to this. For example, the process for the search by unicast is not executed in the flowchart of FIG. 4, and the search result screen may display devices discovered by NSD. In this case, the device compatible with the communication application may store information indicating that the device is compatible with the communication application as a response to the NSD. As a result, only devices identified as devices compatible with the communication application among the devices discovered by the NSD may be displayed on the search result screen.

[0083] <About executing the scan function using communication apps> When the communication device 151 is registered in the communication application as described above, the communication application can transmit a scan job to the registered communication device 151 .

[0084] 6 shows a flowchart of the scan function of the communication application in this embodiment. This flowchart is realized by CPU 103 reading various programs stored in a memory such as external storage device 106 into RAM 105 and executing them. Specifically, this flowchart is realized by execution of the communication application. This process is started when a user performs an operation that triggers execution of the scan function on a screen displayed by the communication application.

[0085] In S601, CPU 103 identifies a device to which a scan job is to be sent, and acquires model information of the identified device. Specifically, for example, CPU 103 identifies communication device 151 registered in the communication application as a destination of the scan job. When there are multiple devices registered in the communication application, CPU 103 may allow the user to select one of the multiple devices registered in the communication application, and may identify the selected device as a destination of the scan job. The user's selection may be accepted in S601, or may be accepted in advance before the user performs an operation that triggers the execution of the scan function. When communication device 151 is identified, CPU 103 acquires model information included in the capability information by referring to capability information of communication device 151 managed for the registration of communication device 151 in the communication application.

[0086] In S602, the CPU 103 judges whether the model of the device to which the scan job is to be sent is a predetermined model compatible with pull scan. Pull scan is a type of scan in which the information processing device 101 receives scan data from the communication device 151 via a session between the information processing device 101 and the communication device 151, which is the origin of the session. In this embodiment, for example, some of the models corresponding to inkjet printers that print using an inkjet method and models corresponding to electrophotographic printers that print using an electrophotographic method are considered to be the predetermined models. Some of the models corresponding to electrophotographic printers that print using an electrophotographic method are different from the predetermined models and are considered to be models compatible with push scan. If the result of this judgment is YES, the CPU 103 proceeds to S603, and if the result of this judgment is NO, the CPU 103 proceeds to S605.

[0087] In S603, the CPU 103 instructs the OS below the communication application to transmit a scan job from the communication application. As a result, the scan job is transmitted from the information processing device 101 to the communication device 151. The OS below the communication application is the Android OS in the first environment, and is the virtual Android OS in the second environment. In the second environment, the virtual Android OS further instructs the Chrome OS to transmit a scan job. Note that the scan job transmitted here is a job for causing the communication device 151 to execute a pull scan, and is a job created by the communication application.

[0088] In S604, the CPU 103 acquires the scan data acquired by the information processing apparatus 101 from the communication device 151 from the OS below the communication application, without using a WebDAV server, by the communication application. Then, the process proceeds to S609.

[0089] In S605, which is executed if the result of the determination in S602 is NO, the CPU 103 acquires environmental information. This process is the same as S401.

[0090] In S606, the CPU 103 determines whether the environment in which the communication application is operating is the first environment based on the environment information acquired in S605. If the result of this determination is YES, the CPU 103 proceeds to S607, and if the result of this determination is NO, the CPU 103 proceeds to S610. As described in FIG. 4, in this embodiment, different search processes are executed based on the environment in which the communication application is operating. Therefore, the environment in which the communication application is operating is specified based on the search process that discovered the device that is the destination of the scan job. Therefore, the process of S606 may be, for example, a process of specifying which search process discovered the device that is the destination of the scan job. Then, if the specified search process is a search process that is executed when the environment in which the communication application is operating is the first environment, the process may proceed to S607. Then, if the specified search process is a search process that is executed when the environment in which the communication application is operating is the second environment, the process may proceed to S610.

[0091] In S607, the CPU 103 instructs the Android OS from the communication application to transmit a scan job. As a result, the scan job is transmitted from the information processing apparatus 101 to the communication device 151. Note that the scan job transmitted here is a job for causing the communication device 151 to execute a push scan, and is a job created by the communication application. Therefore, the CPU 103 starts a WebDAV server by the communication application.

[0092] In S608, the CPU 103 acquires the scan data acquired by the information processing apparatus 101 from the communication device 151 from the Android OS by a communication application using a WebDAV server.

[0093] In S609, the CPU 103 displays an image represented by the scan data acquired by the communication application, and then ends the process of this flowchart.

[0094] In S610, which is executed when the result of the determination in S602 is NO, the CPU 103 executes a notification process, which is a process of displaying a notification screen for notifying the user that the scan function cannot be executed from the communication application. An example of the notification screen displayed here is shown in FIG. 7. The notification screen may be, for example, a screen for urging the user to execute a standard scan function that is installed as standard in the host OS. It may also be a screen for presenting an operation for executing the standard scan function. It may also be a screen having a button for displaying, in a web browser, a web manual that presents an operation for executing the scan function that is installed as standard in the host OS. The standard scan function is an application that is installed as standard in the information processing device 101 together with the host OS, and is executed by a standard scan application that controls the standard scan function. Therefore, the screen for urging the user to execute the standard scan function may be, for example, a screen for urging the user to use the standard scan application. The screen for presenting an operation for executing the standard scan function may be, for example, a screen for presenting an operation for starting the standard scan application. The notification screen may be, for example, a screen for confirming with the user whether to start the standard scan application. Then, when an input to start the standard scan function is received, CPU 103 may start the standard scan application from the communication application. Note that the standard scan application is an application for the host OS, and therefore operates without going through the guest OS. Therefore, the standard scan application can obtain from communication device 151 scan data obtained by scanning performed based on a scan job transmitted in response to an instruction from the standard scan application. Also, in S610, CPU 103 may execute the start-up process of starting the standard scan application from the communication application without executing the notification process. Also, in S610, CPU 103 may determine whether the version of the host OS is a version compatible with the start-up process, and execute the start-up process if YES, and execute the notification process if NO.When the launched standard scan application is operated by the user, a scan job is transmitted from the information processing device 101 to the communication device 151 or the like in response to an instruction from the standard scan application. The scan job transmitted in response to an instruction from the standard scan application is a job created by the standard scan application. Therefore, the process of S610 can be said to be a process for transmitting a scan job created by a standard scan application different from the communication application. After S610, the process of this flowchart ends.

[0095] As described above, in this embodiment, when the environment in which the communication application operates is the second environment and the communication application cannot obtain scan data from communication device 151, the scan job is not transmitted to communication device 151. Then, for example, as a process other than the process of transmitting a scan job, a notification screen is displayed, or a process of starting a standard scan application is executed. This makes it possible to present the user with an alternative means for obtaining scan data in a situation in which the communication application cannot obtain scan data from communication device 151.

[0096] The above-mentioned problems occurring in the second environment may also occur when the host OS in the second environment is an OS other than Chrome OS, or when the guest OS in the second environment is an OS other than Android OS. That is, in the above description, the second environment is an environment in which a virtual Android OS runs on Chrome OS and an application for Android OS runs on the virtual Android OS, but is not limited to this form. For example, the OS running on the lowest layer may be another OS such as Windows (registered trademark) OS provided by Microsoft Corporation or Mac (registered trademark) OS provided by APPLE, instead of Chrome OS. Also, the guest OS or the application running on the guest OS may be iOS (registered trademark) or an application for iOS, instead of Android OS or an application for Android OS. Therefore, for example, the CPU 103 may specify which OS is the host OS in the second environment by a communication application before S610. Then, in the notification process in S610, a notification screen with contents corresponding to the specified OS may be displayed. Specifically, for example, if the name of the standard scan application or the method of starting the standard scan application differs for each type of OS, the name of the standard scan application corresponding to the identified OS or the method of starting the standard scan application on the identified OS may be displayed on the notification screen. Also, for example, in S610, instead of the notification process, a process of starting the standard scan application corresponding to the identified OS may be executed.

[0097] Second embodiment As described above, the host OS in the second environment is not limited to Chrome OS, and may be another OS such as Windows OS. For example, there may be an application for another OS provided by the same vendor as the communication application, which is different from the communication application. In this embodiment, a form in which different processes are executed depending on the type of host OS in the second environment will be described.

[0098] 8 shows a flowchart of the scan function of the communication application in this embodiment. This flowchart is realized by CPU 103 reading various programs stored in a memory such as external storage device 106 into RAM 105 and executing them. Specifically, this flowchart is realized by execution of the communication application. This process is started when a user performs an operation that triggers execution of the scan function on a screen displayed by the communication application.

[0099] S801 to S810 are similar to S601 to S610, and therefore the description will be omitted.

[0100] In S811, which is executed when the result of the determination in S806 is NO, the CPU 103 identifies the host OS in the second environment by the communication application. Then, the CPU 103 determines whether the identified host OS is an OS that does not support the specific scan application by the communication application. The specific scan application is an application different from the communication application and is provided by the same vendor as the communication application. In this embodiment, the Chrome OS is assumed to be an OS that does not support the specific scan application. Also, the Windows OS is assumed to be an OS that supports the specific scan application. That is, a scan application for the Windows OS is assumed to exist as the specific scan application. The scan application for the Windows OS can operate in the second environment without going through the guest OS, so that it is possible to obtain scan data obtained by the push scan executed by the communication device 151. As described above, whether an OS is compatible with the specific scan application is specified by the type of the OS, so the determination process in S811 may be a process for determining whether the host OS is the Chrome OS. If the result of this determination is YES, the CPU 103 proceeds to S810 and executes a notification process similar to that in S610 as a first notification process. On the other hand, if the result of this determination is NO, the CPU 103 proceeds to S812.

[0101] In S812, the CPU 103 executes a second notification process, which is a process of displaying a notification screen for prompting the user to use a predetermined application. The notification screen displayed here may be, for example, a screen displaying a button for starting the predetermined application. If the button is pressed and the predetermined application has already been installed in the information processing device 101, the CPU 103 starts the predetermined application. On the other hand, if the button is pressed and the predetermined application has not yet been installed in the information processing device 101, the CPU 103 starts a store application for installing the predetermined application. The notification screen displayed here may be, for example, a screen for confirming with the user whether or not to start the predetermined application. Then, when an input for starting the predetermined application is accepted, the CPU 103 may start the predetermined application from the communication application. In S812, the CPU 103 may start the predetermined application without executing the notification process. Then, the process ends.

[0102] By adopting such a configuration, it becomes possible to execute appropriate processing according to the type of host OS in the second environment.

[0103] (Other embodiments) As described above, the Chrome OS may control the firewall so that broadcast searches and multicast searches using the socket API are not performed when an application for the Android OS is instructed. However, depending on the port number specified when the socket API is executed and the content of the port number set in the packet used for the search, the firewall may not block the broadcast search or multicast search. Therefore, for example, even in the second environment, the communication application may instruct the virtual Android OS to perform broadcast searches or multicast searches using the socket API for some searches that are not blocked by the firewall. Specifically, for example, a specific port number is specified for a type of packet configured to allow only old-model inkjet printers to respond, and the broadcast search or multicast search using the packet is not blocked by the firewall. In that case, for example, in S411, the CPU 103 may instruct the virtual Android OS from the communication application to perform a broadcast search by transmitting a type of packet configured to allow only old-model inkjet printers to respond, in addition to the search using the NSD API. In S415, the CPU 103 may display not only the search results in S414 but also the search results of the broadcast search performed by the above instruction. In this case, devices that are discovered in both the NSD search and the broadcast search are controlled so that they are not displayed twice. This makes it possible to discover devices in the second environment that cannot be discovered in an NSD search because they do not support IPP, for example.

[0104] Also, the flowchart of FIG. 4 may be started based on, for example, the execution of network setting from the information processing device 101 to the communication device 151 using a communication application. Specifically, the network setting is, for example, a process of transmitting information of the access point 131 to the communication device 151 via a connection between the information processing device 101 and the communication device 151 by Wi-Fi or Bluetooth. As a result, the communication device 151 connects to the access point 131 using the information. Then, if the information processing device 101 is also connected to the access point 131 after that, the information processing device 101 can discover the communication device 151 by executing the flowchart of FIG. 4. Therefore, when the information processing device 101 transmits information of the access point 131 to the communication device 151 via a connection between the information processing device 101 and the communication device 151 by Wi-Fi, the information processing device 101 may disconnect the connection after transmitting the information, and establish a connection between the information processing device 101 and the access point 131. Also, the flowchart started based on the execution of the network setting may be, for example, in a form in which a search result screen is not displayed. Specifically, for example, instead of displaying a search result screen and accepting a selection from a user, a process of identifying a device for which network settings have been performed among devices found by a search may be executed. Specifically, the identification process is executed by comparing the MAC address and serial number, which are information acquired from the communication device 151 via the above connection used for network settings and are information of the communication device 151 for which network settings have been performed, with the MAC address and serial number, which are information acquired by search and are information of a device found by the search. Then, capability information may be acquired from the device identified in this way. Also, the flowchart started based on the execution of network settings may be in a form that does not execute, for example, processes related to the search by WFD (S405, S406, S408, S409, etc.).

[0105] In the above description, the device to be searched by the unicast search among the devices found by the NSD search in S412 is determined without selection by the user. However, the present invention is not limited to this embodiment, and the device to be searched by the unicast search among the devices found by the NSD search may be determined based on the selection by the user, and only the unicast search for the determined device may be performed. In this embodiment, for example, after the NSD search in S412 is performed and before the unicast search is performed, the CPU 103 displays a search result screen, which is a screen showing a list of devices found by the NSD search, by the communication application. Then, the CPU 103 determines only the device selected by the user among the devices displayed on the search result screen as the search target by the unicast search. Then, the CPU 103 instructs the virtual Android OS by the communication application to transmit a unicast search packet in which the IP address of the determined device is specified, and then executes a process of registering the device found by the unicast search in the communication application.

[0106] In the above description, the second environment is described as being configured to execute a unicast search after an NSD search is executed. However, the present invention is not limited to this configuration. For example, the second environment may execute a unicast search without executing an NSD search. In this configuration, for example, if the determination result in 402 is NO, the CPU 103 does not execute S411 and S412. Then, the CPU 103 uses the communication application to display a screen for receiving an input of an IP address from the user. Then, in S413, the CPU 103 executes a process for unicast searching one or more devices corresponding to the IP address input by the user via the screen. Specifically, the CPU 103 sets the IP address input by the user via the screen in a unicast search packet. Then, the CPU 103 executes the socket API to instruct the virtual Android OS to transmit a packet in which the IP address input by the user via the screen is set, via the communication application.

[0107] In the second environment, after the process for the NSD search is executed by the communication application, it may be determined whether the NSD search has failed. The determination is made, for example, based on whether the communication application is notified that the NSD search has failed. If it is determined that the NSD search has failed, CPU 103 may display a screen for receiving an input of an IP address from the user by the communication application. CPU 103 may then execute a process for unicast searching one or more devices corresponding to the IP address input by the user via the screen. This allows the unicast search to be executed even if the NSD search fails and an IP address required for the unicast search cannot be acquired by the NSD search.

[0108] In the above, a configuration in which both a broadcast search and a search by WFD are executed when the determination result of S402 is YES has been described, but the present invention is not limited to this configuration. A configuration in which only one of a broadcast search and a search by WFD is executed when the determination result of S402 is YES may also be used. Specifically, for example, in a configuration in which only a broadcast search is executed when the determination result of S402 is YES, S405, S406, S408, and S409 are omitted from the flowchart in FIG. 4. Also, specifically, for example, in a configuration in which only a search by WFD is executed when the determination result of S402 is YES, S403, S404, and S408 are omitted from the flowchart in FIG. 4, and S409 is always executed after S407. In the above, a configuration in which the process of the flowchart in FIG. 4 is executed as the process for searching for a communication device, and the process of the flowchart in FIG. 6 or FIG. 8 is executed as the process for scanning has been described, but the present invention is not limited to this configuration. For example, the process of searching for a communication device may be performed in the flowchart of Fig. 4, but the process for scanning may be performed in a known manner other than the process of the flowchart of Fig. 6 or 8. Alternatively, the process of searching for a communication device may be performed in the flowchart of Fig. 4, but the communication application may not have a scan function and the process for scanning may not be performed. Alternatively, the process of searching for a communication device may be performed in the flowchart of Fig. 4, but the process for scanning may be performed in a known manner other than the process of the flowchart of Fig. 6 or 8.

[0109] In the above description, the execution of the NSD API is performed in S411, which is a process in the flowchart of FIG. 4, but this is not limiting. For example, the execution of the NSD API may be performed before the timing of the flowchart of FIG. 4, such as when the communication application is started. In this embodiment, for example, a determination corresponding to S402 is performed before the timing of the flowchart of FIG. 4. Then, if it is determined that the first environment exists, no particular process for search is performed at that timing, and if it is determined that the first environment does not exist, the NSD API corresponding to S411 is executed. Then, S411 is omitted in the flowchart of FIG. 4. In this embodiment, the result of the NSD may be obtained before the flowchart of FIG. 4. The NSD by the host OS may be continuously performed, and the result of the NSD may be obtained by the communication application every time the result of the NSD changes. Then, in S412, a new result of the NSD may be obtained, or an already obtained result of the NSD may be referred to.

[0110] Needless to say, the object of the present invention can also be achieved by supplying a recording medium on which the program code of the software for realizing the functions of the above-mentioned embodiments is recorded to a system or device, and having the computer (or CPU or MPU) of the system or device read and execute the program code stored in the recording medium. In this case, the program code itself read from the recording medium will realize the functions of the above-mentioned embodiments, and the recording medium on which the program code is stored constitutes the present invention.

[0111] Examples of storage media for supplying the program code include flexible disks, hard disks, optical disks, magneto-optical disks, CD-ROMs, CD-Rs, magnetic tapes, non-volatile memory cards, ROMs, and DVDs.

[0112] Furthermore, it goes without saying that the functions of the above-mentioned embodiments are not only realized by the computer executing the program code it has read, but also that the functions of the above-mentioned embodiments are realized by an operating system (OS) running on the computer performing some or all of the actual processing based on the instructions of the program code.

[0113] The disclosure of this embodiment also includes the following configuration. (Configuration 1) A predetermined program, The computer of the information processing device a first execution step of executing, by the predetermined program, a first process for searching for devices on a network to which the information processing device belongs by a first method, based on the fact that the predetermined program is running on a host OS of the information processing device and that the predetermined program is not running via a guest OS different from the host OS, and executing, by the predetermined program, a second process for searching for devices on the network to which the information processing device belongs by a second method different from the first method, based on the fact that the guest OS is running on the host OS and that the predetermined program is running on the guest OS; a second execution step of executing a process based on a result of the search by the first method when the first process is executed, and executing a process based on a result of the search by the second method when the second process is executed; A program characterized by executing the above. (Configuration 2) a third execution step of executing, after the second process has been executed, a third process by the predetermined program for searching for at least one device found by the search using the second method, using a third method different from the first method and different from the second method, when the guest OS is running on the host OS and the predetermined program is running on the guest OS, after the second process has been executed; a fourth execution step of executing a process based on a result of the search by the third method when the third process is executed; The program according to configuration 1, further comprising: (Configuration 3) The program according to configuration 2, wherein the third process is a process for transmitting a packet for a search by the third method to all devices found in a search by the second method. (Configuration 4) The program according to configuration 2, wherein the third process is a process for transmitting a packet for a search by the third method to a device selected by a user from among devices discovered in a search by the second method. (Configuration 5) 5. The program according to any one of configurations 2 to 4, wherein the third process is a process of instructing the guest OS to execute a search by the third method using a socket API (Application Programming Interface). (Configuration 6) The program described in any one of configurations 2 to 5, characterized in that the processing based on the results of the search by the third method includes at least one of a processing of displaying a device discovered by the search by the third method and a processing of communicating with a device discovered by the search by the third method. (Configuration 7) 7. The program according to any one of configurations 2 to 6, wherein the search by the third method is a unicast search. (Configuration 8) a fifth execution step of executing a fourth process by the predetermined program to search for devices around the information processing device by a fourth method different from the first method and different from the second method when the predetermined program is running on the host OS and the predetermined program is not running via the guest OS; a sixth execution step of executing a process based on a result of the search by the fourth method when the fourth process is executed; The program according to any one of configurations 1 to 7, further comprising: (Configuration 9) The program described in configuration 8, characterized in that the processing based on the results of the search by the fourth method includes at least one of a processing of displaying a device discovered by the search by the fourth method and a processing of communicating with a device discovered by the search by the fourth method. (Configuration 10) The process based on the result of the search by the first method includes a process of displaying the device discovered by the search by the first method; The process based on the result of the search by the fourth method includes a process of displaying the device discovered by the search by the fourth method; The program described in configuration 9, characterized in that the program is controlled so that devices discovered by a search using the first method and devices discovered by a search using the fourth method are displayed so that the devices discovered by a search using the first method and the devices discovered by a search using the fourth method can be distinguished from each other. (Configuration 11) 11. The program according to any one of configurations 8 to 10, wherein the search by the fourth method is a search by Wi-Fi Direct (registered trademark). (Configuration 12) 12. The program according to any one of configurations 1 to 11, wherein the first process is a process of instructing the host OS to execute a search by the first method using a socket API (Application Programming Interface). (Configuration 13) 13. The program according to any one of configurations 1 to 12, wherein the search by the first method is a broadcast search or a multicast search. (Configuration 14) 14. The program according to any one of configurations 1 to 13, wherein the second process is a process of instructing the guest OS to execute a search by the second method using an API (Application Programming Interface) different from a socket API. (Configuration 15) 15. The program according to any one of configurations 1 to 14, wherein the second process is a process of instructing the guest OS to execute a search by the second method using a network service discovery API (Application Programming Interface). (Configuration 16) 16. The program according to any one of configurations 1 to 15, wherein the search by the second method is a search using a DNS based service discovery protocol. (Configuration 17) 17. The program according to any one of configurations 1 to 16, wherein the search by the second method is a unicast search. (Configuration 18) A program described in any one of configurations 1 to 17, further comprising a transmission step of executing a process for sending a print job to a device discovered by a search executed by the information processing device to execute printing. (Configuration 19) The program described in any one of configurations 1 to 18, further comprising a transmission step in which the specified program executes a process for sending a scan job to perform a scan to a device discovered by a search executed by the information processing device. (Configuration 20) the scan job is a job created by the predetermined program, a process for transmitting the scan job is executed by the predetermined program based on the fact that the predetermined program is running on the host OS and the predetermined program is not running via the guest OS; The program described in configuration 19, characterized in that, based on the fact that the guest OS is running on the host OS and the specified program is running on the guest OS, the program is controlled by the specified program so that processing for sending the scan job is not executed. (Configuration 21) a seventh execution step of executing, based on the fact that the guest OS is operating on the host OS and the predetermined program is operating on the guest OS, a process related to another program that is different from the predetermined program and controls a scan function that is standardly installed in the host OS, by the predetermined program; 21. The program according to claim 20, further comprising: (Configuration 22) The program described in configuration 21, characterized in that the processing related to the other program is at least one of processing to prompt a user to use the other program, processing to present an operation for launching the other program, processing to confirm with a user whether or not to launch the other program, and processing to launch the other program. (Configuration 23) the processing based on the result of the search by the first method includes at least one of a processing of displaying the device discovered by the search by the first method and a processing of communicating with the device discovered by the search by the first method; A program described in any one of configurations 1 to 22, characterized in that the processing based on the results of the search by the second method includes at least one of a processing of displaying a device discovered by the search by the second method and a processing of communicating with a device discovered by the search by the second method. (Configuration 24) When the predetermined program is running on the host OS and the predetermined program is not running via the guest OS, the host OS is Android (registered trademark) OS, The program described in any one of configurations 1 to 23, characterized in that when the guest OS is running on the host OS and the specified program is running on the guest OS, the host OS is Chrome (registered trademark) OS and the guest OS is Android (registered trademark) OS. (Configuration 25) The program according to any one of configurations 1 to 24, wherein the predetermined program is an application program for Android (registered trademark) OS. (Configuration 26) A method for controlling an information processing device having a predetermined program, comprising: a first execution step of executing, by the predetermined program, a first process for searching for devices on a network to which the information processing device belongs by a first method, based on the fact that the predetermined program is running on a host OS of the information processing device and that the predetermined program is not running via a guest OS different from the host OS, and executing, by the predetermined program, a second process for searching for devices on the network to which the information processing device belongs by a second method different from the first method, based on the fact that the guest OS is running on the host OS and that the predetermined program is running on the guest OS; a second execution step of executing a process based on a result of the search by the first method when the first process is executed, and executing a process based on a result of the search by the second method when the second process is executed; A control method comprising the steps of: (Configuration 27) An information processing device having a predetermined program, a first execution means for executing, by the predetermined program, a first process for searching for devices on a network to which the information processing device belongs by a first method, based on the fact that the predetermined program is operating on a host OS of the information processing device and that the predetermined program is not operating via a guest OS different from the host OS, and for executing, by the predetermined program, a second process for searching for devices on the network to which the information processing device belongs by a second method different from the first method, based on the fact that the guest OS is operating on the host OS and that the predetermined program is operating on the guest OS; a second execution means for executing a process based on a result of the search by the first method when the first process is executed, and for executing a process based on a result of the search by the second method when the second process is executed; 13. An information processing device comprising: [Explanation of symbols]

[0114] 101 Information processing device 151 Communication equipment 131 Access Points

Claims

1. A predetermined program that is a program that can run on an operating system (OS), A computer of a first information processing apparatus having a first operating environment on a host OS but not on a guest OS, a first processing step of executing, by the predetermined program, a first process for searching for devices on a network to which the first information processing device belongs by a first method, based on a determination result obtained by the predetermined program that corresponds to the predetermined program operating in the first operating environment; a second processing step of executing, by the predetermined program, a second process for searching for devices on the network to which the first information processing device belongs by a second method; a first execution step of executing, when the first process is executed, a process based on the result of the search by the first method and the result of the search by the second method by the predetermined program; Execute A computer of a second information processing apparatus having a second operating environment on a host OS and a guest OS, a second processing step of executing, by the predetermined program, a third process for searching for devices on a network to which the second information processing device belongs by a third method different from the first method, based on a determination result obtained by the predetermined determination executed by the predetermined program that corresponds to the predetermined program being operating in the second operating environment; a second execution step of executing a process based on a result of the search by the third method using the predetermined program when the third process is executed; Execute the search by the first method is at least one of a multicast search performed by a socket API (Application Programming Interface) and a broadcast search performed by a socket API; The search by the third method is different from the multicast search performed by the socket API and different from the broadcast search performed by the socket API; The processing based on the results of the search by the first method and the results of the search by the second method includes processing for displaying a screen including both a list of devices discovered by the search by the first method and a list of devices discovered by the search by the second method. A program characterized by:

2. A fourth processing step in which, after the third processing is executed, the predetermined program executes a fourth processing step to search for at least one device discovered by the search using the third method using a fourth method different from the first method and different from the third method, based on the determination result obtained by the predetermined program through the predetermined determination that the predetermined program is operating in the second operating environment; a fourth execution step of executing a process based on a result of the search by the fourth method when the fourth process is executed; 2. The program according to claim 1, further comprising:

3. The program described in Claim 2, characterized in that the fourth process is a process for sending packets for searching by the fourth method to all devices discovered by a search by the third method.

4. The program described in Claim 2, characterized in that the fourth processing is processing for sending packets for searching by the fourth method to a device selected by the user from among the devices discovered by the search by the third method.

5. The program described in Claim 2, characterized in that the search by the fourth method is a unicast search performed by a socket API.

6. The program described in Claim 2, characterized in that the processing based on the results of the search using the fourth method includes at least one of processing to display devices discovered by the search using the fourth method and processing to communicate with devices discovered by the search using the fourth method.

7. The program described in claim 1, characterized in that in processing based on the results of searches using the first method and the second method, the program is controlled so that the devices discovered by the search using the first method and the devices discovered by the search using the second method are displayed so that the devices discovered by the search using the first method and the devices discovered by the search using the second method can be distinguished.

8. The program described in Claim 1, characterized in that the search by the second method is a search by Wi-Fi Direct (registered trademark).

9. When the predetermined program is running in the second operating environment, the second processing is not executed by the predetermined program, The program according to claim 1, characterized in that the second processing is executed based on the predetermined judgment executed by the predetermined program obtaining a judgment result corresponding to the predetermined program being operating in the first operating environment.

10. The program described in Claim 1, characterized in that the search by the third method is a search performed by a network service discovery API.

11. The program according to claim 1, wherein the search by the third method is a search using a DNS-based service discovery protocol.

12. The program described in Claim 1, characterized in that the search by the third method is a multicast search performed by a network service discovery API.

13. The program described in Claim 1, characterized in that the search by the third method is a unicast search performed by a socket API.

14. The computer of the first information processing device, a first transmission step of executing a process for transmitting a print job for printing to a device found by the search executed by the first information processing device; The computer of the second information processing device The program according to claim 1, further comprising a second transmission step for executing a process for transmitting a print job for printing to a device discovered by a search performed by the second information processing device.

15. A computer of the first information processing device, The program according to claim 1, further comprising a third transmission step in which the predetermined program executes a process for sending a scan job to perform a scan to a device discovered by a search performed by the first information processing device.

16. The scan job is a job created by the predetermined program, a process for transmitting the scan job is executed by the predetermined program based on a determination result obtained by the predetermined program that the predetermined program is operating in the first operating environment; The program according to claim 15, characterized in that the predetermined program controls the process for sending the scan job not to be executed based on the predetermined judgment performed by the predetermined program obtaining a judgment result corresponding to the predetermined program being operating in the second operating environment.

17. A fifth execution step in which, based on the determination result obtained by the predetermined program corresponding to the predetermined program being operating in the second operating environment, the predetermined program executes processing related to another program that is different from the predetermined program and controls a scan function that is standard on the host OS of the second information processing device; 16. The program according to claim 15, further comprising:

18. The program described in Claim 17, characterized in that the processing related to the other program is at least one of processing to prompt the user to use the other program, processing to present operations for launching the other program, processing to confirm with the user whether or not to launch the other program, and processing to launch the other program.

19. The processing based on the results of the search by the first method includes at least one of a process of displaying the devices discovered by the search by the first method and a process of communicating with the devices discovered by the search by the first method; The program according to claim 1, characterized in that the processing based on the results of the search by the third method includes at least one of a processing of displaying devices discovered by the search by the third method and a processing of communicating with devices discovered by the search by the third method.

20. A host OS of the first information processing device is an Android (registered trademark) OS, 2. The program according to claim 1, wherein a host OS of the second information processing apparatus is a Chrome (registered trademark) OS, and a guest OS of the second information processing apparatus is an Android (registered trademark) OS.

21. The program described in Claim 1, characterized in that the specified program is an application program for Android (registered trademark) OS.

22. The program described in claim 1, characterized in that, based on the predetermined judgment performed by the predetermined program obtaining a judgment result corresponding to the predetermined program being operating in the second operating environment, the first processing is not performed by the predetermined program, and the third processing is performed by the predetermined program.

23. A control method for a first information processing device having a predetermined program that is a program operable on an operating system (OS) and having a first operating environment that is on a host OS but not on a guest OS, and a second information processing device having the predetermined program and having a second operating environment that is on the host OS and also on a guest OS, comprising: a first processing step of executing, by the predetermined program contained in the first information processing device, a first process for searching for devices on a network to which the first information processing device belongs by a first method, based on a determination result obtained by the predetermined determination executed by the predetermined program that corresponds to the predetermined program being operating in the first operating environment; a second processing step of executing, by the predetermined program, a second process for searching for devices on the network to which the first information processing device belongs by a second method; a first execution step of executing, when the first processing is executed, processing based on the results of the search by the first method and the results of the search by the second method by the predetermined program included in the first information processing device; a second processing step of executing, by the predetermined program contained in the second information processing device, a third process for searching for devices on a network to which the second information processing device belongs by a third method different from the first method, based on a determination result obtained by the predetermined determination executed by the predetermined program that corresponds to the predetermined program being operating in the second operating environment; a second execution step of executing a process based on a result of the search by the third method using the predetermined program included in the second information processing device when the third process is executed; and the search by the first method is at least one of a multicast search performed by a socket API (Application Programming Interface) and a broadcast search performed by a socket API; The search by the third method is different from the multicast search performed by the socket API and different from the broadcast search performed by the socket API; A control method characterized in that processing based on the results of the search by the first method and the results of the search by the second method includes processing to display a screen including both a list of devices discovered by the search by the first method and a list of devices discovered by the search by the second method.

24. A predetermined program that is a program that can run on an operating system (OS), A computer of a first information processing apparatus having a first operating environment on a host OS but not on a guest OS, a first processing step of executing, by the predetermined program, a first process for searching for devices on a network to which the first information processing device belongs by a first method, based on a determination result obtained by the predetermined program that corresponds to the predetermined program operating in the first operating environment; a second processing step of executing, by the predetermined program, a second process for searching for devices on the network to which the first information processing device belongs by a second method; a first execution step of executing, when the first process is executed, a process based on the result of the search by the first method and the result of the search by the second method by the predetermined program; Execute A computer of a second information processing apparatus having a second operating environment on a host OS and a guest OS, a second processing step of executing, by the predetermined program, a third process for searching for devices on a network to which the second information processing device belongs by a third method different from the first method, based on a determination result obtained by the predetermined determination executed by the predetermined program that corresponds to the predetermined program being operating in the second operating environment; a second execution step of executing a process based on a result of the search by the third method using the predetermined program when the third process is executed; Execute the search by the first method is at least one of a multicast search performed by a socket API (Application Programming Interface) and a broadcast search performed by a socket API; The search by the third method is different from the multicast search performed by the socket API and different from the broadcast search performed by the socket API; A storage medium for storing a program, characterized in that processing based on the results of a search using the first method and the results of a search using the second method includes processing for displaying a screen including both a list of devices discovered by a search using the first method and a list of devices discovered by a search using the second method.