CN1455331A - 可扩展的设备驱动器 - Google Patents
可扩展的设备驱动器 Download PDFInfo
- Publication number
- CN1455331A CN1455331A CN03136788A CN03136788A CN1455331A CN 1455331 A CN1455331 A CN 1455331A CN 03136788 A CN03136788 A CN 03136788A CN 03136788 A CN03136788 A CN 03136788A CN 1455331 A CN1455331 A CN 1455331A
- Authority
- CN
- China
- Prior art keywords
- driver
- program
- plug
- equipment
- card program
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种信息设备,所述的信息设备存储打印机驱动程序的用户接口程序,用于通过执行一个操作***的计算设备来支持打印机的使用,用户接口程序由信息设备执行以实现:***作***调用的初始化设备,借此,初始化设备检测在操作***的***注册表中的一个驱动器插件识别符,访问一个存储器并在存储器中装入与所述的驱动器插件识别符对应的驱动器插件程序,获得从驱动器插件程序到该驱动器插件程序内的信息功能调用的指针,执行信息功能调用以从驱动器插件程序接收信息,在一个本地数据结构中存储已接收的信息,并且通过使用操作***功能调用向操作***传送所接收的信息的一部分。
Description
技术领域
本发明涉及一种设备驱动器,它能提供动态可扩展的功能,但不需要重新编译设备驱动程序。例如,本发明可以在连接到一个操作***的一个打印机驱动程序中实现,借此,打印机驱动程序检测一个驱动器插件模块、向操作***提供对应于检测到的驱动器插件模块的信息、然后动态地访问检测到的驱动器插件模块的功能。
背景技术
在一般情况下,诸如打印机之类的设备驱动程序都安装在工作站或计算机上以支持对相应的设备如打印机的访问和使用。设备驱动程序一般情况下由相应设备的厂家开发和提供,并且当相应的设备实际安装在计算环境的时候、或者在用户开始使用已经安装好的设备之前安装设备驱动程序。
窗口操作***中的设备驱动程序在一般情况下由多个文件组成,称之为动态连接库(.dll)文件,每个动态连接库文件实现设备驱动程序的一个主要的功能部件。例如,一个打印机驱动程序可以包括:用于显示用户接口属性的图表的用户接口动态连接库文件、用于处理图像数据的必要着色的图形着色动态连接库文件、以及其它的表示打印机驱动程序的其它功能部件的其它动态连接库文件。在这样一个例子中,用户接口动态连接库文件包含编译代码,以便通过利用和访问操作***的接口调用程序,实现打印机的用户接口功能。用户接口动态连接库文件以此方式向操作***提供必要的信息和参数,以便可以在用户显示器上显示打印机驱动程序的用户接口属性图表。
此外,用户接口动态连接库文件具有必要的功能代码,以便为显示的用户接口动态地提供背景支持。例如,用户接口可以包括钮和对话框,用于选择黑白打印或彩色打印,基于此,当用户选择了黑白打印的时候,用户接口动态连接库文件的功能代码确认了用户在显示的用户接口属性图表上的选择,并且设定了一个内部标志,以向图形绘制动态连接库文件传送,从而可以实现用户的选择。
如以上所述,设备驱动程序的动态连接库文件实现设备驱动程序的指定功能,例如,用于打印机驱动程序的用户接口动态连接库文件和图形绘制动态连接库文件。每个动态连接库文件本身都可以包含对于其它的动态连接库文件的调用程序。例如,一个用户接口动态连接库文件可以提供一个用户接口,这个用户接口包括几个列出的属性图表,供用户从中选择希望访问和/或修改的设备功能类型。在这种情况下,用户接口动态连接库文件可以包含固定到其它预定的动态连接库文件上的代表用户接口的每个列出的属性图表的调用程序。
如以上所述的设备驱动程序在一般情况下是由设备驱动程序的开发商编译的,在此之后,相对于设备驱动程序的功能容量而言,这些设备驱动程序是固定不变的。例如,用户接口动态连接库文件是在分配给用户并随后安装在用户计算机之前编译的,由此,由用户接口动态连接库文件显示并支持的用户接口属性图表就总是相同的。即使在如以上所述的例子中,其中的用户接口动态连接库文件包含固定到其它预定的动态连接库文件上的调用程序,在编译用户接口动态连接库文件的时候,对于每个其它预定的动态连接库文件的识别也总是固定不变的。
因此,安装在用户计算机上的设备驱动程序的功能总是固定不变的,不可能轻易地进行修改以增加用户或者在联网的计算环境中网络管理者期望的附加功能。例如,网络管理者可能希望用户打印机驱动程序能支持网络打印的应用,例如保密打印和工作统计。但网络管理者不可能轻易地修改如以上所述的打印机驱动程序以增加这一功能。另一方面,打印机驱动程序的开发商可能会用户接口动态连接库文件以及其它动态连接库文件,以便增加这样的功能,然后重新编译并检验这些动态连接库文件。然后,这些修改的动态连接库文件必须安装在用户计算机上。可以设想,一旦期望在设备驱动程序内增加新的功能,这种修改过程可能会遇到麻烦,并且这种修改过程对于用户、网络管理者、和设备驱动程序开发商是效率低下的。
发明内容
本发明通过提供连接到操作***的打印机驱动器而解决了上述问题,由此,所述的打印机驱动程序检测一个或多个驱动器插件模块、向操作***提供对应于每个检测到的驱动器插件模块的信息、然后动态访问每个检测到的驱动器插件模块的功能。以此方式,基于由设备驱动程序检测到的驱动器插件模块的序号和类型来动态扩展设备驱动程序的功能,不必重新设计、重新编译、和重新检验设备驱动程序。
因此,本发明的一个方面涉及一种信息设备,所述的信息设备存储打印机驱动程序的用户接口程序,用于通过执行一个操作***的计算设备来支持打印机的使用,用户接口程序由信息设备执行以实现***作***调用的初始化设备,借此,初始化设备检测在操作***的***注册表中的一个驱动器插件识别符,访问一个存储器并在存储器中装入与所述的驱动器插件识别符对应的驱动器插件程序,从驱动器插件程序获得指向该驱动器插件程序内的信息功能调用的指针,执行信息功能调用以从驱动器插件程序接收信息,存储接受的信息到一个本地数据结构中,并且通过使用操作***功能调用向操作***传送所接收的信息的一部分。
优选地,通过搜索操作***的***注册表的与驱动器插件程序对应的注册项,检测驱动器插件程序。还要通过利用信息功能调用从驱动器插件程序获得这个信息,所述的信息功能调用由驱动器插件程序输出的一个指针访问。还有,设备驱动程序最好是用户接口程序,并且从驱动器插件程序获得的信息最好包括用于显示的对话属性图表的属性,以及包括用于实现特定功能(例如打印工作统计或其它功能)的驱动器插件程序中的指向可执行代码的指针。从驱动器插件程序获得的信息最好还通过用户接口程序存储在一个本地的数据结构中。最后,从驱动器插件程序获得的信息最好包括一个事件请求指示字,用于确定哪一些事件通知类型要传送到驱动器插件程序。
按照以上所述,设备驱动程序的功能可以基于在计算设备中由设备驱动程序检测到的驱动器插件程序的序号和类型而动态扩展,从而有可能通过设备驱动程序来访问和使用每个检测到的驱动器插件程序的功能,而不必重新设计、重新编译、和重新检验设备驱动程序。
按照本发明的另一个方面,提供了一种信息设备,所述的信息设备在一个存储器中存储一个驱动器插件程序,该驱动器插件程序由借助于执行操作***的一个计算设备支持使用打印机的打印机驱动程序的用户接口程序使用,所述的驱动器插件程序实现:具有可执行代码的一个功能装置,所述的可执行代码支持与功能应用程序对应的至少一个对话属性图表,并且实现:包括资源信息的一个资源装置,所述的资源信息包括由驱动器插件程序支持的一系列对话属性图表,由驱动器插件程序支持的每个对话属性图表的类型,由驱动器插件程序支持的每个对话属性图表的属性,指向信息功能调用的一个信息指针,以及指向事件处理程序的一个事件指针。信息指针由用户接口程序访问,以启动信息功能调用,所述的信息功能调用向用户接口程序返回一个与资源部分的资源信息对应的资源指针,以及一个与功能部分的可执行代码对应的功能指针。
优选地,从驱动器插件程序获得的信息包括用于显示的对话属性图表的属性,以及在驱动器插件程序中指向可执行代码的指针,用于实现特殊的功能,例如打印工作的统计或另外的功能。还有,事件请求指示字最好定义哪些类型的事件通知要传送到驱动器插件程序。
还有,以上所述可以通过一个安装脚本完成,所述的安装脚本或者从设备驱动程序的开发商提供的一个安装程序获得,或者从另外的来源如Web或CD-ROM获得。还有,最好将对应于每个所选的驱动器插件模块的识别符输入到与外部设备的名称对应的***注册表位置。还有,最好利用通过从驱动器插件模块输出的指针访问的信息功能调用,从驱动器插件程序获得指定的对话信息。还有,指定的对话信息最好包括用于显示的对话属性图表的属性,以及在驱动器插件程序中指向可执行代码的一个指针,用于实现特殊的功能,例如打印工作的统计或另外的功能。最好通过用户接口模块将从驱动器插件程序获得的信息存储在本地数据结构中。最后,从驱动器插件程序获得的信息最好包括一个事件请求指示字,用于确定哪一种类型的事件通知要发送到驱动器插件模块。
通过以上所述,基于由设备驱动程序在计算设备中检测到的驱动器插件程序的序号和类型,就可以动态访问设备驱动程序的功能,从而可以由设备驱动程序访问和利用每个检测到的驱动器插件程序的功能,而不必重新设计、重新编译、和重新检验设备驱动程序。
按照本发明的另一个方面,提供了注册由设备驱动器的设备驱动程序使用的驱动器插件程序,所述的设备驱动程序通过计算设备支持使用一台外部设备,所述的注册方法包括:识别定位在外部源的至少一个可利用的驱动器插件程序,选择至少一个可利用的驱动器插件程序以安装在计算设备上,通过在计算设备的一个存储器中存储每个选定的驱动器插件程序在计算设备上安装每个选定的驱动器插件程序,在操作***的***注册表中输入对应于每个选定的驱动器插件程序的一个识别符,所述的操作***正在计算设备上执行。
优选地,资源信息是利用资源指针访问的,并且资源信息包括:由驱动器插件程序支持的一系列对话属性图表,由驱动器插件程序支持的每个对话属性图表的类型,和由驱动器插件程序支持的每个对话属性图表的属性。此外,资源部分最好包括指向一个事件处理程序的事件指针,并且事件指针经信息功能调用传送到设备驱动程序,借此,设备驱动程序使用事件指针启动事件处理程序,从而可以将通过设备驱动程序接收的事件通知从操作***传送到驱动器插件程序。设备驱动程序和驱动器插件程序最好都包括动态连接库文件。
按照以上所述,设备驱动程序的功能可以基于在计算设备中由设备驱动程序检测到的驱动器插件程序的序号和类型而动态扩展,从而有可能通过设备驱动程序来访问和使用每个检测到的驱动器插件程序的功能,而不必重新设计、重新编译、和重新检验设备驱动程序。
提供这个简要的概括是为了快速理解本发明的本质。通过参照附图详细描述本发明的优选实施例,可以获得对于本发明的更加完整的理解。
附图说明
图1是计算环境的一个有代表性的视图,其中可以按照本发明的一个实施例来实现本发明。
图2是表示如图1所示的计算机的内部结构的详细方块图。
图3是用于说明按照本发明的一个实施例的打印机驱动程序的用户接口模块的各个部件的方块图。
图4是用于说明按照本发明的一个实施例的插件模块的各个部件的方块图。
图5是用于说明按照本发明的一个实施例的本地数据结构的各个部件的方块图。
图6是用于说明按照本发明的一个实施例的打印机驱动程序使用插件模块的流程图。
图7是用于说明按照本发明的一个实施例的打印机驱动程序的用户接口的主对话属性图表的方块图。
图8是用于说明按照本发明的一个实施例的打印机驱动程序的用户接口的主对话属性图表的方块图,所述的用户接口加入了来自于插件模块的列出的属性图表。
图9是用于说明按照本发明的一个实施例注册插件模块的流程图。
图10是用于说明按照本发明的一个实施例的在插件模块、打印机驱动程序、和操作***之间的相互作用的流程图。
具体实施方式
本发明涉及一种可扩展的设备驱动程序,用于计算设备中以支持使用外部设备,如打印机。具体来说,本发明的设备驱动程序能够检测和加入在计算设备上存在的插件模块,以扩展计算设备的功能容量。作为一个例子,下面按照一个实施例来讨论本发明,其中的设备驱动程序是用于支持使用打印机的一个打印机驱动程序。显然,对于支持其它设备(如数字式复印机、扫描仪、照像机、等等)的其它设备驱动程序,本发明都可实现。
图1提供计算环境的一个***的视图,其中可实现本发明。如图1所示,该计算环境包括:计算机10、打印机20、服务器30、和连接1。连接1可以是计算机10和打印机23之间的简单的本地连接,例如串联、USB、FireWire、或其它这样的连接。在可替换的方案中,连接1可以是一个网络,例如由总线型物理结构组成的以太网络介质。显然,连接1还可以由另外类型的网络如国际互联网组成
台式计算机10最好是具有窗口操作***环境的一个典型个人计算机或工作站,例如Microsoft Windows 2000、Microsoft Windows ME、或MicrosoftWindows XP。对于典型的PC型计算机,台式计算机10最好具有:显示器11、键盘15、鼠标14、主处理器12、硬盘13、CD-ROM驱动器16、和软盘驱动器和/或其它类型的存储介质(未示出)。下面,针对图2更加详细地说明按照本发明的计算机10的硬盘13的内容。
打印机20和25也通过连接1连接到计算机10,所述的打印机最好是能根据接收到的打印数据在记录介质上打印图像的激光印刷机或喷墨打印机。例如,计算机10通过执行按照本发明的打印机驱动程序进行打印工作,下面对此还要作更加详细的说明。打印机20经过连接1从计算机10和/或其它来源接收已进行的打印工作,然后执行这个打印工作。优选地,打印机20经连接1与计算机10进行双向通信,从而使打印机20在执行打印工作期间能够将打印工作的状态反向报告给计算机10。打印机25的操作方式与以上所述的打印机20类似。显然,本发明可以在其它类型的计算设备中实现,本发明不局限于在如图1所示的计算机10中实现。此外,可以利用本发明来支持除打印机之外的其它类型的设备,如扫描仪、复印机、数码相机、等等。
此外,连接1最好是一个网络连接,例如由总线型物理结构组成的以太网络介质。服务器30也连接到连接1。服务器30最好包括PC可兼容的计算机,它具有窗口操作***环境,例如Microsoft Windows 2000、Microsoft Windows ME、或者Microsoft Windows XP。服务器30有一个硬盘31。硬盘31最好是一个大硬盘,用于存储大量的文件、应用程序、数据、网页和插件模块,下面还要对它们进行讨论。因此服务器30可以被连接1上的其它设备用作文件服务器、网页服务器、应用程序服务器、或其它类型服务器。服务器30还可以用作在连接1上的其它设备的网关,以访问其它网络,如国际互联网。最后,服务器30还可以用作网页服务器,以支持由计算机10访问的网页,从而可以获得并安装设备插件模块,下面对此还要作更加详细的说明。
图2是一个方块图,用于说明实现本发明的计算机10的内部结构,其中包括硬盘13的内容。如图2所示,计算机10的内部结构包括硬盘13、随机存储存储器(RAM)17、和处理器(CPU)19。就典型的计算机而论,操作***40向RAM17内装入期望的程序的可执行代码,以便由CPU19访问和执行。计算机10的硬盘13包括操作***40、打印机驱动程序50、和存储区60。如以上所述,操作***40最好是一个窗口操作***,并且具体来说,最好Microsoft Windows操作***,它支持功能调用以为在操作***40上执行的应用程序提供应用程序接口。具体来说,功能调用最好包括用于操作***40的,以获得对应于属性图表的属性和属性,从而可以在计算机10的显示器10上绘制这样的属性图表的调用。此外,操作***还包括向在计算机10上正在执行的应用程序提供外部设备的状态信息的功能调用。
注册表41是在硬盘13上的信息存储位置,它可以驻留在硬盘13的文件夹或者数据库中。注册表41是通过操作***40保持和使用的,并且包括操作***40支持设备如打印机、扫描仪、复印机等所必须的信息。在这种情况下,为简洁起见,图中所示的注册表41只包括对应于由计算机10的操作***40支持的打印机20和25的数据。具体来说,注册表41包含实现本发明的插件识别符,并且表示出分别与操作***40支持的打印机20和25对应的两列。Printer1_id42和Printer2_id47分别是打印机20和25的设备识别符,并且通常包括对应的打印机的名称和代码。例如,Printer1_id42可以是打印机20的“LASER1“,Printer2_id47可以是打印机25的“INKJET1“,借此,可以识别由计算机10的用户通过操作***40使用的两个打印机。
在Printer1_id42和Printer2_id47的下边的相应的列中,提供一个插件识别符的表格,插件识别符用于识别在存储区60中可以被打印机驱动程序利用的每个插件模块,从而可以通过向预先存在的设备驱动程序如打印机增加功能来实现本发明,而不需要修改、重新编译、和重新检验设备驱动程序。每个插件识别符最好是相应的插件模块在存储区60中的位置的一个地址。在一个可替换的方案中,每个插件识别符可由相应的插件模块的名称或代码组成。
现在回到注册表41,在与打印机42对应的Printer1_id42下边的列中,包括如下的插件识别符:sec_plugin_id42,rdr_plugin_id44,inst_plugin_id45,act_plugin_id46,它们分别对应于在存储区60中的保密打印插件模块63,工作重定向插件模块62、安装插件模块61、和工作统计插件模块65。以此方式,注册表41维持每个打印机的插件识别符,从而可以协助打印机驱动程序50检测哪一些插件模块要被打印机驱动程序50使用,借此扩展了打印机驱动程序50的功能。就此而论,在安装一个设备的时候,或者在由计算机10的用户或***管理人员安装设备后的晚些时间,都要将注册表41的每个插件识别符输入到位于该特定设备识别符下面的注册表41中,下面对此还要作更加详细的说明。
图2的打印机驱动程序50是一个由操作***40执行的驱动器模块,从而可以允许计算机10与打印机20通信并利用打印机20。可以使用一个类似的打印机驱动程序(未示出)与打印机25通信并利用打印机25,为了简洁起见,这里不对它进行描述。如图2所示,打印机驱动程序50由三个模块组成,包括:user_interface_mod51,graphics_render_mod52,和other_mod53。user_interface_mod51用来提供用户访问和控制打印机驱动程序50的用户接口。例如,在本发明的这个实施例中,设备驱动程序是通过计算机10驱动打印机20的打印机驱动程序50,因此当用户表明要在显示器11上观察用户接口以访问和控制打印机驱动程序50的一些特征的愿望时,执行user_interface_mod51。在诸如操作***40之类的窗口操作***中,普遍的作法是:用户点击与一个“打印机属性“对应的按钮以显示一个对话属性图表,从而可以显示打印机驱动程序的用户接口,这个用户接口通常包括一个主对话属性图表,以及用于访问其它的选项对话属性图表的标签,其中每个对话属性图表都显示出与打印机驱动程序的某些特征有关的按钮、信息、和对话。
如以上所述,本发明提供插件模块,插件模块由打印机驱动程序访问并与打印机驱动程序合并,从而可以扩展设备驱动程序的功能。在上述的实施例中,利用插件模块来为打印机驱动程序50增加新的功能,如工作统计、保密打印、如此等等。此外,插件模块还提供由user_interface_mod51访问的、与新的功能对应的、选项对话属性图表,从而可以将该插件模块合并进入在显示器11上显示的打印机驱动程序的用户接口内。下面对user_interface_mod51的组成和操作还要作更加详细的说明。
graphics_render_mod52是打印机驱动程序50的另外一个部件,并且用于按照计算机10的用户的期望的调节位置使指定的图像数据进入打印工作。other_mod53表示用于实现本发明的另外一些模块。就此而论,graphics_render_mod52和other_mod53还可以通过访问和合并插件模块扩展它们的功能,然而,为简洁起见,在下面仅针对user_interface_md51详细描述插件模块的应用。优选地,上述的打印机驱动程序50的模块是动态连接库文件。
存储区60是硬盘13的一个区域,由操作***40和打印机驱动程序50共同使用,以按照本发明操作计算机和使用打印机驱动程序50。如图2所示,存储区60包括:安装插件模块61、工作重定向插件模块62、保密打印插件模块63,策略管理插件模块64、工作统计插件模块65、和特征模式插件模块66。如以上针对注册表41所述的,使用这些插件模块来进行访问以扩展设备驱动程序如打印机驱动程序50之类的功能。例如,安装插件模块61提供的功能是为计算机10使用的新打印机进行安装,工作重定向插件模块62的功能是实现从一个打印机向另一个打印机的打印工作改变,保密打印插件模块63提供的功能是保证将打印工作送到一台打印机上并且以保密方式进行打印,策略管理插件模块64的功能是管理对打印机的访问和打印机的功能,工作统计插件模块65的功能是跟踪和报告送到打印机的打印工作,特征模式插件模块66的功能是支持新加到打印机上的硬件,例如纸盘或如装订装置的结束设备。当然,应该理解,在图2的存储区60中所示的插件模块的类型只是支持打印机的打印机驱动程序使用的功能的一些例子,这些功能类型没有穷尽可由插件模块为打印机驱动程序实现的功能类型,而对于其它的设备如扫描仪、复印机、数码相机等来说,所述的功能类型要少得多。优选地,插件模块是动态连接库文件。
现在返回到附图2,可以看出,存储区60还包括其它的模块67、其它方件69、网页浏览器70、***文件夹71、数据库72、本地数据结构73、和注册应用程序74。其它模块67和其它文件69用于由操作***40进行的计算机10的操作,以及用于通过计算机10的CPU19执行的其它应用程序进行的计算机10的操作。网页浏览器70由CPU19执行以允许计算机10的用户经过连接1访问例如服务器30的网页服务器。***文件夹管理存储文件和应用程序的位置,这些文件和应用程序由操作***40使用并且由CPU19执行的其它应用程序使用。类似地,数据库72用于存储可由操作***40访问和使用的信息以及由CPU19执行的其它应用程序访问和使用的信息。本地数据结构73是一组数据结构,由user_interface_mod51使用,下面对此还要作更加详细的说明。最后,注册应用程序74是一个应用程序,它最好由一个指令脚本组成,指令脚本用于识别插件模块并将插件模块安装进入注册表41,下面对此还要作更加详细的说明。
图3是一个方块图,用于描述如图2所示的打印机驱动程序50的user_interface_mod51的组成。如图3所示,user_interface_mod51由初始化部分80和操作部分90组成。初始化部分80用于响应用户的查看打印机驱动程序50的用户接口的请求初始化user_interface_mod51。例如,当用户在显示器11上选择了对应于打印机20的“打印机属性“按钮的时候,操作***40将user_interface_mod51的初始化部分80的执行初始化,以初始化打印机驱动程序的用户接口,并且将必要的对话属性图表信息传送到操作***40以供显示。
插件搜寻功能81为对应于打印机20的已注册的插件模块搜寻一个预定位置,如注册表41。当然,另外的位置如***目录夹或数据库也可用作存储由插件搜寻功能81访问的插件模块的预定位置。插件信息功能82可以获得对应于由插件搜寻功能81检测到的任何插件模块信息,并且选择可以由user_interface_mod51使用的那些检测到的插件模块。插件信息功能82将对于每个选定的插件模块获得的存入本地数据结构内。对话结构功能83用来将由user_interface_mod51支持的每个静态对话属性图表的信息和属性、以及由选定的插件模块支持的每个选项对话属性图表的已获得的信息和属性传送到操作***40。操作***40一旦接收到每个对话属性图表的信息和属性,操作***40就在计算机10的显示器11上显示绘制的对话属性图表。就此而论,静态对话属性图表属性84包含由user_interface_mod51支持的每个静态对话属性图表的信息和属性。
user_interface_mod51的操作部分90包括:静态对话属性图表支持代码91、静态功能代码92、插件功能访问代码93、和插件事件代码94。操作部分90是在初始化部分80完成以后执行的,并且操作部分90用于支持静态对话属性图表、访问相应的插件模块以支持由所选的插件模块支持的每个选项对话属性图表、并且如果需要将事件信息传送到适当的插件模块。静态对话属性图表支持代码91提供一个对话过程,以通过监视在每个静态对话属性图表上的用户对于设定值的修改和按钮,支持这个静态对话属性图表,并且随后以相应的方式更新静态对话属性图表,并且将修改的设定值传送到静态功能代码92,而且可能的话还要传送到打印机驱动程序50的其它部分如graphics_render_mod52,以实现用户的修改。例如,一个用户可能利用已经显示的打印机驱动程序用户接口的主对话属性图表之一上的一个按钮来选择黑白打印而不是彩色打印。静态对话属性图表支持代码91可能会将这个用户的选择传送到graphics_render_mod52,从而可以使在由打印机20进行的打印工作中的图像数据为黑白的数据。静态功能代码82用于处理user_interface_mod51的其它静态功能,例如监视与打印机20的通信状态、监视由打印机20正在进行的打印工作的状态。
插件功能访问代码93用于访问每个选定的插件模块的功能代码,用于支持由相应的选定的插件模块提供的选项对话属性图表,并且用于实现由每个选定的插件模块如工作统计、策略管理等支持的功能。插件事件代码94从操作***40接收与打印机20对应的事件通知,确定已经接收的事件通知是否是已经由任何选定的插件模块请求过,然后将这个事件通知传送到适当的已选定的插件模块供它们使用。
图4是一个方块图,用于说明按照本发明的一个实施例的插件模块的组成。为了概括地描述这样的插件模块的组成,在图4中示出了工作统计插件模块65。如图4所示,工作统计插件模块65包括资源部分100和功能部分130。一般情况下,资源部分100提供信息和功能,以允许user_interface_mod51访问和实现选项对话属性图表以及由工作统计插件模块65支持的功能。功能部分130一般来说提供功能代码,以支持在资源部分100中描述的选项对话属性图表,并且提供工作统计插件模块65的功能,它跟踪和报告发送到指定的打印机的打印工作的数目和类型。
如图4所示,资源部分包括接口101和属性110。接口101提供允许user_interface_mod51访问和实现选项对话属性图表的信息和功能以及由工作统计插件模块65支持的信息和功能。接口101包括:插件功能类型102、信息功能指针103、事件处理程序指针104、资源指针105、功能指针106、得到的信息功能107、和事件处理程序108。插件功能类型102提供由插件模块支持的功能类型(在这种情况下是工作统计)的指示,最好用文本或代码的形式。信息功能指针103是代表得到的信息功能107的地址的指针,借此,工作统计插件模块65可以为user_interface_mod51提供信息功能指针103,然后user_interface_mod51使用信息功能指针103调用得到的信息功能107,从而可以访问包含在工作统计插件模块65中的信息。
事件处理程序指针104是指向事件处理程序108的地址的指针,这个指针通过工作统计插件模块65提供给user_interface_mod51,从而使user_interface_mod51可以调用事件处理程序108来向工作统计插件模块65提供有关打印机20的事件通知。就此而论,user_interface_mod51基于经过所述的得到的信息功能107传送到user_interface_mod51的事件处理程序108来确定这个事件通知是否应该发送到工作统计插件模块65。在另一个实施例中,事件处理程序108还可以提供应该发送到工作统计插件模块65的事件通知的类型的一个描述符,这个描述符是文本或代码的形式。例如,工作统计插件模块65的工作统计功能需要打印工作中的成功打印的页数和打印工作的类型,以保持对于发送到打印机20的所有的打印工作的精确统计。资源指针105是指向属性110的地址的指针,并且经过所述的得到的信息功能107将这个指针提供给user_interface_mod51,由此允许user_interface_mod51访问由工作统计插件模块65支持的每个选项对话属性图表的类型和属性。类似地,功能指针106是指向属性110的地址的一个指针,并且经过所述的得到的信息功能107将这个指针提供给user_interface_mod51,由此允许user_interface_mod51访问由工作统计插件模块65支持的每个选项对话属性图表的类型和属性。
属性110由资源指针105访问,并且包含:对话属性图表数目111和属性图表属性115。对话属性图表数目111指示由工作统计插件模块65支持的对话属性图表的数目。属性图表属性115是一个数据结构,包含由工作统计插件模块65支持的每个对话属性图表的列,即:属性图表的序号116、类型117、和属性118。按这种方式,user_interface_mod51一旦获得资源指针105,user_interface_mod51就可获得由工作统计插件模块65支持的每个对话属性图表的类型和属性,然后将这个类型和属性传送到操作***40以便在显示器11上绘制选项对话属性图表。类型117最好是对话属性图表类型的文本或代码的表示,例如对于静态属性图表的INFO,对于允许用户使用按钮等修改参数的动态属性图表的SELECT,等等。属性118包含用于对话属性图表布局的描述性数据、按钮、和在对话属性图表上的对话、以及操作***40在显示器11上绘制对话属性图表所需要的对话属性图表的其它方面。
功能部分130包括功能代码131和事件状态监视器代码132。功能代码131是可执行代码,由user_interface_mod51使用功能指针106调用,功能指针106是由user_interface_mod51经过所述的得到的信息功能107获得的。功能代码131实现工作统计插件模块65的功能,在这种情况下是打印工作的统计。事件状态监视器代码132处理接收的从user_interface_mod51经过所述的事件处理程序108传送到工作统计插件模块65的事件通知。事件状态监视器代码132将接收到的事件通知传送到功能代码131,用于实现由工作统计插件模块65支持的功能。
图5是一个方块图,用于描述图2中存储区60的本地数据结构73的组成。如以上参照附图3中user_interface_mod51的初始化部分80所讨论的,user_interface_mod51利用所述的得到的信息功能107从工作统计插件模块65获得信息、指针、和属性。初始化部分80一旦从工作统计插件模块65收到这个信息,就将这个信息放在对应于工作统计插件模块65的一个单独的数据结构中,从而有可能在晚些时候对其进行迅速而有效的访问,而不必再次使用所述的得到的信息功能107。具体来说,user_interface_mod51的初始化部分80的插件信息功能83和对话结构功能84从每个选定的插件模块中获得了信息,并且将其放在本地数据结构73的一个单独的目录结构中。
回到图5,可以看见,本地数据结构73包括结构140、160、180、200,它们分别对应于为与打印机20相应的在注册表41中注册的Printer1_id42的四个插件模块。为简洁起见,只讨论数据结构140,这是因为它对应于通过user_interface_mod51从工作统计插件模块65获得的信息。如在数据结构140中看见的,包含在其中的信息是包含在工作统计插件模块65的资源部分100中的信息的子集。具体来说,这个信息包括:插件功能类型142、资源指针143、功能指针144、事件处理程序指针145、和属性150。属性150包含由工作统计插件模块65支持的每个对话属性图表的对话属性的图表序号151、属性图表序号152、类型153、和属性154。前边针对图4的工作统计插件模块65描述了这些数据中的每一个,这里对此不作进一步的描述。
图6是一个流程图,用于描述在user_interface_mod51和工作统计插件模块65之间的相互关系。在步骤S601中,user_interface_mod51从操作***40接收一个初始化调用,然后触发初始化部分80。在步骤S602中,插件搜寻功能81搜寻注册表,以便提供与打印机20对应的插件模块。在步骤S603中,确定是否已经检测到插件模块。如果没有,则流程前进在步骤S615返回。如果已经检测到一个插件模块,则流程前进到步骤S604,在此步骤中,将已经检测到的插件模块65如工作统计插件模块65装入存储器如RAM17中。接下去,在步骤S605中,插件信息功能82从工作统计插件模块65获得信息功能指针103。然后,插件信息功能82在步骤s606中使用信息功能指针103调用所述的得到的信息功能107,以便从工作统计插件模块65的资源部分100接收信息和对话属性图表属性110。
在步骤S607中确定已经检测到的插件模块(在这种情况下是工作统计插件模块65)是否是由user_interface_mod51支持的一种类型。如果不是,流程传递到步骤S602,继续搜寻已经注册的插件模块。如果支持这个插件模块(在这个情况下,支持工作统计),则流程前进到步骤S608,在此步骤中将从工作统计插件模块65接收的信息存储在本地数据结构73的一个单独的本地数据结构140中。在步骤S609中,对话结构功能83将所有的对话属性图表(静态的和来自于插件模块的)的属性作为在显示器11上的打印机驱动程序的用户接口传送到操作***40以便由操作***40进行绘制。在步骤S610中,执行user_interface_mod51的操作部分90,并且由操作部分90根据需要调用和执行工作统计插件模块65的功能部分130,以实现由工作统计插件模块65支持的功能。
接下去,在步骤S611中,确定是否有更多的插件模块与user_interface_mod51合并,并且,如果有,则流程传递到步骤S602。如果没有更多的插件模块,则流程传递到步骤S612,user_interface_mod51从操作***40接收有关打印机20的事件通知。在步骤S613利用事件处理程序108确定所接收的事件通知的类型是否是工作统计插件模块65所请求的。如果是,则流程前进到步骤S614,将事件通知从user_interface_mod51传送到工作统计插件模块65,以便为工作统计插件模块65中的可执行代码使用,然后流程前进在步骤S615返回。如果不是,流程传递到步骤S615直接返回。
图7是打印机驱动程序的用户接口220的图形表示,其中的情况是,没有任何一个插件模块被检测到并且没有任何一个插件模块与user_interface_mod51合并。如图7所示,打印机驱动程序用户接口220由8个选项对话属性图221-228组成,它们表示的是由user_interface_mod51内在支持的静态对话属性图表。8个选项对话属性图表221-228表示在打印机20中进行打印的各个方面。
图8是打印机驱动程序的用户接口220的图形表示,其中的情况是,有3个插件模块被检测到并且这3个插件模块与user_interface_mod51合并。如图8所示,打印机驱动程序用户接口220由8个选项对话属性图表221-228(图7)组成,它们表示的是由user_interface_mod51内在支持的静态对话属性图表。此外,打印机驱动程序用户接口220包括3个附加的选项对话属性图表,即管理229、打印机230、和重定向231,它们分别对应于策略管理插件模块64、安装插件模块61、和工作重定向插件模块62。以此方式,这3个附加的对话属性图表中的每一个的选项对话属性图表是由它们的对应的插件经过user_interface_mod51提供的,不需要修改、重新编译和检验user_interface_mod51。
图9是一个流程图,用于说明按照本发明的插件模块的识别和注册。在步骤S901中,计算机10的用户访问插件模块注册应用程序74。就此而论,这里所述的用户可以是负责计算机10的配置和维护的***管理人员,或者简单地就是计算机10的使用者。如以上所述,对于插件模块注册应用程序74的访问以及将其装入硬盘13的存储区60可以在安装相应的设备如打印机20的时候进行,或者可以在期望向打印机20的打印机驱动程序50增加新功能的晚些时候进行。例如,可以从管理人员为打印机20的提供的一个安装文件访问插件模块注册应用程序74,这个文件例如可以在CD-ROM上、或经过在连接1上的网页来自于web网页,或者来自于硬盘13、或者来自于其它的存储媒介。在这种情况下,插件模块注册应用程序74最好也安装有打印机驱动程序50的各个部件。还有,插件模块注册应用程序74可以是与打印机20的初始安装不相关的一个单独的应用程序,并且可以从web、CD-ROM、硬盘13、或其它存储媒介下载。
优选地,插件模块注册应用程序74由安装脚本构成,当然也可以使用编程的代码。现在返回到附图9,在步骤S902中,识别由插件模块注册应用程序74提供的可利用的插件模块,以在显示器11上显示。可利用的插件模块的位置可以与插件模块注册应用程序74访问的插件模块的位置相同,或者与来自于web的web网页、CD-ROM、硬盘13、其它的存储媒介的另外的位置相同。优选地,可利用的插件模块被排列并且可以基于打印机名称、打印机类型、或某些其它参数进行排序。在步骤S903中,确定是否已经识别了任何一个可利用的插件模块。如果没有,流程在步骤S911返回。如果已经识别并显示了可利用的插件模块,则在步骤S904选择至少一个可利用的插件模块安装。就此而论,可利用的插件模块的选择可以是计算机10的用户的手工选择,或者也可以是基于在计算机10中已检测到的打印机驱动程序50的类型的自动选择。当在安装打印机20同时安装插件模块的时候,自动选择可能是更加有用。
在步骤S905中,对于选定的插件模块从其来源处进行复制,并且将其存储在硬盘13的存储区60,访问注册表41以便为选定的插件模块的注册作好准备。在步骤S906中,确定在注册表41中是否已经注册了一个预先存在的插件模块,这个预先存在的插件模块与选定的插件模块具有相同的类型或相同的名称。如果是,则流程前进到步骤S907,将这个情况通知计算机10的用户,然后在步骤908中确定是否已经指示用户通过替换(或改名)预先存在的插件模块来安装选定的插件模块。如果用户选择了替换(或改名),则流程前进到步骤S909,删除或改名预先存在的插件模块,这是一种可能的情况。然后流程前进到步骤S910。另一方面,如果在步骤S908确定:用户没有指示通过替换或改名所述的预先存在的插件模块来安装选定的插件模块,则流程在步骤S911返回。
如果在步骤S906确定:具有与选定的插件模块相同的类型或相同的名称的预先存在的插件模块还没有在注册表41中注册,则流程直接前进到步骤S910。然后,将用于选定的插件模块的一个识别符输入到注册表41中,这个识别符与由选定的插件模块支持的设备(在这种情况下是打印机20)的注册项相对应(步骤S910)。所述的识别符可以在基于设备识别符的注册项输入,例如输入到如图2所示的注册表41中,或者可以基于设备类型、用户名、或计算机名的注册项输入,只要user_interface_mod51能够基于这些注册项类型搜寻已注册的插件模块就成。流程在步骤S911返回。以此方式,在相应的设备安装时,或者是在安装后的某个时间,插件模块的访问、安装、和注册都很容易,因而可以为设备的设备驱动程序提供新的功能,而不必修改、重新编译和重新检验设备驱动程序
图10是一个流程图,用于说明操作***40与打印机驱动程序50的user_interface_mod51的相互作用,以及与按照本发明的一个实施例的多个插件模块的相互作用。在步骤S1001中,操作***40接收一个用户请求,为打印机驱动程序50显示用户接口的主对话属性图表。在步骤S1002,操作***40响应于显示主对话属性图表的用户请求,向user_interface_mod51发送一个初始化调用程序。user_interface_mod51然后搜寻注册表41,以检测已注册的与打印机20相对应的插件模块。在步骤S1004中,确定在步骤中是否检测到任何已注册的插件模块。如果没有检测到任何一个,则流程在步骤S1019返回。如果检测到插件模块,则流程前进到步骤S1005,user_interface_mod51通过使用信息指针从每个已检测到的插件模块获得对应于选项对话属性图表的信息和属性,如以上所述。
接下去,在步骤S1006,user_interface_mod51向操作***40传送已获得的信息和属性,以及由user_interface_mod51内在支持的静态的选项对话属性图表的信息和属性。在步骤S1007中,操作***40在计算机10的显示器11上绘制打印机驱动程序用户接口的主对话属性图表,其中的主对话属性图表具有标签,用于访问从已检测到的插件模块获得的其它选项对话属性图表。在步骤S1008中,操作***40接收一个请求,用于显示从已检测到的插件模块获得的其它选项对话属性图表之一。在步骤S1009中,操作***40显示从已检测到的插件模块之一获得的被用户请求的选项对话属性图表。在步骤S1010中,操作***40接收一个请求,利用由已显示的选项对话属性图表支持的一个功能,并且操作***40在步骤S1011向user_interface_mod51发送这个功能请求。
在步骤S1012中,user_interface_mod51使用一个功能指针访问和执行在对应于已接收了功能请求的选项对话属性图表的插件模块中的功能代码。以此方式,插件模块实现了并非由打印机驱动程序50的user_interface_mod51内在支持的功能。在步骤S1013中,确定是否有更多的插件模块要合并入user_interface_mod51,如果是,则流程前进到步骤S1005,以获得其它插件模块的信息。如果不是,则流程直接前进到步骤S1014,操作***40从用户接收一个打印请求,通过打印机20打印图像数据。在步骤S1015中,操作***40向打印机驱动程序50发送打印请求,并且在步骤S1016中,使图像数据进入打印工作,发送打印工作到打印机20打印。在步骤S1017中,user_interface_mod51从操作***40接收有关打印机20的状态的一个事件通知,然后在步骤S1018中,user_interface_mod51向适当的插件模块发送事件通知供它们使用。流程在步骤S1019返回。
以此方式,操作***、设备驱动程序、和驱动器插件模块一起以协调的方式发挥功能,从而可以向设备驱动程序提供附加的功能,而不必修改、重新编译和重新检验设备驱动程序。
应该理解,除了打印机驱动程序外,对于支持其它类型设备的设备驱动程序的功能能力的扩展,都可以实现本发明。此外,除了这里说明的计算设备、计算环境、和操作***以外,在其它类型的计算设备和计算环境中利用其它形式的操作***也可以实现本发明。此外,除了这里说明的情况以外,还可以用软件和指令的形式实现这里描述的软件模块的功能方面、功能、程序、应用程序、和其它文件。
已经利用具体的说明性的实施例描述了本发明。但应该理解的是,本发明不局限于此,且在不脱离本发明的构思和范围的条件下本领域的普通技术人员还可以做出各种变化与修改。具体来说,并且如以上所述,可以利用本发明管理各种各样的网络设备,而不仅仅是网络打印机。
Claims (24)
1.一种信息设备,所述的信息设备存储打印机驱动程序的用户接口程序,用于通过执行一个操作***的计算设备来支持打印机的使用,用户接口程序由信息设备执行以实现:
***作***调用的初始化装置,借此,初始化装置检测在操作***的***注册表中的一个驱动器插件识别符,访问一个存储器并在存储器中装入与所述的驱动器插件识别符对应的驱动器插件程序,获得从驱动器插件程序到该驱动器插件程序内的信息功能调用的指针,执行信息功能调用以从驱动器插件程序接收信息,在一个本地数据结构中存储已接收的信息,并且通过使用操作***功能调用向操作***传送所接收的信息的一部分。
2.根据权利要求1所述的信息设备,进一步包括:
一个操作装置,所述的操作装置通过使用在接收的信息中提供的功能指针来访问和执行驱动器插件程序的功能指针,从操作***接收对应于由打印机进行的打印工作的事件通知,并且在接收的信息中提供的客户请求指示器表明的驱动器插件程序接收了事件通知的情况下,向驱动器插件程序传送事件通知。
3.一种信息设备,所述的信息设备在一个存储器中存储一个驱动器插件程序,该驱动器插件程序由借助于执行操作***的一个计算设备支持使用打印机的打印机驱动程序的用户接口程序使用,所述的驱动器插件程序实现:
具有可执行代码的一个功能装置,所述的可执行代码支持与功能应用程序对应的至少一个对话属性图表;和
包括资源信息的一个资源装置,所述的资源信息包括由驱动器插件程序支持的一系列对话属性图表,由驱动器插件程序支持的每个对话属性图表的类型,由驱动器插件程序支持的每个对话属性图表的属性,指向信息功能调用的一个信息指针,以及指向事件处理程序的一个事件指针,
借此,信息指针由用户接口程序访问,以启动信息功能调用,所述的信息功能调用向用户接口程序返回一个与资源部分的资源信息对应的资源指针,并且功能指针对应于功能部分的可执行代码。
4.根据权利要求3所述的信息设备,其中事件指针由用户接口程序使用,以启动事件处理程序,事件处理程序将通过用户接口程序接收的事件通知从操作***传送到驱动器插件程序,对应于打印工作状态的事件通知由打印机执行。
5.一种设备,该设备可以注册为一种驱动器插件程序,该驱动器插件程序可以由设备驱动器的设备驱动程序使用,该驱动器插件程序通过计算设备支持使用一台外部设备,所述的设备包括:
用于识别定位在外部源的至少一个可利用的驱动器插件程序的识别装置;
用于选择至少一个可利用的驱动器插件程序以安装在计算设备上的选择装置;
安装装置,用于通过在计算设备的一个存储器中存储每个选定的驱动器插件程序在计算设备上安装每个选定的驱动器插件程序,并且用于在计算设备上正在执行的操作***的***注册表中输入对应于每个选定的驱动器插件程序的一个识别符。
6.根据权利要求5所述的设备,其中的设备是由为安装设备驱动程序提供的安装脚本控制的。
7.根据权利要求5所述的设备,进一步包括:用于控制在显示器上显示的驱动器的用户接口的内容的控制装置,从而使在所述的用户接口中选项图表的数目随着新的插件程序的安装而有所增加。
8.根据权利要求5所述的设备,其中的设备是由一个应用程序控制的。
9.根据权利要求8所述的设备,其中的应用程序是从一个网页访问的。
10.根据权利要求5所述的设备,其中将每个识别符输入到与外部设备的名称对应的***注册表位置。
11.根据权利要求5所述的设备,其中将每个识别符输入到与用户名字对应的***注册表位置。
12.根据权利要求6所述的设备,其中将每个识别符输入到与计算设备的名称对应的***注册表位置。
13.一种信息设备,所述的信息设备存储设备驱动器的设备驱动程序,用于通过执行一个操作***的计算设备来支持外部设备的使用,执行设备驱动程序以实现:
一个初始化装置,所述的初始化装置由操作***调用,借此,初始化装置检测驱动器插件程序的存在、从已检测到的驱动器插件程序获得信息、并且将已获得的驱动器插件程序传送到操作***;和
一个操作装置,所述的操作装置访问和执行已检测到的驱动器插件程序的功能部分、从操作***接收对应于外部设备的事件通知、并且在已检测到的驱动器插件程序接受事件通知的情况下将事件通知传送到已检测到的驱动器插件程序。
14.一种用于注册由设备驱动器的设备驱动程序使用的驱动器插件程序的方法,所述的设备驱动程序通过计算设备支持使用一台外部设备,所述的注册方法包括如下步骤:
识别定位在外部源的至少一个可利用的驱动器插件程序;
选择至少一个可利用的驱动器插件程序以安装在计算设备上;
通过在计算设备的一个存储器中存储每个选定的驱动器插件程序在计算设备上安装每个选定的驱动器插件程序;和
在正在计算设备上执行的操作***的***注册表中输入对应于每个选定的驱动器插件程序的一个识别符。
15.根据权利要求14所述的方法,其中所述的方法是通过为安装设备驱动程序而提供的安装脚本实现的。
16.根据权利要求14所述的方法,进一步包括如下步骤:控制在显示器上显示的驱动器的用户接口的内容,从而使在所述的用户接口中选项图表的数目随着新的插件程序的安装而有所增加。
17.根据权利要求14所述的方法,其中所述的方法是通过应用程序实现的。
18.根据权利要求17所述的方法,其中所述的应用程序是从网页访问的。
19.根据权利要求14所述的方法,其中将每个识别符输入到与外部设备的名称对应的***注册表位置。
20.根据权利要求14所述的方法,其中将每个识别符输入到与用户名字对应的***注册表位置。
21.根据权利要求14所述的设备,其中将每个识别符输入到与计算设备的名称对应的***注册表位置。
22.根据权利要求14所述的方法,其中将每个识别符输入到与外部设备的类型对应的***注册表位置。
23.在计算机可读介质上存储的计算机可执行的方法步骤,所述的计算机可执行的方法步骤用于注册供设备驱动器的设备驱动程序使用的驱动器插件程序,所述的设备驱动程序通过计算设备支持外部设备的使用,所述的计算机可执行的方法步骤包括为实现根据权利要求14-22中任何一个所述的方法可执行的方法步骤。
24.一种计算机可读介质,所述的计算机可读介质存储计算机可执行的方法步骤,所述的计算机可执行的方法步骤用于注册供设备驱动器的设备驱动程序使用的驱动器插件程序,设备驱动程序通过计算设备支持外部设备的使用,所述的计算机可执行的方法步骤包括为实现根据权利要求14-22中任何一个所述的方法可执行的方法步骤
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/131,012 US7284246B2 (en) | 2002-04-23 | 2002-04-23 | Extensible device driver |
US10/131,012 | 2002-04-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1455331A true CN1455331A (zh) | 2003-11-12 |
CN100435092C CN100435092C (zh) | 2008-11-19 |
Family
ID=28790975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031367887A Expired - Fee Related CN100435092C (zh) | 2002-04-23 | 2003-04-23 | 可扩展的设备驱动器 |
Country Status (4)
Country | Link |
---|---|
US (2) | US7284246B2 (zh) |
EP (1) | EP1357471A3 (zh) |
JP (1) | JP3745344B2 (zh) |
CN (1) | CN100435092C (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1323349C (zh) * | 2003-12-02 | 2007-06-27 | 佳能株式会社 | 信息处理***、打印控制方法以及程序 |
CN100367253C (zh) * | 2005-09-08 | 2008-02-06 | 中国工商银行股份有限公司 | 一种扩展外设的方法及*** |
CN100407127C (zh) * | 2005-03-29 | 2008-07-30 | 佳能株式会社 | 能够定制设备驱动程序的信息处理装置、方法 |
CN100524193C (zh) * | 2006-03-14 | 2009-08-05 | 佳能株式会社 | 信息处理***和信息处理方法 |
CN101080692B (zh) * | 2004-12-15 | 2010-10-06 | 罗伯特·博世有限公司 | 用于初始化包含多个插件的电子***的方法 |
CN102693101A (zh) * | 2011-02-09 | 2012-09-26 | 株式会社理光 | 信息处理装置 |
CN103345454A (zh) * | 2013-07-05 | 2013-10-09 | 上海斐讯数据通信技术有限公司 | 一种移动终端的外设连接方法 |
CN107728960A (zh) * | 2016-08-12 | 2018-02-23 | 佳能株式会社 | 信息处理装置、信息处理方法和存储介质 |
CN109992319A (zh) * | 2017-12-28 | 2019-07-09 | 航天信息股份有限公司 | 嵌入式设备和usb打印机的交互建立方法和装置 |
CN112445436A (zh) * | 2019-09-04 | 2021-03-05 | 佳能株式会社 | 信息处理装置和用于信息处理装置的方法 |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030200361A1 (en) * | 2002-04-19 | 2003-10-23 | Vikas Dogra | Extensible drive |
US7256901B2 (en) * | 2002-10-10 | 2007-08-14 | Sharp Laboratories Of America, Inc. | Printer driver customization using incremental custom print processor |
US7106472B2 (en) * | 2002-10-31 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Print driver for an extended printing device |
KR100524066B1 (ko) * | 2003-02-08 | 2005-10-26 | 삼성전자주식회사 | 디바이스 대화창 표시방법 및 장치 |
JP2005018494A (ja) * | 2003-06-27 | 2005-01-20 | Canon Inc | データ処理装置および印刷データ生成方法およびコンピュータが読取り可能なプログラムを格納した記憶媒体およびプログラム |
US20050157321A1 (en) * | 2004-01-20 | 2005-07-21 | Alacar Arthur E. | Printer driver plug-in module management system |
JP2005208895A (ja) * | 2004-01-22 | 2005-08-04 | Canon Inc | 情報処理装置及びその制御方法及びそのプログラムと記憶媒体 |
JP2005208894A (ja) * | 2004-01-22 | 2005-08-04 | Canon Inc | 周辺装置制御方法、制御プログラム及びその装置 |
JP4227035B2 (ja) | 2004-02-03 | 2009-02-18 | 株式会社日立製作所 | 計算機システム、管理装置、ストレージ装置及びコンピュータ装置 |
JP4319105B2 (ja) * | 2004-02-18 | 2009-08-26 | 三菱電機株式会社 | 製造システム、ゲートウェイ装置、ゲートウェイプログラムおよび被制御装置の制御方法 |
JP2005338940A (ja) * | 2004-05-24 | 2005-12-08 | Canon Inc | インストール方法、情報処理装置、及びデバイスドライバ |
US20060017948A1 (en) * | 2004-07-22 | 2006-01-26 | Sharp Laboratories Of America, Inc. | Open source printer driver |
US7636921B2 (en) * | 2004-09-01 | 2009-12-22 | Ati Technologies Inc. | Software and methods for previewing parameter changes for a graphics display driver |
TWI264672B (en) * | 2004-09-21 | 2006-10-21 | Aimgene Technology Co Ltd | BIOS locking device, computer system with a BIOS locking device and control method thereof |
US8140718B2 (en) * | 2004-12-08 | 2012-03-20 | Hewlett-Packard Development Company, L.P. | Status notifications |
US20060161415A1 (en) * | 2005-01-18 | 2006-07-20 | Microsoft Corporation | Driver handler object framework |
JP5168792B2 (ja) * | 2006-02-13 | 2013-03-27 | 株式会社リコー | ファームウェアダウンロードドライバシステム |
US20080235704A1 (en) * | 2007-03-22 | 2008-09-25 | Vasudev Kanduveed | Plug-and-play load balancer architecture for multiprocessor systems |
US20090051960A1 (en) * | 2007-08-23 | 2009-02-26 | Maglanque Jose Elwin | System and method for creating a customizable device driver for interfacing with a document processing device |
JP5037271B2 (ja) * | 2007-09-05 | 2012-09-26 | 株式会社リコー | 画像形成装置、情報処理方法及び情報処理プログラム |
JP4940105B2 (ja) * | 2007-10-31 | 2012-05-30 | キヤノン株式会社 | 情報処理装置、情報処理方法、及び制御プログラム |
US20090157906A1 (en) * | 2007-12-14 | 2009-06-18 | Ricoh Company, Ltd. | Information processing device, information processing device controlling method, and computer-readable recording medium |
JP5326477B2 (ja) * | 2007-12-14 | 2013-10-30 | 株式会社リコー | 情報処理装置、情報処理プログラム、記録媒体及び情報処理方法 |
FI120857B (fi) * | 2007-12-19 | 2010-03-31 | Teliasonera Ab | Päätelaite, tallennusmedia, palvelukeskus ja menetelmä |
US8136126B2 (en) * | 2008-01-31 | 2012-03-13 | International Business Machines Corporation | Overriding potential competing optimization algorithms within layers of device drivers |
JP4944812B2 (ja) * | 2008-02-20 | 2012-06-06 | 株式会社リコー | 情報処理システムと情報処理方法とプログラム |
JP4945479B2 (ja) * | 2008-02-25 | 2012-06-06 | 株式会社リコー | 印刷処理装置、印刷処理方法、印刷処理プログラム及び記録媒体 |
CN101593114B (zh) * | 2008-05-30 | 2014-01-22 | 深圳艾科创新微电子有限公司 | 一种uvc应用自动替换***驱动的装置 |
US8423628B2 (en) * | 2008-06-25 | 2013-04-16 | Xerox Corporation | Method and apparatus for extending functionality of networked devices |
US20100107097A1 (en) * | 2008-10-16 | 2010-04-29 | Andrew Rodney Ferlitsch | Client device with extensible imaging device driver and method implementing same |
US8407316B2 (en) * | 2008-10-30 | 2013-03-26 | Xerox Corporation | System and method for managing a print job in a printing system |
US8842313B2 (en) * | 2008-10-30 | 2014-09-23 | Xerox Corporation | System and method for managing a print job in a printing system |
JP5343643B2 (ja) | 2009-03-17 | 2013-11-13 | 株式会社リコー | プリンタドライバ、記憶媒体、及び情報処理装置 |
JP5267337B2 (ja) * | 2009-06-01 | 2013-08-21 | 株式会社リコー | プログラム、記憶媒体、情報処理装置、プリンタ装置およびシステム |
JP5391844B2 (ja) * | 2009-06-05 | 2014-01-15 | 株式会社リコー | 印刷制御プログラム、記憶媒体および情報処理装置 |
JP5597943B2 (ja) | 2009-06-10 | 2014-10-01 | 株式会社リコー | システム及び方法 |
JP5278185B2 (ja) * | 2009-06-12 | 2013-09-04 | 株式会社リコー | 情報処理装置、インストーラプログラム、及び記憶媒体 |
JP5393427B2 (ja) * | 2009-09-01 | 2014-01-22 | キヤノン株式会社 | 情報処理装置、情報処理方法及びプログラム |
JP5446625B2 (ja) * | 2009-09-07 | 2014-03-19 | 株式会社リコー | プリンタドライバ、情報処理装置、およびプリンタドライバを記録したコンピュータ読み取り可能な記録媒体 |
US8593671B2 (en) * | 2009-10-16 | 2013-11-26 | Xerox Corporation | System and method for controlling usage of printer resources |
US9182930B2 (en) | 2010-12-13 | 2015-11-10 | Microsoft Technology Licensing, Llc | Printer driver and application decoupling using event centric registration model |
JP2012198674A (ja) | 2011-03-18 | 2012-10-18 | Ricoh Co Ltd | プリンタドライバ、情報処理装置、及び記録媒体 |
JP5787606B2 (ja) | 2011-05-02 | 2015-09-30 | キヤノン株式会社 | 情報処理装置、情報処理方法、及びプログラム |
US8904048B2 (en) | 2011-09-08 | 2014-12-02 | Microsoft Corporation | Bidi extension for connected devices |
US9582259B2 (en) * | 2012-08-03 | 2017-02-28 | Nokia Technologies Oy | Method and apparatus for providing template-based applications |
JP2014085749A (ja) * | 2012-10-22 | 2014-05-12 | Oki Data Corp | ドライバインストーラ、画像処理装置、画像形成システム及び画像形成装置 |
JP2015046075A (ja) * | 2013-08-29 | 2015-03-12 | キヤノン株式会社 | 情報処理装置、その制御方法、及びコンピュータプログラム |
US9530386B2 (en) * | 2014-03-27 | 2016-12-27 | Intel Corporation | Methods and apparatus to provide extended graphics processing capabilities |
JP6324251B2 (ja) * | 2014-07-24 | 2018-05-16 | キヤノン株式会社 | 情報処理装置、プログラム及び制御方法 |
RU2649293C1 (ru) * | 2017-04-28 | 2018-03-30 | Акционерное общество "Лаборатория Касперского" | Система и способ передачи перехваченных запросов от драйвера к драйверу в процессе инициализации драйверов |
US12014208B2 (en) * | 2018-06-29 | 2024-06-18 | Advanced Micro Devices, Inc. | Techniques for reducing serialization in divergent control flow |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0502857B1 (de) | 1989-11-29 | 1994-04-06 | Siemens Aktiengesellschaft | Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems |
US5193180A (en) | 1991-06-21 | 1993-03-09 | Pure Software Inc. | System for modifying relocatable object code files to monitor accesses to dynamically allocated memory |
US5604843A (en) * | 1992-12-23 | 1997-02-18 | Microsoft Corporation | Method and system for interfacing with a computer output device |
US5548759A (en) | 1994-07-05 | 1996-08-20 | Microsoft Corporation | System for storing executable code within a resource data section of an executable file |
US5831606A (en) * | 1994-12-13 | 1998-11-03 | Microsoft Corporation | Shell extensions for an operating system |
US5682510A (en) * | 1995-03-30 | 1997-10-28 | Microsoft Corporation | Method and system for adding application defined properties and application defined property sheet pages |
US5687301A (en) | 1995-09-15 | 1997-11-11 | Hewlett-Packard Company | Field correction of application specific printer driver problems |
US6141698A (en) | 1997-01-29 | 2000-10-31 | Network Commerce Inc. | Method and system for injecting new code into existing application code |
US5958049A (en) * | 1997-03-17 | 1999-09-28 | International Business Machines Corporation | Operating system debugger using kernel and dynamic extension with debugger drivers to support different output devices |
US5991822A (en) | 1997-03-17 | 1999-11-23 | International Business Machines Corporation | System for modifying functions of static device driver using a registered driver extension extended dynamically by providing an entry point for the driver extension |
US6222638B1 (en) | 1997-09-29 | 2001-04-24 | Canon Kabushiki Kaisha | Displaying printer property sheets |
US6334213B1 (en) | 1998-01-20 | 2001-12-25 | Preview Systems | Merging of separate executable computer programs to form a single executable computer program |
US6825941B1 (en) * | 1998-09-21 | 2004-11-30 | Microsoft Corporation | Modular and extensible printer device driver and text based method for characterizing printer devices for use therewith |
US6707568B1 (en) | 1999-11-02 | 2004-03-16 | Ricoh Company, Ltd. | Printer driver filter and method of printing with the same |
US20030043396A1 (en) * | 2001-08-29 | 2003-03-06 | Klosterman Elliot L. | Printer driver access interface |
US6986135B2 (en) * | 2001-09-06 | 2006-01-10 | Cognos Incorporated | Deployment manager for organizing and deploying an application in a distributed computing environment |
US7350146B2 (en) * | 2001-10-25 | 2008-03-25 | Aol Llc, A Delaware Limited Liability Company | Help center and condition-based applications |
-
2002
- 2002-04-23 US US10/131,012 patent/US7284246B2/en not_active Expired - Fee Related
-
2003
- 2003-04-23 EP EP03252538A patent/EP1357471A3/en not_active Withdrawn
- 2003-04-23 CN CNB031367887A patent/CN100435092C/zh not_active Expired - Fee Related
- 2003-04-23 JP JP2003118644A patent/JP3745344B2/ja not_active Expired - Fee Related
-
2007
- 2007-09-14 US US11/898,669 patent/US8028300B2/en not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1323349C (zh) * | 2003-12-02 | 2007-06-27 | 佳能株式会社 | 信息处理***、打印控制方法以及程序 |
CN101080692B (zh) * | 2004-12-15 | 2010-10-06 | 罗伯特·博世有限公司 | 用于初始化包含多个插件的电子***的方法 |
CN100407127C (zh) * | 2005-03-29 | 2008-07-30 | 佳能株式会社 | 能够定制设备驱动程序的信息处理装置、方法 |
CN100367253C (zh) * | 2005-09-08 | 2008-02-06 | 中国工商银行股份有限公司 | 一种扩展外设的方法及*** |
CN100524193C (zh) * | 2006-03-14 | 2009-08-05 | 佳能株式会社 | 信息处理***和信息处理方法 |
CN102693101B (zh) * | 2011-02-09 | 2015-09-30 | 株式会社理光 | 信息处理装置 |
CN102693101A (zh) * | 2011-02-09 | 2012-09-26 | 株式会社理光 | 信息处理装置 |
CN103345454A (zh) * | 2013-07-05 | 2013-10-09 | 上海斐讯数据通信技术有限公司 | 一种移动终端的外设连接方法 |
CN103345454B (zh) * | 2013-07-05 | 2018-04-06 | 上海斐讯数据通信技术有限公司 | 一种移动终端的外设连接方法 |
CN107728960A (zh) * | 2016-08-12 | 2018-02-23 | 佳能株式会社 | 信息处理装置、信息处理方法和存储介质 |
CN107728960B (zh) * | 2016-08-12 | 2021-05-18 | 佳能株式会社 | 信息处理装置、信息处理方法和存储介质 |
CN109992319A (zh) * | 2017-12-28 | 2019-07-09 | 航天信息股份有限公司 | 嵌入式设备和usb打印机的交互建立方法和装置 |
CN112445436A (zh) * | 2019-09-04 | 2021-03-05 | 佳能株式会社 | 信息处理装置和用于信息处理装置的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100435092C (zh) | 2008-11-19 |
US20080010646A1 (en) | 2008-01-10 |
US8028300B2 (en) | 2011-09-27 |
EP1357471A2 (en) | 2003-10-29 |
US7284246B2 (en) | 2007-10-16 |
US20030200427A1 (en) | 2003-10-23 |
JP2004005608A (ja) | 2004-01-08 |
EP1357471A3 (en) | 2005-04-13 |
JP3745344B2 (ja) | 2006-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100435092C (zh) | 可扩展的设备驱动器 | |
CN111241454B (zh) | 一种生成网页代码的方法、***和装置 | |
CN101124559B (zh) | 安装方法和信息处理装置 | |
CN107818112B (zh) | 一种大数据分析作业***及任务提交方法 | |
CN101395569B (zh) | 用于改变信息处理设备中的打印机驱动程序的方法 | |
CN1573749A (zh) | 使用外部计划主题的Web网页绘制机制 | |
US6738156B1 (en) | Reusable job editing and delivery system | |
CN1610890A (zh) | 用于配置计算***的***、方法和计算机程序产品 | |
CN1746872A (zh) | 通信设定方法、应用程序启动方法以及应用程序启动*** | |
CN1755619A (zh) | 提供文档预览的方法、***和装置 | |
CN1834906A (zh) | 丰富数据绑定应用程序 | |
CN1537298A (zh) | 用于经由打印服务器通过网络进行打印的***和方法 | |
CN1794165A (zh) | 信息处理装置、图像形成装置、记录介质及图像形成*** | |
CN101414246A (zh) | 虚拟装置管理方法以及管理设备 | |
CN1277198C (zh) | 服务器的选择和配置 | |
JP2005533294A (ja) | サービス取得方法およびサービス取得システム | |
US20090257085A1 (en) | Generation of a web page including menu items for web pages | |
CN110909273B (zh) | 页面的生成方法及相关*** | |
CN111506309B (zh) | 任务执行方法和***、计算机可读存储介质 | |
US7202961B2 (en) | Method for dynamically creating a printer driver | |
KR100578434B1 (ko) | 확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치 | |
CN102256041B (zh) | 图像形成设备和获取识别信息的方法 | |
JP2005050060A (ja) | プッシュ型インストールシステム、情報処理装置、プッシュ型インストール方法およびプログラム | |
CN1197959A (zh) | 商业非标准字符处理装置和***及计算机可读存储介质 | |
CN114936031B (zh) | 组件的调用方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081119 Termination date: 20150423 |
|
EXPY | Termination of patent right or utility model |