IP Library Granted Patent US 8,200,853
Granted Patent B2
US 8,200,853 · App. 12/687,775 · Granted Jun 12, 2012

Extensions for USB driver interface functions

Assignee: Microsoft Corporation
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,200,853
App. No.
12/687,775
Granted
Jun 12, 2012
Kind
B2
Abstract

Extensions for USB driver interface functions are described. In embodiments, input/output of computer instructions and data exchange is managed in a USB core driver stack. A set of USB driver interfaces are exposed by the USB core driver stack, and the USB driver interfaces include USB driver interface functions that interface with USB client function drivers that correspond to client USB devices. Extensions for the USB driver interface functions are also exposed by the USB core driver stack to interface with the USB client function drivers.

Claims (33)

1. A computer system, comprising:

at least memory and a processor to implement a USB core driver stack configured for input/output of computer instructions and data exchange;

a set of USB driver interfaces exposed by the USB core driver stack, the USB driver interfaces including USB driver interface functions configured to interface with USB client function drivers that correspond to one or more client USB devices;

extensions for the USB driver interface functions, the extensions exposed by the USB core driver stack to interface with the USB client function drivers;

a composite device driver configured to register itself and request a function handle for each individual function of a client USB device; and

the USB core driver stack further configured to enumerate the USB client function drivers and generate the function handles that each correspond to an individual function of the client USB device.

2. A system as recited in claim 1 , wherein the extensions for the USB driver interface functions are further configured to interface the USB core driver stack with at least legacy and current versions of the USB client function drivers.

3. A system as recited in claim 1 , wherein the USB core driver stack is further configured identify a USB client function driver that causes a runtime failure, the USB client function driver being identifiable by a function handle that corresponds to the individual function of the client USB device that is associated with the USB client function driver.

4. A system as recited in claim 1 , wherein the composite device driver is further configured to notify the USB core driver stack that the composite device driver will control suspending each of the individual functions of the client USB device, the composite device driver configured to notify the USB core driver stack via an extension of the USB driver interface functions.

5. A system as recited in claim 1 , wherein the USB core driver stack is further configured to enforce a check first protocol that directs a USB client function driver to check for availability of a USB driver interface function before interfacing with the USB core driver stack via the USB driver interfaces.

6. A system as recited in claim 1 , wherein the USB core driver stack is further configured to receive a contract version identifier from a USB client function driver via an extension of the USB driver interface functions, the contract version identifier configured to indicate a set of operation rules by which the USB client function driver interfaces with the USB core driver stack.

7. A system as recited in claim 1 , wherein the USB core driver stack is further configured to receive a capability version request from a USB client function driver, and return an indication that the USB core driver stack supports the extensions for the USB driver interface functions.

8. A system as recited in claim 1 , wherein the USB core driver stack is further configured to allocate multiple data stream queues to an endpoint for the input/output, and manage the input/output of the multiple data stream queues.

9. A system as recited in claim 1 , wherein the USB core driver stack includes a USB host controller configured to support buffered data that is stored in virtually non-contiguous buffers.

10. A system as recited in claim 1 , wherein the USB core driver stack is further configured to receive a request from a USB client function driver to allocate an URB (USB Request Block), and the USB core driver stack configured to allocate the URB for the USB client function driver.

11. A system as recited in claim 10 , wherein the USB core driver stack is further configured to allocate additional buffer space that is associated with the URB, the USB core driver stack configured to utilize the additional buffer space to manage the input/output associated with the USB client function driver.

12. A computer system, comprising:

at least memory and a processor to implement a USB core driver stack configured for input/output of computer instructions and data exchange;

a set of USB driver interfaces exposed by the USB core driver stack, the USB driver interfaces including USB driver interface functions configured to interface with USB client function drivers that correspond to one or more client USB devices;

extensions for the USB driver interface functions, the extensions exposed by the USB core driver stack to interface with the USB client function drivers; and

the USB core driver stack further configured to enforce a check first protocol that directs a USB client function driver to check for availability of a USB driver interface function before interfacing with the USB core driver stack via the USB driver interfaces.

13. A computer system as recited in claim 12 , wherein the USB core driver stack is further configured identify a USB client function driver that causes a runtime failure, the USB client function driver being identifiable by a function handle that corresponds to an individual function of the client USB device that is associated with the USB client function driver.

14. A computer system as recited in claim 12 , further comprising a composite device driver configured to register itself and request a function handle for each individual function of a client USB device, the composite device driver further configured to notify the USB core driver stack that the composite device driver will control suspending each of the individual functions of the client USB device.

15. A computer system as recited in claim 12 , wherein the USB core driver stack is further configured to receive a contract version identifier from a USB client function driver via an extension of the USB driver interface functions, the contract version identifier configured to indicate a set of operation rules by which the USB client function driver interfaces with the USB core driver stack.

16. A computer system as recited in claim 12 , wherein the USB core driver stack is further configured to receive a capability version request from a USB client function driver, and return an indication that the USB core driver stack supports the extensions for the USB driver interface functions.

17. A computer system, comprising:

at least memory and a processor to implement a USB core driver stack configured for input/output of computer instructions and data exchange;

a set of USB driver interfaces exposed by the USB core driver stack, the USB driver interfaces including USB driver interface functions configured to interface with USB client function drivers that correspond to one or more client USB devices;

extensions for the USB driver interface functions, the extensions exposed by the USB core driver stack to interface with the USB client function drivers; and

the USB core driver stack further configured to receive a contract version identifier from a USB client function driver via an extension of the USB driver interface functions, the contract version identifier configured to indicate a set of operation rules by which the USB client function driver interfaces with the USB core driver stack.

18. A computer system as recited in claim 17 , wherein the USB core driver stack is further configured identify a USB client function driver that causes a runtime failure, the USB client function driver being identifiable by a function handle that corresponds to an individual function of the client USB device that is associated with the USB client function driver.

19. A computer system as recited in claim 17 , further comprising a composite device driver configured to register itself and request a function handle for each individual function of a client USB device, the composite device driver further configured to notify the USB core driver stack that the composite device driver will control suspending each of the individual functions of the client USB device.

20. A computer system as recited in claim 17 , wherein the USB core driver stack is further configured to receive a capability version request from a USB client function driver, and return an indication that the USB core driver stack supports the extensions for the USB driver interface functions.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034564/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 21, 2010
From: AULL, RANDALL E.; HOLAN, DORON J.; SANKARANARAYAN, MUKUND
To: MICROSOFT CORPORATION
Reel/Frame 023820/0777 →
Continuity (1)
Related Publication 20110173351A1 · Jul 14, 2011