Driver shimming

US9519600B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9519600-B2
Application numberUS-201113040847-A
CountryUS
Kind codeB2
Filing dateMar 4, 2011
Priority dateMar 4, 2011
Publication dateDec 13, 2016
Grant dateDec 13, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Driver shimming techniques are described. In one or more implementations, an identification is made as to which interfaces and callbacks are utilized by a shim obtained for a driver of a computing device. The identified interfaces and callbacks are wrapped by the shim of the computing device such that calls to the wrapped interfaces and callbacks are intercepted by the shim.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: for a computing device having a first operating system, the first operating system including a kernel, updating the first operating system to a second operating system, the second operating system including a kernel, the first operating system being a previous version of the second operating system; obtaining a shim configured to enable communication between the second operating system and a driver, the driver being configured to communicate with the kernel of the first operating system in at least a manner that does not involve an a application programming interface associated with the first operating system, the driver being compatible with the first operating system, but incompatible with the second operating system absent the shim; and routing communication between the second operating system and the driver through the obtained shim, including using the obtained shim to correct incompatibilities between the driver and the kernel of the second operating system by using the obtained shim to intercept at least some data that is used to support communication from the kernel of the second operating system to the driver without involving an application programming interface associated with the second operating system, translating at least some of the intercepted data, and providing at least some of the translated data to the driver. 2. A method as described in claim 1 , wherein the driver is also configured to communicate with the first operating system via a call to an application programming interface associated with the first operating system and wherein routing communication between the second operating system and the driver further includes using the obtained shim to modify both an input and output of the application programming interface call. 3. A method as described in claim 1 , further comprising a shim engine installing the shim but then being excluded in execution of the driver after installing the shim. 4. A method as described in claim 1 , wherein the driver is further configured to communicate with the first operating system via a call to an application programming interface (API) associated with the first operating system and wherein the communication between the second operating system and the driver further comprises communications via an application programming interface (API). 5. A method as described in claim 4 , further comprising replacing import address table (IAT) entries of one or more application programming interfaces and saving the replaced import address table (IAT) entries in a hooking table. 6. A method as described in claim 1 , wherein the data that is used to support communication from the kernel of the second operating system to the driver without involving an application programming interface associated with the second operating system involves the use of I/O request packets (IRP). 7. A method as described in claim 6 , further comprising replacing entries in a dispatch table for use in conjunction with the I/O request packets (IRPs) to allow the obtained shim to intercept the I/O request packets. 8. A method as described in claim 1 , further comprising routing through the shim communications between another driver that is executable on the computing device and the driver. 9. A method as described in claim 1 , further comprising: capturing data via one or more hooks; translating the data to mimic an earlier version of an operating system; and communicating the translated data to the driver. 10. A method as described in claim 1 , wherein obtaining a shim comprises obtaining a shim via a network connection from a service provider that includes a repository responsive to communication of an identifier of the driver that is to be installed on the computing device. 11. A computing device comprising: one or more processors; and one or more computer readable storage media storing instructions thereon that are executable by the one or more processors to: update a first operating system on the computing device to a second operating system, the first operating system being a previous version of the second operating system, the first operating system having a kernel and the second operating system having a kernel; initiate installation of a driver that is compatible with the first operating system on the computing device, the driver being configured to communicate with the kernel of the first operating system in at least a manner that does not involve an application programming interface associated with the first operating system; identify the driver to be installed; based at least on the identification, determine whether the driver has compatibility issues with the second operating system; based at least on a determination that the driver has compatibility issues with the second operating system, determine whether a shim is available for the driver; based at least on a determination that a shim is available, obtain the determined shim for installation on the computing device; and install the shim on the computing device, thereby enabling the driver to communicate with the second operating system by routing communication between the second operating system and the driver through the shim, the shim correcting incompatibilities between the driver and the kernel of the second operating system by intercepting data used to support communication from the kernel of the second operating system to the driver without involving an application programming interface associated with the second operating system, translating at least some of the intercepted data, and providing at least some of the translated data to the driver. 12. A computing device as described in claim 11 , wherein the data that is used to support communication from kernel of the second operating system to the driver without involving an application programming interface associated with the second operating system involves the use of I/O request packets (IRPs) and wherein the one or more computer readable storage media store instructions thereon that are executable by the one or more processors to modify a dispatch table so that the shim can intercept the I/O request packets (IRPs). 13. A computing device as described in claim 11 , wherein the shim also corrects incompatibilities between the driver and an application programming interface (API) associated with the second operating system and wherein the one or more computer readable storage media store instructions thereon that are executable by the one or more processors to modify an import access table (IAT) so that the shim can intercept calls to the application programming interface (API). 14. A computing device as described in claim 11 , wherein the data that is used to support communication from the kernel of the second operating system to the driver without involving an application programming interface associated with the second operating system involves the use of I/O request packets (IRPs) and wherein the one or more computer readable storage media store instructions thereon that are executable by the one or more processors to: intercept the I/O request packets (IRPs) that relate to communication with the driver; translate at least some of the data associated with the intercepted I/O request packet (IRP) to be compatible with the driver; and provide at least some of the translated data for communication to the driver. 15. One or more computer readable storage media storing instructions thereon that when executed by one or more processors cause a computing system to: update a first operating system on the computing device to a seco

Assignees

Inventors

Classifications

  • Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines · CPC title

  • G06F9/4411Primary

    Configuring for operating with peripheral devices; Loading of device drivers · CPC title

  • Arrangements for executing specific programs · CPC title

  • G06F13/20Primary

    for access to input/output bus · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9519600B2 cover?
Driver shimming techniques are described. In one or more implementations, an identification is made as to which interfaces and callbacks are utilized by a shim obtained for a driver of a computing device. The identified interfaces and callbacks are wrapped by the shim of the computing device such that calls to the wrapped interfaces and callbacks are intercepted by the shim.
Who is the assignee on this patent?
Lupu Corneliu I, Calinoiu Silviu C, Petruta Cristian G, and 3 more
What technology area does this patent fall under?
Primary CPC classification G06F9/4411. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Dec 13 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 2 related publications on this page (citations in our corpus or others sharing the same primary CPC).