CN1591341B - 用于共享资源的通知的系统和方法 - Google Patents

用于共享资源的通知的系统和方法 Download PDF

Info

Publication number
CN1591341B
CN1591341B CN2004100685005A CN200410068500A CN1591341B CN 1591341 B CN1591341 B CN 1591341B CN 2004100685005 A CN2004100685005 A CN 2004100685005A CN 200410068500 A CN200410068500 A CN 200410068500A CN 1591341 B CN1591341 B CN 1591341B
Authority
CN
China
Prior art keywords
notice
characteristic
client
recipient
session
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.)
Expired - Fee Related
Application number
CN2004100685005A
Other languages
English (en)
Other versions
CN1591341A (zh
Inventor
A·M·特鲁芬尼斯库
K·S·塞得基
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 Technology Licensing LLC
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 CN1591341A publication Critical patent/CN1591341A/zh
Application granted granted Critical
Publication of CN1591341B publication Critical patent/CN1591341B/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1207Improving or facilitating administration, e.g. print management resulting in the user being informed about print result after a job submission
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47JKITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
    • A47J42/00Coffee mills; Spice mills
    • A47J42/02Coffee mills; Spice mills having grinding cones
    • A47J42/10Grinding cones
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1259Print job monitoring, e.g. job status
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1288Remote printer device, e.g. being remote from client or server in client-server-printer device configuration
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47JKITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
    • A47J42/00Coffee mills; Spice mills
    • A47J42/38Parts or details

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Food Science & Technology (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Hardware Redundancy (AREA)

Abstract

来自共享资源的通知可被导向适当的客户。用于客户的接收者注册可以和用于共享资源的发送者注册匹配,以前传来自共享资源的通知到适当的客户。在终端服务器或快速用户交换环境中,接收者注册可以指定该接收者对和会话相关的通知感兴趣。用于处理和本地或远程会话相关的通知可被路由到发起处理的会话。用于处理通知的请求可从相同或不同机器开始。可以如所期望的指示用于用户名称或安全环境的通知。可以支持双向通信。可使用通知产生用户接口图像。

Description

用于共享资源的通知的系统和方法
技术领域
本技术领域涉及共享资源的通知,例如那些在计算机网络上共享的资源。
版权授权
本专利文件公开的一部分包含受版权保护的材料。版权所有人不反对本专利文件或专利公开的任何人的复制,因为它出现在专利和商标局专利文件或档案中,否则保留所有版权。
发明背景
为了维护高水平的成本效率生产率,组织越来越依赖于共享计算资源。虽然可以共享许多资源,一个熟悉的例子是打印机,通常通过打印队列共享打印机。那些希望打印的用户激活添加打印作业到队列的软件。最后由适当软件(例如打印监测器和打印驱动器)处理该打印作业,从而产生例如打印文件的适当输出。
终端服务器环境
图1显示用于共享资源的示范通用系统100,例如打印服务114。该例子包括支持用于多用户的用户接口104,106和108的终端服务器软件102。用户接口104是特例,它和执行终端服务器软件102的计算机物理控制台103(例如监测器和键盘)相连。在实际使用中,和控制台用户接口104相关的处理可以和特许访问权相联系,因为访问控制台103通常包括物理接入正执行终端服务器软件的计算机系统。可在远离控制台103的地方通过网络110提供用户接口106和108;因此,不期望授予这些用户接口特许访问权。
显示的任意用户接口都可用于和诸如邮件服务、打印服务或文件服务的共享资源交互。当在此类共享资源上执行操作时,在和本地控制台103(例如会话0)相关的特定会话中运行共享服务是通常的惯例,因为这些服务接入特许资源以完成它们的任务。当产生用于共享资源的消息时,将该消息导入和适当任务相连的用户接口。因此,对于共享服务,发送此类消息到控制台(例如会话用户接口104)。
例如,用户可以和在远程控制台的用户接口106交互,从而在网络110上和终端服务器102通信,请求打印服务。因为运行在本地控制台(即在会话“0”)中的打印服务(例如假脱机程序)控制(host)打印驱动器,如果打印机114用指示打印机无纸的消息响应打印请求,在和控制台103相连的图形用户接口104呈现该消息。因此,在远程用户接口106请求打印服务的用户并不知道该打印机消息。
快速用户交换
图2显示用于共享资源的另一个示范通用系统200,例如打印服务222。在该例子中,计算机206提供“快速用户交换”特征。如果用户“D”的用户接口图像206正显示在计算机206上,用户“E”可将用户接口图像204切换到用户“E”的图像212(例如通过适当命令),而不用注销用户“D”。在实际应用中,在切换图像之前可能要求密码。类似的,如果用户“F”希望使用计算机206,则用户“F”可以激活该命令,在计算机206上显示用户“F”的用户接口图像214,而不用注销用户“E”。
在此例子中,如果用户“D”请求来自共享资源(例如打印队列)的服务,从打印机接收无纸消息,当计算机206接收到无纸消息时,在控制显示的用户而不是请求打印的用户的用户图像上显示该消息。
在这些例子中,请求资源的用户可能不知道存在资源请求失败,因为没有呈现用户接口消息给提出请求的用户。
发明概述
所描述的技术可以为客户提供来自共享资源的通知。例如,可以发送一个或多个通知到和一个或多个共享资源交互的一个或多个客户。
在某些例子中,多个客户使用一个或多个共享资源。使用共享资源的客户可向通知服务器注册为接收者。当共享资源发送通知时,通知服务器确定和通知相关的一个或多个特性与和注册客户相关的一个或多个特性匹配,前传该通知到客户。
可以通过发送者注册使特性和通知相联系。特性可以包括会话识别符,用户识别符,通知类型以及其他。可使用通知服务器的滤波器方法确定匹配。
在某些例子中,一个终端服务器正处理多个会话。可以创建会话的注册以接收和该会话相关的通知。如果在控制台会话中运行共享资源,仍然可以将通知发送回引起共享资源激活的会话。可以使用通知产生该会话的用户接口图像。例如,用户接口图像可以指示共享资源的条件。
当在控制台会话中运行的共享资源发送通知给通知服务器时,通知服务器比较共享资源的注册特性,该特性可以包括对引起共享资源激活的会话的指示。当确定共享资源注册的适当特性和会话注册的特性匹配时,相应前传通知。可以使用该通知产生用户接口图像(例如,产生用于请求共享资源的会话的用户接口图像)。
在涉及多个会话的终端服务器或其他情况中,为请求共享资源的通知产生用户接口图像能保护隐私并增强安全性。该通知可以包括不应由另一用户察看或访问的私人或安全信息。此外,该通知可以包括相关功能性(例如,取消处理)。不是发送通知给可能由另一用户访问的控制台会话,发送该通知到请求资源的会话并由其处理。这样,关于资源请求和资源控制的图像信息保持在请求资源的一方手中。
该通知服务可以支持对通知的应答。因此支持双向通信。
和注册相关的特性可从不是注册客户或共享资源的其他源获得。例如,可从关于客户注册呼叫的信息或从安全环境(security context)中获得特性。在会话识别符的例子中,可以存储和呼叫客户相关的会话识别符以备以后查找(例如当注册该客户使用的共享资源时)。
通知服务可以不考虑通知中所包含的数据而运行。例如,通知类型可以指示怎样处理该通知。通知服务可以处理和前传任何通知类型的通知。
从以下说明性实施例的详细描述中可以清楚额外的特点和优点,该描述结合附随附图进行。
附图简要说明
图1是终端服务器系统的例子。
图2是“快速用户交换”方案的例子。
图3A是用于共享资源通知的示范系统。
图3B是用于获得来自共享资源的通知注册的示范系统。
图3C是用于获得来自共享资源的通知注册的另一个示范系统。
图4A是用于处理通知的方法的流程图。
图4B是用于注册发送者和接收者以及处理通知的方法的流程图。
图5是用于客户注册和接收来自共享资源的通知的方法的流程图。
图6是用于注册发送通知的发射者的方法的流程图。
图7是用于来自共享资源的客户注册示范系统。
图8是包括注册客户接收来自共享资源的通知的示范终端服务器系统。
图9是包括注册用户图像以接收来自共享资源的示范性多用户交换系统。
图10是显示可能被用于滤波通知的一个或多个注册特性的示范性通知服务器。
图11是根据用户识别符滤波通知的示范性系统。
图12是根据安全环境滤波通知的示范性系统。
图13是根据会话识别符滤波通知的示范性系统。
图14是根据多个特性滤波通知的示范性系统。
图15是包括由管理员创建的注册的示范性系统。
图16是用于示范性接收者和信道注册的目标(object)和接口的图。
图17是用于示范性接收者和信道注册以及已传递通知目标的目标和接口的图。
图18是用于示范性接收者和信道注册以及已传递应答通知目标的目标和接口的图。
图19是用于注册客户和共享资源,并根据注册的特性前传通知和应答通知方法的流程图。
图20是用于注册客户以接收通知和发送应答的客户方法的流程图。
图21是用于注册发送通知和处理应答的信道的共享资源方法流程图。
图22是包括用于通知的注册和请求打印资源的共享资源的客户的示范性系统。
图23是可用于实现体现所描述的通知技术的方法和设备的分布式计算机系统。
详细说明
例子1-示范性系统概述
图3A显示示范性系统300,通过该系统,将用于共享资源306的通知316导向适当的客户326。例如,可以根据和通知316相关的特性以及与客户326相关的特性的比较前传通知316到客户326。虽然仅显示一个共享资源306,一个通知316和一个客户326,在实际应用中,一个系统可以包括多个资源306,多个通知316,多个客户326,或它们的组合。
例子2-另一个示范性系统概述
图3B显示示范性系统330,通过该系统,从一个或多个共享资源332发送一个或多个通知到通知服务器334,通知服务器334发送至少一个该通知的指示(例如前传通知)到一个或多个客户340A,340B。在通知前传中还可以涉及其他中介物,通知服务器控制(例如运行在相同程序)共享资源或客户。
在该例中,通知服务器334包括涉及并考虑何时从共享资源332接收注册的发送者注册336。类似的,接收者注册338A和客户340A相关,并参考注册338A确定接收的通知是否和客户340A匹配并被前传到客户340A。类似的,接收者注册338A和客户340B相关。
注册336,338A,338B分别包括特性337,339A,339B。可将发送者特性337和接收者特性339A,339B比较以确定是否存在匹配以控制通知路由。可用多种方式定义匹配,例如特性的子集是否相同。某些特性可被定义为匹配任何值。
例子3-另一个示范性系统概述
图3C显示另一个示范性系统350,通过该系统发送通知到客户。在示范性系统350中,一个或多个客户352,354使用一个或多个服务器356,358来访问一个或多个共享资源357,359(例如通过请求360,362)。此外,客户352可向通知服务器364注册为接收者以创建接收者注册366,服务器356可向通知服务器364注册为发送者,以创建发送者注册368。
在该例中,当具有发送者注册368的共享资源服务器356产生通知时,在通知服务器364的滤波器方法370确定是否存在接收该通知指示的客户注册。例如,如果滤波器370确定注册用于通知的客户和接收者注册366特性匹配,客户352具有用于在特定服务器356的共享资源的相关接收者注册366,并接收该通知指示。
在该例中,图3C显示的实体(例如,客户352,354,服务器356,358,以及通知服务器364)不是依赖地址空间处理的。例如,实体可以是运行在相同处理空间内的目标,运行在相同处理空间内的线程,或运行在网络内不同机器上不同处理空间内的分离的处理。本方案还可以包括共享和分离处理或地址空间的置换和组合。在任何例子中,共享资源,客户,或服务器可以是程序、处理、线程、组件(例如在目标模型中)、复合程序、复合组件(例如动态连接或封装)等。
例子4-示范性共享资源
在任何例子中,一个或多个服务器可以提供一个或多个客户到一个或多个共享资源的访问。示范性共享资源包括文件服务,邮件服务,打印服务或任何其他共享应用程序、程序或服务。
虽然例如打印机的物理装置有时被称为共享资源,通常存在合适的软件对应物(例如打印队列)。
在任何例子中,共享资源可以本地运行或在相关服务器外部运行。例如一个服务器可能容纳多个共享资源的运行。
例子5-打印方案中的示范性共享资源
在应用到任何例子的示范性打印机方案中,打印假脱机程序可用作运行在控制台会话(即“0”)内终端服务器环境中的通知服务器,共享资源可以是由通知服务器控制的打印机驱动程序。
在这样的方案中,打印假脱机程序/通知服务器为假脱机程序控制的组件,例如打印驱动器、打印处理器、或打印监测器提供发送通知到(并从那里接收应答)运行在不同会话和安全环境内的应用程序的方法。从而,运行在假脱机程序处理内的打印组件可以发送用户接口通知到会话或环境,正是从这里开始了打印作业。还可以采用该方案用于发送通知到任何注册的客户/组件,而不管该客户/组件在假脱机程序地址空间之内或之外。
在另一方案中,打印处理器手动双向组件可以是共享资源,并使用通知系统发送通知到客户组件,从而显示用户接口,告诉用户翻转页面。在另一个方案中,驱动器自动配置组建可以是共享资源,并使用通知系统更新驱动器满载(rich)状态。在另一个方案中,传真组件可以是共享资源,并使用通知系统发送接收到传真的通知。
例子6-示范性接收者和发送者特性
接收者和发送者特性可采取多种形式。在一个实施方案中,至少一个识别环境特性和通知有关。和通知相关的识别环境特性(例如通过注册)然后可以和那些用于潜在接收者(如果存在)(例如那些和用于接收者的注册相关的)的特性比较,以寻找匹配。
识别环境特性可包括用户识别符,安全环境识别符(例如安全id或“SID”),会话识别符(例如终端服务器会话识别或快速用户交换会话识别),或它们的组合。
终端会话识别符可包括一个或多个足以识别其他会话中的会话的识别符。在某些例子中,这样一个识别符可以区别多个终端服务器上的多个会话。
另一个示范性接收者和发送者特性可用于代替或添加到识别环境特性,包括通知类型(例如全球唯一识别符,消息格式识别符,类型版本编号,类型期满日期等),通信类型或协议类型(例如双向信道,单向信道,异步消息等),处理识别符,共享资源识别符,机器识别符,网络位置信息,另一个识别或网络拓扑识别符,其他消息路由或识别信息,或它们的组合。
通过指定适当特性,接收者可以规定他想要接收的通知。在某些例子中,可由发送者/接收者规定特性,但在另一些例子中(例如当指定用户识别符或会话时),可从发送者/接收者收集、或验证或收集、验证特性。
例子7-处理通知的方法的示范性概述
图4A显示用于实现发送通知的示范性方法400。在此显示的该方法和任何其他方法可用计算机可执行指令的软件实现。
在402,从共享资源接收通知。在422,根据并响应该通知,根据特性(例如发送者和接收者的)比较结果,发送至少通知的指示(例如前传通知)到适当的客户。可以在例如注册发送者(例如共享资源或服务器)和接收者(例如该服务器或共享资源的客户)期间确定这样的特性。
422的发送通知可以包括或和402(例如前传通知)的接收通知相同形式或不同形式。图4A所示动作可由通知服务器或其他软件执行。
例子8-涉及注册的示范性方法
图4B显示用于实现经注册发送通知的示范性方法405。在456,注册(例如向通知服务器)发送者(例如服务器或其他共享资源)用于发送作为注册请求结果的通知。在实际应用中,这样的注册请求由想要发送通知的实体(例如服务器或其他共享资源)发送,但可代表发送者执行注册(例如由用于共享资源的服务器)。
发送者注册可包括获得发送者特性,可在注册请求中提供(例如经过参数)或以某些其他方式(例如通过确定关于请求源的信息)确定发送者特性。发送者特性可以指在此描述的任何示范性发送者特性。
发送者注册可包括将发送者特性和发送者相连。在一个例子中,创建发送者注册组件,在容纳特性和与该发送者(例如经过识别符)相关的发送者识别符(例如共享资源识别符)的组件(例如作为数据结构)内包含该联系。
在458,接收者(例如客户)进行注册(例如注册到通知服务器上),用于接收作为注册请求结果的注册。在实际应用中,由接收者发送这样的注册请求,但也可代表接收者执行注册。
接收者注册可包括获得接收者特性,可在注册请求本身(例如经过参数)或以某些其他方式(例如通过确定关于请求源的信息)确定接收者特性。接收者特性可以指在此描述的任何示范性接收者特性。
接收者注册可包括将接收者特性和接收者相连。在一个例子中,创建接收者注册组件,在该组件(例如作为数据结构)中存储特性,并将该特性和接收者(例如通过识别符)相联系。
在460,接收到(例如从)用于共享资源的通知。在任何例子中,通知可包括由共享资源发送的目标的指示。该目标可代表通知并包括用于通知的数据。
响应接收到通知,该方法在466比较发送者特性(例如由共享资源发送通知注册)和注册的接收者特性。在468,至少发送(例如前传该通知)该通知的一个指示到,如果有,一个或多个具有和注册发送者特性匹配的注册接收者特性的接收者(例如客户)。
某些具有特许权的客户(例如由管理员运行的组件)可以注册特定类型的通知,或注册发送到其他用户的通知。在此例子中,可以规定特性之间的匹配,从而适当的发送者特性(例如用户识别符)对于任何用于相同特性(例如任何用户)的任何值或特定值(例如特定用户)都是匹配的。
还可以允许具有特许权的用户创建注册,以使某些组件接收某种通知(例如,用于其他会话的通知),甚至客户组件自身没有此种通知的注册特性。
如果期望,可以关闭注册,或可以发送额外的通知。在474,关闭发送者注册。在478,关闭接收者注册。
虽然在附图中没有明确显示,在某些方案中,在接收不同请求之间,本方法可在等待状态中。如果期望,动作的顺序(例如456/478和474/478)可以重新排列或是相反的。从而可以支持异步操作。
例子9-在打印方案中涉及注册的示范性方法
图4b显示的方法可以用在不同的打印方案中。在一个方案中,当运行在客户组件安全环境中时,客户组件注册由打印驱动器组件创建的通知。在另一个方案中,客户组件注册由运行在某个终端会话(例如和客户的终端会话相同的会话)中的打印监测器组件创建的通知。在另一个方案中,客户组件注册某种通知类型的假脱机程序通知。
这样,可为客户提供期望的通知。客户可运行在作为打印服务器的相同机器上或不同机器上。客户机器可以是终端服务器,在此用户远程连接到终端服务器会话。
例子10-示范性客户注册和通知方法
图5显示由注册接收者特性用于从通知服务器接收通知的客户程序实施的示范性方法500。在一个方案中,客户和运行在终端服务器内的会话相联系。在另一个方案中,客户和多个用户(例如用户状态)之一相联系,其中这些用户可以在计算机环境的登录和注销之间切换。
在502,客户向通知服务器注册一个或多个接收者特性。接收者特性可从客户经参数或其他方式(例如通过确定客户正运行何种会话)获得。如上所述,代表管理员运行的组件可具有额外的功能。然后客户可以继续其他处理任务,直至从通知服务器接收到匹配注册特性的通知。
在504,客户接收到通知。这样的一个通知可根据客户注册特性和与该通知相关的特性(例如,注册通知的发送者)之间的匹配被前传到客户来发起。
在506,当接收到通知时,客户处理该通知。在该例中,客户组件产生用于显示的用户接口图像(例如对话框或某些其他图形用户接口元素)。例如,用户接口图像可指示共享资源(例如给用户呈现错误条件以校正错误)的条件。但是,通过指定适当的功能,其他处理是可能的。
在一个方案中,位于接收者特性内或位于通知目标自身内具有通知类型识别符(例如全球单独识别符)的客户组件标识适当的用户接口。在涉及运行在终端服务器会话内的客户的例子中,可在远程终端呈现产生的用户接口。
可以执行接收504和处理506的多个重复操作。如果期望,并且没有来自通知服务器的更进一步的通知,客户可以请求通知服务器在512关闭注册接收者特性。可通过重新注册接收到额外的通知。在一个方案中,客户处理其他计算任务,组件的生命周期不是由客户多长时间注册以从任何一个共享资源接收通知来限定的。
例子11-示范性共享资源注册和通知方法
图6显示由共享资源实现的用于注册发送通知的发送者特性的示范性方法600。在一个方案中,共享资源是运行在打印假脱机程序的打印组件。在另一个方案中,假脱机程序是控制打印组件共享资源的通知服务器。在另一个方案中,共享资源是运行在由若干用户共享的计算机上的打印驱动器,用户可在登录和注销的用户状态之间切换。共享资源通常提供资源给多个注册来自通知服务器的通知的请求客户。
在602,共享资源向通知服务器注册一个或多个发送者特性。发送者特性可从共享资源(例如通过参数)或其他方式获得(例如通过确定共享资源正运行那个会话)。
在604,共享资源发送通知到通知服务器。前传通知到一个或多个具有适当注册特性的客户可以结束这样的通知。可经发送604的重复操作发送多于一个的通知。
如果期望,并且没有要发送的进一步的通知,该方法在610关闭向通知服务器的注册。可通过重新注册发送额外的通知。
例子12-获得发送者/接收者特性的示范性技术
在任何例子中,存储用于注册的发送者/接收者特性可以多种方式获得。例如,可将特性作为参数在注册接收者或发送者的呼叫中传送。
然而,在某些例子中,从不是呼叫客户的源获得特性可能是有利的。例如,可从关于来自客户(例如,注册接收者或发送者的呼叫)或客户主叫用户(例如注册主叫用户)的呼叫信息中获得该信息。还可从系统服务(例如安全或RPC服务)中收集这样的信息。例如,在识别环境特性的例子中,也可以获得这样的特性。
在会话识别符的例子中,呼叫通知服务(例如通知服务器)的客户可以指定他希望注册用于和他运行的相同会话的通知。可通过获得关于注册呼叫或注册主叫用户(例如来自RPC子系统)的信息确定该会话。用户识别符或安全环境也可使用类似方法。
当用于请求服务的呼叫被注册发送者(例如共享资源或服务器控制的共享资源)接收时,可以存储(例如在存储器中)关于客户呼叫或呼叫客户的信息,以备稍后检索。例如,当共享资源随后期望注册为发送者时,它可以指定使用这样的存储特性。这样,共享资源可以指定它希望注册来发送通知到共享资源正在其上运行的相同会话。
还可以从其它源收集特性,例如安全环境。例如,安全环境可指示系统服务正执行哪个用户(例如服务正体现哪个用户)。
此外,从注册呼叫或注册主叫用户收集信息可以提供额外的安全,因为可将其用于确保主叫用户确实指定了他希望收听来自另一会话、用户或安全环境的通知。在某些例子中(例如对于和管理权相联系的呼叫),这样的方案是可以接受的,但在其他的中,允许这样的窃听可能是对安全和隐私不期望的违背。
例子13-具有注册的示范性系统概述
在图7显示示范通知系统700。在方案700中,一个或多个客户702,704使用一个或多个服务器706,708,其中该服务器提供一个或多个共享资源给客户。在该例中,多个客户702,704请求来自多个提供共享资源的服务器706,708的服务。此外,客户704经接收者注册716,718向通知服务器720注册它自己,服务器706经发送者注册722向通知服务器720注册自己,另一个服务器708经发送者注册724向通知服务器注册自己。在本方案中,当具有注册722的服务器706产生通知时,通知服务器720比较存储用于注册722的特性和存储用于注册718,716,726的特性,以确定是否可以发送该消息的指示到0个或多个客户。
在例子中,通知服务器720控制一个服务器706并支持具有相关注册724的远程服务器708。在另一个方案中,通知服务器控制多个服务器,支持多个远程服务器或控制并支持多个服务器。在本例中,客户704具有若干接收者注册716,718。这样的多个客户注册可用于(1)从相同服务器接收不同类型的通知,(2)从由相同服务器控制的多个不同共享服务接收多个不同通知,(3)从相同通知服务器控制的多个服务器接收通知,(4)从多个服务器控制的共享资源接收多个通知,或它们的组合。
虽然没有显示,服务器可以在相同通知服务器注册多个发送者注册,例如,发送不同通知类型的通知,或发送来自服务器控制的多个共享资源的通知。此外,服务器可在多个通知服务器(没有显示)注册为发送者,例如,当共享服务器为之提供资源的客户被期望在潜在的不同通知服务器注册为接收者时。
例子14-示范性终端服务器通知系统
另一个用于终端服务器环境中的示范性通知系统800显示在图8中。在系统800中,终端服务器814执行多个会话802,804,806以及控制服务器820(例如提供共享资源)的通知服务器822。通知服务器822可选的在终端服务器814之外执行。
当用户登录终端服务器启动的计算机时,开始用户会话。对该会话的处理执行和单独的会话识别符相关。特定会话识别符(即“0”)和控制台有关,用于控制台会话802的用户接口通常本地显示。某种会话(例如打印之类的系统服务)的处理执行和控制台相关,甚至代表另一个会话执行。
在该例中,远程用户从远程终端810通过网络816登录到终端服务器,并在分配了会话识别符“1”的会话804(例如处理)中完成了处理。另一个远程用户从远程终端812通过到终端服务器814的专用连接登录到终端服务器,并在分配有会话识别符“2”的会话806(例如处理)中完成处理。在此终端服务器方案中,在终端服务器814上执行的多个客户会话802,804,806访问818共享资源820。在该例中,共享资源820由通知服务器822控制。
会话802,804,806可创建接收者注册830来接收适当的通知(例如用于会话注册的通知)。当接收到创建注册的请求时,可以确定(例如,通过RPC子系统)来自请求发起方的会话。这样,可以防止会话注册来自其他会话(例如在其他会话上窃听)的通知,除非该注册是创建用于管理员的。同样,会话可以指定它希望接收用于相同用户的通知,而不考虑会话。再次的,可以确定和请求相关的用户,从而防止注册用于其他用户的通知,除非为管理员创建该注册。
随后,当会话处理访问服务器820,和服务器820相关的共享资源可能希望产生通知。可以预先创建或在发送通知时创建适当的发送者注册826。然后经注册826发送通知。
如果服务器820或共享资源和控制台802(例如它是系统服务)相关,可代表另一会话804,806启动它。当会话进行到服务器820的呼叫时,可以存储(例如在线程本地存储器中)和开始呼叫的会话相关的会话识别符。然后通过获得关于呼叫的信息来确定该会话。随后,当和服务器820相关的共享资源想要注册为发送者时,通过参考存储的识别符,将适当的会话识别符和该发送者注册相联系。这样,共享资源可以发送通知到启动它的会话,而不是发送到控制台。
当从任何一个用于服务器820的共享资源接收到通知时,通知服务器822比较在发送者注册826中用于共享资源820的注册特性和由会话向接收者注册830注册的特性,从而确定是否前传该通知的指示到具有匹配接收者特性的注册会话。例如,如果接收者注册表明期望和作为接收者的相同会话相关的通知,则发送此种通知。或者,如果接收者注册表明期望和作为接收者的相同用户相关的通知,则发送此种通知。
这允许多个客户会话共享共享资源,并当它产生通知时仍然接收通知,而不管共享资源正执行哪个会话。例如,会话804通过发送适当请求到服务器820提供的相关共享资源(例如用于外部资源的服务器),请求由外部资源828执行的任务。随后,发送消息到和会话804相关的用户接口810,请求共享资源而不是会话“0”控制台。
在某些例子中,这样的方法可以提供增强的安全性。例如,如果会话804的用户不希望其他人知道和外部资源828相关的活动,发送有关资源828的消息到控制台,用户接口808可以是安全或隐私必不可少的。进一步的,如果发送该消息到控制台而不是开始处理的用户,则控制台用户接口808的用户在某些例子中可被提供和处理相关的选项(例如取消或删除处理)。通过能呈现消息给开始处理的用户接口808,可以提供增强的安全性和隐私。
例子15-在打印环境中的示范性终端服务器通知系统
图8显示的示范性通知系统800可用于打印环境中,在终端服务器环境中路由和打印相关的消息到适当的用户或会话。
例如,当开始新会话804时,创建用于外壳(例如桌面)的接收者注册824,指示该外壳希望接收任何用于和打印(例如,通过指定指示打印通知的通知类型)相关的会话的消息。
随后,当开始打印(例如通过用户请求)时,激活打印服务器820并运行在会话0中。然而,激活打印服务代表不同的会话804,和激活会话804相关的识别符可以存储在存储器(例如线程本地存储器)中。
外部资源828可以是发送消息(例如无纸通知)到打印机服务820(例如包括打印驱动器)的打印机,从而指示打印机无纸。打印机服务820可创建发送者注册826,并发送和打印(例如通过指定指示打印通知的通知类型)相关的通知。该通知表明用于会话804的打印被启动了(例如通过检索存储的会话识别符)。该通知可包括图形消息的指示(例如,“打印机无纸”GUI),前传该通知到适当的接收者(例如用于启动打印的相同会话)。
然后会话处理通知,以发送适当的用户接口(例如对话框)到和请求共享资源(例如打印作业)的会话804而不是会话“0”控制台相关的用户接口810。在正确的会话用户接口上显示用户接口图像。
如果希望,可通过以下描述的特点实现双向通信。这样,用户可以选择选项,该选项可被传送回通知始发者820。
例子16-用于交换用户方案的示范性多会话通知系统
在图9中显示用在交换用户方案中的示范性通知系统900。在例子900中,计算机902执行当前会话904,并具有为其他会话906,908保存的状态。用户可以通过激活切换命令(例如通过指示光标或键盘动作)切换到另一个活动会话906,908。在实际应用中,每个会话都和不同用户名相关,但切换可在不注销当前用户下完成。
当计算机产生使用共享资源912,916的新的会话时,会话904,906,908创建适当的注册922以接收通知(例如和它的会话相关的)。如图所示,共享资源912,916对会话904,906,908可用。如果共享资源912,916希望发送通知到任何会话904,906,908之一(例如激活它的会话),共享资源912,916创建适当的发送者注册918,920。当共享资源产生消息时,通知服务器914确定共享资源918,920注册的特性是否和会话922(例如会话时别符是否匹配)注册的特性匹配。如果是,前传通知的指示(例如通知自身)到对应会话904,906,908。
例如,活动会话可请求访问共享数据库资源,然后变为无效的(例如,计算机902切换到另一用户)。数据库然后产生导致无效会话的用户接口通知消息的通知。在此事件中,通知服务器从注册特性确定该消息(例如通知)不应当被传递到当前活动会话,而应当传送到当前无效会话,并这样做。下次预定会话变为活动,并显示在活动显示910中,重新激活的会话显示该消息的指示。
例子17-示范性滤波器
图10显示示范性通知服务器1000。在该例中,客户(未示出)创建接收者注册1002以接收来自共享资源的通知,共享资源(未示出)创建发送者注册1004,以发送通知到注册接收者。在在此描述的任何例子中,当共享资源产生了通知时,可使用滤波器1006确定该通知是否匹配用于对应接收者注册的特性。滤波器考虑的特性可包括在此描述的任何接收者或发送者特性。
可用多种方式规定匹配。例如,如果特性的子集相同可以规定两个注册匹配。匹配可基于至少一个识别环境特性(例如注册是否具有相同特性)。在某些例子中,任何特性都可被考虑为匹配。例如,注册可表示前传在任何会话中用于特定用户的通知。在任何会话中用于该用户的注册在此情况下可被认为匹配。
在一个方案中,客户组件可指定他对所有通知类型感兴趣(例如通过指定用于接收者注册的“空”通知类型)。滤波器然后前传所有类型的通知到注册接收者。
此外,某些特性可以影响注册和相关通知的行为。例如,发送者注册特性(例如通知类型)可以表明接收者怎样处理接收的通知,并影响接收者怎样注册通知。例如,在注册期间,当建立接收者注册(例如通过和发送者注册协商何种类型的通知是可用或期望的)时,客户可使用此种信息。通信类型特性可以指示客户和共享资源之间的通信是双向的还是单向的。通知类型特性指示通知类型,是否期望共享资源的应答或指示二者。通知类型特性还可用于识别处理通知的逻辑。
在一个方案中,客户以客户安全环境识别符的形式注册接收者特性。可通过检查来自客户的呼叫(例如通过远程程序呼叫“RPC”子系统)来确定安全环境识别符。当共享资源接受来自客户的服务请求,共享资源可运行在客户的安全环境(例如经体现)中。当共享资源产生通知时,该通知和安全环境(例如安全环境识别符)相联系,在此环境中运行共享资源(例如通过包括消息中的识别符或当共享资源呼叫注册时确定该识别符)。在此方案中,因为共享资源的安全环境和请求服务的客户的安全环境匹配,前传通知的指示到客户。
客户可使用通知来产生代表通知的屏幕上的用户接口。在一个这样的例子中,客户使用包含在消息内的通知类型来识别显示正确消息的程序(例如通过指定动态链路库“DLL”)。代表通知的屏幕上的接口可在和客户相连的终端上显示,不管该终端是本地还是远程。
体现是线程在不同于拥有线程的处理的安全环境的线程安全环境中执行的能力。当运行在客户安全环境中时,服务器好像是客户。这允许相对于客户识别符执行存储检验。基于客户许可级别,使用客户识别符进行存取检验可使存取受限或扩展。
在另一个方案中,客户以客户安全环境和终端会话识别符的形式注册接收者特性。可根据来自客户(例如经过RPC子系统)的呼叫获得该特性。在这样的方案中,当共享资源接受来自客户的服务请求时,共享资源运行在客户的安全环境中。然而,分配的会话可能是控制台会话。从而,可存储呼叫客户的会话识别符以备后面检索。
随后,当共享资源产生通知时,通知消息和/或用于共享资源的发送者注册包括共享资源在其中运行的安全环境,以及请求共享资源的终端会话(例如终端会话代表共享资源正执行的)。因为共享资源的安全环境和存储用户共享资源的终端会话和注册接收者特性匹配,通知服务器滤波,导致前传该通知指示到客户。
例子18-示范性用户滤波
下面的例子显示在不同打印方案中的滤波,但该技术也可应用到其他方案中,在这些方案中,用于共享资源的通知是有用的。在图11中显示了示范通知系统1100。在该方案1100中,客户具有接收者注册1122,1124,接收来自共享资源的由打印假脱机服务器1102的通知服务器控制的打印组件形式(例如打印驱动器,端口监测器,语言监测器等)的通知。
在该例中,接收者注册1122,1124用用户识别符形式(显示为“Joe”和“Mary”,但可以是其他识别用户的形式)的识别环境识别符建立。用户Joe运行两个请求使假脱机服务器1102内组件1112,1114运行(例如在相同或不同时刻)的服务的终端会话。组建1112,1114模拟Joe,并和不同于“0”的会话联系,但因为它们由系统服务控制,它们运行在控制台会话(即“0”)。在该例中,当组件1112,1114期望发送通知时,它们创建适当的注册并发送通知。用于组件1112,1114之一或二者的通知被传送到和接收者注册1112相关的客户,因为该注册指定了用户Joe。
例子19-示范性安全环境滤波器
图12显示示范性通知系统1200。在此方案1200中,客户具有接收者注册1222,1224来接收来自共享资源的由打印假脱机服务器1202形式的通知服务器控制的打印组件形式(例如打印驱动器,端口监测器,语言监测器等)的通知。
在该例中,接收者注册1222,1224用安全识别符形式(例如SID,显示为“ABC”和“DEF”,但可以是识别安全环境的其他形式)的识别环境识别符建立,以指定要接收的用户特定安全环境的通知。两个终端会话在安全环境ABC下运行,两个会话都请求使假脱机程序服务器1202内组件1212,1214运行(例如在相同或不同时刻)的服务。组件1212,1214运行在安全环境ABC中,但和控制台会话(即“0”)相联系,因为它们由系统服务控制。
在该例中,当组件1212,1214想发送通知时,它们可以创建适当的注册并发送通知。用于组件1212,1214之一或二者的通知被传送到和接收者注册1212相关的客户,因为该注册指定了安全环境ABC。
例子20-示范会话滤波器
在图13中显示示范通知系统1300。在此方案中,客户具有接收者注册1322,1324来接收来自共享资源的由打印假脱机服务器1302形式的通知服务器控制的打印组件形式(例如打印驱动器,端口监测器,语言监测器等)的通知。
在该例中,接收者注册1322,1324用会话识别符形式(例如对于终端服务器,它显示为“1”和“2”,但可以是识别会话的其他形式,该会话指定要接收用于特定会话的通知)的识别环境识别符建立。两个组件1304,1312运行在假脱机1302内,组件运行在(例如同时或不同时刻)控制台会话下,因为它们和系统服务相关。然而,组件1304,1312代表不同会话运行(例如具有在除了假脱机程序1302正运行的外,相同或不同机器上呈现的用户接口),并且存储组件正为之运行的会话(例如如在此例子中描述的)。
在该例中,当组件1312,1314想发送通知时,它们可以创建适当的注册并发送通知。代表第一会话用于组件1312的通知被前传到和用于第一会话的注册1322相关的客户,代表第二会话用于组件1314的通知被前传到和用于第二会话的注册1324相关的客户,因为该注册指定了和通知相关的会话匹配。
例子21-注册混合特性滤波器
滤波器还可以指定多于一个的在此描述的示范性特性的任何组合。示范性通知系统1400在图14中显示。在该方案1400中,客户具有接收者注册1422,1424来接收来自共享资源的由打印假脱机服务器1402形式的通知服务器控制的打印组件形式(例如打印驱动器,端口监测器,语言监测器等)的通知。
在该例中,如果在会话1并且类型是“打印”,建立接收者注册1422以接收和用户Joe相关的通知。实际特性值(例如Joe,Mary,1和打印)可以是不同形式。两个组件1404,1412运行在假脱机程序1402中,组件在控制台会话下运行(例如在相同或不同的时间),因为它们和系统服务相关。然而,组件1404,1412代表不同会话运行,并存储组件为之运行的会话(例如,如在此描述的例子中的)。
在该例中,当组件1412,1414希望发送通知时,它们可以创建适当注册并发送通知。作为注册处理的一部分,作为通知自身的一部分,或经过某些其他机制,组件1412,1414可指定通知类型。在该例中,组件1412,1414都发送“打印”类型的通知。
用于组件1412的通知代表用户Joe并代表第一会话运行,并被前传到和用于第一会话的注册1422相关的客户,因为存在通知匹配。用于组件1414的通知代表用户Mary并代表第二会话运行,并被前传到和用于第二会话的注册1424相关的客户,因为存在通知匹配。如果发送不是“打印”类型的其他通知,不会将这些通知前传到注册1422,1424,因为不匹配。
在另一个没有显示的方案中,客户组件向多个滤波器注册接收者,共享资源向多个滤波器注册发送者。在这样的方案中,滤波器方法要求在前传通知之前多个特性匹配。例如,客户可以建立注册,从而仅仅那些具有以下匹配滤波器特定的通知被前传:会话识别符,安全环境识别符,计算机识别符以及通知类型。
例子22-管理员和特性滤波器
图15显示图14的示范性通知系统1400。然而,在该例中,具有管理员权限的用户创建了注册1526,该注册可以接收任何会话中用于任何用户的任何类型的注册。可选的,可以创建管理员注册(例如,接收用于特定用户、特定会话等的通知)。系统1400根据管理员的特许权允许管理员创建这样的注册。
系统1400如上所述进行处理,但还发送通知到和注册1526相关的客户。这样,管理员可以监测注册,而不考虑用户、安全环境或会话。
此外,允许管理员注册非管理客户以接收用于其他用户/会话的通知。
这样,产生用于通知的相关用户接口可被导向和终端会话相关的本地或远程机器,管理员在终端会话中注册以接收此类通知。
例子23-信道和独立生命周期
可使用称为“信道”的机制来容纳通知传送。如果期望,可以建立双向信道,从而在客户和共享资源之间可以实现双向通信。还可将信道实施为发送者注册的部分。还可以在发送者注册(例如发送者注册组件)上执行描述的信道特点。
共享资源组件可以打开信道组件,而不管是否存在接收者注册。在打开信道之后,共享资源可以经信道组件发送通知。如果没有注册接收者,信道组件接口仍会成功,但是呼叫输出(例如HRESULT)会指示没有接收通知的接收者。
例如,由假脱机程序加载的打印组件可向打印机或服务器(本地或远程)注册发送通知,而不管是否存在任何打开的信道。类似的,客户组件可向打印机或服务器(本地或远程)注册接收通知,而不管是否存在任何打开信道。一旦打开信道并发送通知,接收客户会接收到通知,对于双向通信,信道组件接口用于返回应答。因此,接收组件和信道组件的生命周期是独立的。
信道特点可被用作滤波处理(例如可建立信道发送特定类型的通知)的一部分。在双向方案中,滤波器可被用于指定发送者有兴趣接收的应答类型。
例子24-用于共享资源和接收者的接口
在图16中显示示范性通知系统1600。在该例子中,显示了控制共享资源1604的通知服务器1602。客户组件1606,1608以及共享资源1604基于注册在接收者和信道内的特性比较是匹配的,不论是在相同或不同机器上。
在一个方案中,客户组件请求来自服务器共享资源的服务,该服务器异步处理从客户接收的请求。客户组件1606,1608发送请求到服务器然后当服务器执行服务时并不等待。而是,客户组件1606注册可能稍后会从该服务器到来的通知。在一个例子中,客户组件1606注册包括接收者特性的接收者注册1610,1612。客户组件可在服务器本地运行或通过网络运行。在一个这样的方案中,通过运行时间环境建立通信1614,以支持工序间通信,不论是本地或在网络上(例如RPC,COM,DCOM等)。
客户组件可运行在共享资源的处理空间中或在另一个处理空间中。客户组件可运行在相同机器上或和共享资源不同的机器上。在一个这样的方案中,假脱机程序支持允许假脱机程序控制组件(例如打印处理器,驱动器,监测器等)的接口,以发送通知到运行在本地不同会话中的应用程序;在另一个方案中,组件可以发送通知到本地和远程客户。在一个这样的方案中,通知是基于打印处理的,意思是控制组件的假脱机程序可以请求发送通知到打开打印处理的会话。假脱机程序提供一组允许打印组件发送通知的接口,以及一组允许应用程序(例如会话,客户组件等)注册以接收通知的接口。
在此方案中,共享资源1604由(例如内部运行)通知服务器1602控制。当它想发送通知时,共享资源1604创建信道组件1616。当想要接收通知目标时,客户组件创建接收者注册1610,1612。共享资源1604保持打开的信道的逻辑列表1618以及注册用于接收来自共享资源的通知的接收者注册(某些时候称为“接收者组件”)的逻辑列表1620。在此例子中,在处理期间使用工序间通信1614发送通知数据。
接收者组件1612和信道组件1616明了和它们相关的通知类型,通信类型,用户识别符,会话识别符,以及机器识别符(例如注册接收者/发送者特性)。通知服务器1602实现信道和接收者组件之间特性的逻辑匹配,并仅发送数据到那些和信道特性匹配的接收者。
在此方案中,接收者组件提供通知服务器呼叫以传送通知数据的ICallBack接口1622。信道组件提供共享资源1604呼叫以发送通知数据的INotifyChannel接口1626。为支持双向通信,信道组件提供通知服务器呼叫以传送由接收者发回的通知数据的ICallBack接口1624。
在此方案中,在共享资源和客户组件之间发送的通知数据用通知类型识别。共享资源和客户组件之间的通信是单向的或双向的,由通信类型确定。
在此方案中,通知服务器知道共享资源和客户组件执行的安全环境。在这样的方案中,通知服务器知道终端会话识别符以及发送或注册以接收通知的用户模仿(impersonation)呼叫。在此方案中,在信道组件和接收者组件内存储该信息。
在特定方案中,通知服务器规定并实现一组允许客户组件注册和注销用于接收通知的接口。该注册和通知服务器内部组件相关,但客户组件可存在于网络上的任何地方。支持每个共享资源有多个注册。在这样的方案中,通知服务器支持一组允许共享资源发送通知数据的接口。通知服务器支持一组接口,客户组件在注册时执行并通告。这些接口由通知服务器调用以通过注册接收者传送通知数据到客户组件。对于双向通信,通知服务器通过接收者通知客户组件关于通知数据通过哪个信道组件到达的信息。在这样的方案中,客户组件经接收者发送应答通知到共享资源。
在一个这样的方案中,共享资源指定它需要和潜在接收者建立的通信类型,要发送的数据的通知类型,以及请求服务的接收者的期望安全环境。在此方案中,客户组件通过接收者组件指定,通信类型,通知类型,以及共享资源的安全环境。通知服务器和标准匹配,仅发送通知到那些满足此标准的接收者组件。
例子25-用于发送通知目标的接口
在图17中显示示范性通知系统1700。在此方案中,显示控制共享资源1704的通知服务器1702。在此方案中,客户程序1706和共享资源基于注册在接收者和信道组件内的特性比较相匹配。
例如,当信道1705注册时,它“通告”可用于注册的滤波器特性类型。当客户稍后注册接收者1710,1712时,在注册期间客户可以使用这些通告的滤波器特性。在一个例子中客户确定信道正通过该信道通告可用的滤波器特性(例如通知类型)。当由注册信道的共享资源1704发送此种类型的通知时,客户使用该“通告”滤波器特性以注册该类型通知。
在一个方案中,通知目标1714在共享资源1704和客户程序1706之间流动。通知目标通过INotifyChannel接口1708被传送到信道组件1705。通知服务器1702匹配信道组件1705的特性和接收者组件1712的特性,并前传通知目标1714到接收者组件1710。在下面的附图中的接收者组件1710,1712表示相同逻辑注册。虽然工序间通信,传送通知目标1714到接收者组件1712,可由客户程序1706访问接收者组件1712。在客户端,如果通信是双向的,为接收者提供信道组件1718的逻辑表现。
使用描述的接口,通知目标1714从共享资源被发送到客户程序1706。在一个方案中,通知服务器会以指针形式发送给它提供的任何内容到二进制目标(例如,二进制大目标或BLOB)。在此方案中,客户和共享资源的开发者可以预先同意通知目标的内容以及数据格式。该格式可由客户和共享资源根据全球唯一识别符确定。该全球识别符可以是用于注册和接收通知类型的滤波器特性。这样,通知服务器可发送数据,而不用知道(例如具有检查或识别逻辑)内容或格式,客户和共享资源开发者预先配置内容和格式。在这样的方案中,通知服务器被称为数据内容和格式不可知。
在一个方案中,假脱机程序不知道在接收者和信道之间发送的数据的类型。客户组件和共享资源规定通过信道发送数据的计划。在实际应用中,标记语言(例如XML)被用于规定数据计划,但假脱机程序无需确认数据的完整性,除了可能使用通知类型(例如GUID)进行滤波。这给了组件程序员(例如共享资源组件,接收者组件,信道组件以及客户组件)选择不同数据类型和格式的自由。在此方案中,通知数据被规定为BLOB,假脱机程序不对数据内容进行确认。为处理通知数据,可以激活适当的逻辑(例如和通知类型相关)。例如,通知类型和具有处理通知数据功能的代码库(例如DLL)相联系。
例子26-用于发送通知应答的接口
图18显示支持双向通信通知的示范性通知系统1800。如图所示,对于双向通信,客户程序1801经提供的逻辑信道组件1806发送应答通知到共享资源。信道组件调用逻辑接收者组件1808上的ICallBack接口,使得应答通知传送回通知服务器1802,其中接收者组件1810调用信道组件1812上的ICallBack接口,该接口传送应答通知1814到共享资源1816。在此方案中,客户程序1801发送应答通知目标1804到控制共享资源1816的通知服务器1802。
例子27-支持注册和通知的接口
示范性通知系统包括一组接口和类型。讨论的接口可在支持多种目标模型(例如遵守华盛顿Redmond微软公司支持的组件目标模型“COM”的目标)的环境中实施。在支持COM的环境中,讨论的接口可从IUnknown继承而得。然而,该技术也可应用到其他可能支持也可能不支持接口(例如任何C++或类似C++目标模型)的目标模型中。
在该例中,服务是通用术语,指的是由或者作为服务本身一部分(例如假脱机程序可执行为Spoolsv.exe)或者作为客户组建一部分或链接可执行(例如Winspool.drv)的假脱机程序实施的功能。打印组件指的是载入假脱机程序可执行内的组件,例如打印处理器,驱动器和监测器。接收客户是具有注册以接收打印通知的客户组件或假脱机程序终端组件。通知是通过打印组件和接收客户之间的通知信道发送的数据。信道组件是当它想发送通知时,由打印组件创建的组件。
如下表1所示,当共享资源请求通知服务器创建信道组件时,共享资源(例如诸如打印处理器,驱动器,监测器的打印组件)使用会话滤波器。因此,会话滤波器是打印组件和假脱机程序处理之间的示范接口。
  表1——会话滤波器
typedef enum{kAllNotification=0,kPerSessionFilter=1,kPerUserFilter=2,}ESessionFilter
在此方案中,参考表1,当在共享资源(例如打印组件)到通知服务器(例如假脱机程序)的接口呼叫内指定会话滤波器,请求创建信道组件时,在创建请求中给会话滤波器分配一个值。当共享资源设定会话滤波器的值为“1”(即ESessionFilter=1),当接收到通知时,假脱机程序发送通知到运行在作为打开打印处理的客户组件的相同会话和用户账户(或模仿相同用户账户)内的任何接收者。当共享资源设定会话滤波器值为“2”(即ESessionFilter=2),当接收到通知时,假脱机程序发送通知到作为打开打印处理的客户组件的运行在相同用户帐户内(或是模仿同一用户帐户)的任何接收者。当共享资源设定会话滤波器值为“0”(即ESessionFilter=0),当接收到通知时,假脱机程序发送通知到对接收来自打印组件或服务器的通知感兴趣(也就是所注册)的任何接收者。
在此方案中,参考表1,当由请求创建接收者组件的客户调用的接口内指定会话滤波器时,为创建请求内的会话滤波器分配一个值。如果客户组件设定会话滤波器的值为“1”(即ESessionFilter=1),当从会话“1”接收到通知时,假脱机程序发送通知到具有注册会话“1”的客户组件。当客户组件设定会话滤波器值为“2”(即ESessionFilter=2),当从共享资源接收到通知时,假脱机程序发送通知到运行在作为进行注册的客户组件的相同账户(或模仿相同账户)内的任何接收者。当客户组件设定会话滤波器值为“0”(即ESessionFilter=0),当接收到通知时,接收者接收发送到任何会话或接收者组件的通知。
在此方案中,管理员是具有用于指定打印组件的打印机管理权限(例如PRINTER_ADMIN_RIGHTS)的用户。这样,管理员可以发送通知到并从任何组件接收通知。然而,仍然实施通知类型滤波器。例如,当从会话“1”在注册具有kPerSessionFilter值的信道组件上发送通知时。根据kPerSessionFilter,否则通知应当被发送到会话“1”。然而,如果请求管理员运行在会话“2”,通知被发送到会话“2”,因为只要通知类型相同,则存在管理员接收。然而如果管理员设定通知类型为“空”,管理员会接收到通知,而不管通知类型是否匹配。
在此方案中,如表2所示,通过指定通信类型,打印组件指定是否期望来自接收者的应答通知。此外,通知类型可以指定当从多个客户发送回通知时,假脱机程序怎样处理此种情形。
  表2——通信类型
  Typedef enum{kBidirectional=1,//First response is handed to the//ICallback interface;//the client that first responded//will carry on the dialog.kUnidirectional=0,//No response is handed to the//Callback interface.}ECommunication
在此方案中,有两种通信类型:双向和单向。在单向例子中,接收客户不发回应答通知。然而,由于多个客户组件可以注册以接收来自信道组件的通知,可能存在这种情形,即经过信道组件发送若干应答到共享资源。
在此方案中,当多个客户组件注册以接收通知时,接收来自第一响应客户组件的应答。在正进行对话(例如,通知,应答,通知等)的情形中,假脱机程序会关闭其他信道,继续和第一客户的对话。在另一个方案中,支持和对各客户组件的对话。例如,通知服务器或信道组件可提供某种方式以同步多个对话/接收者。
例如,如果两个用户,Joe和管理员,注册接收基于Joe的用户帐户滤波器的通知,Joe和管理员都接收到一个通知,接收的第一应答通知会被前传给打印组件。
在此方案中,假脱机程序使用通知类型(例如GUID)来滤波接收者。此外,打印组件和/或客户组件使用通知测定通知目标(notification object)数据计划(data schema)的标识。
在此方案中,客户组件(例如打印组件)向通知服务器(例如假脱机程序)注册。当客户注册通知时,服务器侧接收者组件会维护具有关于客户组件,例如接收者特性的信息的内部表。如表3所示,响应注册请求,一个不透明的注册处理指针返回到客户组件。客户组件使用注册处理来注销通知。
  表3——注册处理
  typedef struct_HNOTIFY{//opaque}*HNOTIFY;
在此方案中,如表4所示,通知数据被处理为暴露INotifyDataObject接口的目标。通知服务器的客户组件和共享资源组件可以规定数据计划并发送和接收在规定计划中的数据。例如,假脱机程序的客户可以规定他们自己的数据计划并分配GUID给不同类型,以通知对给定通知系统采用哪一个,他们还可以来回发送任何数据类型。虽然通知服务器不必知道数据计划,可能要求大小以用于传送,通知类型(例如GUID)可能是接收者或发送者特性的一部分。例如,假脱机程序请求通知数据目标的BYTE*指针,数据长度以及通知类型。通知类型是GUID指针。
  表4——数据通知接口
  interface INotifyDataObject:IUnknown{typedef GUID*NotificationType;HRESULT AquireData([out]BYTE**,[in,out]ULONG*,[in,out]NotificationType*);HRESULT ReleaseData(VOID);};
在此方案中,打印组件将数据封装在INotifyDataObject内,接收客户调用AquireData以获得指向通知数据的raw指针,通知数据大小,以及通知类型。当接收客户使用完该数据时,接收客户调用ReleaseData。优选的,客户在调用接收者组件上的Release()之前执行INotifyDataObject调用ReleaseData()。在此方案中,AquireData调用递增目标的参考计数,ReleaseData递减目标的参考计数。
在此方案中,如表5所示,某些目标暴露ICallBack接口。
  表5——ICallBack接口
interface ICallback:IUnknown{HRESULT OnEventNotify([in]IAsynchNotification*pIAsyncNotification,[in]INotifyDataObject*pNotification);HRESULT ChannelClosed([in]IAsynchNotification*pIAsyncNotification,[in]INotifyDataObject*pNotification);};
由打印组件和接收应用程序提供暴露(expose)ICallBack接口的目标。对接收通知感兴趣的组件暴露ICallBack接口。从而,接收客户在注册时提供指针给ICallBack接口。该指针用于发送通知。此外,共享资源暴露指针给ICallBack接口,从而接收应答通知。
当从共享资源(例如打印组件)发送通知给客户程序时,该服务会调用在信道客户程序末端的OnEventNotify方法,以传送通知。当信道在一端关闭时,服务会调用在另一端的ChannelClosed方法,宣布信道关闭。关闭信道的原因可作为通知发送。如果共享资源或通知服务器关闭,服务会调用ChannelClosed,传送Notification_Died类型消息。
在此方案中,如表6所示,响应当打印组件调用CreateNotificationChannel时打开通知信道,服务在客户程序策和通知服务器侧都提供暴露IAsynchNotification接口的组件。
  表6——IAsynchNotification接口
interface IAsynchNotification:IUnknown{//Sends notification of a certain type.HRESULT SendNotification([in]INotifyDataObject*pNotification//Notification data.);//Closes the notification channel.HRESULT CloseChannel([in]INotifyDataObject*pNotification//Reason for closing);//Query notif.type that channel supports.HRESULT GetChannelNotificationType([out]INotifyDataObject**pNotificationType//Notification Channel type);};
IAsynchNotification接口标识一个信道,并可用于发送通知或关闭信道。发送者调用SendNotification来发送通知。可由打开信道并发送通知的打印组件或当希望发送回应答通知时的接收客户扮演发送者的角色。为关闭信道,发送者或接收者都可以调用CloseChannel。它们可传送含有关闭信道的原因的通知,或仅仅是空指针。如果信道创建者将通知类型和信道相联系,GetChannelNotificationType会将信道通知类型作为具有空数据的INotifyDataObject返回。
在此方案中,CreatePrintNotificationChannel由打印组件调用以创建通知信道。该信道可以是一个打印机处理或一个服务器处理。打印组件可以打开由假脱机程序加载的信道。例如,如果载入到假脱机程序中,驱动器(例如Winspool.drv)会显现此功能,从而允许打印驱动器打开信道。此外,在此方案中,假脱机程序库(例如Spoolss.lib)显现此功能,从而端口监测器和其他打印组件可以打开信道。因此,由假脱机服务器控制的组件,包括到假脱机程序库的链路,可以调用CreatePrintNotificationChannel。
在此方案中,如表7所示,CreatePrintNotificationChannel调用包括某些输入和输出。
  表7——CreatePrintNotificationChannel
HRESULT CreatePrintNotificationChannel([in]PCWSTR PrinterName,[in]NotificationType ChannelType,[in]ESessionFilter eSessionFilter,[in]ECommunication eCommunication,[in]ICallback*pCallback,[out]IAsynchNotification**pIAsyncNotification);
如表7所示,信道将和打开打印处理(例如打印机名称)的会话相联系。会话滤波器指定接收通知(例如eSessionFilter)的会话。信道通知类型指定支持的通知类型。通信滤波器指定该信道是单向/双向的。ICallback接口指定当来自其他信道末端的通知返回时调用哪里。如果主叫用户对响应不感兴趣,这可以是空。
该方法返回标识信道的IAsyncNotification目标,并将该目标用于发送通知和关闭信道。例如,为关闭信道,可以调用IAsyncNotification接口的CloseChannel方法。
在此方案中,如表8所示,RegisterForPrintNotification调用包括某些输入和输出。
  表8——RegisterForPrintNotification
HRESULT RegisterForPrintNotifications([in]PCWSTR PrinterName,[in]NotificationType NotifyType,[in]ESessionFilter eSessionFilter,[in]ECommunication eCommunication,[in]ICallback*pCallback,[out]HNOTIFY*phNotify);HRESULT UnRegisterForPrintNotifications([in]HNOTIFY hNotify);
RegisterForPrintNotification方法由接收客户调用,以注册用于接收通知。接收客户可在假脱机程序之内或在任何应用程序中。驱动器(例如Winspool.drv)会显现此功能,不管它是否被加载。假脱机程序库(例如Spoolss.lib)会显现此功能,从而端口监测器可以注册以用于通知。由假脱机程序控制的和假脱机程序库(例如Spoolss.lib)相连的组件可以调用RegisterForPrintNotification。如图所示,指定本地/远程打印机或服务器名称(例如打印处理)。通知类型表示要发送到接收者的通知的类型。会话滤波器表示要发送到接收者的会话通知。通信滤波器指定接收者是否对双/单向通信感兴趣。ICallback接口指定从哪里发送通知。本方法返回客户通过调用UnRegisterForPrintNotification使用来注销的不透明注册处理。该注册和进行注册呼叫的线程会话ID相关。在此方案中,假脱机程序会根据信道的会话滤波器和客户的注册会话及客户会话滤波器滤波接收客户。
例子28-示范性注册和通知服务器方法
图19显示用于根据通知服务器方法的发送通知和接收应答通知的示范性方法1900。在1902,该方法等待来自任何多个用户的请求。为避免等待,当请求时,通知服务器或示范方法1900可由运行时间环境例示。在实际应用中,等待不必是肯定动作(例如服务器无需执行等待指令)。描述的请求可以是在目标模型(例如COM,DCOM,JAVA,C++等)下的方法调用。
在1904从客户组件接收到注册接收者特性以接收通知的请求。在1906用于该请求的接收者特性(例如包含在内或可由之确定)和发送请求(例如经接收者注册)的客户组件相联系。在一个方案中,描述的联系包含在容纳接收特性和请求源的识别符的数据结构中。方法回到1908,等待下一请求1902。接收者特性指示至少在此描述的示范性特性之一。如果请求不是接收者注册请求,方法在1910继续。
在1910,从共享资源接收注册信道特性的请求。在1912,用于该请求的发送者特性(例如包含在内或可由之确定)和发送请求(即发送者注册)的共享资源相联系。在一个方案中,描述的联系包含在容纳接收特性和共享资源识别符的数据结构中。方法回到1908,等待下一请求1902。发送者特性指示至少在此描述的示范性特性之一。如果请求不是发送者注册请求,方法在1914继续。
在1914,从共享资源接收到通知(例如通知目标)。当该请求是通知时,在1916,方法比较发送通知的共享资源注册的发送者特性和注册接收者特性。如果比较是肯定的1916,前传通知到具有引起肯定比较的接收者特性的客户组件1918。在一个方案中,客户组件注册由同时运行在客户组件安全环境中的打印驱动器组件创建的通知。在另一个方案中,客户组件注册由运行在某个终端会话的打印监测器组件创建的通知。在另一个方案中,客户组件注册某种通知类型的所有假脱机程序通知。当肯定比较1916,通知被前传到具有对应肯定接收者特性的客户组件1918。如果没有肯定比较1918,方法返回1908,等待下一请求。然而,如果请求不是通知请求1914,方法在1920继续。
在1920,如果请求是来自客户组件发送应答通知的请求,返回应答通知到发送通知的共享资源1922,该应答是响应该通知的,然后方法返回1908,等待下一请求。然而,如果请求不是应答请求,方法在1924继续。
在1924,如果请求是来自客户组件关闭客户组件和接收者特性之间联系的请求,在1926关闭该联系,方法返回1908,等待下一请求1902。
在1928,如果请求是来自共享资源关闭共享资源和发送者特性之间的联系的请求,在1928关闭该联系,方法返回1908,等待下一请求1902。
该方法1900,和在此描述的其他任何方法类似,是分布的,并用在若干处理空间中。在这样的例子中,可在多个处理空间中执行本方法的动作。例如,通常在通知服务器空间接收通知,而通常在客户组件空间内接收应答通知。其他动作具有能在两个地址空间内执行的代码。例如,可在客户组件地址空间接收接收者注册请求,并部分在通知服务器空间内完成-假定工序间通信。
在实际应用中,比较动作(例如1904,1910等)不是必须执行。而是,可通过调用适当的可执行方法(例如适当接口的元函数)访问不同功能。
例子29-示范性客户注册和通知方法
图20显示了由客户程序和通知服务器相呼应处理同志逝世的示范性方法2000。在一个方案中,客户程序是运行在终端服务器内的会话。在另一个方案中,客户程序运行在多个用户状态之一,在单个计算机环境中,用户可以无需注销就在这些状态之间切换。客户程序通常是多个请求来自共享资源的服务的客户程序之一,并向通知服务器注册以接收从共享资源发起并传送到通知服务器的通知。
在2002,客户程序向通知服务器(例如经过接收者注册)注册为接收者。用于注册的接收者特性可包含在请求中或从请求确定。然后用户可选的继续处理其他任务,直至从通知服务器接收到和注册特性匹配的通知。例如,在一个方案中,客户程序是执行应用程序(例如字处理,电子数据表处理等)的终端会话,用于用户在远程终端登录。在请求打印服务之后,会话继续处理由远程终端用户产生的进一步的编辑请求。从而,终端会话在请求打印服务之后继续处理。
当接收到通知时,客户程序在2008处理(例如产生用于它的用户接口图像)通知。然后客户继续其他处理。在一个方案中,通知服务器响应确定通知和接收者特性匹配而发送通知。例如,在一个方案中,客户程序是终端会话,通知是关于打印组件的状态改变。在一个方案中,客户是终端会话,产生用于在远程终端站上显示通知的控制逻辑,并将其发送到远程终端。在另一个方案中,用户接口由具有通知类型识别符(例如全球唯一识别符)的客户程序识别,该通知类型识别符位于接收者特性内或位于通知目标自身内。在一个方案中,当客户是运行在终端服务服务器上的终端会话时,在远程终端上显示产生的用户接口。
在2012,客户确定发送应答通知到在2014的通知服务器。前传应答到共享资源。例如,在打印方案中,这样的应答可以指示要取消或重新路由某个作业。客户然后返回到其他处理并接收其他通知。
如果期望,注册客户可保持注册以接收多个通知。可以为某些但不是其他发送应答。
在2016,因为客户不再对接收额外的通知(例如客户正终止)感兴趣,关闭注册接收者。
显示的不同功能可通过调用适当可执行方法(例如适当接口的元函数)访问。
例子30-示范性共享资源注册和通知方法
图21显示由发送通知的共享资源执行的示范方法2100。在一个方案中,共享资源是运行在打印假脱机程序中的打印组件。在另一个方案中,假脱机程序是控制打印组件共享资源的通知服务器。在另一个方案中,共享资源是运行在由若干用户共享的计算机上的打印驱动器,用户可以在每次不登录/注销的情况下改变用户状态。通知通常被路由到请求来自共享资源的服务并注册用于来自通知服务器的通知的多个客户之一。
在2102,向通知服务器注册发送者特性。发送者特性可在注册请求中,或从注册请求中确定,并至少指示在此描述的示范发送者特性之一。共享资源然后可以继续其他处理。
在某些点(例如,当接收到打印机无纸的指示时),在2108发送通知到通知服务器。共享资源然后继续其他处理。
当接收到应答(如果有)时,在2112处理应答。在某些情况中,不期望应答,无需执行应答处理。共享资源然后继续其他处理。
在2114,关闭信道(例如关闭注册)。如果要进一步处理通知则无需关闭信道。
例子31-示范性打印机方案中的技术应用
在此描述的任何技术都可应用到打印方案中。在这样的方案中,打印机提供返回到用户的通知,指示打印机的状态通常是有帮助的。可通过在此描述的技术获得这样的通知。例如,打印组件可以发送通知。
这样的通知可以指示打印机的条件(例如打印机状态,错误消息等)。例如,无纸或手动送纸消息可经通知发送。还可以发送任意数目的其他和打印相关的消息。
如果采用双向通信,用户可以发回通知,指示采取的动作(例如取消或重新安排打印作业)。
例子32-示范性打印共享资源系统
图22是具有两个机器的示范系统2200:打印服务器2218和另一个机器2220,每个都显示终端会话用户接口。打印服务器2218包括打印资源2202,运行用于终端会话软件2204,并发送通知到在其它计算机2220上的注册客户应用程序2210。在此例子中,由打印假脱机程序2208使用通知系统,从而当打印提交的作业时发送通知到接收应用程序。在此方案中,三个打印应用程序2210,2212,2214运行,模仿领域外来用户,另一个会话2216监测打印装置状态通知。
运行为外来用户的应用程序2210,2212,2214注册以接收通知,当装置完成打印时。每个应用程序2210,2212,2214都和不同的会话相联系。该系统服务(例如打印资源2202和假脱机程序2208)和控制台会话相联系。
在该例中,甚至应用程序模仿相同用户运行,仅发送通知到发送文件的应用程序。在此例子中,使用会话滤波器来发送通知到提交作业的注册会话2210。同样,仅发送“无纸”通知2222到对装置状态通知感兴趣的注册应用程序。
例子33-在终端服务器环境的示范实施
由独立硬件厂商和独立软件厂商提供的组件可以使用在此描述的技术,从而在和请求打印或其他共享资源服务的客户组件相关的终端服务器会话中显示用户接口。这样,用户接口可在发起请求的位置(例如远程会话)显示,而不是控制台会话。
例如,打印机制造商或打印机开发商可以在打印驱动器中包括产生适当通知并和用户进行双向对话的功能。在终端服务器或快速用户交换环境中,可在适当会话或如所期望的为适当用户显示该消息的用户接口。
例子34-应答的示范使用
应答通知机制可以和在此描述的任何例子结合使用,以传送用户动作到共享资源。例如,当接收到通知时,客户可以在显示器上发送该通知的用户接口图像。用户接口图像可包括交互用户接口元素(例如按钮)。当激活用户接口元素时,可发送应答通知到共享资源。
例如,在打印方案中,用户可指示要取消、重试、或重新路由打印作业。在重新路由打印作业的例子中,可通过将目的地包括在应答通知中传送不同的目的地。
这样的方案可在终端服务器环境中得到支持。在这样的例子中,可在位于远程终端的远程显示器上呈现用户接口图像。
例子35-计算环境
图23以及下面的讨论是为了提供用于实施方案的适当计算环境的简洁的,一般的说明。虽然本发明在可运行在计算机和/或网络装置上的计算机程序的计算机可执行指令的一般环境中进行说明,本领域技术人员应当认识到本发明还可用在其他程序模块的结合中。通常,程序模块包括例程、程序、组件、数据结构等,可以执行特定任务或实现特定抽象数据类型。此外,本领域技术人员会欣赏,本发明可在其他计算机系统配置中实现,包括多处理器系统,基于微处理器的电子设备,迷你计算机,大型机,网络设备,无线装置等。扩展可在网络计算环境或独立的计算机上实现。
参考图23,用于实施方案的示范系统包括通用计算机2320(例如个人计算机,膝上型电脑,服务器,大型机,以及其他多种计算机),该计算机包括处理单元2321,系统存储器2322,系统总线2323,将包括系统存储器的不同系统组件连接到处理单元2321。处理单元是任何多种的商业可获得处理器,包括Intel x86,Pentium以及来自Intel和其他公司的可兼容微处理器,包括Cyrix,AMD以及Nexgen;来自Digital的Alpha;来自MIPS技术,NEC,IDT,Siemens的MIPS;以及来自IBM和Motorola的PowerPC。双微处理器和其他多个处理器结构也可用作处理单元2321。
系统总线可以是任何一个若干类型的总线结构,包括存储总线或存储控制器,外围总线,以及使用任何多种通用总线结构,例举其中一些,例如PCI,VESA,AGP,Microchannel,ISA和EISA的本地总线。系统存储器包括只读存储器(ROM)2324和随机访问存储器(RAM)2325。基本输入/输出系统(BIOS),包含有助于在计算机2320内部元件之间传送信息的基本例程,例如在启动期间,存储在ROM2324中。
计算机2320进一步包括硬盘驱动2327,磁盘驱动2328,例如从可拆卸盘2329读取或写入,光盘驱动2330,例如从CD-ROM盘2331读取或从其他光介质中读取或写入。硬盘驱动2327,磁盘驱动2328,以及光盘驱动2330分别通过硬盘驱动接口2332,磁盘驱动接口2333,以及光盘驱动接口2334连接到系统总线2323。驱动和他们相关的计算机可读介质为计算机2320提供数据、数据结构、计算机可执行指令等的非易失性存储。虽然以上计算机可读介质的描述指的是硬盘,可拆卸磁盘和CD,本领域技术人员会理解其他类型的计算机可读介质,例如磁带,闪存卡,数字视频盘,Bernoulli盒式磁带等也可用在示范操作环境中。
在驱动和RAM2325中存储除实施方案2356外的多个程序模块,包括操作系统2335,一个或多个应用程序2336,其他程序模块2337,程序数据2338。
用户可以通过键盘2340和指向装置,例如书表2342输入命令和信息到计算机2320中。这些和其他输入装置通常通过连接到系统总线的串行端口接口2346连接到处理单元2321,但也可以通过其它接口连接,例如并行端口,游戏端口或通用串行总线(USB)。监测器2347或其他类型显示设备也通过接口,例如视频适配器2348连接到系统总线。除监测器外,计算机通常包括其他外部输出装置(未示出),例如扬声器和打印机。
计算机2320使用到一个或多个远程计算机,例如远程计算机2349的逻辑连接操作在联网环境中。远程计算机2349可以是服务器,路由器,同样的装置或其他通用网络节点,通常包括许多或所有相关计算机2320描述的元件,虽然仅仅显示了存储装置2350。描述的逻辑连接包括局域网(LAN)2351和广域网(WAN)2352。这样的联网环境在办公室、企业范围计算机网络、内部网络以及互联网中是常见的。
当用在LAN联网环境中,计算机2320通过网络接口或适配器2353被连接到局域网络2351。当用在WAN联网环境中,计算机2320通常包括调制解调器2354或其他用于在广域网络2352,例如互联网上建立通信(例如经过LAN2351和网关或代理服务器2355)的装置。调制解调器2354可以是内部或外部的,通过串行端口接口2346连接到系统总线2323。在联网环境中,相关计算机2320或它的部分描述的程序模块可存储在远程存储器存储装置中。应当理解,显示的网络连接是示范性的,可以使用在计算机之间建立通信链路的其他方法。
可选方案
参考图示的实施例描述和说明了本发明的原理,应当认识到,可在配置和细节上修改在此说明的实施例,而不背离该原理。应当理解,在此描述的程序、处理或方法不是相关的,或限于某种特定类型的计算机设备,除非明确指出。不同类型的通用或专用计算机设备可用于或根据在此的教导执行操作。以软件显示的说明实施例的元件可用硬件实施,反过来也一样。
来自一个例子的技术可结合到任何其他的例子中。某些例子说明“前传”通知。这样的例子可以包括发送至少通知的指示,前传(例如中继)通知自身,或它们的某些组合。
由于本发明原理可应用的多种可能实施例,应当认识到详细的实施仅仅是说明性的,不应当用于限制本发明的范围。而是,我们要求所有可能落入在随后的权利要求极其等同物的范围和精神中的本发明的实施例。

Claims (59)

1.一种用于处理由打印机生成的通知的方法,包括:
在服务器端接收来自一客户的请求,所述请求要求注册该客户以接收由共享资源产生的通知,所述共享资源包括被多个客户共享的打印机,所述请求包括关于客户和共享资源之间的通信是双向的还是单向的指示,所述请求还包括客户的识别环境特性,所述客户的识别环境特性包括安全识别符,用于确定客户是否可被注册;
在服务器端接收由所述打印机产生的通知,其中该通知指示打印机的状态,并且和一个或多个发送者特性相联系,发送者特性包括识别环境特性;以及
根据至少发送者特性的识别环境特性和客户的识别环境特性之间的比较由服务器发送所述通知的至少一个指示到所述客户。
2.权利要求1的方法,其中:
资源由多个在终端服务器环境中的多个会话共享;
客户负责请求共享资源;以及
发送者特性的识别环境特性指示用于负责请求共享资源的客户的会话识别符。
3.权利要求1的方法,其中
资源由在快速用户交换环境中的多个用户共享;以及
发送者的识别环境特性指示多个用户中的哪一个正访问共享资源。
4.权利要求1的方法,其中识别环境特性包括用户识别符。
5.权利要求1的方法,其中识别环境特性包括安全环境识别符。
6.权利要求5的方法,其中识别环境特性包括会话识别符。
7.权利要求1的方法,其中发送者特性进一步包括通信类型、通知类型以及机器识别符的至少其中之一。
8.权利要求1的方法,其中其中识别环境特性包括会话识别符和安全环境识别符。
9.权利要求1的方法,其中通知包括用于指示共享资源状态条件的用户接口图像的数据。
10.权利要求9的方法,其中用户接口图像包括交互用户接口元件,该方法进一步包括:
当接收到交互用户接口元件激活的指示时,发送应答通知到共享资源。
11.权利要求9的方法,其中状态条件和打印机条件有关。
12.权利要求9的方法,其中状态条件和无纸消息有关。
13.权利要求9的方法,其中状态条件包括错误条件。
14.权利要求9的方法,其中状态条件包括打印机纸资源的状态。
15.权利要求1的方法,其中通知包括指示打印用于共享资源的特定数据的数据。
16.权利要求1的方法,进一步包括:
当客户接收到通知时,产生通知的用户接口图像。
17.权利要求1的方法,进一步包括:
当客户接收到通知时,产生通知的用户接口图像,其中用户接口图像包括交互用户接口元件;以及
当接收到用户选择了交互用户接口元件的指示时,发送应答通知到共享资源。
18.权利要求1的方法,其中共享资源是和打印相关的组件。
19.权利要求1的方法,进一步包括:
获取用于客户的一个或多个接收者特性,其中接收者特性包括所述客户的识别环境特性;以及
将客户和接收者特性相联系。
20.权利要求19的方法,其中用于客户的识别环境特性从包含在来自客户的远程进程呼叫内的信息获得。
21.权利要求19的方法,进一步包括:
获取用于共享资源的一个或多个发送者特性;以及
将共享资源和发送者特性相联系。
22.权利要求21的方法,其中转发应答是至少基于发送者特性和接收者特性的比较的。
23.权利要求19的方法,进一步包括:
从客户接收应答通知;以及
转发应答通知到共享资源。
24.权利要求8的方法,进一步包括:
由在的进程间呼叫建立期间从客户获得的信息来确定会话识别符。
25.权利要求24的方法,其中共享资源和不是客户的会话的不同的会话相关,但发送者特性指示从进程间呼叫建立确定的会话识别符。
26.权利要求19的方法,其中接收者特性进一步包括通信类型,通知类型,会话识别符和机器识别符的至少其中之一。
27.权利要求19的方法,其中接收者特性进一步包括通信类型,通知类型和机器识别符的至少其中之一。
28.权利要求19的方法,其中在发送者特性之前接收接收者特性。
29.权利要求19的方法,其中在接收者特性之前接收发送者特性。
30.权利要求19的方法,进一步包括:
从第二客户接收包括识别环境特性的第二接收者特性;
将第二客户和第二接收者特性相联系;
根据第二接收者特性和发送者特性的比较,转发通知到第二客户。
31.权利要求19的方法,进一步包括:
当接收到通知时,发送该通知的用户接口图像到位于远程终端的显示器。
32.权利要求19的方法,其中:
由具有管理权限的客户指定接收者特性;以及
接收者特性指示将要接收不是和该客户相关的用于用户的通知。
33.权利要求19的方法,其中:
由具有管理权限的客户指定接收者特性;以及
接收者特性指示将要转发用于任何用户的特定通知类型的通知到该客户组件。
34.权利要求19的方法,其中:
共享资源是和打印机通信以处理打印作业的服务器打印系统组件;
通知指示打印机无纸;以及
接收者特性指示请求打印作业的客户的会话识别符和安全环境。
35.权利要求19的方法,其中:
共享资源是和打印机通信以处理打印作业的可拆卸组件;
通知指示打印机无纸;以及
接收者特性指示请求打印作业的客户的会话识别符和安全环境。
36.权利要求19的方法,其中:
共享资源是和打印机通信以处理打印作业的打印机驱动;
通知指示打印机无纸;以及
接收者特性指示请求打印作业的客户的会话识别符和安全环境。
37.权利要求19的方法,其中:
所述客户是多个客户之一,从所述多个客户接收接收者特性,客户和各个接收者特性相关;
所述发送还包括:将发送者特性的识别环境特性和从多个客户的每个接收的各接受者特性相比较,以及
根据比较,转发通知到包括所述客户在内的多个客户的子集。
38.权利要求37的方法,其中:
共享资源是运行在和控制台相关的会话中的假脱机处理内的打印组件;
假脱机处理获得发送者特性并将其和打印组件相联系,假脱机处理获得接收者特性并将其和客户相联系;
打印组件接收来自打印机的指示打印机状态改变的消息;
打印组件响应该消息产生通知;以及
假脱机程序执行比较并转发通知。
39.权利要求37的方法,其中:
多个客户和运行在终端服务器上的终端会话相关;以及
该子集是运行在特定会话中的单个用户。
40.权利要求37的方法,其中共享资源是数据库,多个客户是访问数据库的线程。
41.如权利要求1所述的方法,其中所述方法在终端服务器环境中实施,所述客户的注册通过以下方式进行:
接收来自运行在终端会话内的客户的请求,以注册和该终端会话相关的通知;
接收来自运行在控制台会话中的共享资源的请求,以发送通知到共享资源正代表其运行的会话;以及
转发通知到在终端会话中运行的客户。
42.权利要求41的方法,其中该通知指示打印条件。
43.权利要求41的方法,其中该通知包括通知数据,该方法进一步包括:
在客户端响应接收到通知,根据通知数据产生用于该通知的用户接口图像。
44.权利要求41的方法,其中转发是基于注册用于客户的终端会话识别符和注册用于共享资源的终端会话识别符之间的比较的。
45.权利要求1所述的方法,还包括:
从会话发送服务请求和安全环境识别符以及对应于该会话的会话识别符到共享资源;
在会话的模仿安全环境内运行共享资源;
由会话在通知接口注册包括安全环境识别符和会话识别符的接收者特性;以及
由会话通过通知接口接收指示服务请求状态的通知。
46.权利要求1的方法,其中通过以下步骤创建发送者注册:
通过注册接口接收注册发送者的请求;
将包括识别环境特性的发送者特性和发送者注册相联系;
响应注册该发送者的请求,为发送者注册上的接口提供参考。
47.权利要求1的方法,其中通过以下步骤创建接收者注册:
通过注册接口接收注册接收者的请求,其中该请求包括回呼功能;
将包括安全环境特性的接收者特性和接收者注册相联系;
响应注册该接收者的请求,为接收者注册上的接口提供参考。
48.权利要求1的方法,其中:
经发送者注册上的接口接收通知目标;以及
当检测到接收者特性和发送者特性之间的匹配时,经回呼功能转发通知目标。
49.权利要求48的方法,进一步包括:
经接收者注册上的接口接收应答通知目标;以及
转发应答通知目标到发送者。
50.权利要求1的方法,其中,采用一种计算机可执行应用程序接口以用于经信道发送通知,该应用程序接口包括:
用于经信道发送通知的元函数,其中用于发送通知的元函数接受到包含通知的通知数据的目标的指针;
用于关闭通知信道的元函数,其中用于关闭通知信道的元函数接受到包含数据的目标的指针,所述数据指示关闭通知信道的原因;以及
用于查询信道支持的通知类型的元函数,其中用于查询信道支持的通知类型的元函数接受一个指针,该指针指示表示支持通知类型的目标将要被存储在哪里。
51.一种在终端服务器环境中在多个会话之间路由和打印机有关的通知的方法,该方法包括:
当在终端服务器环境中开始新会话时,创建用于该会话的接收者注册,其指示该会话的会话识别符,接收者注册还指示客户和共享资源之间的通信是双向的还是单向,并指示安全识别符;
为初始会话启动打印作业,该初始会话导致打印组件激活;
确定负责激活打印组件的会话的会话识别符;
当产生打印机相关的通知时,创建用于产生打印机相关通知的打印组件的发送者注册,其中打印组件和控制台会话相关,但发送者注册指示负责激活打印组件的初始会话;
经发送者注册发送通知;
比较接收者注册的会话识别符和发送者注册的会话识别符;
当发现接收者注册的会话识别符和发送者注册的会话识别符之间匹配时,转发通知到和该会话识别符相关的会话,其中该会话是初始会话;以及
当接收到转发的通知时,呈现一个用户接口,该用户接口指示与初始会话的打印机操作有关的消息。
52.一种用于处理通知的基于计算机的服务系统,该服务系统包括:
用于创建一个或多个发送者注册的装置,其中发送者注册包括至少一个识别环境特性;
用于创建一个或多个接收者注册的装置,其中接收者注册包括至少一个识别环境特性和一个用于在发送者和接收者之间传达通知的通信类型的通知,所述通信类型指示客户和共享资源之间的通信是单向还是双向,所述识别环境特性还包括安全识别符;以及
响应从发送者注册之一接收到通知,可用于转发通知到具有和与该通知相关的发送者注册的特性匹配的特性的接收者的装置。
53.权利要求52的服务系统,其中用于创建接收者特性的装置可用于在创建接收者注册期间接收要发送用于相同会话的通知到接收者注册的指示。
54.权利要求53的服务系统,其中系统服务可用于从源而非客户获得和请求接收者注册的客户相关的会话识别符。
55.权利要求52的服务系统,其中用于创建接收者特性的装置可用于在创建接收者注册期间接收要发送用于相同用户的通知到接收者注册的指示。
56.权利要求52的服务系统,其中识别环境特性包括会话识别符。
57.权利要求52的服务系统,其中识别环境特性包括用户识别符。
58.权利要求57的服务系统,其中响应接收通知的装置可用于处理和接收者注册相关的应答。
59.权利要求57的服务系统,其中至少发送者注册之一包括指示和发送者注册相关的通知的数据格式的通知类型。
CN2004100685005A 2003-03-27 2004-02-20 用于共享资源的通知的系统和方法 Expired - Fee Related CN1591341B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/402,104 US7529823B2 (en) 2003-03-27 2003-03-27 Notifications for shared resources
US10/402,104 2003-03-27

Publications (2)

Publication Number Publication Date
CN1591341A CN1591341A (zh) 2005-03-09
CN1591341B true CN1591341B (zh) 2010-05-26

Family

ID=32825040

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004100685005A Expired - Fee Related CN1591341B (zh) 2003-03-27 2004-02-20 用于共享资源的通知的系统和方法

Country Status (7)

Country Link
US (1) US7529823B2 (zh)
EP (1) EP1463268B1 (zh)
JP (1) JP4638676B2 (zh)
KR (1) KR101066682B1 (zh)
CN (1) CN1591341B (zh)
AT (1) ATE364956T1 (zh)
DE (1) DE602004006902T2 (zh)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529823B2 (en) 2003-03-27 2009-05-05 Microsoft Corporation Notifications for shared resources
US7508532B2 (en) * 2003-05-20 2009-03-24 Microsoft Corporation Method and system for sandboxing printer drivers
US7689986B2 (en) * 2003-10-21 2010-03-30 Gemstone Systems, Inc. Shared listeners in shared object space
US20050210129A1 (en) * 2004-03-19 2005-09-22 Microsoft Corporation Asynchronous channel for displaying user interface elements
US8115946B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and sytems for imaging device job definition
US8230328B2 (en) 2004-10-08 2012-07-24 Sharp Laboratories Of America, Inc. Methods and systems for distributing localized display elements to an imaging device
US8115944B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for local configuration-based imaging device accounting
US8060930B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential receipt and authentication
US8120793B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for displaying content on an imaging device
US8115945B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for imaging device job configuration management
US8384925B2 (en) 2004-10-08 2013-02-26 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting data management
US8125666B2 (en) 2004-10-08 2012-02-28 Sharp Laboratories Of America, Inc. Methods and systems for imaging device document management
US8120798B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for providing access to remote, descriptor-related data at an imaging device
US8060921B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential authentication and communication
US8237946B2 (en) 2004-10-08 2012-08-07 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting server redundancy
US8213034B2 (en) 2004-10-08 2012-07-03 Sharp Laboratories Of America, Inc. Methods and systems for providing remote file structure access on an imaging device
US8065384B2 (en) * 2004-10-08 2011-11-22 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification subscription
US8006176B2 (en) 2004-10-08 2011-08-23 Sharp Laboratories Of America, Inc. Methods and systems for imaging-device-based form field management
US8120799B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for accessing remote, descriptor-related data at an imaging device
US7920101B2 (en) 2004-10-08 2011-04-05 Sharp Laboratories Of America, Inc. Methods and systems for imaging device display standardization
US8115947B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for providing remote, descriptor-related data to an imaging device
US8156424B2 (en) 2004-10-08 2012-04-10 Sharp Laboratories Of America, Inc. Methods and systems for imaging device dynamic document creation and organization
US8120797B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for transmitting content to an imaging device
US8423602B2 (en) * 2004-10-13 2013-04-16 International Business Machines Corporation Web service broadcast engine
EP1844390B1 (de) * 2005-01-31 2012-07-04 Cortado AG Verfahren und anordnung zum drucken über anwendungsserver sowie ein entsprechendes computerprogramm und ein entsprechendes computerlesbares speichermedium
JP4432798B2 (ja) * 2005-02-24 2010-03-17 セイコーエプソン株式会社 印刷システムおよびその管理方法
US8428484B2 (en) 2005-03-04 2013-04-23 Sharp Laboratories Of America, Inc. Methods and systems for peripheral accounting
US7546582B2 (en) * 2005-03-30 2009-06-09 International Business Machines Corporation Managing dynamic configuration data for producer components in a computer infrastructure
US20060277536A1 (en) * 2005-06-01 2006-12-07 Stein Michael V Non-visible remote control of console session
US9198084B2 (en) * 2006-05-26 2015-11-24 Qualcomm Incorporated Wireless architecture for a traditional wire-based protocol
US20080045149A1 (en) * 2006-05-26 2008-02-21 Dinesh Dharmaraju Wireless architecture for a traditional wire-based protocol
US8345272B2 (en) 2006-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for third-party control of remote imaging jobs
US20080183538A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Allocating Resources to Tasks in Workflows
US8180658B2 (en) * 2007-01-30 2012-05-15 Microsoft Corporation Exploitation of workflow solution spaces to account for changes to resources
US20080184250A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Synchronizing Workflows
US7949741B2 (en) * 2007-02-20 2011-05-24 Microsoft Corporation Printer user interface redirection over a terminal services session
US20080228926A1 (en) * 2007-03-13 2008-09-18 Asher Shiratzky Methods, media, and systems for balancing session initiation protocol server load
KR101398908B1 (ko) * 2007-05-22 2014-05-26 삼성전자주식회사 모바일 아이피를 사용하는 이동 통신 시스템에서 단말의이동성 관리 방법 및 시스템
US8667144B2 (en) * 2007-07-25 2014-03-04 Qualcomm Incorporated Wireless architecture for traditional wire based protocol
JP2009098880A (ja) * 2007-10-16 2009-05-07 Canon Inc 印刷処理システム、印刷処理方法、及びコンピュータプログラム
US8838817B1 (en) 2007-11-07 2014-09-16 Netapp, Inc. Application-controlled network packet classification
US8856804B2 (en) * 2008-02-08 2014-10-07 Microsoft Corporation Performance indicator for measuring responsiveness of user interface applications to user input
US7860900B2 (en) * 2008-02-25 2010-12-28 Microsoft Corporation Consistently signaling state changes
US8566833B1 (en) * 2008-03-11 2013-10-22 Netapp, Inc. Combined network and application processing in a multiprocessing environment
US8811294B2 (en) * 2008-04-04 2014-08-19 Qualcomm Incorporated Apparatus and methods for establishing client-host associations within a wireless network
JP2010102612A (ja) * 2008-10-27 2010-05-06 Seiko Epson Corp デバイス状態通知装置
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US9398089B2 (en) * 2008-12-11 2016-07-19 Qualcomm Incorporated Dynamic resource sharing among multiple wireless devices
US8645324B2 (en) 2009-01-09 2014-02-04 Pivotal Software, Inc. Preventing pauses in algorithms requiring pre-image information concerning modifications during data replication
US9264248B2 (en) * 2009-07-02 2016-02-16 Qualcomm Incorporated System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment
US8260960B2 (en) * 2009-07-23 2012-09-04 International Business Machines Corporation Supporting non-delivery notification between a switch and device in a network
US20110069339A1 (en) * 2009-09-21 2011-03-24 Canon Kabushiki Kaisha Network printing communication method and apparatus
US8838800B2 (en) * 2009-11-23 2014-09-16 Hewlett-Packard Development Company, L.P. Binding resources in a shared computing environment
US9582238B2 (en) * 2009-12-14 2017-02-28 Qualcomm Incorporated Decomposed multi-stream (DMS) techniques for video display systems
US20110239117A1 (en) * 2010-03-25 2011-09-29 Microsoft Corporation Natural User Interaction in Shared Resource Computing Environment
US20110239133A1 (en) * 2010-03-29 2011-09-29 Microsoft Corporation Shared resource computing collaboration sessions management
US8892628B2 (en) 2010-04-01 2014-11-18 Microsoft Corporation Administrative interface for managing shared resources
US20110258082A1 (en) * 2010-04-14 2011-10-20 Microsoft Corporation Application Store for Shared Resource Computing
US8539020B2 (en) 2010-06-14 2013-09-17 Microsoft Corporation Sessions to host processes with special requirements
US9413803B2 (en) 2011-01-21 2016-08-09 Qualcomm Incorporated User input back channel for wireless displays
US20130013318A1 (en) 2011-01-21 2013-01-10 Qualcomm Incorporated User input back channel for wireless displays
US8964783B2 (en) 2011-01-21 2015-02-24 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US9065876B2 (en) 2011-01-21 2015-06-23 Qualcomm Incorporated User input back channel from a wireless sink device to a wireless source device for multi-touch gesture wireless displays
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US8674957B2 (en) 2011-02-04 2014-03-18 Qualcomm Incorporated User input device for wireless back channel
US9503771B2 (en) 2011-02-04 2016-11-22 Qualcomm Incorporated Low latency wireless display for graphics
US10108386B2 (en) 2011-02-04 2018-10-23 Qualcomm Incorporated Content provisioning for wireless back channel
US9525998B2 (en) 2012-01-06 2016-12-20 Qualcomm Incorporated Wireless display with multiscreen service
US9100421B2 (en) 2012-11-12 2015-08-04 International Business Machines Corporation Enterprise application session control and monitoring in a large distributed environment
US8990893B2 (en) * 2012-11-12 2015-03-24 International Business Machines Corporation Enterprise application session control and monitoring in a large distributed environment
JP5966943B2 (ja) * 2013-01-23 2016-08-10 富士ゼロックス株式会社 プラグイン配信システム及び画像処理装置並びにプラグイン配信制御方法
JP6039506B2 (ja) * 2013-06-07 2016-12-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
US10223156B2 (en) 2013-06-09 2019-03-05 Apple Inc. Initiating background updates based on user activity
US11474767B1 (en) * 2014-05-28 2022-10-18 Amazon Technologies, Inc. Print from web services platform to local printer
US9706518B2 (en) * 2014-05-30 2017-07-11 Apple Inc. Location based application feature notification
US9432796B2 (en) 2014-05-30 2016-08-30 Apple Inc. Dynamic adjustment of mobile device based on peer event data
US9917760B2 (en) 2015-06-03 2018-03-13 International Business Machines Corporation Notifying original state listeners of events in a domain model
US10491708B2 (en) 2015-06-05 2019-11-26 Apple Inc. Context notifications
CN105763601A (zh) * 2016-01-29 2016-07-13 北京小米移动软件有限公司 文件分享方法及装置
US10775956B2 (en) 2016-04-29 2020-09-15 Microsoft Technology Licensing, Llc Electronic data storage re-sharing notification
CN106649280B (zh) * 2017-02-13 2019-07-09 长沙军鸽软件有限公司 一种创建共享语料库的方法
CA3133400A1 (en) * 2019-04-01 2020-10-08 Citrix Systems, Inc. Unified application notification framework
CN112749023A (zh) * 2019-10-30 2021-05-04 阿里巴巴集团控股有限公司 一种信息的处理方法、装置、设备及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020063880A1 (en) * 2000-11-30 2002-05-30 Raney Alan L. System and method for print system monitoring
CN1402117A (zh) * 2001-07-02 2003-03-12 精工爱普生株式会社 通过网络进行的打印方法

Family Cites Families (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE430715B (sv) 1982-04-28 1983-12-05 Westinghouse Electric Corp Sett och inforande av sekundervatten genom ett inlopp till ett anggeneratorkerl
JPS5957337A (ja) 1982-06-04 1984-04-02 コンピユ−タ−ズ・インタ−ナシヨナル・インコ−ポレ−テツド ユニバ−サルコンピユ−タ−プリンタインタ−フエイス
JPS6123468A (ja) 1984-07-11 1986-01-31 Nippon Telegr & Teleph Corp <Ntt> 画像処理装置
JPS6391796A (ja) 1986-10-06 1988-04-22 シャープ株式会社 印字フオ−マツトの変更方式
US5220674A (en) 1987-07-17 1993-06-15 Digital Equipment Corporation Local area print server for requesting and storing required resource data and forwarding printer status message to selected destination
US4829468A (en) 1987-09-18 1989-05-09 Hitachi, Ltd. Print control system
US5014221A (en) 1988-01-29 1991-05-07 Digital Equipment Corporation Mechanism for arbitrating client access to a networked print server
US5047957A (en) 1988-10-21 1991-09-10 Minolta Camera Kabushiki Kaisha Printer controller
US5333246A (en) 1990-04-05 1994-07-26 Seiko Epson Corporation Page-description language interpreter for a parallel-processing system
US5303336A (en) 1990-05-14 1994-04-12 Hitachi, Ltd. Printing system including print server
US5268993A (en) 1990-06-04 1993-12-07 Minolta Camera Kabushiki Kaisha Printer
US5388201A (en) 1990-09-14 1995-02-07 Hourvitz; Leonard Method and apparatus for providing multiple bit depth windows
JPH04227537A (ja) 1990-10-10 1992-08-17 Fuji Xerox Co Ltd プリンタおよびプリントジョブ制御装置
US5388200A (en) 1990-12-21 1995-02-07 Sun Microsystems, Inc. Method and apparatus for writing directly to a frame buffer
JP2661416B2 (ja) 1991-06-29 1997-10-08 ブラザー工業株式会社 印字システム
JPH0594390A (ja) * 1991-10-03 1993-04-16 Nec Corp 出力メツセージ制御方式
US5150454A (en) 1991-10-16 1992-09-22 Patrick Wood Printing system and method
US5299296A (en) 1991-10-17 1994-03-29 Ricoh Company, Ltd. Multi-function machine with interleaved job execution
US5353388A (en) 1991-10-17 1994-10-04 Ricoh Company, Ltd. System and method for document processing
US5287434A (en) 1991-10-28 1994-02-15 Monarch Marking Systems, Inc. Barcode identification system spooler
US5276799A (en) 1991-10-29 1994-01-04 Xerox Corporation Expandable electronic subsystem for a printing machine
US5388207A (en) 1991-11-25 1995-02-07 Industrial Technology Research Institute Architecutre for a window-based graphics system
US5222200A (en) 1992-01-08 1993-06-22 Lexmark International, Inc. Automatic printer data stream language determination
US5386503A (en) 1992-06-16 1995-01-31 Honeywell Inc. Method for controlling window displays in an open systems windows environment
US6667812B1 (en) 1992-06-19 2003-12-23 Canon Kabushiki Kaisha Information processing apparatus with device control language based program selection
US5577173A (en) 1992-07-10 1996-11-19 Microsoft Corporation System and method of printer banding
US5287194A (en) 1992-11-25 1994-02-15 Xerox Corporation Distributed printing
US5655152A (en) 1992-12-10 1997-08-05 Matsushita Electric Industrial Co. System for allocating data output requests to output units having different output formats in accordance with data output format compatibility and priority characteristic
JP3068650B2 (ja) 1992-12-18 2000-07-24 データプロダクツ コーポレーション 仮想プリンタ
US5483653A (en) 1993-04-02 1996-01-09 Xerox Corporation Printing system with file specification parsing capability
US5625757A (en) 1993-12-24 1997-04-29 Hitachi, Ltd. Printing system
US5580177A (en) 1994-03-29 1996-12-03 Hewlett-Packard Company Printer/client network with centrally updated printer drivers and printer status monitoring
JP3448947B2 (ja) 1994-04-11 2003-09-22 株式会社日立製作所 リモート印刷システムおよびそのリモート印刷方法
US5559933A (en) 1994-04-22 1996-09-24 Unisys Corporation Distributed enterprise print controller
US5699495A (en) 1994-07-27 1997-12-16 Microsoft Corporation Point-and-print in a distributed environment
US5692111A (en) 1994-10-05 1997-11-25 Microsoft Corporation Automatic installation of printers in a distributed environment
US5602974A (en) 1994-10-05 1997-02-11 Microsoft Corporation Device independent spooling in a print architecture
US5905906A (en) * 1995-03-31 1999-05-18 Lexmark International, Inc. Method and apparatus for configuring multiple printers on a network
JP3546528B2 (ja) * 1995-05-19 2004-07-28 富士通株式会社 端末制御方法及びサービスプロセッサ
JPH09134298A (ja) * 1995-11-10 1997-05-20 Nec Corp コンソールメッセージ制御システム
US5931909A (en) 1996-04-19 1999-08-03 Sun Microsystems, Inc. System for multiple-client software installation and upgrade
US5919247A (en) 1996-07-24 1999-07-06 Marimba, Inc. Method for the distribution of code and data updates
JP3804147B2 (ja) * 1997-02-13 2006-08-02 富士通株式会社 ゲートウエイ装置
US5960167A (en) 1997-03-24 1999-09-28 Xerox Corporation Printer configuration system
JP3608905B2 (ja) * 1997-05-29 2005-01-12 三菱電機株式会社 データ通信システム及びデータ通信方法
US6125372A (en) 1997-10-03 2000-09-26 Hewlett-Packard Company Server system and method of updating server software
US5974454A (en) 1997-11-14 1999-10-26 Microsoft Corporation Method and system for installing and updating program module components
US5995723A (en) 1997-11-18 1999-11-30 Xerox Corporation Client subsystem for changing document/job attributes in a network printing system
US6031623A (en) 1997-12-11 2000-02-29 Hewlett-Packard Company Computer system with evolving printer
JP3873427B2 (ja) 1998-01-30 2007-01-24 ブラザー工業株式会社 プリンタ制御システムにおける中間ファイルの加工装置及びその制御プログラムが記録された記録媒体
JP4298034B2 (ja) 1998-03-05 2009-07-15 キヤノン株式会社 印刷システム、印刷管理装置、情報処理装置、およびそれらの制御方法、記憶媒体
NL1008659C2 (nl) 1998-03-20 1999-09-21 Oce Tech Bv Statuspresentatie van printers in een informatieverwerkings-systeem.
US6301012B1 (en) 1998-04-24 2001-10-09 Hewlett-Packard Company Automatic configuration of a network printer
US6289385B1 (en) 1998-06-05 2001-09-11 I2 Technologies, Inc. Computer workspace providing event management based on a permissibility framework
US6694354B1 (en) 1998-11-30 2004-02-17 Telefonaktiebolaget Lm Ericsson (Publ) Host computer access to peripheral device drivers
US6424424B1 (en) 1999-01-19 2002-07-23 Hewlett-Packard Company Method and apparatus for automatic installation of shared printers over a network
US6678068B1 (en) * 1999-03-11 2004-01-13 Electronics For Imaging, Inc. Client print server link for output peripheral device
US7130068B1 (en) 1999-10-05 2006-10-31 Canon Kabushiki Kaisha Print server apparatus, information processing apparatus, print job reservation management method, reservation job generation method and memory medium
US7213054B2 (en) 1999-12-15 2007-05-01 Microsoft Corporation Methods and apparatuses for handling single-user applications in multi-user computing environments
US6788429B1 (en) * 2000-04-14 2004-09-07 Hewlett-Packard Development Company, Lp. Remote print queue management
US6814510B1 (en) 2000-08-02 2004-11-09 Xerox Corporation Method and apparatus for automatic update of a printer driver configuration and status
CA2315270A1 (en) 2000-08-04 2002-02-04 Charon Systems Inc. Printer driver system for remote printing
US6711557B1 (en) * 2000-08-14 2004-03-23 Adobe Systems Incorporated Client-based background update monitoring
US6931447B1 (en) * 2000-09-27 2005-08-16 Hewlett-Packard Development Company, L.P. Remote hard copy apparatus control including firewall penetrating protocols
US7095518B1 (en) 2000-10-16 2006-08-22 Electronics For Imaging, Inc. Spooling server apparatus and methods for receiving, storing, and forwarding a print job over a network
EP1205843A3 (en) * 2000-11-13 2004-10-20 Canon Kabushiki Kaisha User interfaces
US7207041B2 (en) * 2001-06-28 2007-04-17 Tranzeo Wireless Technologies, Inc. Open platform architecture for shared resource access management
US7170625B2 (en) 2001-07-31 2007-01-30 Matsushita Electric Industrial Co., Ltd. Printer system and printing data notification method
JP3800320B2 (ja) 2001-08-01 2006-07-26 セイコーエプソン株式会社 プリントシステム及びプリント業務を監視するサーバ
US7089259B1 (en) * 2001-08-03 2006-08-08 Mcafee, Inc. System and method for providing a framework for network appliance management in a distributed computing environment
US7327482B2 (en) 2002-10-15 2008-02-05 Sharp Laboratories Of America, Inc. Integrated printer monitoring
US7233404B2 (en) 2002-10-29 2007-06-19 International Business Machines Corporation System for processing print jobs
US20040143651A1 (en) * 2003-01-21 2004-07-22 Allen Kram H. System and method for distributing configuration changes made to a printing device
US7529823B2 (en) 2003-03-27 2009-05-05 Microsoft Corporation Notifications for shared resources
JP2005071175A (ja) 2003-08-26 2005-03-17 Ricoh Co Ltd 印刷データ生成方法、その方法をコンピュータに実行させるプログラム、クライアント端末、プリンタサーバ、印刷データ生成装置および画像形成装置
JP2005165634A (ja) 2003-12-02 2005-06-23 Canon Inc 印刷システムおよび進捗表示処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
US20050179936A1 (en) 2004-02-13 2005-08-18 Microsoft Corporation Scalable print spooler
US20050210129A1 (en) 2004-03-19 2005-09-22 Microsoft Corporation Asynchronous channel for displaying user interface elements

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020063880A1 (en) * 2000-11-30 2002-05-30 Raney Alan L. System and method for print system monitoring
CN1402117A (zh) * 2001-07-02 2003-03-12 精工爱普生株式会社 通过网络进行的打印方法

Also Published As

Publication number Publication date
DE602004006902D1 (de) 2007-07-26
ATE364956T1 (de) 2007-07-15
JP2004310745A (ja) 2004-11-04
CN1591341A (zh) 2005-03-09
EP1463268A2 (en) 2004-09-29
JP4638676B2 (ja) 2011-02-23
EP1463268A3 (en) 2005-01-26
US7529823B2 (en) 2009-05-05
KR20040086543A (ko) 2004-10-11
US20040193678A1 (en) 2004-09-30
DE602004006902T2 (de) 2008-02-14
EP1463268B1 (en) 2007-06-13
KR101066682B1 (ko) 2011-09-21

Similar Documents

Publication Publication Date Title
CN1591341B (zh) 用于共享资源的通知的系统和方法
RU2502127C2 (ru) Платформа составных приложений на базе модели
US6943905B2 (en) Virtual print driver system and method
KR100620826B1 (ko) 대화형 컴퓨팅 시스템 및 방법, 대화형 가상 머신, 프로그램 저장 장치 및 트랜잭션 수행 방법
US8330980B2 (en) System, method, and apparatus for networked print management
US20020133535A1 (en) Identity-centric data access
US20070233869A1 (en) Restricting device access per session
TW455771B (en) Message handling method, message handling apparatus, and memory media for storing a message handling apparatus controlling program
CN104123265B (zh) 一种众核间通信方法及系统
WO2008068233A1 (en) Application message conversion using a feed adapter
JP2008021095A (ja) 連携シナリオ作成支援システム及びその方法並びにプログラム
WO2009055490A2 (en) Model-based composite application platform
EP0917058A2 (en) Dynamic plug and play interface for output device
RU2382402C2 (ru) Гибкое управление контекстом для сеансов перечисления с использованием обмена контекстом
US20050132028A1 (en) Automated image forming device configuration
US7096249B2 (en) Method and system for distributing applications
US20030212587A1 (en) Apparatus and methods for coordinating Web services using role based interpretation of coordination plans
CN111708568B (zh) 一种组件化开发解耦方法及终端
JP7163689B2 (ja) 情報処理システム、方法及びプログラム
CN113810204A (zh) 线上会议的主持人确定方法、装置、设备及存储介质
JP4667299B2 (ja) プロセス間通信方法
JP2009141774A (ja) データ処理装置及びその制御方法、コンピュータプログラム
CN113312014B (zh) 一种打印方法和装置
US20230139798A1 (en) Server system, method for controlling server system, and storage medium
JP2812274B2 (ja) 疎結合多重計算機システムにおけるトランザクション負荷分散システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150514

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150514

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100526

Termination date: 20210220