Program, information processing method, and information processing device

The program generates virtual devices to allow multiple applications to connect to and release from a single device at any time, improving performance and reducing processing load by operating in kernel mode.

JP2025105318APending Publication Date: 2025-07-10SCI PARK CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023223786
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-12-29
Publication Date
2025-07-10

AI Technical Summary

Technical Problem

Existing systems do not allow multiple applications to connect to and release from a single device at arbitrary timings, leading to inefficiencies and high processing loads due to the limitations of device drivers operating in user mode.

Method used

A program that generates virtual devices associated with each application, allowing data transmission between the device driver and applications, enabling seamless access and release from a single device without requiring explicit intervention from the applications.

Benefits of technology

Enables multiple applications to access a device simultaneously with reduced processing load and improved performance by operating in kernel mode, facilitating simultaneous data transfer and reducing the need for complex bus access.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025105318000001_ABST
    Figure 2025105318000001_ABST
Patent Text Reader

Abstract

To provide a program allowing a plurality of applications to connect to a single device at any given time.SOLUTION: A program of an information processing device where a device is connected and a first application and a second application are executed on an operating system performs processing for: causing a device driver controlling the device to acquire the device data on the basis of first processing in the first application or the second application; causing the generation of a first virtual device associated with the first application where first processing has been executed or a first execution application, which is the second application; transmitting the acquired data to the first virtual device; and causing the data to be transmitted from the first virtual device to the first execution application.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to a program for controlling between device drivers of an information processing apparatus.

Background Art

[0002] In an information processing apparatus (which may be referred to as an electronic computer), programs (which may be referred to as processes or threads) operating on an OS (Operating System) are classified into programs operating in a “kernel mode” in which various instructions can be executed without restrictions on the OS, and programs operating in a “user mode” in which various instructions can be executed in a restricted state so that instructions that may have an adverse effect such as stopping the OS cannot be executed.

[0003] In kernel mode, since all instructions for operating the OS are executable, if an inappropriate instruction is executed, it may have an adverse effect on the entire system. On the other hand, it is possible to have full access rights to various input / output devices connected to the information processing apparatus. In addition, since programs operating in kernel mode are processed preferentially over programs operating in user mode, high performance can be obtained. Examples of programs operating in kernel mode include device drivers, which are programs for managing devices connected to the information processing apparatus.

[0004] In user mode, execution of instructions that may have an adverse effect on the operation of the information processing apparatus is automatically prevented. Therefore, development of programs operating in user mode is easier compared to programs operating in kernel mode. However, programs operating in user mode are subject to restrictions such as the need to go through a device driver to use a device. Examples of programs operating in user mode include application programs for use by users of the information processing apparatus.

[0005] For example, Patent Document 1 discloses an interface driver program for a computer to control between device drivers of the computer, which provides a common interface driver between device drivers that control devices connected to the computer, aiming to speed up data transfer and improve data integrity in application programs.

[0006] By the way, a single device connected to an information processing apparatus is usually controlled by a single device driver. Therefore, it is not possible to simultaneously establish connections to a single device from a plurality of applications operating in user mode, and there are cases where a single device cannot be used simultaneously by a plurality of applications.

[0007] To solve this problem, for example, Patent Document 2 discloses an information processing apparatus that enables access to imaging data from a plurality of applications by copying imaging data from an imaging unit connected to the information processing apparatus to a shared memory space in a function expansion unit operating in user mode. In the method described in Patent Document 2, imaging data is acquired from the imaging unit according to the processing of the first application, and the acquired imaging data is copied to the shared memory space. Then, the second application acquires the imaging data via the shared memory space. Therefore, for example, when the first application releases the imaging unit and stops acquiring imaging data, there is a problem that the second application also cannot acquire imaging data from the imaging unit. Also, since various processes such as copying of imaging data in the function expansion unit operate in user mode, there is a problem of high processing load.

[0008] Therefore, it is desired to provide an extended driver program that enables multiple applications to connect (access) and release (release) to a single device at any timing and, at the same time, enables the use of the device. For example, the extended driver program is a program that intervenes between a device driver operating in kernel mode and an application operating in user mode, and it is desirable that the application can be treated in the same way as the driver program. As a result, application developers can use the device from the application without being aware of the intervention of the extended driver program.

Prior Art Documents

Patent Documents

[0009]

Patent Document 1

Patent Document 2

Summary of the Invention

Problems to be Solved by the Invention

[0010] The present invention has been made based on the above technical background, and an object thereof is to provide a program that enables multiple applications to connect to a single device at any timing.

Means for Solving the Problems

[0011] According to one aspect of the present invention, a program executed by an information processing apparatus to which a device is connected and on which a first application and a second application are executed causes a device driver that controls the device to acquire data of the device based on a first process in the first application or the second application, generates a first virtual device associated with a first execution application that is the first application or the second application in which the first process is executed, transmits the acquired data to the first virtual device, and causes the data to be transmitted from the first virtual device to the first execution application.

Effect of the Invention

[0012] According to the program according to the present invention, there is an effect that any application can acquire data of a device.

Brief Description of the Drawings

[0013]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Mode for Carrying Out the Invention

[0014] Hereinafter, an example of a mode for carrying out the present invention will be described with reference to the drawings. In the description of the drawings, the same reference numerals may be assigned to the same elements, and redundant descriptions may be omitted. However, the constituent elements described in this embodiment are merely examples, and are not intended to limit the scope of the present invention thereto.

[0015] [Embodiment] Hereinafter, an example of an embodiment for realizing the information processing technology of the present invention will be described.

[0016] FIG. 1 is a conceptual diagram showing an example of the configuration of an information processing apparatus 1 according to an aspect of this embodiment. The information processing apparatus 1 includes, for example, a control unit 2 and a storage unit 3. The control unit 2 is configured to have, for example, a processor such as a CPU or a DSP, or an integrated circuit such as an ASIC. The storage unit 3 is configured to have, for example, a volatile memory such as a DRAM, or a non-volatile memory such as an SRAM. Also, for example, as an example of an external device of the information processing apparatus 1, a device 8 is connected to the information processing apparatus 1.

[0017] In the memory unit 3, for example, an OS 7 for controlling and operating the information processing apparatus 1, a device driver 9 for controlling the device 8 from the OS 7, and a function extension driver 10 for causing a plurality of application programs to cooperate in operating the device 8 controlled by the device driver 9 are stored as programs for operating in the kernel mode 5. Also, in the memory unit 3, for example, application programs 6 that operate in the user mode 4 on the OS 7 and are used by the user of the information processing apparatus 1, such as a first application program 6A and a second application program 6B, are stored.

[0018] Note that the device driver 9 may be a program that operates in the user mode 4 (so-called user mode driver). Also, the first application program 6A and the second application program 6B may be programs that operate in the kernel mode 5.

[0019] The function extension driver 10 is executed by being read by the control unit 2, and is, for example, a process that operates in the kernel mode 5, and can control data reception from the device driver 9 according to instructions from the first application program 6A and the second application program 6B.

[0020] Hereinafter, data acquired from a device is referred to as "device data". For example, when the device is a camera device (imaging unit), the device data is imaging data or a video stream. Also, for example, when the device is a microphone device (sound input unit), the device data is recording data or an audio stream.

[0021] In the following, the data necessary for initializing a device to acquire data from the device is referred to as "device parameters". For example, when the device is a camera device, the device parameters are output format of the device (resolution and FPS) and setting parameters such as exposure adjustment and brightness adjustment. Further, for example, when the device is a microphone device, the device data is output format of the device (sampling rate and bit depth) and setting parameters such as gain adjustment.

[0022] FIG. 2 is a block diagram showing an example of the functional configuration of the function expansion driver 10 according to one aspect of the present embodiment. In FIG. 2, each functional unit illustrated inside the function expansion driver 10 may operate as a part of the functional unit (functional block) of the control unit 2 by being read and executed by the control unit 2, for example.

[0023] For example, the function expansion driver 10 includes a data replication control unit 11, a data capture unit 12, a first API (Application Program Interface) unit 13A, and a second API unit 13B.

[0024] The data capture unit 12 has a function of acquiring device data regarding the device 8 via the device driver 9 based on a request from the data replication control unit 11 and outputting the data to the data replication control unit 11, for example.

[0025] The first API unit 13A provides an interface between the first application program 6A and the function expansion driver 10, and has a function of issuing operation commands to each functional unit based on commands such as a connection request from the first application program 6A to the device 8 and a device data transfer request. Further, the first API unit 13A has a function of transferring device data acquired from the device 8 (more precisely, the first virtual device unit 16A) to the first application program 6A via the data capture unit 12, for example. The second API section 13B also targets the second application program 6B and has the same functions.

[0026] Note that the first API section 13A and the second API section 13B may not be explicitly distinguished. For example, the first API section 13A and the second API section 13B may return the same device interface handle. In this case, for example, the first API section 13A and the second API section 13B may be replaced as the API section 13.

[0027] Also, when the device data is a stream such as standard input, standard auxiliary input, or video stream, the first API section 13A may be referred to as the first stream interface 13A. The same applies to the second API section 13B.

[0028] The data replication control unit 11 includes, for example, a virtual device generation unit 14, and the first virtual device 15A and the second virtual device 15B generated based on connection requests from the first application program 6A and the second application program 6B to the device 8. Each virtual device 15 includes, for example, a virtual device section 16 and a virtual device driver 17. For example, the first virtual device 15A includes a first virtual device section 16A and a first virtual device driver 17A. The same applies to other virtual devices.

[0029] The virtual device section 16 is, for example, a software emulation device that mimics the functions of the device 8. Also, the virtual device driver 17 is, for example, a device driver program for controlling the virtual device section 16.

[0030] The virtual device generation unit 14 has a function of generating the first virtual device 15A corresponding to the first API section 13A based on a connection request from the first API section 13A to the device 8.

[0031] In the generated first virtual device 15A, for example, the device data acquired by the data capture unit 12 is copied to the first virtual device unit 16A. Then, via the first virtual device driver 17A, the device data of the first virtual device unit 16A is transmitted to the first API unit 13A.

[0032] The same applies to the second virtual device 15B corresponding to the second API unit 13B.

[0033] That is, the first virtual device unit 16A and the second virtual device unit 16B act as devices that software-emulate the operations in the device 8. When referred to from the application program 6, the virtual device unit 16 may act transparently (as if directly accessing the device 8). In this case, a plurality of application programs 6 may be required to access the same device 8. Alternatively, the virtual device unit 16 may act explicitly (it can be seen that the application program 6 is accessing the virtual device unit 16 instead of the device 8). In this case, a plurality of application programs 6 may be required to access seemingly different devices 8a (actually, for example, the first virtual device unit 16A) or device 8b (actually, for example, the second virtual device unit 16B) that are not shown.

[0034] The control application 19 is, for example, an application program that operates in the user mode 4 and has a function of controlling the operation settings of the function extension driver 10. For example, when a specific first application program 6A (for example, a "recording application") makes an access request to a specific device 8 (for example, "Camera A") via the function extension driver 10, the control application 19 can, for example, read a predetermined device parameter (for example, "resolution: HD and 30 fps") preset by the user and set the operation of the function extension driver 10 so that the predetermined device parameter is applied at the start of the operation of the device 8. Note that the control application 19 may be, for example, an application program operating in kernel mode 5. Alternatively, without explicitly distinguishing the control application 19, it may be a functional program included in the function extension driver 10.

[0035] [Information Processing Procedure] FIGS. 3 to 5 are flowcharts showing examples of information processing procedures in the present embodiment. The processing in these flowcharts is realized, for example, by the control unit 2 of the information processing apparatus 1 reading the code of each program stored in the storage unit 3 into the RAM and executing it.

[0036] Each symbol S in each flowchart means a step. Also, the flowcharts described below are merely examples of the information processing procedures in the present embodiment. In each flowchart, other steps may be added or some steps may be deleted.

[0037] Also, for simplicity of the drawings, symbols may be omitted in each step. And the first application program 6A may be described as the "first app", and the second application program 6B may be described as the "second app".

[0038] Note that in the flowchart, the steps indicated by the dotted lines indicate operations in user mode 4, and the steps indicated by the solid lines indicate operations in kernel mode 5. Therefore, the steps indicated by the solid lines can be executed faster than the steps indicated by the dotted lines. It can also be said that the steps indicated by the solid lines have a lighter execution load than the steps indicated by the dotted lines. Also, the steps indicated by the dashed-dotted line represent operations involving access to an external device. Generally, accessing an external device requires complex instructions such as interrupt processing to the bus. And the bandwidth of the external bus of the information processing device is narrower than that of the internal bus of the information processing device. Therefore, the steps indicated by the dashed-dotted line are slower (more burdensome) in processing speed compared to the processes that are completed on the internal bus and are indicated by solid lines or dotted lines.

[0039] Also, at the start of processing, assume that the device 8 is in a state where it is not connected (released) from any of the application programs 6.

[0040] First, for example, based on the processing in the first application program 6A, the control unit 2 transmits access request information from the first application program 6A to the device 8 to the first API unit 13A (S101).

[0041] When the first API unit 13A receives access request information from the first application program 6A (S103), the data replication control unit 11 executes virtual device generation processing (S201).

[0042] FIG. 6 is a flowchart showing an example of the procedure of virtual device generation processing when the (n)th API unit 13 receives access request information from the (n)th application program 6 (in this example, "n = 1" or "n = 2"). For example, in S201 of FIG. 3, the case of "n = 1" occurs.

[0043] First, when the data replication control unit 11 receives access request information from the (n)th API unit 13, for example, it analyzes the received access request information (S210). Then, the data replication control unit 11 determines, for example, device parameters for setting to the device 8 based on the access request information.

[0044] For example, if the connection between the (n)th application program 6 and the device 8 has already been established, the data replication control unit 11 may transmit, via the (n)th API unit 13, a double access rejection notice indicating that an attempt has been made to establish a connection to the same device 8 from one application program to the (n)th application program 6. Then, the data replication control unit 11 may end the virtual device generation process.

[0045] Next, the data replication control unit 11 determines, for example, whether the data capture unit 12 has established a connection with the device 8 via the device driver 9 (S220). For example, in S201 of FIG. 3, since the device 8 is not connected from any application program 6, it is determined that the connection has not been established.

[0046] If it is determined that the connection between the data capture unit 12 and the device 8 has not been established (S220: NO), the data replication control unit 11 transmits, for example, device parameters or the like to the data capture unit 12. Then, the data capture unit 12 transmits, for example, device connection request information for establishing a connection with the device 8 to the device driver 9 based on the device parameters received from the data replication control unit 11 (S240).

[0047] Note that the data capture unit 12 may transmit, for example, device connection request information for establishing a connection with the device 8 based on the device parameters set by the control application 19.

[0048] Then, the device driver 9 opens the device 8 based on the device connection request information, for example, and establishes a connection between the data capture unit 12 and the device 8 via the device driver 9 (S250).

[0049] When it is determined that the connection between the data acquisition unit 12 and the device 8 is established (S220: YES), the data replication control unit 11 skips the steps of S230 to S250.

[0050] Then, the virtual device generation unit 14 generates the (n)th virtual device 15 of the device 8 for linking with the (n)th API unit 13, for which the connection with the data acquisition unit 12 has been established (S260). More specifically, for example, the virtual device generation unit 14 generates the (n)th virtual device unit 16 of the device 8 and establishes the connection between the (n)th virtual device driver 17 and the (n)th virtual device unit 16.

[0051] Then, the data replication control unit 11 enables the (n)th API unit 13 to acquire device data from the (n)th virtual device unit 16 via the (n)th virtual device driver 17.

[0052] When the (n)th API unit 13 becomes able to acquire device data, for example, the (n)th API unit 13 transmits device availability notification information indicating that the device 8 or the (n)th virtual device 15 of the device 8 is connected and available for use from the application program to the (n)th application program 6 (S270).

[0053] Returning to FIG. 3, for example, when the first application program 6A receives the device availability notification information from the first API unit 13A (S105), the control unit 2 transmits, for example, device data request information for the first application program 6A to acquire the device data of the device 8 to the first API unit 13A based on the processing in the first application program 6A (S107).

[0054] For example, when the first API unit 13A receives the device data request information from the first application program 6A (S109), the data replication control unit 11 executes the virtual device data acquisition process (S301).

[0055] FIG. 7 is a flowchart showing an example of the procedure of virtual device data import processing when the (n)th API unit 13 receives device data request information from the (n)th application program 6 (in this example, "n = 1" or "n = 2"). For example, in S301 of FIG. 3, the case of "n = 1" occurs.

[0056] In the virtual device data import processing, for example, the data replication control unit 11 executes the device data import processing (S400).

[0057] FIG. 8 is a flowchart showing an example of the procedure of device data import processing. In the device data import processing, first, the data replication control unit 11 determines, for example, whether the data capture unit 12 is acquiring the device data of the device 8 via the device driver 9 (S410). For example, when called from S301 of FIG. 3, since the device data of the device 8 has not been acquired from any of the application programs 6, it is determined that the data capture unit 12 has not acquired the device data.

[0058] When it is determined that the data capture unit 12 has not acquired the device data of the device 8 (S410: NO), for example, the data replication control unit 11 requests the data capture unit 12 to acquire the device data of the device 8. Then, the data capture unit 12 transmits device data transmission request information for requesting the device driver 9 of the device 8 to transmit the device data of the device 8 (S420).

[0059] When the device driver 9 receives the device data transmission request information from the data capture unit 12 (S430), the device driver 9 transmits device data acquisition request information to the device 8 (S440).

[0060] Then, when the device 8 receives the device data acquisition request information (S450), for example, it starts acquiring the device data and transmits the acquired device data to the device driver 9 (S460). Then, the device driver 9 transmits the received device data to the data capture unit 12 (S470).

[0061] When the data capture unit 12 receives the device data from the device driver 9 (S480), for example, it distributes the received device data to each virtual device unit 15 (for example, when called from S301 in FIG. 3, the generated first virtual device 15A) (S490). Then, the data replication control unit 11 ends the device data capture process.

[0062] If it is determined that the data capture unit 12 is acquiring (is in the process of acquiring or has acquired) the device data of the device 8 (S410: YES), the data replication control unit 11, for example, skips the steps of S420 to S480.

[0063] Returning to FIG. 7, when the device data capture process is executed (S400), for example, the (n)th API unit 13 transmits device data request information to the (n)th virtual device driver 17 (S310). When the (n)th virtual device driver 17 receives the device data request information (S320), for example, it acquires device data from the (n)th virtual device 16 (S330). Then, the (n)th virtual device driver 17 transmits the acquired device data to the (n)th API unit 13 (S340). Then, the (n)th API unit 13 receives the device data from the (n)th virtual device driver 17 (S350).

[0064] By these processes, for example, when S301 in FIG. 3 is executed, the device data of the device 8 is transmitted to the first API unit 13A via the first virtual device 15A.

[0065] Returning to FIG. 3, for example, the first API unit 13A transmits the received device data to the first application program 6A (S111). Then, the first application program 6A receives, for example, device data based on device data request information from the first API unit 13A (S113).

[0066] Next, for example, the control unit 2 transmits access request information from the second application program 6B to the device 8 to the second API unit 13B based on the processing in the second application program 6B (S115).

[0067] For example, when the second API unit 13B receives access request information from the second application program 6B to the device 8 (S117), the data replication control unit 11 executes virtual device generation processing (S203).

[0068] In the virtual device generation processing, for example, in S203 of FIG. 4, since the device 8 is connected from the first application program 6A, it is determined that the connection is established. Therefore, the processing in (S220: YES) in FIG. 6 is executed, and the processing from S220 to S250 is skipped. Then, the virtual device generation unit 14 generates a second virtual device 15B for linking with the second API unit 13B (S260). And the second API unit 13B transmits device availability notification information to the second application program 6B (S270)

[0069] Returning to FIG. 4, for example, when the second application program 6B receives device availability notification information from the second API unit 13B (S119), the control unit 2 transmits, for example, device data request information for the second application program 6B to acquire the device data of the device 8 to the second API unit 13B based on the processing in the second application program 6B (S121).

[0070] For example, when the second API unit 13B receives device data request information from the second application program 6B (S123), the data replication control unit 11 executes virtual device data import processing (S303).

[0071] In the virtual device data import processing, device data import processing is executed (S400). For example, when called from S303 in FIG. 4, since the device data of device 8 is being acquired from the first application program 6A, it is determined that the data acquisition unit 12 is acquiring the device data. Therefore, the process at (S410: YES) in FIG. 8 is executed, and the processes of S420 to S480 are skipped. Then, the data acquisition unit 12 distributes the received device data to each virtual device unit 15 (for example, when called from S303 in FIG. 4, the generated first virtual device 15A and the newly generated second virtual device 15B) (S490).

[0072] Returning to FIG. 7, each step of S310 to S350 is executed. For example, the second API unit 13B receives device data from the second virtual device driver 17B.

[0073] Returning to FIG. 4, for example, the second API unit 13B transmits the received device data to the second application program 6B (S125). Then, the second application program 6B receives device data based on the device data request information from the second API unit 13B, for example (S127).

[0074] For example, based on the fact that the processing related to the device data in the first application program 6A has ended, the control unit 2 transmits release request information for releasing the connection from the first application program 6A to the device 8 to the first API unit 13A (S129).

[0075] For example, when the first API unit 13A receives release request information from the first application program 6A (S131), the data replication control unit 11 executes virtual device deletion processing (S501).

[0076] FIG. 9 is a flowchart showing an example of the procedure of virtual device deletion processing when the (n)th API unit 13 receives release request information from the (n)th application program 6 (in this example, "n = 1 or 2"). For example, in S501 of FIG. 5, the case of "n = 1" occurs.

[0077] In the virtual device deletion processing, for example, the data replication control unit 11 executes an instruction to delete the (n)th virtual device 15 (S510).

[0078] More specifically, for example, first, the data replication control unit 11 releases the connection between the (n)th API unit 13 and the (n)th virtual device driver 17. After that, the data replication control unit 11 stops the device data transfer between the (n)th virtual device unit 16 and the data capture unit 12. Then, the data replication control unit 11 causes the virtual device generation unit 14 to delete the (n)th virtual device unit 16 and the (n)th virtual device driver 17.

[0079] Note that, for example, when the (n)th virtual device 15 is deleted, the data replication control unit 11 may transmit device release notification information indicating that the device 8 (more precisely, the (n)th virtual device 15) has been released to the (n)th application program 6 via the (n)th API unit 13.

[0080] Also, for example, when the (n)th virtual device 15 does not exist in a released state or the like, the data replication control unit 11 may transmit a device release completed notification indicating that the (n)th API unit 13 has attempted to release the connection from one application program to the released device 8 to the (n)th application program 6 via the (n)th API unit 13. Then, the data replication control unit 11 may end the virtual device deletion process.

[0081] After that, the data replication control unit 11 determines whether all the (n)th virtual devices 15 corresponding to the device 8 have been deleted (S520). In S501 of FIG. 5, since the first virtual device unit 15A has been deleted but the second virtual device unit 15B has not been deleted, it is determined that not all virtual devices have been deleted.

[0082] If it is determined that all virtual devices have been deleted (S520: YES), for example, the data replication control unit 11 executes an instruction to release the device 8 to the device driver 9 (S530). As a result, the connection between the data capture unit 12 and the device driver 9 is lost, and when each application program 6 uses the device 8, it becomes necessary to establish a connection with the device 8.

[0083] If it is determined that not all virtual devices have been deleted (S520: NO), for example, the data replication control unit 11 skips the step of S530.

[0084] Returning to FIG. 5, for example, the control unit 2 transmits release request information for releasing the connection from the second application program 6B to the device 8 to the second API unit 13B (S133).

[0085] For example, when the second API unit 13B receives release request information from the second application program 6B (S135), the data replication control unit 11 executes the virtual device deletion process (S503).

[0086] In the virtual device generation process, for example, in S503 of FIG. 5, when the step of S510 is executed, the second virtual device unit 15B is deleted. Therefore, in the step of S520, it is determined that all virtual devices have been deleted (S520: YES), and the step of S530 is executed.

[0087] Returning to FIG. 5, for example, the control unit 2 determines whether to end the process (S137). For example, when it is determined that ending the process is selected based on the end process of the OS 7 (S137: YES), the control unit 2 ends the process.

[0088] For example, when it is determined that not ending the process is selected (S137: NO), the control unit 2 returns the process to, for example, the step of S101.

[0089] Here, for one device 8 based on a call from one application program 6, the processing of this flowchart is roughly classified into, for example, the following three. · Process A: A process that makes device 8 available from the first application program 6A. For example, the processing related to the steps of S101 to S105 in FIG. 3. · Process B: A process in which the first application program 6A acquires device data from device 8. For example, the processing related to the steps of S107 to S113 in FIG. 3. · Process C: A process in which the first application program 6A releases device 8. For example, the processing related to the steps of S129 to S501 in FIG. 5.

[0090] The same classification of processing is also performed for the second application program 6B. · Process D: A process that makes device 8 available from the second application program 6B. For example, the processing related to the steps of S115 to S119 in FIG. 3. · Process E: A process in which the second application program 6B acquires device data from device 8. For example, the processing related to steps S121 to S127 in FIG. 3. · Processing F: The processing in which the second application program 6B releases the device 8. For example, the processing related to steps S133 to S503 in FIG. 5.

[0091] In these processes, for example, it is necessary to follow the following rules. · Rule 1: Processing B is executed after processing A is executed. · Rule 2: Processing E is executed after processing D is executed. Also, in these processes, for example, it is desirable to follow the following rules. · Rule 3: Processing C is executed after processing A or processing B is executed. · Rule 4: Processing F is executed after processing D or processing E is executed.

[0092] In FIGS. 3 to 5, an example is illustrated in which processing B is executed after processing A, then processing E is executed after processing D, and finally processing C and processing F are executed. However, the order of each process is not limited to this. FIG. 10 shows a state transition diagram of the processes showing an example of the order of each process.

[0093] In FIG. 10, for example, Pattern 1 is an example of the process of connecting to the device 8 only from the first application program 6A and acquiring device data. Also, for example, Pattern 2 is an example of the process of connecting to the device 8 only from the second application program 6B and acquiring device data. Also, Pattern 3 is an example of the process in which the second application program 6B uses the device 8 after the first application program 6A uses the device 8, and Pattern 4 is an example of the process in which the first application program 6A uses the device 8 after the second application program 6B uses the device 8. As described above, even when using one device 8 from one application program 6, the function expansion driver 10 operates without requiring a change in configuration.

[0094] Pattern 5 and Pattern 6 are examples of the process in which the second application program 6B starts using the device 8 after the first application program 6A has used the device 8 and before releasing the device 8. Also, Pattern 7 and Pattern 8 are examples of the process in which the first application program 6A starts using the device 8 after the second application program 6B has used the device 8 and before releasing the device 8. Note that in Pattern 6 and Pattern 8, Process C and Process F may be executed by swapping them.

[0095] By using the function extension driver 10, even if either application program 6 has not released the device 8, a virtual device 15 corresponding to the device 8 is generated, and device data is acquired via the virtual device 15, so that the device 8 can be used without any problems from either application program 6. Also, even when the second application program 6B releases the device 8 while the first application program 6A is using the device 8, the first application program 6A can continue to use the device 8. Similarly, even when the first application program 6A releases the device 8 while the second application program 6B is using the device 8, the second application program 6B can continue to use the device 8.

[0096] Pattern 9 is an example of the process in which the first application program 6A and the second application program 6B use the device 8 in parallel (simultaneously). Note that Process A and Process D may be executed by swapping them. Also, Process B and Process E may be executed by swapping them. Process C and Process F may be executed by swapping them. For example, when the OS 7 can execute preemptive multitasking, Process B and Process E may be executed in parallel.

[0097] When the first application program 6A and the second application program 6B use the device 8 in parallel (simultaneously), compared with the case of acquiring device data twice from each application program 6 via the device driver 9, the data acquisition unit 12 of the function expansion driver 10 acquires device data once, and copies the device data to the virtual device unit 16 on the memory space operating in kernel mode, thereby reducing the frequency of accessing the external bus and reducing the processing load. Also, since the function expansion driver 10 is a program executed in the kernel mode 5, the processing speed can be improved compared with the case of buffering device data in the memory space of a program executed in the user mode 4.

[0098] Patterns 10 to 13 are various patterns in which the first application program 6A and the second application program 6B use the device 8 in parallel (simultaneously). In patterns 10 and 11, processing C and processing F may be executed in the reverse order. Also, processing B and processing E may be executed in the reverse order, or processing B and processing E may be executed in parallel.

[0099] As shown in the above patterns, by using the function expansion driver 10, when Rules 1 to 4 are observed, it becomes possible to use (connect) the device 8 from an arbitrary application program at any time and release it at any time.

[0100] [Effects of the Embodiment] In the information processing apparatus 1 according to this embodiment, a device 8 is connected, and a first application program 6A (an example of a first application) and a second application program 6B (an example of a second application) are executed on an OS 7. Further, a function extension driver 10 (an example of a program) executed by the information processing apparatus 1 causes a device driver 9 that controls the device 8 to acquire device data (an example of data) based on the transmission of access request information or the transmission of device data request information (an example of a first process) in the first application or the second application. Further, the function extension driver 10 generates a first virtual device 15A or a second virtual device 15B (an example of a first virtual device) associated with a first execution application that is the first application or the second application in which the first process has been executed. And it shows an example of a configuration in which the acquired data is transmitted to the first virtual device and the data is transmitted from the first virtual device to the first execution application. With such a configuration, the first application or the second application can receive device data via the first virtual device by executing the first process.

[0101] Further, a second execution application that is not executing the first process among the first application or the second application can receive device data via the second virtual device based on the transmission of access request information or the transmission of device data request information (an example of a second process), even if the first execution application is receiving data.

[0102] Also, by executing the program in kernel mode, higher performance can be exhibited than when operating in user mode. Further, when the device driver operates in kernel mode, by executing the program in kernel mode, the device data can be seamlessly transferred to the first execution application or the second execution application without the switching process between user mode and kernel mode, and the data transfer speed can be increased.

[0103] [Modifications of the Embodiment] The embodiments to which the present invention is applicable are not limited to the above-described embodiments. Hereinafter, modifications will be described.

[0104] [Modification Regarding Generation Conditions of Virtual Device] In the above embodiment, even when a certain application program 6 exclusively uses the device 8, it has been described that device data is acquired via the virtual device 15, but it is not limited to this.

[0105] For example, in pattern 5 of FIG. 10, until process D is executed, only the first application program 6A is connected to the device 8. In this case, in the virtual device generation process of process A, for example, when establishing a connection between the device driver 9 and the data capture unit 12 (S250), the virtual device generation unit 14 may not generate the first virtual device 15A. Then, the function expansion driver 10 may directly transfer the device data acquired by the data capture unit 12 to the first API unit 13A.

[0106] Then, in pattern 5 of FIG. 10, when process D is executed, for example, in the virtual device generation process, the virtual device generation unit 14 generates the first virtual device 15A and the second virtual device 15B. Then, in the data capture process, the function expansion driver 10 may transfer the device data acquired by the data capture unit 12 to the first API unit 13A and the second API unit 13B via the first virtual device 15A and the second virtual device 15B.

[0107] With such a configuration, the function expansion driver 10 can transfer device data to the API unit 13 without passing through the virtual device 15 while a certain device 8 is exclusively used. Therefore, resources for generating the virtual device 15 can be reduced, and acquisition (capture) of device data can be efficiently executed.

[0108] <Modification Example When the Device is Disconnected> In the above embodiment, the connection of the device 8 is released based on the release request information to the device 8 transmitted by the application program 6, but it is not limited to this. For example, when the device 8 is removed from the information processing apparatus 1, the connection between the application program 6 and the device 8 may be released.

[0109] For example, when the device driver 9 detects that the device 8 has been removed from the information processing apparatus 1, the device driver 9 transmits device forced release information to the data capture unit 12, for example. For example, when receiving the device forced release information, the data capture unit 12 causes the data replication control unit 11 to delete the virtual device 15 associated with the device 8. When the virtual device 15 is deleted, for example, the data replication control unit 11 may transmit device lost notification information indicating that the device 8 (or the virtual device 15) has been forcedly released to each application program 6 via the first API unit 13A and the second API unit 13B.

[0110] Thereby, for example, even when the device 8 is removed while an arbitrary application program 6 is connected to the device 8, the application program 6 can detect that the connection to the device 8 has been lost.

[0111] <Modification Example in Which Virtual Devices Exist in Advance> In the above embodiment, the virtual device 15 is generated based on the access request information to the device 8 transmitted by the application program 6, but it is not limited to this. For example, the function expansion driver 10 may cause the control application 19 to generate an arbitrary "L" (where "L" is a natural number) of virtual devices 15 and API units 13 corresponding to each of the virtual devices 15 in advance. Then, based on the connection request information from an arbitrary application program 6 to each API unit 13, the connection between the application program 6 and the generated virtual device 15 may be established.

[0112] In addition, when receiving release request information from the application program 6 to the device 8, the data replication control unit 11 may not delete the virtual device 15. Also, for example, the function extension driver 10 may be configured to allow the control application 19 to arbitrarily change the number of virtual devices 15. For example, when attempting to delete the virtual device 15 in which the connected application program 6 exists, the function extension driver 10 may transmit information to the control application 19 notifying that the virtual device 15 is in use and cannot be deleted.

[0113] <Modification example for making a plurality of devices available from a plurality of application programs> In the above embodiment, an example was illustrated in which the function extension driver 10 connects to one device 8 from two application programs 6 and acquires device data, but the present invention is not limited to this. One device 8 may be configured to be connectable from any "N" (where "N" is a natural number) application programs 6.

[0114] In this case, for example, it may be provided with "N" application programs 6 and API units 13 corresponding thereto, and the virtual device generation unit 14 may generate virtual devices 15 corresponding to the respective API units 13.

[0115] Also, the function extension driver 10 may be configured to allow any "N" (where "N" is a natural number) application programs 6 to connect to any "M" (where "M" is a natural number) devices 8.

[0116] FIG. 11 is a block diagram showing another example of the functional configuration of the function extension driver. In this configuration, for example, "M" devices 8 are connected to the information processing apparatus 1. Hereinafter, the "M" devices 8 are respectively referred to as the first A device 8A, the first B device 8B, ···, the first M device 8M. And the device drivers 9 for driving the respective devices 8 are respectively referred to as the first A device driver 9A, the first B device driver 9B, ···, the first M device driver 9M.

[0117] The function extension driver 10 includes, for example, M data capture units 12 for acquiring device data from the respective devices 8 via the respective device drivers 9. Hereinafter, the "M" data capture units 12 are respectively referred to as the first A data capture unit 12A, the first B data capture unit 12B, ···, the first M data capture unit 12M.

[0118] Also, for example, the information processing apparatus 1 stores "N" application programs 6. Hereinafter, the "N" application programs 6 are respectively referred to as the first 1 application program 6A, the first 2 application program 6B, ···, the first N application program 6N.

[0119] The function extension driver 10 includes, for example, "M×N" first (x,n) API units 13xn that serve as interfaces between the respective application programs 6 and the function extension driver 10. Note that "x" is an argument for identifying the device 8, and in this case, "x = A, B, ···, M". Also, "n" is an argument for identifying the application program 6, and in this case, "n = 1, 2, ···, N".

[0120] The data replication control unit 11 includes, for example, virtual devices (x,n) 15xn generated based on connection requests from the first (n) application program 6n to the first (x) device 8x for connecting the respective API units 13 and the respective capture units 12. Note that in FIG. 11, the virtual device generation unit 14 is not shown for simplification of the figure.

[0121] For example, when the second application program 6B connects to the Mth device 8M to obtain device data, the second application program 6B issues an operation command to the function extension driver 10 via the (M,2) API section 13M2. Then, the (M,2) API section 13M2 transfers the device data obtained from the Mth device 8M (more precisely, the virtual device (M,2) 15M2) to the second application program 6B via, for example, the Mth data capture section 12M.

[0122] In this way, in the data replication control section 11, by generating the virtual devices 15 associated with the respective application programs 6 and the respective devices 8, it is possible to obtain the device data of any device 8 from any application program 6 in the same manner as the flowcharts of FIGS. 3 to 9. Also, it is possible to use any (x)th device 8x from any plurality of application programs 6 regardless of the timing of connection to and disconnection from any (x)th device 8x.

[0123] Note that, for example, the Ath data capture section 12A may be generated by the function extension driver 10 when, for example, connecting the Ath device driver 9A and the virtual device 15(A,n). And, for example, the Ath data capture section 12A may be deleted when all the virtual devices (A,n) 15An are deleted and the connection to the Ath device driver 9A is released.

[0124] The same applies to any other (x)th data capture section 12x.

[0125] Thereby, the resources required by the function extension driver 10 can be dynamically reduced.

[0126] Also, for example, the (A,1) API part 13A1 to the (A,N) API part 13AN associated with one first A device 8A may be grouped together as one first (A) API part 13A. And, for example, when the (A) API part 13A receives device access request information from the first application program 6A to the first A device 8A, the function extension driver 10 may generate the (A,1) API part 13A1 as the interface of the first application program 6A. And, for example, when the virtual device (A,1) 15A1 is deleted based on the (A,1) API part 13A1 receiving release request information regarding the first A device 8A from the first application program 6A, the function extension driver 10 may reduce the (A,1) API part 13A1.

[0127] The same applies to any other (x,n) API part 13xn.

[0128] Thereby, the resources required by the function extension driver 10 can be dynamically reduced. Also, any application program 6 can identify the API part 13 that transmits access request information for each device 8. As a result, the user can more easily identify the destination device 8 using any application program 6.

[0129] <Modification example of the execution method of the function extension driver> In the above embodiment, for example, the function extension driver 10 is a program operating in the kernel mode 5, but it is not limited to this. For example, the function extension driver 10 may be a program operating in the user mode 4. Thereby, the function extension driver 10 can be implemented more easily.

[0130] [Embodiment] Next, examples of a terminal, an electronic device (electronic apparatus), or a computer to which the above-described information processing apparatus 1 is applied or which includes the above-described information processing apparatus 1 will be described. Here, as an example, an example of a PC (Personal Computer) will be described. However, it is needless to say that the examples to which the present invention is applicable are not limited to this example.

[0131] FIG. 12 is a diagram showing an example of the functional configuration of the PC 100. The PC 100 includes, for example, a control unit 2 and a storage unit 3. In addition, as devices 8, for example, an imaging unit 8A, an operation unit 8B, a display unit 8C, a sound input unit 8D, a sound output unit 8E, and a communication unit 8F are connected to the PC 100.

[0132] The control unit 2 is a processing device that comprehensively controls each part of the PC 100 according to various programs such as the OS 7 stored in the storage unit 3 and performs various processes. For example, the control unit 2 is configured to include a processor such as a CPU, a GPU, or a DSP, or an integrated circuit such as an ASIC.

[0133] As main functional units, the control unit 2 includes, for example, a first API unit 13A, a second API unit 13B, a data replication control unit 11, and a data capture unit 12 when a function expansion driver 10 is loaded and executed. The data replication control unit 11 includes, for example, a virtual device generation unit 14, a first virtual device 15A, and a second virtual device 15B. These functional units respectively correspond to the functional units shown in FIG. 2, for example.

[0134] The storage unit 3 is a storage device configured to include a volatile or non-volatile memory such as a ROM, an EEPROM, a flash memory, or a RAM, and a hard disk device or the like.

[0135] The storage unit 3 stores, for example, an OS 7, a control application 19, an on-premises video conferencing application 60A, and a cloud-based video conferencing application 60B. Also, as programs operating in the kernel mode 5 of the OS 7, a function expansion driver 10 and driver programs for driving various devices 8 such as a camera driver 9A are stored.

[0136] The on-premises video conferencing application 60A is a program that is read by the control unit 2 and executed to realize an on-premises video conference in the user mode 4 of the OS 7. The on-premises video conferencing application 60A is an example of a first application program 6A. Also, the cloud-based video conferencing application 60B is a program that is read by the control unit 2 and executed to realize a cloud-based video conference in the user mode 4 of the OS 7. The cloud-based video conferencing application 60B is an example of a second application program 6B.

[0137] The OS 7, the function expansion driver 10, and the control application 19 respectively correspond to, for example, the storage unit 3 included in or attached to the information processing device 1 shown in FIGS. 1 and 2.

[0138] The imaging unit 8A is an image input device configured to include a camera or the like, and performs various image (video) inputs based on an image input signal input to the control unit 2 via the camera driver 9A in the OS 7. Note that the imaging unit 8A may also be capable of performing video input accompanied by audio input.

[0139] The operation unit 8B is configured to include an input device such as a keyboard or a mouse for the user to perform various operation inputs on the PC 100. An operation signal according to the user operation is output from the operation unit 8B to the control unit 2 via an HID (Human Interface Device) driver 9B (not shown) in the OS 7.

[0140] The display unit 8C is a display device configured with an LCD (Liquid Crystal Display), an OELD (Organic Electro-luminescence Display), etc., and performs various displays based on display signals output from a display control unit (not shown) via a display driver 9C (not shown) in the OS7.

[0141] The sound input unit 8D is a sound input device configured with a microphone, an A / D converter, etc., and performs various sound inputs based on sound input signals input to the control unit 2 via an audio driver 9D (not shown) in the OS7.

[0142] The sound output unit 8E is a sound output device configured with a D / A converter, a speaker, etc., and performs various sound outputs based on sound output signals output from the control unit 2 via an audio driver 9E (not shown) in the OS7.

[0143] The communication unit 8F is a communication device for transmitting and receiving information used inside the device to and from an external information processing device. As communication methods of the communication unit 8F, various methods are applicable, such as a wired connection via a cable conforming to a predetermined communication standard such as Ethernet or USB (Universal Serial Bus), a wireless connection using a wireless communication technology conforming to a predetermined communication standard such as Wi-Fi (registered trademark) or 5G (fifth-generation mobile communication system), and a connection using short-range wireless communication such as Bluetooth (registered trademark). The communication unit 8F performs communication transmission and reception processing in the control unit 2 via a network driver 9F (not shown) in the OS7.

[0144] The control unit 2 of the PC100 accesses the camera driver 9A via the function expansion driver 10 according to, for example, the on-premises video conferencing application 60A or the cloud-based video conferencing application 60B stored in the storage unit 3, and acquires shooting data (device data) from the imaging unit 8A.

[0145] As described above, on-premises video conferencing application 60A and cloud-based video conferencing application 60B can, for example, simultaneously acquire shooting data from imaging unit 8A. Also, on-premises video conferencing application 60A and cloud-based video conferencing application 60B can achieve access to and release from imaging unit 8A at any timing.

[0146] FIG. 13 shows an example of a screen displayed on display unit 8C of PC 100 in this embodiment. In the upper screen of FIG. 13, on display unit 8C, for example, an execution screen of on-premises video conferencing application 60A, an execution screen of cloud-based video conferencing application 60B, and a task bar TB for starting various application programs in OS 7 and executing various setting functions and the like are displayed.

[0147] In on-premises video conferencing application 60A, for example, a camera device selection screen for use in a video conference is displayed. On this screen, for example, in order to make one imaging unit 8A available for a plurality of application programs 6, a pull-down menu for selecting a device from, for example, camera device 8A1 and camera device 8A2 is displayed.

[0148] For example, "camera device 8A1" may be referred to as a device handle for connecting device 8 as camera device 8A to first API unit 13A. Also, camera device 8A2 may be referred to as a device handle for connecting to second API unit 13B. FIG. 13 is a display example in which virtual device unit 16 behaves explicitly when referred to from application program 6.

[0149] For example, when the camera device 8A1 is selected by the user of the PC 100, for example, the display changes to the screen in the center of FIG. 13. On this screen, in the on-premises video conferencing application 60A, an image of a person acquired from the imaging unit 8A is displayed. Also, for example, since the user of the PC 100 has selected to participate in a meeting in the cloud-based video conferencing application 60B, a camera device selection screen for use in the video conference is displayed. On this screen, the camera device 8A1 used in the on-premises video conferencing application 60A disappears from the pull-down menu, and only the camera device 8A2 is displayed.

[0150] For example, when the camera device 8A2 is selected by the user of the PC 100, for example, the display changes to the screen on the lower side of FIG. 13. On this screen, in the on-premises video conferencing application 60A and the cloud-based video conferencing application 60B, images of a person acquired from the imaging unit 8A are respectively displayed.

[0151] FIG. 14 shows another example of the screen displayed on the display unit 8C of the PC 100. On the upper screen of FIG. 14, in the on-premises video conferencing application 60A, the camera device 8A is displayed as a selectable device in the pull-down menu of the camera device selection screen.

[0152] For example, when the camera device 8A is selected by the user of the PC 100, for example, the display changes to the screen in the center of FIG. 14. On this screen, in the on-premises video conferencing application 60A, an image of a person acquired from the imaging unit 8A is displayed. Also, in the cloud-based video conferencing application 60B, the camera device 8A is displayed as a selectable device in the pull-down menu of the camera device selection screen.

[0153] For example, when the camera device 8A is selected by the user of the PC 100, for example, the display changes to the lower screen in FIG. 14. On this screen, in the on-premises video conferencing application 60A and the cloud-based video conferencing application 60B, images of people acquired from the imaging unit 8A are respectively displayed.

[0154] In FIG. 14, for example, although the "camera device 8A" has a common name in terms of display, it may have different internal device handles depending on the connection to the first API unit 13A and the second API unit 13B. FIG. 14 is an example of a display in which the virtual device unit 16 behaves transparently when referred to from the application program 6.

[0155] Note that the on-premises video conferencing application 60A and the cloud-based video conferencing application 60B may access the audio driver 9D via the function extension driver 10 to acquire the audio data (device data) of the audio input unit 8D. Even in this case, the on-premises video conferencing application 60A and the cloud-based video conferencing application 60B can realize access to and release from the audio input unit 8D at an arbitrary timing, and for example, can acquire the audio data from the audio input unit 8D simultaneously.

[0156] The same applies to other input devices.

Explanation of Signs

[0157] 1 Information processing device 2 Control unit 3 Storage unit 6A First application program 6B Second application program 7 OS 8 Device 9 Device driver 10 Function extension driver 11 Data replication control unit 12 Data capture unit 13A First API section 13B Second API section 14 Virtual device generation section 15A First virtual device 15B Second virtual device 19 Control application 100 PC

Claims

1. A program executed by an information processing apparatus in which a device is connected and a first application and a second application are executed on an operating system, causing a device driver that controls the device to acquire data of the device based on a first process in the first application or the second application; causing a first virtual device associated with a first execution application, which is the first application or the second application in which the first process has been executed, to be generated; transmitting the acquired data to the first virtual device; causing the data to be transmitted from the first virtual device to the first execution application; A program that executes the above.

2. The program according to claim 1, causing a second virtual device associated with a second execution application, which is the first application or the second application different from the first execution application, to be generated based on a second process in the second execution application; causing the acquired data to be transmitted to the second virtual device; causing the data to be transmitted from the second virtual device to the second execution application; Execute the above.

3. The program according to claim 2, executing deletion of the first virtual device or the second virtual device associated with the first execution application or the second execution application that has executed the third process, based on a third process in the first execution application or the second execution application.

4. The program according to claim 3, executing termination of acquisition of the data by the device driver when the first virtual device and the second virtual device are deleted.

5. The program according to claim 2, wherein a third application different from the first application and the second application is further executed on the operating system, causing a third virtual device associated with the third application to be generated based on a fourth process in the third application; causing the acquired data to be transmitted to the third virtual device; Causing the data to be transmitted from the third virtual device to the third application to execute. **Claim 6** A program according to claim 5, based on a fifth process in the first execution application, the second execution application, or the third application, causing the first virtual device, the second virtual device, or the third virtual device associated with the first execution application, the second execution application, or the third application that has executed the fifth process to be deleted. **Claim 7** A program according to claim 6, when the first virtual device, the second virtual device, and the third virtual device are deleted, causing the device driver to terminate the acquisition of the data. **Claim 8** A program according to any one of claims 1 to 7, the operating system has a kernel mode in which all instructions for operating the operating system can be executed and a user mode in which a part of the all instructions can be executed, the program is executed in the kernel mode. **Claim 9** A program according to claim 1, the device consists of a first device and a second device, the device driver has a first device driver for controlling the first device and a second device driver for controlling the second device, based on a sixth process in the first application or the second application, causing the first device driver to acquire first data of the first device, generating a fourth virtual device associated with a third execution application that is the first application or the second application in which the sixth process has been executed, transmitting the acquired first data to the fourth virtual device, causing the first data to be transmitted from the fourth virtual device to the third execution application, to execute. **Claim 10** A program according to claim 9, based on a seventh process in a fourth execution application that is the first application or the second application different from the third execution application, generating a fifth virtual device associated with the fourth execution application Causing the obtained first data to be transmitted to the fifth virtual device; Causing the data to be transmitted from the fifth virtual device to the fourth execution application; and causing the above to be executed.

11. A program according to claim 10, wherein based on an eighth process in the third execution application or the fourth execution application, execution is caused to delete the fourth virtual device or the fifth virtual device associated with the third execution application or the fourth execution application that has executed the eighth process.

12. A program according to claim 11, wherein when the fourth virtual device and the fifth virtual device are deleted, execution is caused to end the acquisition of the first data by the first device driver.

13. A program according to any one of claims 9 to 12, wherein based on a ninth process in the first application or the second application, execution is caused to acquire second data of the second device by the second device driver; execution is caused to generate a sixth virtual device associated with a fifth execution application that is the first application or the second application in which the ninth process has been executed; transmitting the obtained second data to the sixth virtual device; and causing the second data to be transmitted from the sixth virtual device to the fifth execution application. and causing the above to be executed.

14. A program according to claim 13, wherein based on a tenth process in a sixth execution application that is the first application or the second application different from the fifth execution application, execution is caused to generate a seventh virtual device associated with the sixth execution application; causing the obtained second data to be transmitted to the seventh virtual device; and causing the second data to be transmitted from the seventh virtual device to the sixth execution application. and causing the above to be executed.

15. A program according to claim 14, Based on the 11th process in the 5th execution application or the 6th execution application, cause deletion of the 6th virtual device or the 7th virtual device associated with the 5th execution application or the 6th execution application that executed the 11th process.

16. A program according to claim 15, when the 6th virtual device and the 7th virtual device are deleted, cause the 2nd device driver to end acquisition of the 2nd data.

17. An information processing method executed by an information processing apparatus in which a device is connected and a 1st application and a 2nd application are executed on an operating system, causing a device driver that controls the device to acquire data of the device based on a 1st process in the 1st application or the 2nd application; generating a 1st virtual device associated with a 1st execution application that is the 1st application or the 2nd application in which the 1st process has been executed; transmitting the acquired data to the 1st virtual device; causing the data to be transmitted from the 1st virtual device to the 1st execution application. comprising.

18. An information processing apparatus in which a device is connected and a 1st application and a 2nd application are executed on an operating system, wherein a control unit of the information processing apparatus acquires data of the device by a device driver that controls the device based on a 1st process in the 1st application or the 2nd application; generates a 1st virtual device associated with a 1st execution application that is the 1st application or the 2nd application in which the 1st process has been executed; transmits the acquired data to the 1st virtual device; transmits the data from the 1st virtual device to the 1st execution application.

Citation Information

Patent Citations

  • Interface driver program for electronic computer and recording medium therefor

    JP2002328878A

  • Information processing device and control method

    JP7135133B2