IP Library Granted Patent US 8,825,909
Granted Patent B1
US 8,825,909 · App. 13/036,268 · Granted Sep 2, 2014

Application directed dynamic driver substitution

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,825,909
App. No.
13/036,268
Granted
Sep 2, 2014
Kind
B1
Abstract

An application directed method for substituting a driver for a target device includes the steps of updating a set of hardware identifiers for the target device to include a new hardware device, building a list of drivers based on the set of hardware identifiers that includes the new hardware identifier, and calling into an operating system to cause the operating system to switch the driver for the target device to a new driver which is selected from the list. With this method, a device that has multiple drivers associated therewith can have just one of the drivers substituted, and where multiple devices share the same hardware ID, the driver for just one of the devices can be substituted.

Claims (40)

1. A method of substituting a current driver for a target device with a new driver for the target device using an application-level code running in a computer system concurrently with an operating system that manages drivers for a plurality of devices including the target device, comprising:

generating a set of hardware identifiers for the target device;

updating the set of hardware identifiers for the target device to add a new hardware identifier that is not in the set;

building a list of drivers based on the updated set of hardware identifiers that includes the new hardware identifier; and

calling into the operating system to cause the operating system to switch the driver for the target device to a new driver which is selected from the list.

2. The method of claim 1 , further comprising:

selecting a driver in the list that has a property that matches the new hardware identifier to be the new driver.

3. The method of claim 2 , further comprising:

querying the operating system for properties of the drivers.

4. The method of claim 3 , wherein said building includes:

adding to the list of drivers the drivers having at least one property that matches one of the hardware identifiers in the list.

5. The method of claim 4 , wherein said adding, said building, and said selecting comprise API calls into the operating system.

6. The method of claim 1 , wherein the computer system has a virtual machine running therein and the new driver is a driver configured to support the use of the target device by the virtual machine.

7. The method of claim 1 , wherein the target device is one of at least two secondary USB devices of a primary USB device.

8. The method of claim 1 , wherein the target device is one of a PCI device, a PCI-X device, and a PCI Express device.

9. A method of substituting one of multiple drivers for a target device with a new driver using an application programming interface (API) calls into an operating system that manages drivers for a plurality of devices including the target device, comprising:

generating a set of hardware identifiers for a sub-component of the target device;

updating the set of hardware identifiers for the sub-component of the target device that is controlled by one of multiple drivers for the target device to add a new hardware identifier that is not in the set;

building a list of drivers based on the updated set of hardware identifiers that includes the new hardware identifier;

selecting, as the new driver to replace one of multiple drivers for the target device, a driver from the list having a property that matches the new hardware identifier; and

calling into the operating system to cause the operating system to switch the driver for the sub-component of the target device to the selected driver.

10. The method of claim 9 , wherein the target device has first and second hardware functions, and the new driver controls access to the first hardware function of the target device, and the other driver controls access to the second hardware function of the target device.

11. The method of claim 10 , wherein, when the new driver is selected to replace said one of at least two drivers for the target device, the other driver is not changed.

12. The method of claim 9 , wherein said building includes:

adding to the list of drivers the drivers having at least one property that matches one of the hardware identifiers in the list.

13. The method of claim 9 , wherein the new driver is a driver configured to support the use of the target device by a virtual machine.

14. A non-transitory computer-readable storage medium comprising application-level instructions to be executed concurrently with an operating system of a computer system, wherein the instructions when executed, cause the computer system to substitute a current driver for a target device with a new driver for the target device by carrying out the steps of:

generating a set of hardware identifiers for the target device;

updating the set of hardware identifiers for the target device to add a new hardware identifier that is not in the set;

building a list of drivers based on the updated set of hardware identifiers that includes the new hardware identifier; and

calling into the operating system to cause the operating system to switch the driver for the target device to a new driver which is selected from the list.

15. The non-transitory computer-readable storage medium of claim 14 , wherein the application-level instructions when executed, cause the computer system to further carry out the step of:

selecting a driver in the list that has a property that matches the new hardware identifier to be the new driver.

16. The non-transitory computer-readable storage medium of claim 15 , further comprising information files of the drivers in the list.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the application-level instructions when executed, cause the computer system to further carry out the step of:

querying the operating system for properties of the drivers.

18. The non-transitory computer-readable storage medium of claim 17 , wherein said building includes:

adding to the list of drivers the drivers having at least one property that matches one of the hardware identifiers in the list.

19. The non-transitory computer-readable storage medium of claim 14 , wherein the steps of adding, building, and selecting are carried out with API calls into the operating system.

20. The non-transitory computer-readable storage medium of claim 14 , further comprising instructions for instantiating a virtual machine in the computer system, wherein the new driver is a driver configured to support the use of the target device by a virtual machine.

Assignments (4)
PATENT ASSIGNMENT Recorded Aug 5, 2024
From: VMWARE LLC
To: OMNISSA, LLC
Reel/Frame 068327/0365 →
SECURITY INTEREST Recorded Jul 3, 2024
From: OMNISSA, LLC
To: UBS AG, STAMFORD BRANCH
Reel/Frame 068118/0004 →
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 28, 2011
From: DELCO, MATTHEW RAY
To: VMWARE, INC.
Reel/Frame 025871/0289 →