Method of communicating asynchronous elements from a mini-port driver
First Claim
1. A method of communicating asynchronous events from a mini-port driver of a computer system, comprising the steps of:
- calling a monolithic driver by a software component of the computer system to obtain a monolithic driver entry point address;
calling the mini-port driver by the software component to pass the monolithic driver entry point address to the mini-port driver;
calling the monolithic driver by the software component to block execution of an asynchronous event notification thread in the monolithic driver; and
calling the monolithic driver entry point address by the mini-port driver to unblock execution of the asynchronous event notification thread and queue an event if the mini-port driver detects an event.
3 Assignments
0 Petitions
Accused Products
Abstract
A computer system in accordance with the present invention provides a method of communicating asynchronous events from a mini-port driver of a computer system to a software component without polling the mini-port driver. The computer system provides a monolithic driver as a dispatch between a mini-port driver and a software component. Until an asynchronous event is detected, an event thread in the monolithic driver to a software component is blocked. When an asynchronous event is detected by the mini-port driver, the mini-port driver calls the monolithic driver with a monolithic driver entry point which queues the event and unblocks the event thread. The monolithic driver provides the asynchronous event to the software component through the unblocked event thread. The event thread is then re-blocked and remains blocked until another asynchronous event is detected. Asynchronous events are thereby communicated from a mini-port driver to a software component without polling the mini-port driver.
-
Citations
45 Claims
-
1. A method of communicating asynchronous events from a mini-port driver of a computer system, comprising the steps of:
-
calling a monolithic driver by a software component of the computer system to obtain a monolithic driver entry point address;
calling the mini-port driver by the software component to pass the monolithic driver entry point address to the mini-port driver;
calling the monolithic driver by the software component to block execution of an asynchronous event notification thread in the monolithic driver; and
calling the monolithic driver entry point address by the mini-port driver to unblock execution of the asynchronous event notification thread and queue an event if the mini-port driver detects an event. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
providing the event from the monolithic driver to the software component through the asynchronous event notification thread.
-
-
3. The method of claim 2, further comprising the steps of:
calling the monolithic driver by the software component to re-block execution of the asynchronous event notification thread after providing the event through the asynchronous event notification thread.
-
4. The method of claim 2, further comprising the step of:
processing the event by the software component.
-
5. The method of claim 1, wherein the software component is a service.
-
6. The method of claim 1, wherein the computer system comprises a server.
-
7. The method of claim 6, the computer system including a client, further comprising the step of:
providing the event to the client in response to the event being provided through the asynchronous event notification thread.
-
8. The method of claim 7, wherein the client is a remote procedure call client.
-
9. The method of claim 1, wherein the monolithic driver supports an address call by the software component for obtaining the monolithic driver entry point address.
-
10. The method of claim 1, wherein the mini-port driver supports a call for passing the monolithic driver entry point address to the mini-port driver.
-
11. The method of claim 1, wherein the monolithic driver supports a call for blocking execution of the asynchronous event notification thread in the monolithic driver.
-
12. The method of claim 1, wherein the monolithic driver supports a call by the mini-port driver with the monolithic driver entry point address to unblock execution of the asynchronous event notification thread.
-
13. The method of claim 1, wherein the monolithic driver comprises an event queue for holding events.
-
14. The method of claim 1, wherein the steps of calling the monolithic driver to obtain a monolithic driver entry point address and calling the mini-port driver to pass the monolithic driver entry point address to the mini-port driver are performed during initialization of the software component.
-
15. The method of claim 1, wherein the asynchronous event notification thread is created during initialization of the software component.
-
16. A server for communicating asynchronous events from a mini-port driver, comprising:
-
a software component;
a plurality of mini-port drivers;
a monolithic driver for providing asynchronous events from a mini-port driver of the plurality of mini-port drivers to the software component;
a processor; and
a medium readable by the processor, storing;
server code causing the processor to perform the steps of;
calling the monolithic driver by the software component to obtain a monolithic driver entry point address;
calling a mini-port driver of the plurality of mini-port drivers by the software component to pass the monolithic driver entry point address to the mini-port driver;
calling the monolithic driver by the software component to block execution of an asynchronous event notification thread in the monolithic driver; and
calling the monolithic entry point address by the mini-port driver to unblock execution of the asynchronous event thread and queue the event if the mini-port driver detects an event. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
providing the event from the monolithic driver to the software component through the asynchronous event notification thread.
-
-
18. The server of claim 17, the server code causing the processor to perform the further step of:
calling the monolithic driver by the software component to re-block execution of the asynchronous event notification thread after providing the event through the asynchronous event notification thread.
-
19. The server of claim 16, wherein the software component is a service.
-
20. The server of claim 16, the server code causing the processor to perform the further step of:
providing the event to a client in response to the event being provided through the asynchronous event notification thread.
-
21. The server of claim 16, wherein the monolithic driver supports an address call by the software component for obtaining the monolithic driver entry point address.
-
22. The server of claim 16, wherein the mini-port driver supports a call for passing the monolithic driver entry point address to the mini-port driver.
-
23. The server of claim 16, wherein the monolithic driver supports a call for blocking execution of the asynchronous event notification thread in the monolithic driver.
-
24. The server of claim 16, wherein the monolithic driver supports a call by a mini-port driver with the monolithic driver entry point address to unblock execution of the asynchronous event notification thread.
-
25. The server of claim 16, wherein the monolithic driver comprises an event queue for holding events.
-
26. The server of claim 16, wherein the software component processes the event provided to the software component.
-
27. The server of claim 16, wherein the steps of calling the monolithic driver to obtain a monolithic driver entry point address, and calling the mini-port driver to pass the monolithic driver entry point address to the mini-port driver, and performed during initialization of the software component.
-
28. The server of claim 16, wherein the asynchronous event notification thread is created during initialization of the software component.
-
29. A medium readable by a computer system for communicating asynchronous events from a mini-port driver, the computer system including a software component, a monolithic driver and a plurality of mini-port drivers, the medium storing:
-
asynchronous event communication code for causing the computer system to perform the steps of;
calling the monolithic driver by the software component to obtain a monolithic driver entry point address;
calling a mini-port driver by the software component to pass the monolithic driver entry point address to the mini-port driver;
calling the monolithic driver by the software component to block execution of an asynchronous event notification thread in the monolithic driver; and
calling the monolithic driver entry point address by the mini-port driver to unblock execution of the asynchronous event notification thread and queue the event if the mini-port driver detects an event. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45)
providing the event from the monolithic driver to the software component through the asynchronous event notification thread.
-
-
31. The medium of claim 30, the asynchronous event communication code causing the computer system to perform the further step of:
calling the monolithic driver of the software component to re-block execution of the asynchronous event notification thread after providing the event through the asynchronous event notification thread.
-
32. The medium of claim 29, wherein the software component is a service.
-
33. The medium of claim 29, the asynchronous event communication code causing the computer system to perform the further step of:
providing the event to a client in response to the event being provided through the asynchronous event thread.
-
34. The medium of claim 29, wherein the computer system is a server.
-
35. The medium of claim 29, wherein the software component processes the event provided to the software component.
-
36. The medium of claim 29, wherein the monolithic driver supports an address call by the software component for obtaining the monolithic driver entry point address.
-
37. The medium of claim 29, wherein the mini-port driver supports a call for passing the monolithic driver entry point address to the mini-port driver.
-
38. The medium of claim 29, wherein the monolithic driver supports a call for blocking execution of the asynchronous event thread in the monolithic driver.
-
39. The medium of claim 29, wherein the monolithic driver supports a call by a mini-port driver with the monolithic driver entry point address to unblock execution of the asynchronous event thread.
-
40. The medium of claim 29, wherein the monolithic driver comprises an event queue for holding messages.
-
41. The medium of claim 29, wherein the steps of calling the monolithic driver to obtain a monolithic driver entry point address, and calling the mini-port driver to pass the monolithic driver entry point address to the mini-port driver are performed during initialization of the software component.
-
42. The medium of claim 29, wherein the asynchronous event notification thread is created during initialization of the software component.
-
43. The medium of claim 29, wherein the medium comprises a compact disc read only memory.
-
44. The medium of claim 29, wherein the medium comprises a disk.
-
45. The medium of claim 29, wherein the medium comprises a memory device.
Specification