CA2208289A1 - Method and computer program product for interconnecting software drivers in kernel mode - Google Patents

Method and computer program product for interconnecting software drivers in kernel mode

Info

Publication number
CA2208289A1
CA2208289A1 CA002208289A CA2208289A CA2208289A1 CA 2208289 A1 CA2208289 A1 CA 2208289A1 CA 002208289 A CA002208289 A CA 002208289A CA 2208289 A CA2208289 A CA 2208289A CA 2208289 A1 CA2208289 A1 CA 2208289A1
Authority
CA
Canada
Prior art keywords
driver
component
connection
data
connection pin
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CA002208289A
Other languages
French (fr)
Other versions
CA2208289C (en
Inventor
George H. J. Shaw
Bryan A. Woodruff
Thomas J. O'rourke
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CA2208289A1 publication Critical patent/CA2208289A1/en
Application granted granted Critical
Publication of CA2208289C publication Critical patent/CA2208289C/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver

Abstract

A method and computer program product are presented that overcome the inefficiencies in user mode processing of multimedia data by allowing an application running as a user mode process simply to start and connect multiple blocks of kernel mode functionality in the form of drivers or filters (separate logical blocks of driver executable code). Once the kernel mode filters are set up and connected, the user mode application need not be active until notified by the filters. Such notification may occur at the end of processing or at any relevant event chosen by the application as part of the filter initiation and set up. Furthermore, a user mode application may query a kernel mode filter or driver of its capabilities and requirements so that it may properly make the connections between the different filters chained together to process a stream of data and request appropriate notifications. These connection may represent actual driver to driver data exchange, or remote connections. In one exemplary embodiment, property, method, and event sets define compliant filters and native operating system I/O constructs such as file objects are used to define the instances of connection "pins" that are interconnected by the third party user mode application.

Claims (18)

1. A method for interconnecting software drivers to allow efficient kernel modeprocessing of data comprising the steps of:
opening one or more kernel mode drivers;
forming one or more connection pin instances for connecting the drivers, each connection pin instance hierarchically related to one of said one or more drivers and used for data transmission between said one or more drivers; and interconnecting said one or more connection pin instances so as to provide a continuous data flow path through said one or more drivers operating in kernelmode.
2. A method as recited in claim 1 wherein each connection pin instance is represented by a file object and the hierarchal relationship is created by specifying the related driver, the driver referenced as a file object of an I/O device available on the system, as a parent during connection pin instance file object creation.
3. A method as recited in claim 1 further comprising the step of querying each of said one or more drivers to determine the type of connection pin instances supported prior to creating and interconnecting said one or more connection pin instances.
4. A method as recited in claim 1 wherein said one or more drivers support at least one predefined set of properties, set of methods, and set of events to indicate to a third party component what types of connection pin instances and data formats are supported by a driver and for allowing a third party component to form said connection pin instances and to make said interconnections between said connection pin instances.
5. A method as recited in claim 1 wherein said connection pin instances include input pin instances to receive data for processing at the related driver, output pin instances to send data from the related driver to a connected driver, and bi-directional pin instances that both receive data for processing at the related driver and send data from the related driver to a connected driver.
6. A method ~ recited in claim 1 wherein said interconnecting step comprises, for each pair of interconnected pin instances, the steps of:
receiving, by a third party component, a first reference to a first connection pin instance related to a first driver;
receiving, by a third party component, a second reference to a second connection pin instance related to a second driver;
passing said first reference, by said third party component, to said second connection pin instance at said second driver; and passing said second reference, by said third party component, to said first connection pin instance at said first driver, said first and second connection pin instances to transfer data back and forth between connected respective first andsecond drivers.
7. A method as recited in claim 1 wherein said interconnecting step comprises, for each pair of interconnected pin instances, the steps of:
receiving, by a third party component, a reference to an input pin instance, said input pin instance to receive data for processing at a receiving driver;
passing said reference, by said third party component, to an output pin instance, at a sending driver, said output pin instance to send data from said sending driver to said input pin instance of connected said receiving driver.
8. A computer-readable medium having computer-executable instructions for performing the steps recited in claim 1.
9. A computer program product for use in kernel mode comprising:
a computer usable medium having computer readable program code means embodied in said medium for providing a standardized interconnection mechanism to other components in kernel mode, said computer readable program code means comprising program code means for forming connection pin instances, said connection pin instances used for transmitting data to or from other components in kernel mode and capable of interconnection with other connection pin instances located on other components.
10. A computer program product as recited in claim 9 further comprising program code means for generating information regarding connection pin capabilities in response to queries from other components.
11. A computer program product as recited in claim 10 wherein the program code means for generating connection pin instance information comprises implementing at least one of a set of properties, a set of methods, and a set of events to be accessed by another component.
12. A computer program product as recited in claim 9 further comprising program code means for controlling a particular connection pin instance by another component.
13 . A computer program product as recited in claim 12 wherein the program code means for controlling a connection pin instance comprises implementing at least one of a set of properties, a set of methods, and a set of events to be accessed by another component.
14. A method of interconnecting a first and second device driver to allow said device drivers to communicate with each other using a kernel mode connection in a standardized and extensible manner, the method comprising:
providing, by a third party component, a data format and a connection format to a first device driver;
creating, by said first device driver and in response to said third party component, a first instance of said connection format and a handle to the instantiated connection;
returning, by said first device driver, said handle to said third party component;
providing, by said third party component, said data format, said connection format, and said handle to said second device driver; and forming, by said second driver and in response to said third party component, a second instance of said connection format utilizing said handle, thereby allowing said first driver to transmit data to said second driver entirely within kernel mode through said first and second connection format instances.
15. A method as recited in claim 14 further comprising the steps:
querying, by a third party component, said first and second device drivers to determine what property sets the device drivers support;
supplying, to said third party component by said first and second device drivers in response to a query, the type of connections each device driver supports;
and determining, by said third party component based on the supplied connection information, how to make a connection between said first and second device drivers.
16. A method of interconnecting a first and second device driver to allow said device drivers to communicate with each other using a kernel mode connection in a standardized and extensible manner, the method comprising:
querying, by a third party component, said first and second device drivers to determine what property sets the device drivers support;
supplying, to said third party component by said first and second device drivers in response to a query, the type of connections each device driver supports;
determining, by said third party component based on the supplied connection information, how to make a connection between said first and second device drivers;
providing, by said third party component, a data format and a connection format to said first device driver;
creating, by said first device driver and in response to said third party component, an instance of said connection format to said first device driver and a handle to the instantiated connection;
returning, by said first device driver, said handle to said third party component; and providing, by said third party component, said handle to said second device driver.
17. A kernel mode data processing system comprising:
a data source;
a plurality of kernel mode data processing components including an originating component and a terminating component, the originating component reading data samples of a data stream from the data source; and kernel mode component interconnections between the data processing components to route the data samples from the originating component to the terminating component.
18. A kernel mode media rendering system comprising:
a media source;
a plurality of kernel mode media processing components including an originating component and a terminating component;
the originating component reading media samples of a media stream from the media source;
the terminating component rendering said media stream; and each media processing component having connection pin instances for passing media samples between media processing components; and kernel mode component interconnections between the media processing components created using the connection pin instances to route the data samples from the originating component to the terminating component.
CA002208289A 1997-04-04 1997-06-19 Method and computer program product for interconnecting software drivers in kernel mode Expired - Fee Related CA2208289C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/825,856 US6205492B1 (en) 1997-04-04 1997-04-04 Method and computer program product for interconnecting software drivers in kernel mode
US08/825,856 1997-04-04

Publications (2)

Publication Number Publication Date
CA2208289A1 true CA2208289A1 (en) 1998-10-04
CA2208289C CA2208289C (en) 2009-12-29

Family

ID=25245074

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002208289A Expired - Fee Related CA2208289C (en) 1997-04-04 1997-06-19 Method and computer program product for interconnecting software drivers in kernel mode

Country Status (4)

Country Link
US (1) US6205492B1 (en)
EP (1) EP0871114A3 (en)
JP (2) JP4684376B2 (en)
CA (1) CA2208289C (en)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658477B1 (en) * 1999-05-12 2003-12-02 Microsoft Corporation Improving the control of streaming data through multiple processing modules
US7007096B1 (en) 1999-05-12 2006-02-28 Microsoft Corporation Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US6832379B1 (en) * 1999-08-17 2004-12-14 Emc Corporation Computer architecture utilizing layered device drivers
CA2397740C (en) 2000-01-14 2015-06-30 Catavault Method and system for secure registration, storage, management and linkage of personal authentication credentials data over a network
US7043697B1 (en) * 2000-05-15 2006-05-09 Intel Corporation Virtual display driver
US6868450B1 (en) * 2000-05-17 2005-03-15 Hewlett-Packard Development Company, L.P. System and method for a process attribute based computer network filter
US6609155B1 (en) * 2000-05-25 2003-08-19 International Business Machines Corporation Method and apparatus for providing relationships in simple network management protocol management information base
JP2004512748A (en) * 2000-10-17 2004-04-22 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ How to control the placement of hardware components
US7818443B2 (en) 2000-12-01 2010-10-19 O2Micro International Ltd. Low power digital audio decoding/playing system for computing devices
US7287226B2 (en) * 2000-12-06 2007-10-23 Microsoft Corporation Methods and systems for effecting video transitions represented by bitmaps
US6834390B2 (en) 2000-12-06 2004-12-21 Microsoft Corporation System and related interfaces supporting the processing of media content
US6774919B2 (en) * 2000-12-06 2004-08-10 Microsoft Corporation Interface and related methods for reducing source accesses in a development system
US6768499B2 (en) * 2000-12-06 2004-07-27 Microsoft Corporation Methods and systems for processing media content
US6882891B2 (en) 2000-12-06 2005-04-19 Microsoft Corporation Methods and systems for mixing digital audio signals
US7114161B2 (en) 2000-12-06 2006-09-26 Microsoft Corporation System and related methods for reducing memory requirements of a media processing system
US6961943B2 (en) * 2000-12-06 2005-11-01 Microsoft Corporation Multimedia processing system parsing multimedia content from a single source to minimize instances of source files
US6954581B2 (en) * 2000-12-06 2005-10-11 Microsoft Corporation Methods and systems for managing multiple inputs and methods and systems for processing media content
US7103677B2 (en) * 2000-12-06 2006-09-05 Microsoft Corporation Methods and systems for efficiently processing compressed and uncompressed media content
US6983466B2 (en) * 2000-12-06 2006-01-03 Microsoft Corporation Multimedia project processing systems and multimedia project processing matrix systems
US6959438B2 (en) * 2000-12-06 2005-10-25 Microsoft Corporation Interface and related methods for dynamically generating a filter graph in a development system
US6912717B2 (en) * 2000-12-06 2005-06-28 Microsoft Corporation Methods and systems for implementing dynamic properties on objects that support only static properties
US7114162B2 (en) 2000-12-06 2006-09-26 Microsoft Corporation System and methods for generating and managing filter strings in a filter graph
US7447754B2 (en) * 2000-12-06 2008-11-04 Microsoft Corporation Methods and systems for processing multi-media editing projects
US6892377B1 (en) * 2000-12-21 2005-05-10 Vignette Corporation Method and system for platform-independent file system interaction
US7194506B1 (en) 2000-12-21 2007-03-20 Vignette Corporation Method and system for cache management of locale-sensitive content
JP5055492B2 (en) * 2001-05-07 2012-10-24 サイエンスパーク株式会社 Electronic computer interface driver program and recording medium therefor
US7571445B2 (en) * 2001-11-29 2009-08-04 Dell Products L.P. System and method for dynamic device driver support in an open source operating system
US7209971B1 (en) * 2001-12-11 2007-04-24 Microsoft Corporation Architecture and run-time environment for network filter drivers
JPWO2003069491A1 (en) * 2002-02-15 2005-06-09 サイエンスパーク株式会社 Personal authentication method using input features of input device of electronic computer, program thereof, and program recording medium
US7451457B2 (en) * 2002-04-15 2008-11-11 Microsoft Corporation Facilitating interaction between video renderers and graphics device drivers
US7219352B2 (en) * 2002-04-15 2007-05-15 Microsoft Corporation Methods and apparatuses for facilitating processing of interlaced video images for progressive video displays
US7024672B2 (en) 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
CN1288548C (en) * 2002-12-31 2006-12-06 上海科泰世纪科技有限公司 Method for realizing equipment drive program multiple state based on class establishing drive member
CN1245685C (en) * 2002-12-31 2006-03-15 上海科泰世纪科技有限公司 Drive method based on structure operation system dynamic equipment
US20040243783A1 (en) * 2003-05-30 2004-12-02 Zhimin Ding Method and apparatus for multi-mode operation in a semiconductor circuit
US7643675B2 (en) * 2003-08-01 2010-01-05 Microsoft Corporation Strategies for processing image information using a color information data structure
JP2005275643A (en) 2004-03-24 2005-10-06 Hitachi Ltd Contents data processor, and method
JP4285307B2 (en) 2004-04-02 2009-06-24 株式会社日立製作所 Data processing apparatus and method
US8341649B2 (en) * 2004-07-06 2012-12-25 Wontok, Inc. System and method for handling an event in a computer system
US7765558B2 (en) * 2004-07-06 2010-07-27 Authentium, Inc. System and method for handling an event in a computer system
JP2006031261A (en) * 2004-07-14 2006-02-02 Matsushita Electric Ind Co Ltd Multimedia processing system
WO2006031723A2 (en) * 2004-09-13 2006-03-23 Coretrace Corporation Method and system for license management
US7640552B2 (en) * 2004-10-29 2009-12-29 Microsoft Corporation Multimedia filter resilience
US7400271B2 (en) * 2005-06-21 2008-07-15 International Characters, Inc. Method and apparatus for processing character streams
JP4828927B2 (en) * 2005-12-16 2011-11-30 パナソニック株式会社 Stream control device
US8479283B2 (en) * 2006-11-28 2013-07-02 Microsoft Corporation Generating security validation code automatically
US20080235246A1 (en) * 2007-03-20 2008-09-25 Arun Hampapur Filter sequencing based on a publish-subscribe architecture for digital signal processing
US8020150B1 (en) * 2007-05-11 2011-09-13 Nvidia Corporation System, method, and computer program product for controlling a driver utilizing scripts
WO2009151888A2 (en) * 2008-05-19 2009-12-17 Authentium, Inc. Secure virtualization system software
US10534637B1 (en) * 2018-02-21 2020-01-14 Parallels International Gmbh Systems and methods for managing chain of software applications
CN115048157B (en) * 2022-08-12 2022-11-11 南方电网数字电网研究院有限公司 Independent controllable power distribution control module based on special chip

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2521016B2 (en) 1991-12-31 1996-07-31 インターナショナル・ビジネス・マシーンズ・コーポレイション Multimedia data processing system
US5386568A (en) * 1992-12-01 1995-01-31 Yamaha Corporation Apparatus and method for linking software modules
US5485617A (en) * 1993-12-13 1996-01-16 Microsoft Corporation Method and system for dynamically generating object connections
US5793961A (en) * 1994-11-18 1998-08-11 Intel Corporation Computer system with data conference capability
US5768126A (en) * 1995-05-19 1998-06-16 Xerox Corporation Kernel-based digital audio mixer

Also Published As

Publication number Publication date
EP0871114A2 (en) 1998-10-14
JP2007305141A (en) 2007-11-22
EP0871114A3 (en) 1998-12-16
JPH10283195A (en) 1998-10-23
JP4684376B2 (en) 2011-05-18
US6205492B1 (en) 2001-03-20
CA2208289C (en) 2009-12-29

Similar Documents

Publication Publication Date Title
CA2208289A1 (en) Method and computer program product for interconnecting software drivers in kernel mode
AU677562B1 (en) Hyper-text document preparing apparatus
US5349678A (en) Versatile RF data capture system
US6356916B1 (en) Replica system and method of producing a replica
JP3929554B2 (en) How to validate file object generation and route messages to the file object
US7783725B2 (en) System and method for representing MFS control blocks in XML for MFS-based IMS applications
JPH10283252A (en) Method and computer program product for reducing inter-buffer data transfer between separate processing components
RU2008132332A (en) METHOD AND SYSTEM OF INTERACTIVE ELECTRONIC ACTION OF THE DESK
JP4723669B2 (en) Control and communication systems including engineering units
US20030177279A1 (en) Creation of middleware adapters from paradigms
CN109445966A (en) Event-handling method, device, medium and calculating equipment
Selveit Complexity reduction in information systems modelling.
CN114546683A (en) Service processing method, device, electronic equipment and storage medium
JPH01500076A (en) Optional module for telephone line interface
NL9301129A (en) Processor circuit comprising a first processor, and system comprising the processor circuit and a second processor.
Balis Digital imaging standards and system interoperability
KR940015882A (en) Communication protocol
JP2681901B2 (en) Network system
JPH05342123A (en) Command transfer system for network system
CN106561031A (en) Network data exchange method based on WEB
CN205983462U (en) Serial ports conversion equipment
JP2994567B2 (en) Link information generation device
JPH0863411A (en) Data communicating method and data communication system
Chang REXDC—a remote execution mechanism
CN116243853A (en) Data transmission method and device, electronic equipment and nonvolatile storage medium

Legal Events

Date Code Title Description
EEER Examination request
MKLA Lapsed

Effective date: 20150619