System for enhancing device drivers
AssigneeMicrosoft Corporation
InventorsCraig G. Eisler, G. Eric Engstrom
Life of this patent
Estimating the term…
Abstract
A system that supports enhancement of device drivers written in distinct code sets, such as a 32-bit enhancement to a 16-bit existing driver is disclosed. The system defines a mechanism for the two device driver components to share information about their functioning, and for a device interface component to use that information so as to route calls to the device drivers based on their functional capabilities. The system can be implemented in a display device interface to support interaction between applications and video hardware components, which include enhanced device drivers.
Claims24
In a system having an integrated driver for a peripheral device in a computer including an N-bit driver implemented in N-bit code and an M-bit driver implemented in M-bit code, and an N-bit interface for allowing application programs to access the peripheral device, a method for updating state information of the integrated driver, where M is less than N, the method comprising:
- in response to an initialization request or a mode change, gathering device driver information with the M-bit driver from the M-bit driver and the N-bit driver;
- when the device driver information has been gathered, sending a notification from the M-bit code to a real time helper implemented in the N-bit code;
- in response to the notification, executing the real time helper to notify the N-bit interface of the update in the device driver information;
- and
- accessing the updated device driver information from the N-bit interface.
In a system having an integrated driver for a peripheral device in a computer including an N-bit driver implemented in N-bit code and an M-bit driver implemented in M-bit code, and an N-bit interface for allowing application programs to access the peripheral device, a method for updating state information of the integrated driver without thunking-up from the M-bit code to the N-bit code, where M is less than N, the method comprising:
- in response to an initialization request or a mode change, gathering device driver information with the M-bit driver from the M-bit driver and the N-bit driver;
- when the device driver information has been gathered, sending a notification from the M-bit code to a real time helper implemented in the N-bit code, including issuing an event from the M bit code that blocks a high priority thread in the helper and causes the thread to be scheduled to execute in a next available time slice after the event;
- in response to the notification, executing the real time helper to notify the N-bit interface of the update in the device driver information;
- and
- accessing the updated device driver information from the N-bit interface.
In a system having an integrated driver for a peripheral device in a computer including an N-bit driver implemented in N-bit code and an M-bit driver implemented in M-bit code, and an N-bit interface for allowing application programs to access the peripheral device, a method for updating state information of the integrated driver without thunking-up from the M-bit code to the N-bit code, where M is less than N, the method comprising:
- in response to an initialization request or a mode change, gathering device driver information with the M-bit driver from the M-bit driver and the N-bit driver;
- when the device driver information has been gathered, sending a notification from the M-bit code to a real time helper implemented in the N-bit code;
- in response to the notification, executing the real time helper to notify the N-bit interface of the update in the device driver information;
- accessing the updated device driver information from the N-bit interface;
- receiving function calls from the applications to control the peripheral device in the N-bit interface;
- and routing the function calls to either the M-bit driver or the N-bit driver based on the device driver information indicating which functions are supported in the M and N-bit drivers.
In a system having an integrated driver for a peripheral device in a computer including an N-bit driver implemented in N-bit code and an M-bit driver implemented in M-bit code, and an N-bit interface for allowing application programs to access the peripheral device, a method for updating state information of the integrated driver without thunking-up from the M-bit code to the N-bit code, where M is less than N, the method comprising:
- in response to an initialization request or a mode change, gathering device driver information with the M-bit driver from the M-bit driver and the N-bit driver;
- when the device driver information has been gathered, sending a notification from the M-bit code to a real time helper implemented in the N-bit code;
- in response to the notification, executing the real time helper to notify the N-bit interface of the update in the device driver information;
- accessing the updated device driver information from the N-bit interface;
- in response to a query from the N-bit interface to the M-bit driver, providing a name of the N-bit driver, a driver initialization function, and a M-bit pointer to a region in shared memory for M and N-bit processes;
- loading the N-bit driver;
- executing the driver initialization function to initialize the N-bit driver in the shared memory;
- and
- converting the M-bit pointer to a N-bit pointer so that the N-bit driver can access the shared memory.
In a system having an integrated driver for a peripheral device in a computer including an N-bit driver implemented in N-bit code and an M-bit driver implemented in M-bit code, a M-bit interface to the M-bit driver and an N-bit interface for allowing application programs to access the peripheral device, a method for updating state information of the integrated driver without thunking-up from the M-bit code to the N-bit code, where M is less than N, the method comprising:
- in response to an initialization request or a mode change, gathering device driver information with the M-bit driver from the M-bit driver and the N-bit driver;
- when the device driver information has been gathered, sending a notification from the M-bit code to a real time helper implemented in the N-bit code;
- in response to the notification, executing the real time helper to notify the N-bit interface of the update in the device driver information;
- accessing the updated device driver information from the N-bit interface;
- passing an entry point of the M-bit interface to the M-bit driver;
- using the entry point to pass the device driver information from the M-bit driver to the M-bit interface;
- wherein the step of sending the notification comprises signaling an event from the M-bit interface which indicates new device driver information is available;
- and
- when processing switches from M to N-bit processing after the event is scheduled, executing the real time helper to notify the N-bit interface of the update in the device driver information.
In a computer having a processor, memory, and a peripheral device, a system in a computer for integrating M-bit and N-bit device drivers for controlling the peripheral device, the system comprising:
- N-bit code including an N-bit device driver;
- M-bit code including an M-bit device driver in communication with the N-bit device driver to obtain a N-bit driver information, for combining the N-bit driver information with M-bit driver information to create integrated driver information;
- the N bit code further including an N-bit interface for providing an application programming interface to application programs running in the computer that enables the application programs to access the peripheral device;
- and
- a notification mechanism in communication with the N-bit interface for notifying the N-bit interface when the integrated driver information changes due to changes in the state of the peripheral device, wherein the notification mechanism is operable to signal an event that is monitored in the N-bit code and reported to the N-bit interface so that the N-bit interface becomes aware that the integrated driver information has been updated.
In a computer having a processor, memory, and a peripheral device, a system in a computer for integrating M-bit and N-bit device drivers for controlling the peripheral device, the system comprising:
- N-bit code including an N-bit device driver;
- M-bit code including an M-bit device driver in communication with the N-bit device driver to obtain a N-bit driver information, for combining the N-bit driver information with M-bit driver information to create integrated driver information;
- the N bit code further including an N-bit interface for providing an application programming interface to application programs running in the computer that enables the application programs to access the peripheral device;
- and
- a notification mechanism in communication with the N-bit interface for notifying the N-bit interface when the integrated driver information changes due to changes in the state of the peripheral device, wherein the notification mechanism is operable to signal an event that is monitored in the N-bit code and reported to the N-bit interface so that the N-bit interface becomes aware that the integrated driver information has been updated;
- wherein the integrated driver information includes a list of N-bit functions supported in the N-bit driver and functions supported in the M-bit driver, wherein the N-bit interface is in communication with an application program running in the computer for receiving a function call to access the peripheral device, and in response to the function call, is operable to determine whether the function call is supported in the N-bit driver or the M-bit driver, and is operable to route the function call to the N-bit driver and the M-bit driver.
In a computer having a processor, memory, and a peripheral device, a system in a computer for integrating M-bit and N-bit device drivers for controlling the peripheral device, the system comprising:
- N-bit code including an N-bit device driver;
- M-bit code including an M-bit device driver in communication with the N-bit device driver to obtain a N-bit driver information, for combining the N-bit driver information with M-bit driver information to create integrated driver information;
- the N bit code further including an N-bit interface for providing an application programming interface to application programs running in the computer that enables the application programs to access the peripheral device;
- and
- a notification mechanism in communication with the N-bit interface for notifying the N-bit interface when the integrated driver information changes due to changes in the state of the peripheral device, wherein the notification mechanism is operable to signal an event that is monitored in the N-bit code and reported to the N-bit interface so that the N-bit interface becomes aware that the integrated driver information has been updated;
- wherein the N-bit interface is in communication with the M-bit driver to instruct the M-bit driver to initialize itself in response to a mode change of the peripheral device;
- and wherein the M-bit driver creates the integrated driver information in response to the mode change.
In a system having an integrated driver for a display controller in a computer including an N-bit driver implemented in N-bit code and an M-bit driver implemented in M-bit code, and an N-bit interface for allowing application programs to access the display controller, a method for updating state information of the integrated driver, where M-is less than-N, the method comprising:
- in response to an initialization request and a mode change, gathering device driver information with the M-bit driver from the M-bit driver and the N-bit driver, wherein the device driver information includes M bit driver functions supported in the M bit driver, N bit functions supported in the N bit driver, and a list of hardware capabilities of the display controller;
- when the device driver information has been gathered, signaling an event from the M-bit code to a real time helper implemented in the N-bit code;
- in response to the event, executing the real time helper to notify the N-bit interface of the update in the device driver information;
- accessing the updated device driver information from the N-bit interface;
- receiving a call from an application in the N-bit interface to access the display controller;
- and
- examining the device driver information to determine whether the call is supported in the N-bit driver, and if so, passing the call directly to the N-bit driver, and if not, routing the call to the M-bit driver.
Dependencies are inferred from the claim text.