CN101253470B - 辅助显示设备驱动器接口 - Google Patents

辅助显示设备驱动器接口 Download PDF

Info

Publication number
CN101253470B
CN101253470B CN2006800313086A CN200680031308A CN101253470B CN 101253470 B CN101253470 B CN 101253470B CN 2006800313086 A CN2006800313086 A CN 2006800313086A CN 200680031308 A CN200680031308 A CN 200680031308A CN 101253470 B CN101253470 B CN 101253470B
Authority
CN
China
Prior art keywords
auxiliary display
display device
driver
interface
device driver
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.)
Active
Application number
CN2006800313086A
Other languages
English (en)
Other versions
CN101253470A (zh
Inventor
D·J·波利维
A·J·福勒
S·维吉
M·P·罗腾
T·C·梅普斯
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 CN101253470A publication Critical patent/CN101253470A/zh
Application granted granted Critical
Publication of CN101253470B publication Critical patent/CN101253470B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)
  • Stored Programmes (AREA)

Abstract

在耦合到辅助显示设备的主计算机系统中,描述了由辅助显示设备驱动器实现的接口组,以将该驱动器耦合至辅助显示平台。从该辅助显示平台接收的命令可由诸如类扩展对象的驱动器外部的代码处理。例如,类扩展对象可以将从辅助显示平台接收的命令解释和/或翻译成为驱动器代码理解的格式。辅助显示设备驱动器接着可通过传输将包括数据在内的相应的命令信息提供给该辅助显示设备。事件数据可以通过该接口组从该辅助显示设备驱动器返回给类扩展对象,以使得相应的事件信息,例如,在辅助显示设备处接收的信息,可被返回给辅助显示平台。

Description

辅助显示设备驱动器接口
背景
在当代(例如,基于WindowsVistaTM)的计算机系统中,用户可以查看耦合到或者集成到主计算机系统中的小型辅助显示设备上所选择的内容并一般可与之交互。为了达到这个目的,辅助显示屏幕以及提供操作系统的平台(被称为辅助显示平台,或者Windows
Figure 2006800313086_1
SideShowTM平台)使得开发者和作者能够向用户呈现内容。这允许用户能够在主计算机系统处于节电状态(例如,ACPI S3睡眠状态),或者甚至是关闭的情况下查看内容。
当为诸如MicrosoftWindows
Figure 2006800313086_3
的操作系统创建辅助显示设备时,设备制造商,也称为独立硬件厂商即IHV实现Windows
Figure 2006800313086_4
VistaTM用户模式驱动框架(UMDF)驱动器以便于辅助显示平台和辅助显示设备之间的通信。创建驱动器是复杂的,如同在其他事情中一样,要求辅助显示驱动器将来自辅助显示平台的数据解码成逻辑辅助显示操作,并接着通过辅助显示设备理解的协议将这些意图传到该设备。辅助显示设备潜在地可以采取许多的形式,并且用于与该设备通信的底层传输协议可以根据设备的类型而改变。因此,创建驱动器对于设备制造商来说是一个十分耗时、繁琐、乏味并且容易出错的工作。
概述
本概述被提供用于以简化形式介绍代表性概念的一些选集,这些概念将在下面的详细描述中进一步描述。本概述不旨在标识所要求的主题的关键特征或者基本特征,也不旨在以任何限制所要求的主题的范围的方式使用。
简要的,此处描述的主题的不同方面针对可由辅助显示设备驱动器实现的用于将该驱动器耦合至辅助显示平台的接口组。通过经由该接口组对辅助显示设备驱动器的调用,从该辅助显示平台接收的命令可由该驱动器外的代码处理,因而便于辅助显示平台和该驱动器之间的通信。例如,类扩展对象可以将从辅助显示平台接收的命令解释和/或翻译成为驱动器代码可更加容易处理的格式,从而简化驱动器代码。事件数据可以从辅助显示设备驱动器提供,以使得对应的事件信息可被传递到该辅助显示平台。
因此,辅助显示平台可以从一个或多个应用程序提供针对辅助显示设备的数据,并且当辅助显示设备驱动器接收到数据时,由该辅助显示设备驱动器实现的接口组允许一帮助器对象处理从该辅助显示平台作为数据接收的命令并且通过该接口使用对应的数据回叫该辅助显示设备驱动器。例如,当从辅助显示设备驱动器接收到包括关于执行与一辅助显示相关的操作的命令的调用时,该帮助器对象可将该调用和命令翻译成该辅助显示设备驱动器能够理解的数据格式的数据,并且使用该数据回叫该辅助显示设备驱动器。辅助显示设备驱动器接着可通过传输向该辅助显示设备提供对应的信息。
其他的优势将通过下面结合附图的详细描述而变得明显。
附图简述
本发明通过举例进行说明,并不被限于附图,在附图中相同的附图标记表示相同的元素,其中:
图1示出了其中可以结合本发明的多个方面的通用计算环境的说明性例子。
图2是表示其中可以为辅助显示设备通信实现接口组的示例体系结构的框图。
图3是表示包括其中可以为辅助显示设备通信实现接口组的库的示例组件的框图。
图4是表示包括可用于辅助显示设备通信的示例接口和帮助器对象的示例组件的框图。
详细描述
示例性操作环境
图1说明了可在其上实现本发明的适当的计算系统环境100的一例。计算系统环境100仅是适当的计算环境的一例并且并非旨在限制本发明的使用范围或功能。计算环境100不应被解释为对示例性操作环境100中所述的组件中的任一个或组合有任何依赖性或要求。
本发明可以用多种其它通用或专用计算系统环境或配置来操作。可以适合与本发明一起使用的公知计算系统、环境和/或配置的示例包括、但不限于:个人计算机、服务器计算机、手持或膝上型设备、图形输入板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程用户电子设备、网络PC、小型计算机、大型计算机、包括任一上述系统或设备的分布式计算环境等等。
本发明可以在譬如程序模块的由计算机执行的计算机可执行指令的一般上下文来描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定的抽象数据类型。本发明还可以在分布式计算环境中实现,其中由通过通信网络链接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括内存存储设备的本地和/或远程存储媒质中。
参考图1,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可以包括、但不限于:处理单元120、系统内存130、及把包括系统内存在内的各种系统组件耦合至处理单元120的系统总线121。系统总线121可以是多种类型总线结构的任一种,包括内存总线或内存控制器、外围总线、及使用任一多种总线体系结构的本地总线。作为示例但非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准联盟(VESA)本地总线、及外围部件互连(PCI)总线(也称为Mezzanine总线)。
计算机110一般包括各种计算机可读媒质。计算机可读媒质可以是能由计算机110访问的任何可用媒质并包括易失性和非易失性的媒质、可移动和不可移动媒质。作为示例但非限制,计算机可读媒质可以包括计算机存储媒质和通信媒质。计算机存储媒质包括易失性和非易失性、可移动和不可移动媒质,它们以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任意方法或技术来实现。计算机存储媒质包括、但不限于:RAM、ROM、EEPROM、闪存或其它内存技术、CDROM、数字通用盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可用于存储期望信息并能由计算机110访问的任意其它媒质。通信媒质一般在诸如载波或其它传输机制这样的已调数据信号中包含计算机可读指令、数据结构、程序模块或其它数据,并且包括任意信息传递媒质。术语“已调数据信号”意指其一个或多个特性以对信号内信息进行编码的方式被设置或改变的信号。作为示例但非限制,通信媒质包括诸如有线网络或直接线连接这样的有线媒质、以及诸如声学、RF、红外这样的无线媒质及其它无线媒质。上述的任意组合也应该包括在计算机可读媒质的范围内。
系统内存130包括易失性和/或非易失性内存形式的计算机存储媒质,譬如只读内存(ROM)131和随机存取内存(RAM)132。基本输入/输出系统133(BIOS)一般存储在ROM 131内,它包含例如启动期间帮助在计算机110内的组件间传输信息的基本例程。RAM 132一般包含可由处理单元120立即访问并且/或者当前处理单元正在其上操作的数据和/或程序模块。作为示例但非限制,图1示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可以包括其它可移动/不可移动、易失性/非易失性计算机存储媒质。仅仅作为示例,图1示出了对不可移动、非易失性磁性媒质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151、以及对譬如CD ROM或其它光学媒质的可移动、非易失性光盘156进行读写的光盘驱动器155。示例性操作环境中可用的其它可移动/不可移动、易失性/非易失性计算存储媒质包括、但不限于:磁带盒、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141一般通过如接口140这样的不可移动存储器接口与系统总线121相连,而磁盘驱动器151和光盘驱动器155一般用如接口150这样的可移动存储器接口与系统总线121相连。
上面讨论并在图1中说明的驱动器和它们的相关联的计算机存储媒质为计算机110提供了对计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意到这些组件或者可与操作系统134、应用程序135、其它程序模块136和程序数据137相同,或者与它们不同。这里为操作系统144、应用程序145、其它程序模块146和程序数据147给出不同编号以说明至少它们是不同的副本。用户可以通过诸如图形输入板即电子数字化仪164、麦克风163、键盘162和指示设备161(通常指的是鼠标、跟踪球或触摸垫)这样的输入设备把命令和信息输入到计算机110中。其它图1中未示出的输入设备可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备经常通过与系统总线121耦合的用户输入接口160与处理单元120相连,但也可以用其它接口和总线结构连接,譬如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示设备也通过诸如视频接口190这样的接口与系统总线121相连。监视器191还可以与触摸屏或者类似的部件集成。注意到监视器和/或触摸屏可以物理耦合到包括计算设备110的外壳中,例如图形输入板类型的个人计算机。此外,诸如计算设备110的计算机还可以包括其它外围输出设备,如扬声器195和打印机196,它们可以通过输出外围接口194或者类似的设备连接。
计算机110可以工作在联网环境中,该环境使用至诸如远程计算机180这样的一个或多个远程计算机的逻辑连接。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,并且一般包括以上相对于计算机110描述的许多或全部元件,尽管图1中仅示出了内存存储设备181。图1所述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但可以还包括其它网络。这种联网环境在办公室、企业范围计算机网络、内联网和互联网中是常见的。
当用于LAN联网环境中时,计算机110通过网络接口或适配器170与LAN 171相连。当用于WAN联网环境中时,计算机110一般包括用于在诸如互联网这样的WAN 173上建立通信的调制解调器172或其它装置。调制解调器172可以是内置或外置的,它可以通过用户输入接口160或其它适当机制与系统总线121相连。在网络化环境中,相对于计算机110描述的程序模块或其部分可以存储在远程内存存储设备中。通过示例但非限制,图1说明了驻留在内存设备181上的远程应用程序185。可以理解,所示网络连接是示例性的,也可以使用在计算机间建立通信链接的其它手段。
辅助显示子系统199可通过用户接口160连接以允许即使在计算机系统的主部分处于低功率状态的情况下也能将诸如程序内容、系统状态和事件通知的数据提供给用户。辅助显示子系统199可连接至调制解调器172和/或网络接口170以在主处理单元120处于低功率状态的时候允许这些系统之间的通信。
辅助显示设备驱动器接口
此处描述的技术的多个方面针对简化编写辅助显示驱动器的任务。这一部分是通过提供实现一组良好定义的逻辑辅助显示操作的通用机制来实现的,从而减少驱动器实现者需要执行的工作量。结果,驱动器实现者能够在极大程度上将他们精力集中在为他们的辅助显示设备提供传输机制,而不需要由他们自己来关注辅助显示驱动器和辅助显示平台之间通信的复杂性。
为了达到这个目的,提供了用于辅助显示驱动器的接口,以及组成该设备驱动器接口的一组逻辑辅助显示操作的概念。然而,可以理解,此处描述的技术不限于这些概念或者被用于描述该设备驱动器接口即辅助显示驱动器接口的例子,如此处描述的基于COM(组件对象模型)技术的例子。而且,此处描述的技术不限于任何特定类型的辅助设备,而是包括传统意义上不认为是“计算机系统”耦合设备的设备,诸如,电视机、音频接收器、音频/视频记录器、电话、单独的计算机、移动通信设备、具有执行机构的次级显示屏、手表、墙面(例如,厨房)显示器、显示屏、数字相框、钟、无线电、媒体播放器、嵌入在消费者电子设备的主显示器内或者是使用该主显示器的设备、汽车、运输或者其他车载单元、键盘或者其他主计算机系统的输入设备、寻呼机、个人数字助理、等等。因此,本发明不限于此处描述的例子、结构或者是功能;而是,此处描述的任何例子、结构或者功能都是非限制性的,且本发明可以以多种不同的方式被使用,一般在计算、数据通信和内容处理方面提供好处和优势。
参考图2,示出了向包括应用程序204和其他程序(例如,操作系统组件)的客户端展示一个或多个辅助设备(例如,图2中所示的一个辅助设备202)的一个示例体系结构。为了在程序级上与程序204进行数据通信,提供了辅助显示API组206,其为多种功能提供API,包括向系统注册该客户端应用程序204(程序的一个组件或者可能是该程序本身)、向耦合的辅助设备202发送内容、向耦合的辅助设备202发送通知、以及从耦合的辅助设备202接收事件。事件可以包括导航事件、内容请求事件、内容改变事件,等等。诸如操作系统组件和/或应用程序组件的软件代码也可被上传至该辅助设备。
在图2所示的例子中,API层206是在便携式设备API组208上编写的,它们合起来可被认为是一个辅助显示平台210。一般,便携式设备API组208将辅助显示设备202映射到便携式设备的类别中,并且允许列举该设备的能力。这被封装在用户模式驱动器框架212中,然而,并不被展示给客户端应用程序204。例如,该组辅助显示API 206可使用Windows便携式设备(WPD)功能来通过进程间通信(IPC)与设备框架212通信,后者又将数据发送给设备202。为了使平台中的每个部件能够彼此交互,在每个层之间定义接口,包括需要由设备的驱动器展示以启用驱动器级上的辅助显示功能的接口。
转到硬件厂商的角度,一般,每个辅助显示设备厂商提供相应的辅助显示设备驱动器224(尽管在一些情况下设备可以使用通用的驱动器,并因此例如可以由辅助显示平台的提供者提供)。一般,用户模式驱动器框架通过诸如库227等提供设备驱动器接口(DDI)组226,用于将设备驱动器(例如,224)耦合到辅助显示平台210。驱动器224之后可实现接口组226以从辅助显示平台接收对应API接收的信息的数据,并将相应的数据转发给合适的硬件接口(传输)230用于传输给辅助显示设备。例如,在图2中,示出的例子是USB和Bluetooth
Figure 2006800313086_5
(蓝牙),尽管其他类型的传输,包括Wi-Fi、AM/FM、红外线、诸如基于TCP/IP传输的网络传输等等都是可行的。如所理解的,这些连接仅仅是为了举例的目的而示出,任何设备驱动器都可以适当地转发数据以用于无线或者有线通信。
图3更加详细地示出了用户模式驱动器框架212的例子。如上面所描述的,用户模式驱动器框架212主存有用户模式辅助显示驱动器224,包括通常由独立硬件供应商即IHV编写的主要组件。该驱动器的任务之一是从辅助显示平台210提取信息,并且将在辅助设备202输入的任何导航事件传回辅助显示平台210。根据辅助设备202的能力,辅助显示驱动器224可将数据从辅助显示平台210的格式(例如,以包括用XML定义的数据格式的简单内容格式(Simple Content Format)到达)转换成该设备能更加容易呈现的东西,比如位图。
为了与辅助设备202通信,如在图3中所示的,辅助显示驱动器224可使用该驱动器编写者(例如,IHV)选择的任何合适的通信协议,基本上将该传输驱动器230堆叠在辅助显示驱动器224之下。注意到在一个示例实现中,连接和/或设备发现(如果适当的话)是由辅助显示驱动器224中的代码处理的,但是在大多数的情况下,设备发现由操作系统的PnP或者PnP-X子系统执行。
为了与辅助显示平台210接口,辅助显示驱动器224链接到辅助显示类扩展库326。如在图3中所示的,一旦链接上时,辅助显示类扩展库326即提供至辅助显示平台210的通信渠道。在一个示例实现中,辅助显示类扩展库326展示访问来自辅助显示平台210的数据并将通过辅助显示设备202接收的任何导航事件发回辅助显示平台210的接口。在一个示例实现中(一般由图4所示),辅助显示类扩展库326可以被实现为COM组件,它并不需要直接链接到辅助显示驱动器224。
同样在图3中示出的基准辅助显示位图库327包括驱动器224可使用的可任选库,其能为愿意使用推荐的位图显示基准平台的驱动器编写者简化软件开发工作。例如,使用位图库327,驱动器224可使扫视模式(glancemode)信息和通知从辅助显示平台格式210转换成被格式化成用于位图显示基准屏幕分辨率的位图。
同样在图3中还示出了独立硬件厂商扩展性库328。例如,如果独立硬件厂商提供了超出辅助显示基准设计的连接到辅助设备202的附加硬件,则驱动器224可使用该附加的库328进行扩展以支持扩展的功能并且向主计算机系统的操作系统展示该功能。此类附加硬件的例子包括生物测定读取器、GPS单元等等。硬件厂商扩展性库328也可以被实现为作为过滤器驱动器的附加的用户模式或者内核模式驱动器,并且可在驱动器栈中位于辅助显示驱动器之上或者之下。
图4提供了关于与图2和3所示的相一致的基于COM的实现一个例子的细节。在该例子中,驱动器编写者使得驱动器224实现包括逻辑辅助显示操作的集合的COM接口;注意到根据实际的设备,不是所有的接口都需要被实现。一般,设备驱动器接口实现的方法提供在设备制造商选择的适合于给定的设备的传输230上将设备驱动器接口方法的逻辑意图发送给辅助设备202的细节。
在一个示例实施例中,向诸如随Windows
Figure 2006800313086_6
VistaTM装运的库中所提供的辅助显示类扩展组件注册所实现的设备驱动器接口对象的实例。一般,驱动器编写者实现实例化类扩展对象的实例的驱动器条目代码的轻层(light layer),并之后将传入数据转发到该类扩展对象。而且一般,类扩展对象完成将原始传入数据解释成逻辑驱动器操作的工作。类扩展对象调用所实现的设备驱动器接口,其中该逻辑操作的意图可由驱动器编写者的代码执行。
图4示出了一个示例辅助显示驱动器体系结构的组件。类扩展对象440实现ISideShowClassExtension接口并用作辅助显示驱动器的帮助器库。类扩展对象440(至少)用于两个目的,包括处理从独立硬件厂商UMDF驱动器条目代码442转发的功能控制代码(例如,WPD输入/输出控制,即IOCTL)。
类扩展对象440的一个目的是便于辅助显示平台210的API和辅助显示设备之间的通信。由于组成辅助显示的硬件和固件在不同的独立硬件厂商之间会变化,辅助显示驱动器是可扩展的,以允许独立硬件厂商在独立硬件供应商所选择的传输230上支持与他们的特定辅助显示实现之间的通信。
在图4所示的例子中,辅助显示驱动器224作为标准用户模式驱动器框架(UMDF)驱动器被主存,它将I/O控制委托给辅助显示类扩展库。该库包括用于开启(打开并解释)IOCTL、执行安全检查(例如,通过验证控制面板即CPL或者数据的许可管理器444)、并将IOCTL翻译成为对独立硬件厂商驱动器代码的回叫的COM对象(例如,由平台厂商提供)。独立硬件厂商回叫代码(例如,在框446中)接着负责使得实际的设备在任何用于与该设备通信的传输机制上传送。因此,辅助显示驱动器可被实现为两个DLL,包括含有UMDF驱动器条目点442和设备专用回叫446的独立硬件厂商提供的DLL,以及含有由该独立硬件厂商DLL加载的辅助显示类扩展COM对象的DLL。
如上面所描述的,辅助显示类扩展对象440通过以下步骤来处理转发的WPD IOCTL:将它们打开、对数据执行安全检查、并接着将IOCTL分解成对由独立的硬件厂商所提供的回叫的功能调用。更具体地说,独立硬件厂商的回叫通过调用Initialize()方法并传入实现ISideShowDriver接口的对象而被提供给类扩展对象440。类扩展对象获取设备驱动器接口对象的所有权并使用其作为执行驱动器命令的策略模式。
注意到在该示例实现中,类扩展对象440没有实际发送事件;事件是在独立硬件厂商代码446中发送的。这种实现与其他的UMDF驱动器保持一致,避免了包装基本UMDF功能,也避免将帮助器库与UMDF紧密耦合。
作为平台的一部分,驱动器可以与运行基于TinyCLR的辅助显示固件的增强的显示进行通行,TinyCLR一般在提交于2004年11月23日的美国专利申请第10/996,577号中所描述的,该申请被转让给本申请的受让人并通过引用合并于此。没有TinyCLR通信部分的该驱动器的修改版本可被提供为库,其他驱动器可在其顶部建立以与不同类型的设备接口。注意到类扩展440的库接口包括与在TinyCLR固件一同工作的增强的驱动器中展示的命令的子集。
允许设备和驱动器扩展性的另一种方法是将辅助显示功能作为媒体传输协议(MTP)规范的一部分提供。这包括支持基本显示的核心部分和允许增强的显示功能的扩展。辅助显示API处理将使用MTP的消息发送到支持MTP的辅助显示命令的设备。这将使用系统提供的MTP驱动器来与该设备通信。该设备将负责将该MTP消息翻译成其能理解的格式。或者,辅助显示类扩展能建立到过滤器驱动器中,该过滤器驱动器在系统提供的MTP驱动器的顶部上运行并直接将辅助显示功能封装在MTP命令中,而不需要辅助显示API知道其正在通信的设备的细节。
示例安全性及用户模式
辅助显示类扩展对象通过基于设备用户模式来过滤设备驱动器接口命令,并且确保只有授权用户才能够在设备上设置用户信息来提供安全性。对于设备驱动器接口(DDI)过滤,类扩展对象支持3种类型的设备用户模式:
开放访问——处于开放访问模式的设备允许用户与该设备交互。驱动器允许任何时候对任何用户的设备驱动器接口。
交互用户——处于交互用户模式的设备仅仅允许与主计算机系统的当前活动控制台用户交互。驱动器拒绝对除当前活动用户以外的任何其他用户的设备驱动器接口命令。
固定用户——处于固定用户模式的设备仅仅与单独指定的固定用户交互。如果当前活动的用户(或者任何其他用户)不是该设备指定的固定用户,则驱动器拒绝来自当前的活动用户的设备驱动器接口命令。或者该设备或者PC可指定该设备的固定用户,且该固定用户可以在任何时候改变。
辅助显示类扩展对象通过在设备驱动器接口命令发出时采取特定(示例)步骤来过滤设备驱动器接口命令。所采取的步骤根据当驱动器向设备查询其用户模式时返回的响应。对于开放访问用户模式,设备驱动器接口命令是允许通行。
如果用户模式改为交互,则驱动器获得当前交互用户(定义为在主计算机系统控制台上的用户)的SID(安全ID),驱动器获得进行调用的进程的SID并且该驱动器比较这些SID。如果这些SID是相等的,则设备驱动器接口命令为允许通行,否则该命令将被阻塞。
如果用户模式是固定用户,驱动器向该设备查询当前设备用户的SID,还获取进行调用的进程的SID。驱动器比较这些SID,如果这些SID是相等的,则设备驱动器接口命令是允许通行,否则该命令将被阻塞。
对于每个用户设置的实施,类扩展对象确保只有授权用户通过CPL(辅助显示控制面板小程序(applet))指定的用户设置才会被应用到该设备。为了达到这个目的,一监视器(包括基本上一直在主计算机系统上运行的进程)具有从注册表读取用户信息的许可。该进程在系统中监视是否有事件发生,包括添加PnP设备、新用户的登录或者注销、以及快速用户切换事件。当这些事件中的任何一个发生时,监视器进程向驱动器通知要发生用户信息的更新。此时,类扩展对象扮演该监视器进程,读取用户信息,并将该信息应用到该设备。在一个实现中,用户信息可通过许可管理器444被写入到注册表中或者从中读取。
当用户改变CPL中的设置的时候,CPL调用驱动器并且传入用户数据。在调用所实现的回叫之前,类扩展对象针对包含在注册表中的用户数据验证所传入的用户数据。
示例接口和方法
ISideShowClassExtension接口
独立硬件厂商应在
IPnPCallbackHardware::OnPrepareHardware()中创建(CoCreatelnstance())该类的实例,并且在UMDF驱动器的生命周期中保持指向该实例的指针。该接口通过分析WPD IOCTL并将它们分解成对独立硬件厂商提供的回叫的设备驱动器接口调用来来协助独立硬件厂商。独立硬件厂商应通过调用Initialize()(初始化)来向该接口注册一ISideShowDriver对象。
HRESULT Initialize(IUnknown*WdfDeviceUnknown,IUnknown*pSideShowDriverUnknown)
该方法向该类扩展对象注册一ISideShowDriver对象并且初始化该类扩展以供使用。
HRESULT Uninitialize()
该方法取消注册该类扩展对象并释放该类扩展可能具有的任何引用。
HRESULT OnProcessIoControl(IWDFIoQueue*pQueue,IWDFIoRequest*pRequest,ULONG ControlCode,SIZE_TInputBufferSizeInBytes,SIZE_TOutputBufferSizeInBytes)
该方法接收转发的基于WPD的IOCTL。客户端应在调用该方法之前通过调用Initialize()来注册实现ISideShowDriver接口的对象。可以传入该方法的有效的IOCTL包括由辅助显示平台生成的IOCTL。如果独立硬件厂商希望将自定义的WPD IOCTL传入该方法,他们将在ISideShowDriver::OnProcessWpdMessage()中实现处理程序代码。客户端应完成I/O请求,因为I/O请求不会由该调用所完成。
ISideShowDriver接口
ISideShowDriver接口由ISideShowClassExtension对象使用以在设备上执行命令。ISideShowDriver是未注册的COM对象,其通过初始化方法被提供给该ISideShowClassExtension类。独立硬件厂商负责实现该接口。
HRESULT OnSetCurrentUser(SID*user,LPCWSTRpwszFriendlyName)
用于告诉设备谁是当前用户。
user[in]指向确定新的当前用户的SID的指针。
pwszFreindlvName
Figure S2006800313086D00131
友好的、人类可读的用户名的串。
HRESULT OnGetCurrentUser(SID**ppuser)
该方法允许客户端向设备询问该设备当前指定的用户。
ppuser[out]指向一地址的指针,当返回时将包括该设备当前指定的用户的SID。调用者可以通过调用FreeSid()来释放该SID。
HRESULT OnSetTime(SID*user,FILETIME time)
用于在设备上设置当前时间。
user[in]指向指示该进行调用进程的所有者的SID的指针。
time[in]作为当前时间的文件时间(FILETIME)。
HRESULT OnSetShortDateFormat(SID*user,LPCWSTRpwszDateFormat)
用于将设备的数据格式设置为短,并指示这是什么格式。
user[in]指向指示该进行调用进程的所有者的SID的指针。
pwszDateFormat[in]
HRESULT OnSetLongDateFormat(SID*user,LPCWSTRpwszDateFormat)
用于将设备的数据格式设置为长,并指示这是什么格式。
user[in]指向指示该进行调用进程的所有者的SID的指针。
pwszDateFormat[in]
HRESULT OnSetShortTimeFormat(SID*user,LPCWSTRpwszTimeFormat)
用于将设备的时间格式设置为短,并指示这是什么格式。
user[in]指向指示该进行调用进程的所有者的SID的指针。
pwszTimeFormat[in]指示时间格式的串。
HRESULT OnSetLongTimeFormat(SID*user,LPCWSTRpwszTimeFormat)
用于将设备的时间格式设置为长,并指示这是什么格式。
user[in]指向指示该进行调用进程的所有者的SID的指针。
pwszTimeFormat[in]指示时间格式的串。
HRESULT OnSetLanguage(SID*user,LANGID lid)
该方法告诉该设备用于给定设备用户对的当前语言是什么。
user[in]指向指示该进行调用进程的所有者的SID的指针。
lid[in]用于指定用户的当前语言的LANGID。
HRESULT OnGetDeviceFirmwareVersion(LPCWSTR*ppwszVersion)
该方法检索设备固件的版本信息。
ppwszVersion[out]指向宽串(wide string)的指针,当返回时将包含该设备固件信息。
HRESULT OnGetDeviceEndpoints(ENDPOINT_ID**rgEndpoints,DWORD*cEndpoints)
该方法检索设备支持的端点。
user[in]指向指示该进行调用进程的所有者的SID的指针。
rgEndpoint[out]指向作为由设备所支持的端点的ENDPOINT数组的指针。应由由客户端通过调用CoTaskMemFree()来释放rgEndpoints。
HRESULT OnGetDeviceCapabilities(PROPERTYKEY*pKey,PROPVARIANT*pvValue)
该方法由API使用来确定该设备的能力(即,屏幕分辨率、色彩深度等等)
pKey[in]指向标识要查询的设备能力的PROPERTYKEY的指针。
pvValue[out]指向PROPVARIANT的指针,当返回时将包含对应能力的值。
HRESULT OnGetPreEnabledApplications(APPLICATION_ID**ppguidApps)
该方法由CPL用来确定应在首次运行时启用的默认应用程序组是什么。该方法将在设备安装时调用。
ppguidApps[out]指向APPLICATION_ID数组的指针,当返回时将包括默认应用程序组的应用程序id。客户端负责通过对CoTaskMemFree()的调用来释放该GUID数组。
HRESULT OnAddApplication(SID*user,CONSTPAPPLICATION_ID pAppId,CONST PENDPOINT_ID pEndPoint,LPCWSTR wszName,DWORD policy,CONST BYTE*pbLargeIcon,DWORD cbLargeIcon,BYTE*pbMediumIcon,DWORDcbMediumIcon ,CONST BYTE*pbSmallIcon,DWORDcbSmalIcon)
该方法由CPL用来启用一应用程序供设备上的指定用户使用。
user[in]指向指示该进行调用进程的所有者的SID的指针。
pAppld[in]指向APPLICATION_ID的指针,指示对给定用户将要向该设备注册的应用程序。
wszName[in]作为该应用程序昵称的LPCWSTR,可由设备为显示的目使用。
policy[in]指示将由设备为该应用程序使用的高速缓存策略的DWORD。该策略可以是诸如下述的值:
Keepoldest
KeepFrequentlyAccessed
KeepRecentlyAccessed
pbLargelcon[in]字节数组,是与该应用程序相关联的大图标图像。
cbLargelcon[in]由pbLargelcon指向的大图标数据的字节的计数。
pbSmalllcon[in]字节数组,是与该应用程序相关联的小图标图像。
cbSmalllcon[in]由pbSmalllcon指向的小图标数据的字节计数。
HRESULT OnRemoveApplication(SID*user,CONSTPAPPLICATION_ID pAppId)
该方法由CPL用来对设备上的指定用户禁用一应用程序。
user[in]指向指示该进行调用进程的所有者的SID的指针。
pAppld[in]指向将要为指定的用户从设备移除的APPLICATION_ID的指针。
HRESULT OnAddNotification(CONST PAPPLICATION_ID pAppId,NOTIFICATION ID notificationId,FILETIME ftExpiration,LPCWSTR pwszTitle,LPCWSTR pwszMessage,CONST BYTE*pbImage,DWORD cbImage)
发送通知至设备。
pAppld[in]指向作为要向其发送通知的应用程序Id的GUID的指针。
notificationld[in]作为通知id的NOTIFICATION_ID。
ftExpiration[in]文件时间(FILETIME),其是通知期满并应从设备上的视图移除的时间。
pwszTitle[in]作为通知标题的文本的串。
pwszMessage[in]作为通知消息的文本的串。
pblmage[in]作为与通知相关联的图像的字节数组。
cblmage[in]图像pblmage的字节的计数。
HRESULT OnRemoveNotification(CONST PAPPLICATION_IDpAppId,NOTIFICATION_ID notificationId)
该方法从设备移除活动通知。
pAppld[in]指向作为将要被移除的通知的应用程序Id的APPLICATION_ID的指针。
notificationld[in]作为通知id的DWORD。
HRESULT OnRemoveAllNotifications(CONST PAPPLICATION_IDpAppId)
该方法从该设备移除用于一应用程序的所有通知。
pAppld[in]指向指示应对其移除所有通知的应用程序的APPLICATION_ID的指针。
HRESULT OnAddContent(CONST PAPPLICATION_ID pAppId,CONST PENDPOINT_ID pRendererId,CONTENT_ID contentId,CONST BYTE*pData,DWORD cbData)
该方法为给定的应用程序将内容发送至该设备。
pAppld[in]指向作为与该内容相关联的应用程序的应用程序Id的APPLICATION_ID的指针。
pRendererld[in]指向与该内容相关联的呈现者Id的ENDPOINT_ID的指针。
contented[in]要添加的内容的内容id。
pbData[in]作为要添加到该应用程序的内容的字节的数组。
cbData[in]数据的字节的计数。
HRESULT OnRemoveContent(CONST PAPPLICATION_ID pAppId,CONST GUID pRenderId)
该方法对给定的应用程序从设备移除内容。
pAppld[in]指向要对其移除内容的应用程序的APPLICATION_ID的指针。
pRendererld[in]指向作为与该内容相关联的呈现者Id的GUID的指针
HRESULT OnRemoveAllContent(CONST PAPPLICATION_IDpAppId,CONST PENDPOINT_ID pRendererId)
对一应用程序从设备移除所有的内容。
pAppld[in]指向作为要对其移除所有内容的应用程序的应用程序Id的APPLICATION_ID的指针。
pRendererld[in]指向作为与将要被移除的内容的呈现者Id的ENDPOINT_ID的指针。
HRESULT OnSetNotificationsEnabled([in]const SID*pUserSid,[in]const BOOL fIsEnabled)
禁止设备生成的通知。
user[in]指向指示该进行调用进程的所有者的SID的指针。
flsEnable[in]指示通知是否应该由该设备禁止的布尔值。
HRESULT OnDeviceIoControl(SID*user,IWDFIoQueue*pQueue,IWDFIoRequest*pRequest,ULONG ControlCode,SIZE_T InputBufferSizeInBytes,SIZE_TOutputBufferSizeInBytes)
该方法是响应于未知WPD IOCTL调用的后退处理程序(fall-backhandler)。该方法向独立硬件厂商给出扩展设备驱动器接口并在与其他接口方法相同的上下文中实现他们自己的WPD IOTCL的机会。独立硬件厂商负责对传入的数据进行确认以及安全性检查。该方法的目的是提供扩展设备驱动器接口而不是绕开它们的机制。
HRESULT OnGetDeviceName([out,string]LPWSTR*ppwszName)
该方法用于为了在设备管理器中显示的目的而检索设备的名称。
HRESULT OnGetDeviceManufacturer([out,string]LPWSTR*ppwszManufacturer)
该方法用于为了在设备管理器中显示的目的而检索设备制造商的名称。
正如同能够容易地被理解的,大多数的驱动器代码不是算法密集的。可能的例外是,驱动器内的用于基于对象ID推出逻辑WPD对象是什么的机制是。类扩展对象使用常规表达式来将对象ID匹配到逻辑WPD对象。这可以通过使用更加简化的串分析函数来替换常规表达式而进行优化,尽管这样做会为速度牺牲健壮性。

Claims (18)

1.在计算环境中,一种用于辅助显示设备通信的方法,包括:
提供包括至少一个接口的接口组,所述接口组由辅助显示设备驱动器实现,用于将所述驱动器耦合至辅助显示平台;以及
通过所述接口组调用所述辅助显示设备驱动器,包括作出对应于从所述辅助显示平台接收的命令的调用,以便由一个或多个辅助显示设备来执行;
其中,所述接口组中的所述至少一个接口被用来创建用于从所述辅助显示设备驱动器发送至所述辅助显示平台的设备事件数据,所述设备事件数据包括内容缺失事件分组。
2.如权利要求1所述的方法,还包括:向辅助显示驱动器类扩展对象注册所实现的设备驱动器接口对象。
3.如权利要求1所述的方法,其特征在于,通过接口组调用所述辅助显示设备驱动器包括通过类扩展对象与所述辅助显示平台通信。
4.如权利要求3所述的方法,其特征在于,辅助显示设备驱动器主存在用户模式驱动器框架中,并且还包括,将所述类扩展对象实例化为所述用户模式驱动器框架中的帮助器对象。
5.如权利要求3所述的方法,还包括,通过所述接口组和所述类扩展对象从所述辅助显示设备驱动器获取事件数据,并且将相应的事件信息传送到所述辅助显示平台。
6.如权利要求3所述的方法,还包括,通过所述类扩展对象和监视进程执行安全性检查。
7.在具有主计算机系统和辅助显示设备的计算环境中,一种用于辅助显示设备通信的系统,包括:
辅助显示平台,从一个或多个应用程序提供针对所述辅助显示设备的数据;
辅助显示设备驱动器,接收所述数据并通过传输将相应的信息提供给所述辅助显示设备;
接口组,由所述辅助显示设备驱动器实现;以及
类扩展对象,通过所述接口组与所述辅助显示设备驱动器通信,所述类扩展对象被配置成处理从所述辅助显示平台作为数据接收的命令并通过所述接口组使用相应的数据回叫所述辅助显示设备驱动器,以便作为所述相应的信息通过所述传输提供给所述辅助显示设备;
其中,所述接口组包括用于创建用于从所述辅助显示设备驱动器发送至所述辅助显示平台的设备事件数据的接口,其中所述接口包括至少下列之一:用于构造内容缺失事件分组的装置、用于构造应用程序事件的装置、用于提供关于当前用户信息的装置、以及用于请求关于当前用户的信息的装置。
8.如权利要求7所述的系统,其特征在于,从该辅助显示平台作为数据接收的命令包括输入/输出(I/O)控制命令,以及其中所述类扩展对象通过所述接口组从所述辅助显示设备驱动器接收所述I/O控制命令,解释所述I/O控制命令,并使用由从所述I/O控制命令翻译得到的对应的数据通过所述接口回叫所述辅助显示设备驱动器。
9.如权利要求7所述的系统,还包括监视进程,其中所述类扩展对象与所述监视进程通信以对从所述辅助显示平台作为数据接收的命令执行安全性检查。
10.如权利要求7所述的系统,其特征在于,所述接口和类扩展对象在至少一个辅助显示相关库中提供。
11.如权利要求7所述的系统,还包括辅助显示位图库。
12.如权利要求7所述的系统,其特征在于,所述接口包括用于将事件数据从所述辅助显示设备驱动器的提供给所述类扩展对象的装置,以便于将相应的事件信息提供给所述辅助显示平台。
13.如权利要求7所述的系统,其特征在于,所述接口组包括具有至少下列之一的接口:用于向所述类扩展对象注册所述辅助显示设备驱动器的装置以及用于将来自所述辅助显示设备驱动器的命令转发给所述类扩展对象的装置。
14.如权利要求7所述的系统,其特征在于,所述接口组包括用于在所述设备上执行命令的另一接口,其中所述另一接口包括至少下列之一:用于控制所述辅助显示设备上的显示特征的装置、用于设置所述辅助显示设备上的系统信息的装置、用于提供进行调用的进程的安全性信息的装置、用于确定所述辅助显示设备的能力的装置、用于启用应用程序以在所述辅助显示设备上运行的装置、用于发送通知至所述辅助设备的装置、用于从所述辅助设备移除至少一个通知的装置、用于发送应用程序相关内容至所述辅助设备的装置、用于上传软件代码以在所述设备上运行的装置、以及用于从所述辅助设备移除至少一组应用程序相关内容的装置。
15.在计算机环境中,一种用于辅助显示设备通信的方法,包括:
从辅助显示设备驱动器接收调用,所述调用包括关于执行与辅助显示相关的操作的命令,其中所述调用是通过由所述辅助显示设备驱动器实现的定义的接口组从所述辅助显示设备驱动器接收的;
将所述调用和命令翻译成为由所述辅助显示设备驱动器所理解的数据格式的数据;以及
使用所述数据回叫所述辅助显示设备驱动器,其中回叫所述辅助显示设备驱动器包括通过经由所述定义的接口组注册的回叫来返回所述数据;
其中,所述接口组包括用于创建用于从所述辅助显示设备驱动器发送至所述辅助显示平台的设备事件数据的接口,其中所述接口包括至少下列之一:用于构造内容缺失事件分组的装置、用于构造应用程序事件的装置、用于提供关于当前用户信息的装置、以及用于请求关于当前用户的信息的装置。
16.如权利要求15所述的方法,还包括执行与所述命令相关的安全性检查。
17.如权利要求15所述的方法,还包括基于用户标识信息和当前操作模式确定是否一用户可以通过所述辅助显示设备驱动器与一辅助显示设备交互。
18.如权利要求17所述的方法,其特征在于,所述当前操作模式可以被改变,以允许对所述设备的不同类型的访问,并且其中所述当前操作模式对应于下列之一:单用户模式、多用户模式、用于在所述设备上有数据的当前设备用户的模式、以及允许访问其上运行所述辅助显示设备驱动器的主机计算机系统的当前控制台用户的模式。
CN2006800313086A 2005-08-31 2006-08-29 辅助显示设备驱动器接口 Active CN101253470B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US71323805P 2005-08-31 2005-08-31
US60/713,238 2005-08-31
US11/410,856 US8659505B2 (en) 2005-08-31 2006-04-24 Auxiliary display device driver interface
US11/410,856 2006-04-24
PCT/US2006/033820 WO2007027743A1 (en) 2005-08-31 2006-08-29 Auxiliary display device driver interface

Publications (2)

Publication Number Publication Date
CN101253470A CN101253470A (zh) 2008-08-27
CN101253470B true CN101253470B (zh) 2013-01-02

Family

ID=37803384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800313086A Active CN101253470B (zh) 2005-08-31 2006-08-29 辅助显示设备驱动器接口

Country Status (6)

Country Link
US (2) US8659505B2 (zh)
EP (1) EP1920320A4 (zh)
JP (1) JP2009506463A (zh)
KR (1) KR101319632B1 (zh)
CN (1) CN101253470B (zh)
WO (1) WO2007027743A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8749561B1 (en) 2003-03-14 2014-06-10 Nvidia Corporation Method and system for coordinated data execution using a primary graphics processor and a secondary graphics processor
US8743019B1 (en) 2005-05-17 2014-06-03 Nvidia Corporation System and method for abstracting computer displays across a host-client network
TWI303367B (en) * 2006-03-30 2008-11-21 Infoaction Technology Inc Management system for usb audio device cluster
US9195428B2 (en) 2006-04-05 2015-11-24 Nvidia Corporation Method and system for displaying data from auxiliary display subsystem of a notebook on a main display of the notebook
US8775704B2 (en) * 2006-04-05 2014-07-08 Nvidia Corporation Method and system for communication between a secondary processor and an auxiliary display subsystem of a notebook
US8629814B2 (en) 2006-09-14 2014-01-14 Quickbiz Holdings Limited Controlling complementary bistable and refresh-based displays
US8127310B1 (en) * 2007-03-26 2012-02-28 Celio Corporation Method and apparatus for dynamically switching display drivers in mobile device operating system
US7926072B2 (en) * 2007-10-01 2011-04-12 Spring Design Co. Ltd. Application programming interface for providing native and non-native display utility
US8185783B2 (en) * 2007-11-22 2012-05-22 Microsoft Corporation Split user-mode/kernel-mode device driver architecture
US7971043B2 (en) * 2007-11-22 2011-06-28 Andes Technology Corporation Electronic system and method for changing number of operation stages of a pipeline
US20090172710A1 (en) * 2007-12-28 2009-07-02 Arman Toorians Method and system for enabling a mini program on a computing device to access an auxiliary system
US8819256B2 (en) * 2008-01-16 2014-08-26 Broadcom Corporation Method and system for device property for specification of vendor specific protocol features
US8826307B2 (en) * 2008-04-18 2014-09-02 Microsoft Corporation Extensible private driver interface
US8736617B2 (en) 2008-08-04 2014-05-27 Nvidia Corporation Hybrid graphic display
US8799425B2 (en) 2008-11-24 2014-08-05 Nvidia Corporation Configuring display properties of display units on remote systems
US20100138768A1 (en) * 2008-12-02 2010-06-03 Nvidia Corporation Simplifying Configuration Of Multiple Display Units For Common Use
US9075559B2 (en) 2009-02-27 2015-07-07 Nvidia Corporation Multiple graphics processing unit system and method
US9135675B2 (en) * 2009-06-15 2015-09-15 Nvidia Corporation Multiple graphics processing unit display synchronization system and method
US8766989B2 (en) 2009-07-29 2014-07-01 Nvidia Corporation Method and system for dynamically adding and removing display modes coordinated across multiple graphics processing units
US9111325B2 (en) 2009-12-31 2015-08-18 Nvidia Corporation Shared buffer techniques for heterogeneous hybrid graphics
US20110185369A1 (en) * 2010-01-25 2011-07-28 Canon Kabushiki Kaisha Refresh of auxiliary display
US8620379B2 (en) * 2010-12-06 2013-12-31 Broadcom Corporation Windows portable devices interface for Bluetooth low energy devices
US8786634B2 (en) * 2011-06-04 2014-07-22 Apple Inc. Adaptive use of wireless display
US8997120B1 (en) * 2012-03-30 2015-03-31 Emc Corporation Lightweight communication channel for control of device driver components
US9075985B2 (en) * 2013-05-31 2015-07-07 Microsoft Technology Licensing, Llc Restricted transmogrifying driver platform
US9818379B2 (en) 2013-08-08 2017-11-14 Nvidia Corporation Pixel data transmission over multiple pixel interfaces
JP6322288B2 (ja) 2014-01-29 2018-05-09 インテル・コーポレーション コンピューティングデバイス、セカンダリディスプレイデバイスでデータを表示する、コンピュータ生成の方法、プログラム、及び、機械可読記録媒体
US10223178B2 (en) * 2017-01-23 2019-03-05 Wyse Technology L.L.C. Enabling WPD devices to be managed at the capability level
US10657245B2 (en) * 2017-03-14 2020-05-19 Wyse Technology L.L.C. Dynamically controlling access to devices
US11032136B2 (en) * 2018-02-01 2021-06-08 Microsoft Technology Licensing, Llc Discovery of network camera devices
CN111756604B (zh) * 2019-03-29 2022-04-12 华为技术有限公司 一种设备配合方法、装置及系统
CN112069524A (zh) * 2020-09-15 2020-12-11 北京字跳网络技术有限公司 信息处理方法、装置、设备及存储介质
CN112860202A (zh) * 2021-02-04 2021-05-28 苏州必捷网络有限公司 一种无需额外显卡扩展电脑桌面的方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5195176A (en) * 1991-09-09 1993-03-16 Destiny Technology Corporation Method and apparatus to enhance laser printer speed and functionality
US5343404A (en) * 1992-11-12 1994-08-30 Maritec Corp. Precision digital multimeter and waveform synthesizer for multi-signals with distorted waveforms embedded in noise
US5515081A (en) * 1993-11-30 1996-05-07 Borland International, Inc. System and methods for improved storage and processing of BITMAP images
JPH10319139A (ja) 1997-05-15 1998-12-04 Naotaka Kato 時刻表示装置及び方法
US6919864B1 (en) 2000-07-27 2005-07-19 Avaya Technology Corp. Display monitor
US7152211B1 (en) * 2001-01-30 2006-12-19 Microsoft Corporation Resolution independent theming
JP2003008736A (ja) * 2001-06-22 2003-01-10 Pioneer Electronic Corp 携帯情報端末機
US7619633B2 (en) * 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7103788B1 (en) 2001-10-31 2006-09-05 Microsoft Corporation Selective suspension of bus devices
US8763061B2 (en) * 2002-02-13 2014-06-24 Motorola Mobility Llc Correlation of tuned channel information with internet web addresses
MXPA04009699A (es) * 2002-04-04 2004-12-13 Gen Instrument Corp Metodo y aparato para desplegar en pantalla graficos en un aparato auxiliar de pantalla usando unidades de graficos de nivel bajo.
AU2003247836A1 (en) * 2002-07-02 2004-01-23 La Classe Locations, Inc. Digital project management system
US7739693B2 (en) * 2002-11-25 2010-06-15 Sap Ag Generic application program interface for native drivers
US7240228B2 (en) 2003-05-05 2007-07-03 Microsoft Corporation Method and system for standby auxiliary processing of information for a computing device
US20050066209A1 (en) 2003-09-18 2005-03-24 Kee Martin J. Portable electronic device having high and low power processors operable in a low power mode
US20070288715A1 (en) * 2004-06-14 2007-12-13 Rok Productions Limited Media Player

Also Published As

Publication number Publication date
EP1920320A4 (en) 2009-01-07
KR20080037063A (ko) 2008-04-29
WO2007027743A1 (en) 2007-03-08
US20140196058A1 (en) 2014-07-10
KR101319632B1 (ko) 2013-10-22
US8659505B2 (en) 2014-02-25
CN101253470A (zh) 2008-08-27
US20070046562A1 (en) 2007-03-01
JP2009506463A (ja) 2009-02-12
EP1920320A1 (en) 2008-05-14

Similar Documents

Publication Publication Date Title
CN101253470B (zh) 辅助显示设备驱动器接口
CN101292239B (zh) 用于传达网络连通性信息的方法及系统
CN100426238C (zh) Vex-虚拟扩展框架
US7761862B2 (en) Externalized classloader information for application servers
US8806508B2 (en) POS hardware abstraction
US8286158B2 (en) Method and system for installing portable executable applications
US20050198596A1 (en) Dynamically configuring resources for cycle translation in a computer system
CN100468325C (zh) 用于支持关于计算机程序的许可证的实施的方法和系统
US20030217358A1 (en) Method, system, and article of manufacture for firmware downloads
US20080320500A1 (en) Remote human interface device in an aggregate computer system
CN1744601A (zh) 用于产生介质传输协议的可选择扩展的系统和方法
US20010005201A1 (en) A computer system using a processor interfacing with multiple displays
US7631038B2 (en) PXE server with multiple provider model
CN101548284A (zh) 软件许可证中的条件策略
MX2009000303A (es) Datos laterales de terminal de tarjeta inteligente y estructura de manejo.
CN1783015A (zh) 启用子系统间的资源共享
JP2012161076A (ja) 多機能装置に接続する大容量記憶装置にネットワークアクセスを可能にするシステム及び方法
US9141321B1 (en) Configurable printer server device
US20050261969A1 (en) Layered architecture for POS (point-of sale) systems
US20070118658A1 (en) User selectable management alert format
TWI264894B (en) System and method for monitoring and managing connection manager activity
US20220137969A1 (en) Multi-vendor accelerator management protocol interoperability
WO2000034856A2 (en) System and method for controlling the usage of digital objects
US7926068B2 (en) Printing interface for a computer platform
GB2394087A (en) Remote control unit interface

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: 20150423

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

Effective date of registration: 20150423

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.