专利名称:有关网络设备选择性暂停的方法
技术领域:
本发明有关于实现网络设备选择性暂停的方法与相关程序,尤其有关于实现通用串行总线(Universal Serial Bus,USB)网络设备选择性暂停的双堆栈(dual-stack)驱动器架构。
背景技术:
在计算机网络系统中,诸如USB网络设备的网络设备越来越普遍。因此,计算机软件操作系统(Operating System, OS)程序一般包括驱动器,以通过计算机系统的输入输出 (input/output, I/O)端口与USB网络设备接口相连。很多得到广泛应用的计算机OS程序(如微软公司(Microsoft)开发的Windows NT)通常具有两个主要组件用来处理用户应用的用户组件、用来将用户应用和在硬件完成的实际数据处理相桥接的核心组件。核心组件一般管理系统资源,在硬件组件和软件组件之间进行通信,并通常为系统资源(特别是处理器和1/0设备提供低阶抽象层 (low-level abstraction layer)以使应用软件必须控制执行自身的功能。核心组件也可以通过进程间通信(inter-processcommunication, IPC)机制与系统呼口 1I (system call), 使上述系统资源对应用进程可用。在这种OS程序与网络设备的连接中,OS程序通常将虚拟内存(virtualmemory)分隔为用户空间和核心空间,其中用户空间用来记忆用户应用, 核心空间用来运行核心、核心扩充以及记忆大部分设备驱动器。其中一些上述设备驱动器包括网络驱动器接口规格(Network Driver Interface Specification, NDIS)迷你端口(miniport)驱动器,其中NDIS迷你端口驱动器使用窗口驱动器模型(Windows Driver Model, WDM)或窗口驱动器基础(Windows DriverFoundation, WDF)(也被称为 NDIS/WDM/ WDF驱动器)。请参照图1,图1是传统驱动器架构的示意图。上述传统驱动器架构包括具有应用10的用户空间,以及具有NDIS迷你端口驱动器20、USB驱动器堆栈40的核心空间。其中核心空间与硬件USB网络设备50接口相连。在上述架构中,WDM/WDF驱动器位于迷你端口驱动器的同一个驱动器堆栈(driver stack)中。然而在一些如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网络设备进入暂停模式时,恰恰能减小主计算机和网络设备的电力损耗。而且,USB网络设备进入暂停模式后,有些如Windows XP和\\TindoWS Vista这样的OS并不允许用户应用直接存取设备。这也是存在问题的,因为用户应用通常需要直接存取暂停的USB网络设备(来直接“唤醒”或使用它),而OS的限制/限定阻止了用户应用直接存取处于暂停状态且不能被用户应用直接唤醒的USB网络设备。因此,需要提供一种允许USB或I/O网络设备实现选择性暂停(来减小主计算机和网络设备的电力损耗),并允许用户应用直接存取暂停的USB或I/O网络设备的驱动器架构。
发明内容
有鉴于此,本发明提供一种有关网络设备选择性暂停的方法。本发明一个实施例提供一种实现网络设备选择性暂停的方法,所述网络设备耦接于主计算机上,且所述主计算机的操作系统并不允许特定网络设备驱动器具有网络设备选择性暂停特性,所述实现网络设备选择性暂停的方法包括在所述操作系统的核心空间提供第一驱动器堆栈和第二驱动器堆栈;在所述第一驱动器堆栈中,为所述特定网络设备驱动器建立虚拟设备,以与位于所述操作系统的用户空间中的用户应用交互;以及在所述第二驱动器堆栈中,为物理设备提供单独驱动器,以与耦接到所述主计算机的网络设备交互; 其中所述单独驱动器的所述网络设备选择性暂停特性并没有被所述操作系统禁用,所述网络设备选择性暂停特性用来实现耦接到所述主计算机之所述网络设备的选择性暂停。本发明另一个实施例提供一种允许暂停网络设备回复的方法,其中所述暂停网络设备耦接到主计算机上并由所述主计算机回复,且所述主计算机的操作系统并不允许用户应用通过特定网络设备驱动器存取所述暂停网络设备,所述允许暂停网络设备回复的方法包括在所述主计算机操作系统的核心空间提供第一驱动器堆栈和第二驱动器堆栈;在所述第一驱动器堆栈中,为所述特定网络设备建立虚拟设备,以与所述操作系统中用户空间的用户应用交互;以及在所述第二驱动器堆栈中,为物理设备提供单独驱动器,以与耦接到所述主计算机的网络设备交互;其中当所述网络设备处于暂停状态时,所述单独驱动器允许用户应用直接存取所述网络设备,以回复所述网络设备。本发明另一个实施例提供一种允许暂停网络设备远程回复的方法,其中所述暂停网络设备耦接到主计算机上,所述允许暂停网络设备远程回复的方法包括在所述主计算机操作系统的核心空间提供第一驱动器堆栈和第二驱动器堆栈;在所述第一驱动器堆栈中,为初始网络设备驱动器建立虚拟设备,以与所述操作系统中用户空间的用户应用交互; 以及在所述第二驱动器堆栈中,为物理设备提供单独驱动器,以与耦接到所述主计算机的一网络设备交互;其中当所述网络设备处于暂停状态时,所述单独驱动器接收到网络数据或事件时,允许网络设备回复。通过利用本发明,可减小主计算机和网络设备的电力损耗。
图1是传统驱动器架构的示意图。图2是根据本发明实施例的双堆栈驱动器架构示意图,图解了 USB网络设备的选择性暂停。图3是根据本发明实施例的双堆栈驱动器架构示意图,图解了 USB网络设备的直接回复。
图4是根据本发明实施例的双堆栈驱动器架构示意图,图解了 USB网络设备的远程唤醒。图5是根据本发明实施例的双堆栈驱动器架构示意图,图解了 USB网络设备的第一次插入。图6是根据本发明实施例的双堆栈驱动器架构示意图,图解了 USB网络设备第一次插入后的后续插入。图7是根据本发明实施例的双堆栈驱动器架构示意图,图解了对USB网络设备状态的监测。图8是实现本发明方法的计算机系统的示范性方块示意图。
具体实施例方式以下描述是本发明实施的较佳实施例。以下实施例仅用来例举阐释本发明的技术特征,并非用来限制本发明的范畴。本发明范围由前述权利要求所限定。在权利要求书及说明书当中使用了某些词汇来指称特定的元件。所属领域中的普通技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个元件。本发明的权利要求书及说明书并不以名称的差异来作为区分元件的方式,而是以元件在功能上的差异来作为区分的准则。在通篇说明书及后续的请求项当中所提及的“包含”为开放式的用语, 故应解释成“包含但不限定于”。以外,“耦接”一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表该第一装置可直接电气连接于该第二装置,或通过其它装置或连接手段间接地电气连接至该第二装置。请参照图2,图2是根据本发明实施例的双堆栈驱动器架构的示意图,图解了 USB 网络设备的选择性暂停。本发明中的双堆栈驱动器包括具有应用110的用户空间,以及具有NDIS迷你端口驱动器120、WDM/WDF驱动器130和USB驱动器堆栈140的核心空间,其中所述核心空间与硬件USB网络设备150交互。本发明的架构是一种双堆栈架构,即有两个位于不同驱动器堆栈的设备驱动器一起工作,以控制USB设备并执行USB暂停操作。在本发明中,核心空间中的NDIS迷你端口驱动器120(即初始驱动器)是中间驱动器,也是与用户空间中的用户应用交互之位于第一驱动器堆栈的“虚拟”设备。而核心空间中的WDM/WDF驱动器130是与物理设备(S卩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。而且,在如图3所示的“主计算机回复(host resume) ”操作中,本发明的双堆栈架构也允许用户应用Iio直接存取USB网络设备150。因为现在WDM/WDF驱动器130与NDIS 迷你端口驱动器120位于不同的驱动器堆栈中,所以OS对NDIS驱动器的限制/限定并不应用到WDM/WDF驱动器130上。当用户应用110试图直接存取USB网络设备150时,作为功能驱动器的WDM/WDF驱动器130可发出电力IRP,以通过USB驱动器堆栈140回复USB网络设备150。相似地,在如图4所示的“设备回复”操作中,本发明的双堆栈架构在有数据或事件从网络传送给USB网络设备150时,允许USB远程唤醒USB网络设备150。从网络端看, WDM/WDF在USB驱动器堆栈为功能驱动器,而NDIS迷你端口驱动器是虚拟中间驱动器。因为NDIS迷你端口驱动器120与WDM/WDF驱动器130位于不同的驱动器堆栈中,所以OS对 NDIS驱动器的限制/限定并不应用到WDM/WDF驱动器130上。请参照图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也可监测位于第一驱动器堆栈的虚拟设备。请参照图6,图6是根据本发明实施例的双堆栈驱动器架构的示意图,图解了 USB 网络设备在第一次插入后的后续插入。当USB网络设备150在第一次插入后后续插入时, 因为NDIS迷你端口驱动器120已经在USB网络设备150第一次插入时进行了识别,所以 WDM/WDF驱动器130不再需要存取用户空间的服务软件112,而是直接将USB网络设备150 链接到NDIS迷你端口驱动器120上。请参照图7,图7是根据本发明实施例的双堆栈驱动器架构的示意图,图解了对 USB网络设备150状态的监测。在核心空间提供了电力管理器160,以直接监测并同步USB 网络设备150状态的改变,其中电力管理器160位于核心空间的虚拟设备和物理设备之间。 电力管理器160会将USB网络设备150电力状态的改变(如暂停)通知给驱动器堆栈的顶层,也可在核心空间的虚拟设备和物理设备间直接同步USB网络设备状态的改变。举例来说,若USB网络设备150开始禁能时,电力管理器160可发送电力IRP给NDIS迷你端口驱动器120。NDIS迷你端口驱动器120接收到上述电力IRP后,USB网络设备150即对用户应用110不可用。需注意,尽管在上述描述中将USB网络设备作为示范例,本发明并不限定于USB网络设备,而是也可应用到其他的I/O设备中。请参照图8,图8是实现本发明方法和程序的计算机系统的示范性示意图。其中上述计算机系统包括主计算机。一个或多个用户终端210 (每个终端都可具有各自的显示和输入单元)可与主计算机200相连接(例如通过本地I/O端口 220),使操作员以及/或者用户可以与主计算机200以及/或者计算机系统的其他部分交互。或者,主计算机200也可具有自己的整合显示和输入单元,使操作员以及/或者用户可以与主计算机200以及/ 或者计算机系统的其他部分交互。主计算机200 —般包括用来控制主计算机200的功能和操作,并执行计算机指令和程序的中央处理单元(Central Processor Unit,CPU) 230。其中所述计算机指令和程序可安装或保存在耦接于CPU230的只读存储器(Read OnlyMemory, ROM) M0、随机存取内存(Random Access Memory,RAM) 250或数据储存单元洸0 (如硬盘驱动器)上。主计算机200 一般还具有网络I/O端口 270,以连接一个或多个网络设备观0。主计算机200最好也连接到网络上,举例来说,可连接到如因特网(Internet)的开放的外部网络上(图中未显示)。包括实现双堆栈驱动器架构(实现本发明方法和进程的示范例)部分的计算机软件程序可安装在主计算机200的内存或数据储存单元中。当主计算机200的CPU执行软件程序时,主计算机200实现程序的多个功能(包括前面描述之实现本发明方法的双堆栈驱动器架构)。软件程序也可以利用主计算机200之有用的特性如用户接口(User Interface,UI)以及/或者图形用户接口(Graphical User hterface,⑶I)(如触控屏幕以及/或者鼠标和键盘)与显示监测器耦接或联合。本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围。本发明所属技术领域中普通技术人员,在不脱离本发明的精神和范围内,当可做各种的更动与润饰。因此,本发明的保护范围当视之前的权利要求书所界定者为准。
权利要求
1.一种实现网络设备选择性暂停的方法,所述网络设备耦接于主计算机上,且所述主计算机的操作系统并不允许特定网络设备驱动器具有网络设备选择性暂停特性,其特征在于,所述实现网络设备选择性暂停的方法包括在所述操作系统的核心空间提供第一驱动器堆栈和第二驱动器堆栈;在所述第一驱动器堆栈中,为所述特定网络设备驱动器建立虚拟设备,以与位于所述操作系统的用户空间中的用户应用交互;以及在所述第二驱动器堆栈中,为物理设备提供单独驱动器,以与耦接到所述主计算机的网络设备交互;其中所述单独驱动器的所述网络设备选择性暂停特性并没有被所述操作系统禁用,所述网络设备选择性暂停特性用来实现耦接到所述主计算机之所述网络设备的选择性暂停。
2.如权利要求1所述的实现网络设备选择性暂停的方法,其特征在于,所述单独驱动器允许所述用户应用直接存取耦接到所述主计算机之所述网络设备的功能也没有被所述操作系统禁用。
3.如权利要求1所述的实现网络设备选择性暂停的方法,其特征在于,所述单独驱动器令USB将来自所述虚拟设备的请求传送给位于所述第二驱动器堆栈的所述物理设备。
4.如权利要求1所述的实现网络设备选择性暂停的方法,其特征在于,所述虚拟设备是由用户空间应用在所述第一驱动器堆栈建立的。
5.如权利要求1所述的实现网络设备选择性暂停的方法,其特征在于,所述虚拟设备由用户空间应用监测。
6.如权利要求1所述的实现网络设备选择性暂停的方法,其特征在于,进一步包括在所述核心空间提供电力管理器,以直接监测并同步所述网络设备电力状态的改变,其中所述电力管理器位于所述核心空间的所述虚拟设备和所述物理设备之间。
7.一种允许暂停网络设备回复的方法,其中所述暂停网络设备耦接到主计算机上并由所述主计算机回复,且所述主计算机的操作系统并不允许用户应用通过特定网络设备驱动器存取所述暂停网络设备,其特征在于,所述允许暂停网络设备回复的方法包括在所述主计算机操作系统的核心空间提供第一驱动器堆栈和第二驱动器堆栈;在所述第一驱动器堆栈中,为所述特定网络设备建立虚拟设备,以与所述操作系统中用户空间的用户应用交互;以及在所述第二驱动器堆栈中,为物理设备提供单独驱动器,以与耦接到所述主计算机的网络设备交互;其中当所述网络设备处于暂停状态时,所述单独驱动器允许用户应用直接存取所述网络设备,以回复所述网络设备。
8.如权利要求7所述的允许暂停网络设备回复的方法,其特征在于,所述虚拟设备是由用户空间应用在所述第一驱动器堆栈建立的。
9.如权利要求7所述的允许暂停网络设备回复的方法,其特征在于,所述虚拟设备由用户空间应用监测。
10.如权利要求7所述的允许暂停网络设备回复的方法,其特征在于,进一步包括在所述核心空间提供电力管理器,以直接监测并同步所述网络设备电力状态的改变,其中所述电力管理器位于所述核心空间的所述虚拟设备和所述物理设备之间。
11.一种允许暂停网络设备远程回复的方法,其中所述暂停网络设备耦接到主计算机上,其特征在于,所述允许暂停网络设备远程回复的方法包括在所述主计算机操作系统的核心空间提供第一驱动器堆栈和第二驱动器堆栈; 在所述第一驱动器堆栈中,为初始网络设备驱动器建立虚拟设备,以与所述操作系统中用户空间的用户应用交互;以及在所述第二驱动器堆栈中,为物理设备提供单独驱动器,以与耦接到所述主计算机的网络设备交互;其中当所述网络设备处于暂停状态时,所述单独驱动器接收到网络数据或事件时,允许网络设备回复。
12.如权利要求11所述的允许暂停网络设备远程回复的方法,其特征在于,所述虚拟设备由用户空间应用监测。
全文摘要
本发明提供一种实现网络设备选择性暂停的方法,所述网络设备耦接于具有不允许特定网络设备驱动器有网络设备选择性暂停特性之操作系统的主计算机上。方法包括在所述操作系统的核心空间提供第一驱动器堆栈和第二驱动器堆栈;在所述第一驱动器堆栈中为所述特定网络设备驱动器建立虚拟设备;在所述第二驱动器堆栈中为物理设备提供单独驱动器。其中用来实现耦接到所述主计算机之所述网络设备选择性暂停的所述单独驱动器之所述网络设备选择性暂停特性并没有被所述操作系统禁用。通过利用本发明,减小了主计算机和网络设备的电力损耗。
文档编号G06F9/455GK102467402SQ20111011498
公开日2012年5月23日 申请日期2011年5月5日 优先权日2010年11月12日
发明者徐英哲, 黄文俊 申请人:联发科技股份有限公司