User mode proxy of kernel mode operations in a computer operating system
First Claim
1. A method of synchronizing the processing of a data stream in kernel mode with the processing of a data stream in user mode, said method comprising the steps of:
- connecting a plurality of kernel mode filters together to form a kernel mode processing graph adapted to process data by first processing data in one of said plurality of kernel mode filters and then passing the processed data to another of said plurality of kernel mode filters so that data is processed in turn by each of said plurality of kernel mode filters, wherein pins of at least two of said plurality of kernel mode filters are connected together in response to a client process interconnecting corresponding user mode pins of user mode proxy filters that operate in user mode and correspond to said at least two of said plurality of kernel mode filters;
creating a kernel mode clock that allows said plurality of kernel mode filters in said kernel mode processing graph to identify the time;
connecting a plurality of user mode filters together to form a user mode processing graph adapted to process data by first processing data in one of said plurality of user mode filters and then passing the processed data to another of said plurality of user mode filters so that data is processed by each of said plurality of user mode filters in said user mode processing graph;
creating a user mode clock that allows said plurality of user mode filters in said user mode processing graph to identify the time; and
selecting one of either said user mode clock or said kernel mode clock to be a master clock and selecting the other of said user mode clock or said kernel mode clock to be a slave clock and then synchronizing the slave clock to the master clock so that said kernel mode processing graph and said user mode processing graph are synchronized.
2 Assignments
0 Petitions
Accused Products
Abstract
This invention involves user mode proxy of kernel mode operations in a computer operating system. The broad contours of the invention allow drivers operating in the kernel mode of an operating system to be proxied by a corresponding user mode object. A user mode process wishing to communicate with or manipulate the kernel mode driver may perform such communication or manipulation by communicating with or manipulating the corresponding user mode proxy. The present invention has particular applicability to emerging operating systems which allow kernel mode drivers to be interconnected in order to create a processing stream in the kernel where data is passed from kernel mode driver to kernel mode driver without transitioning to user mode. User mode proxy of such kernel mode drivers allows user mode processes to manipulate such kernel mode drivers using familiar user mode protocols without the necessity of learning new kernel mode protocols.
249 Citations
18 Claims
-
1. A method of synchronizing the processing of a data stream in kernel mode with the processing of a data stream in user mode, said method comprising the steps of:
-
connecting a plurality of kernel mode filters together to form a kernel mode processing graph adapted to process data by first processing data in one of said plurality of kernel mode filters and then passing the processed data to another of said plurality of kernel mode filters so that data is processed in turn by each of said plurality of kernel mode filters, wherein pins of at least two of said plurality of kernel mode filters are connected together in response to a client process interconnecting corresponding user mode pins of user mode proxy filters that operate in user mode and correspond to said at least two of said plurality of kernel mode filters;
creating a kernel mode clock that allows said plurality of kernel mode filters in said kernel mode processing graph to identify the time;
connecting a plurality of user mode filters together to form a user mode processing graph adapted to process data by first processing data in one of said plurality of user mode filters and then passing the processed data to another of said plurality of user mode filters so that data is processed by each of said plurality of user mode filters in said user mode processing graph;
creating a user mode clock that allows said plurality of user mode filters in said user mode processing graph to identify the time; and
selecting one of either said user mode clock or said kernel mode clock to be a master clock and selecting the other of said user mode clock or said kernel mode clock to be a slave clock and then synchronizing the slave clock to the master clock so that said kernel mode processing graph and said user mode processing graph are synchronized. - View Dependent Claims (2, 3, 4, 5, 6, 7)
processing the data stream using a subset of the user mode filters included in the user mode processing graph;
using one of the subset of the user mode filters to transmit the data stream across a security boundary separating the user mode and the kernel mode to one of the kernel mode filters included in a subset of the kernel mode filters of the kernel mode processing graph; and
processing the data stream using the subset of the kernel mode filters of the kernel mode processing graph.
-
-
8. A method of using user mode proxy filters to connect together two corresponding kernel mode filters in a kernel mode filter graph, each kernel mode filter being adapted for processing data, in order to allow data to directly flow between the connected kernel mode filters without passing through user mode, said method comprising the steps of:
-
creating a connection between a first user mode proxy filter and a first kernel mode filter so that configuration of said first kernel mode filter in said kernel mode filter graph can be achieved by a client process manipulating said first proxy filter;
creating a connection between a second user mode proxy filter and a second kernel mode filter so that configuration of said second kernel mode filter in said kernel mode filter graph can be achieved by said client process manipulating said second proxy filter;
said client process interconnecting said first user mode proxy filter and said second user mode proxy filter using a defined procedure to create a user mode interconnection, said user mode interconnection being virtual in that said user mode interconnection appears to be an actual interconnection from the standpoint of the client process although data that is processed by the kernel mode filter graph does not flow over the user mode interconnection; and
said first user mode proxy filter and said second user mode proxy filter responding to said user mode interconnection by establishing a corresponding kernel mode interconnection representing at least a portion of said kernel mode filter graph, said kernel mode inter connection being made between said first kernel mode filter and said second kernel mode filter so that data can flow directly between said first kernel mode filter and said second kernel mode filter without passing between said first user mode proxy filter and said second user mode proxy filter. - View Dependent Claims (9)
-
-
10. A method of using user mode proxy filters to connect together two corresponding kernel mode filters in a kernel mode filter graph, each kernel mode filter being adapted for processing data, in order to allow data to directly flow between the connected kernel mode filters without passing through user mode, said method comprising the steps of:
-
creating an instance of a first user mode proxy filter and forming a connection between said first user mode proxy filter and a first kernel mode filter so that configuration of said first kernel mode filter in said kernel mode filter graph can be achieved by a client process manipulating said first proxy filter, said first kernel mode filter having at least one pin forming a connection point where said first kernel mode filter can be connected to another kernel mode filter, said first user mode proxy filter having at least one user mode pin corresponding to said at least one pin on said first kernel mode filter;
creating an instance of a second user mode proxy filter and forming a connection between said second user mode proxy filter and a second kernel mode filter so that configuration of said second kernel mode filter in said kernel mode filter graph can be achieved by said client process manipulating said second proxy filter, said second kernel mode filter having at least one other pin forming a connection point where said second kernel mode filter can be connected to another kernel mode filter, said second user mode proxy filter having at least one other user mode pin corresponding to said at least one other pin; and
said client process interconnecting said at least one user mode pin of said first user mode proxy filter and said at least one other user mode pin of said second user mode proxy filter using a defined procedure to create a user mode interconnection, said user mode interconnection being virtual in that said user mode interconnection appears to be an actual interconnection from the standpoint of the client process although data that is processed by the kernel mode filter graph does not flow over the user mode interconnection; and
said first user mode proxy filter and said second user mode proxy filter responding to said user mode interconnection by establishing a corresponding kernel mode interconnection representing at least a portion of said kernel mode filter graph, said kernel mode interconnection being made between said at least one pin of said first kernel mode filter and said at least one other pin of said second kernel mode filter so that data can flow directly between said at least one pin of said first kernel mode filter and said at least one other pin of said second kernel mode filter without passing between said first user mode proxy filter and said second user mode proxy filter.
-
-
11. A computer-readable medium having computer-executable instructions comprising:
-
means for forming a user mode proxy filter adapted to proxy a kernel mode filter having at least one pin that defines a connection point where said kernel mode filter can be connected to another kernel mode filter, said user mode proxy filter comprising;
means for enabling a client process to configure said kernel mode filter by manipulating said user mode proxy filter, without said client process accessing said kernel mode filter directly; and
means for connecting said at least one pin of said kernel mode filter to a designated kernel mode filter in response to a connection request from said client process so that data can flow between said kernel mode filter and said designated kernel mode filter, said connection request comprising said client process directing said user mode proxy filter to connect a user mode pin of said user mode proxy filter to a user mode pin of another user mode proxy filter to create a user mode interconnection, said user mode interconnection being virtual in that said user mode interconnection appears to be an actual interconnection from the standpoint of the client process although data that is transmitted between said kernel mode filter and said designated kernel mode filter does not flow over the user mode interconnection. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
Specification