控制设备耦接至主计算机的方法-k8凯发

文档序号:8258428阅读:446来源:国知局
控制设备耦接至主计算机的方法
【技术领域】
[0001]本发明有关于实现设备选择性暂停的方法与相关程序,尤其有关于实现通用串行总线(universal serial bus, usb)设备选择性暂停的双堆栈(dual-stack)驱动器架构。
【背景技术】
[0002]在计算机系统中,诸如usb设备的设备越来越普遍。因此,计算机软件操作系统(operating system, os)程序一般包括驱动器,以通过计算机系统的输入输出(input/output, i/o)端口与usb设备接口相连。
[0003]很多得到广泛应用的计算机os程序(如微软公司(microsoft)开发的windows?nt)通常具有两个主要组件:用来处理用户应用的用户组件、用来将用户应用和在硬件完成的实际数据处理相桥接的核心组件。核心组件一般管理系统资源,在硬件组件和软件组件之间进行通信,并通常为系统资源(特别是处理器和i/o设备)提供低阶抽象层(low-level abstract1n layer)以使应用软件必须控制执行自身的功能。核心组件也可以通过进程间通信(inter-process communicat1n, ipc)机制与系统呼叫(systemcall),使上述系统资源对应用进程可用。在这种os程序与设备的连接中,os程序通常将虚拟内存(virtual memory)分隔为用户空间和核心空间,其中用户空间用来记忆用户应用,核心空间用来运行核心、核心扩充以及记忆大部分设备驱动器。其中一些上述设备驱动器包括网络驱动器接口规格(network driver interface specificat1n, ndis)迷你端口(miniport)驱动器,其中ndis迷你端口驱动器使用窗口驱动器模型(windows drivermodel, wdm)或窗口驱动器基础(windows driver foundat1n, wdf)(也被称为 nd i s/wdm/wdf驱动器)。
[0004]请参照图1,图1是传统驱动器架构的示意图。上述传统驱动器架构包括具有应用10的用户空间,以及具有ndis迷你端口驱动器20、usb驱动器堆栈40的核心空间。其中核心空间与硬件usb网络设备50接口相连。
[0005]在上述架构中,wdm/wdf驱动器位于迷你端口驱动器的同一个驱动器堆栈(driverstack)中。然而在一些如windows? xp和windows? vista这样的os程序中,并不允许ndis迷你端口驱动器使用usb选择性暂停机制。这是因为,在如windows? xp和windows?vista这样的os程序中,只有电力政策持有者(即功能驱动器)才可发出电力1/0要求封包(1/0 request packet, irp)来暂停usb网络设备。但是在图1所示的驱动器架构中,ndis迷你端口驱动器也是功能驱动器,而os却并不允许它发出电力irp。这是存在问题的,因为当网络设备处于未连接状态时,通常需要选择性暂停一个或多个usb网络设备来节约主计算机和网络设备的电力损耗。而os这种限制/限定的不协调阻止了 usb网络设备进入暂停模式,但usb网络设备进入暂停模式时,恰恰能减小主计算机和网络设备的电力损耗。
[0006]而且,usb网络设备进入暂停模式后,有些如windows? xp和windows? vista这样的os并不允许用户应用直接存取设备。这也是存在问题的,因为用户应用通常需要直接存取暂停的usb网络设备(来直接“唤醒”或使用它),而os的限制/限定阻止了用户应用直接存取处于暂停状态且不能被用户应用直接唤醒的usb网络设备。
[0007]尽管ndis迷你端口驱动器作为实施例讨论如上,这些问题也同样存在于其他类型的驱动器中。
[0008]因此,需要提供一种允许usb或i/o设备实现选择性暂停(来减小主计算机和设备的电力损耗),并允许用户应用直接存取暂停的usb或i/o设备的驱动器架构。

【发明内容】

[0009]有鉴于此,本发明提供一种控制设备耦接至主计算机的方法,包括:在所述主计算机的操作系统的核心空间提供第一驱动器堆栈,其中所述第一驱动器堆栈包括虚拟总线,由所述虚拟总线创建并耦接至所述虚拟总线的物理设备对象,以及耦接至所述物理设备对象的第一设备驱动器,以与位于所述操作系统的用户空间中的用户应用交互;以及在所述操作系统的所处核心空间提供第二驱动器堆栈,其中所述第二驱动器堆栈包括功能驱动器和用于所述设备的第二设备驱动器,以与所述设备交互,其中所述功能驱动器耦接至所述第一驱动器堆栈,所述第二设备驱动器耦接至所述功能驱动器,所述第二驱动器堆栈将来自所述第一驱动器堆栈的所述虚拟总线的数据传送给所述设备,且所述功能驱动器发出命令给所述第二设备驱动器,以选择性暂停所述设备;其中,所述第一驱动器堆栈和所述第二驱动器堆栈不同,所述第一设备驱动器和所述功能驱动器不同。
[0010]通过利用本发明,可减小主计算机和设备的电力损耗。
【附图说明】
[0011]图1是传统驱动器架构的示意图。
[0012]图2是根据本发明实施例的双堆栈驱动器架构示意图,图解了 usb网络设备的选择性暂停。
[0013]图3是根据本发明实施例的双堆栈驱动器架构示意图,图解了 usb网络设备的直接回复。
[0014]图4是根据本发明实施例的双堆栈驱动器架构示意图,图解了 usb网络设备的远程唤醒。
[0015]图5是根据本发明实施例的双堆栈驱动器架构示意图,图解了 usb网络设备的第一次插入。
[0016]图6是根据本发明实施例的双堆栈驱动器架构示意图,图解了 usb网络设备第一次插入后的后续插入。
[0017]图7是根据本发明实施例的双堆栈驱动器架构示意图,图解了对usb网络设备状态的监测。
[0018]图8是实现本发明方法的计算机系统的示范性方块示意图。
[0019]图9是根据本发明另一实施例的双堆栈驱动器架构的示意图。
【具体实施方式】
[0020]以下描述是本发明实施的较佳实施例。以下实施例仅用来例举阐释本发明的技术特征,并非用来限制本发明的范畴。本发明范围由前述权利要求所限定。
[0021]在权利要求书及说明书当中使用了某些词汇来指称特定的元件。所属领域中的普通技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个元件。本发明的权利要求书及说明书并不以名称的差异来作为区分元件的方式,而是以元件在功能上的差异来作为区分的准则。在通篇说明书及后续的请求项当中所提及的“包含”或“包括”为开放式的用语,故应解释成“包含但不限定于”。以外,“耦接” 一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表该第一装置可直接电气连接于该第二装置,或通过其它装置或连接手段间接地电气连接至该第二装置。
[0022]请参照图2,图2是根据本发明实施例的双堆栈驱动器架构的示意图,图解了 usb网络设备的选择性暂停。本发明中的双堆栈驱动器包括具有应用110的用户空间,以及具有ndis迷你端口驱动器120、wdm/wdf驱动器130和usb驱动器堆栈140的核心空间,其中所述核心空间与硬件usb网络设备150交互。
[0023]本发明的架构是一种双堆栈架构,即有两个位于不同驱动器堆栈的网络设备驱动器一起工作,以控制usb网络设备并执行usb暂停操作。在本发明中,核心空间中的ndis迷你端口驱动器120 (即初始驱动器)是中间驱动器,也是与用户空间中的用户应用交互之位于第一驱动器堆栈的“虚拟”设备。而核心空间中的wdm/wdf驱动器130是与物理设备(即usb网络设备150)交互之位于第二驱动器堆栈的功能驱动器。当wdm/wdf驱动器与位于usb驱动器堆栈的物理设备交互时,虚拟设备120就在网络堆栈中建立,并由用户空间进程监测。举例来说,wdm/wdf驱动器可令usb将来自虚拟设备120的请求传送给物理设备,其中所述虚拟设备120位于第一驱动器堆栈,而物理设备位于第二驱动器堆栈。因为ndis迷你端口驱动器120和wdm/wdf驱动器130位于不同的驱动器堆栈,os对ndis驱动器的限制/限定并不应用到wdm/wdf驱动器130上,所以作为功能驱动器的wdm/wdf驱动器130可以发出电力irp,以通过usb驱动器堆栈140选择性暂停usb网络设备150。
[0024]而且,在如图3所示的“主计算机回复(host resume) ”操作中,本发明的双堆栈架构也允许用户应用i1直接存取usb网络设备150。因为现在wdm/wdf驱动器130与ndis迷你端口驱动器120位于不同的驱动器堆栈中,所以os对ndis驱动器的限制/限定并不应用到wdm/wdf驱动器130上。当用户应用110试图直接存取usb网络设备150时,作为功能驱动器的wdm/wdf驱动器130可发出电力irp,以通过usb驱动器堆栈140回复usb网络设备150。
[0025]相似地,在如图4所示的“设备回复”操作中,本发明的双堆栈架构在有数据或事件从网络传送给usb网络设备150时,允许usb远程唤醒usb网络设备150。从网络端看,wdm/wdf在usb驱动器堆栈为功能驱动器,而ndis迷你端口驱动器是虚拟中间驱动器。因为ndis迷你端口驱动器120与wdm/wdf驱动器130位于不同的驱动器堆栈中,所以os对ndis驱动器的限制/限定并不应用到wdm/wdf驱动器130上。
[0026]请参照图5,图5是根据本发明实施例的双堆栈驱动器架构的示意图,图解了 usb网络设备的第一次插入。当usb网络设备150第一次插入时,作为usb驱动器堆栈的功能驱动器,wdm/wdf驱动器130将存取用户空间的服务软件112,从而使得usb网络设备150被ndis迷你端口驱动器120识别。这样,用户空间应用就可通过作为中间驱动器的ndis迷你端口驱动器120存取usb网络设备150。或者,当usb网络设备150第一次插入时,作为usb驱动器堆栈的功能驱动器wdm/wdf驱动器130将存取用户空间的服务软件112,从而在第一驱动器堆栈建立虚拟设备,以作为ndis中间驱动器。服务软件112也可监测位于第一驱动
当前第1页1  
相关技术
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图