CN103189851A - 用于将网络驱动程序注入目标映像的设备和方法 - Google Patents
用于将网络驱动程序注入目标映像的设备和方法 Download PDFInfo
- Publication number
- CN103189851A CN103189851A CN201180041179XA CN201180041179A CN103189851A CN 103189851 A CN103189851 A CN 103189851A CN 201180041179X A CN201180041179X A CN 201180041179XA CN 201180041179 A CN201180041179 A CN 201180041179A CN 103189851 A CN103189851 A CN 103189851A
- Authority
- CN
- China
- Prior art keywords
- source
- network
- driver
- registry
- machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0866—Checking the configuration
- H04L41/0873—Checking configuration conflicts between network elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3808—Network interface controller
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 Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
一种方法,该方法提供的是将网络驱动程序注入目标映像,以便将目标映像变换成与一个或多个源机器相兼容,从而促成经由网络的操作系统流传输。该方法可以包括:促使访问源机器的源系统注册表文件;在没有拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件;确定源机器的一个或多个源网络接口卡是否与目标映像相兼容;以及如果一个或多个源网络接口卡不与目标映像相兼容,则将网络接口驱动程序注入目标映像。所述目标映像可以包括操作系统。在这里还提供了机器可读存储介质和设备。此外还描述了一种构建用于提供将网络驱动程序注入目标映像以将目标映像变换成与一个或多个计算机相兼容的程序的方法。
Description
技术领域
本技术主题主要涉及虚拟磁盘映像、驱动程序的注入或流传输,尤其涉及的是将网络驱动程序注入目标映像的设备和方法。
发明背景
在一个方面中,操作系统流传输是一种从保存在网络上的映像文件中引导计算机(或虚拟机)的技术。实际的操作系统可以集中位于某个服务器上,并且可以根据需要而被流传输到客户机设备。在一个方面中,该映像文件有时可被称为“虚拟磁盘”。
通常,如果多个设备具有相同硬件特性,则可以将一个由特定设备创建的虚拟磁盘流传输到这些设备。更具体地说,在这种典型情景中,主板、网络适配器及视频卡必须是相同的。如果能用单个虚拟磁盘引导多个设备,那么将会大幅简化信息技术(IT)部门的维护工作和成本。例如,系统管理员只需对位于中心的公共虚拟磁盘应用一次变化即可执行Windows更新。从该虚拟磁盘引导的所有客户机设备都会接收到这些变化。
发明内容
在本公开的一个方面中,机器可读存储介质可以用可被处理系统执行的指令编码,以便执行一种用于提供将网络驱动程序注入目标映像的处理的方法。在一个方面中,这种方法可以将目标映像变换成与一个或多个源机器相兼容。并且在一个方面中,该方法可以促成经由网络的操作系统流传输。
所述指令可以包括用于以下的一些或全部处理的代码:促使访问源机器的源系统注册表文件;促使访问目标映像的目标系统注册表文件;确定源机器的一个或多个源网络接口卡是否与目标映像相兼容;以及如果一个或多个源网络接口卡不与目标映像相兼容,则执行网络接口驱动程序注入处理。所述目标映像可以包括操作系统。
用于执行网络接口驱动程序注入处理的操作可以包括以下的一些或全部处理:确定与一个或多个源网络接口卡相关联的一个或多个源网络组件;确定一个或多个源网络组件配置;确定目标映像的一个或多个目标网络组件的目标网络配置;确定源网络配置是否与目标网络配置相冲突;如果源网络配置与目标网络配置相冲突,则通过调整源网络配置来使源网络配置不与目标网络配置相冲突;以及在目标系统注册表文件中注入一个或多个源网络组件的源网络配置。
用于执行网络接口驱动程序注入处理的操作还可以包括:促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上。
在本公开的另一个方面中,一种方法可以提供将网络驱动程序注入目标映像的处理。在一个方面中,该方法可以将目标映像变换成与一个或多个源机器相兼容。并且在一个方面中,该方法可以促成经由网络的操作系统流传输。
该方法可以包括以下的一些或全部处理:促使访问源机器的源系统注册表文件;促使访问目标映像的目标系统注册表文件;在不拷贝目标映像的情况下,由源机器确定源机器的一个或多个源网络接口卡是否与目标映像相兼容;以及如果一个或多个源网络接口卡不与目标映像相兼容,则由源机器执行网络接口驱动程序注入处理。所述目标映像可以包括操作系统。
用于执行网络接口驱动程序注入处理的操作可以包括以下的一些或全部处理:确定与一个或多个源网络接口卡相关联的一个或多个网络组件;确定一个或多个源网络组件的源网络配置;确定目标映像的一个或多个网络组件的目标网络配置;确定源网络配置是否与目标网络配置相兼容;如果源网络配置与目标网络配置相冲突,则通过调整源网络配置来使源网络配置不与目标网络配置相冲突;以及将一个或多个源网络组件的源网络配置注入目标系统注册表文件。
在本公开的另一个方面中,一种设备可以包括以下的一些或全部:处理系统;以及使用可以由处理系统运行的指令编码的机器可读存储介质。
所述指令可以包括用于以下的一些或全部处理的代码:促使访问源机器的源系统注册表文件;在没有拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件;确定源机器的一个或多个源网络接口卡是否与目标映像相兼容;以及如果一个或多个源网络接口卡不与目标映像相兼容,则执行网络接口驱动程序注入处理。所述目标映像可以包括操作系统。
用于执行网络接口驱动程序注入处理的操作可以包括以下的一些或全部处理:确定与一个或多个源网络接口卡相关联的一个或多个源网络组件;确定一个或多个源网络组件的源网络配置;确定目标映像的一个或多个目标网络组件的目标网络配置;确定源网络配置是否与目标网络配置相冲突;如果源网络配置与目标网络配置相冲突,则通过调节源网络配置来使源网络配置不与目标网络配置相冲突;以及将一个或多个源网络组件的源网络配置注入目标系统注册表文件。
在一个方面中,以上指令可以由处理系统运行,以便执行一种用于提供将网络驱动程序从一个或多个源机器注入目标映像的处理的方法。在一个方面中,该方法可以将目标映像变换成与一个或多个源机器相兼容。在一个方面中,该方法可以促成经由网络的操作系统流传输。
在本公开的另一个方面中,一种设备可以包括以下的一些或全部:用于促使访问源机器的源系统注册表文件的装置;用于促使在没有拷贝目标映像的情况下访问目标映像的目标系统注册表文件的装置,其中所述目标映像包括操作系统;用于确定所述设备的一个或多个源网络接口卡是否与目标映像相兼容的装置;以及用于在一个或多个源网络接口卡不与目标映像相兼容的情况下执行网络接口驱动程序注入处理的装置。所述设备可以包括源系统注册表文件。目标映像可以包括操作系统。
用于执行网络接口驱动程序注入处理的装置可以包括以下的一些或全部:用于确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的装置;用于确定一个或多个源网络组件的源网络配置的装置;用于确定目标映像的一个或多个目标网络组件的目标网络配置的装置;用于确定源网络配置是否与目标网络配置相冲突的装置;用于在源网络配置与目标网络配置相冲突的情况下通过源网络配置来使源网络配置不与目标网络配置相冲突的装置;以及用于将一个或多个源网络组件的源网络配置注入目标系统注册表文件的装置。
在一个方面中,该设备可以提供将网络驱动程序从一个或多个源机器注入目标映像的处理。在一个方面中,该设备可以将目标映像变换成与一个或多个源机器相兼容。在一个方面中,该设备可以促成经由网络的操作系统流传输。
在本公开的另一个方面中,一种方法可以构建用于提供将网络驱动程序注入目标映像的处理的计算机程序。在一个方面中,该设备可以将目标映像变换成与一个或多个计算机相兼容。在一个方面中,该方法可以促成经由网络的操作系统流传输。
该方法可以包括以下的一些或全部:选择第一计算机和第二计算机,其中第一计算机包括第一网络接口卡,第二计算机包括第二网络接口卡,其中第二网络接口卡的配置不同于第一网络接口卡的配置;构建第一计算机的第一虚拟磁盘映像;构建与第一计算机和第二计算机兼容的第二虚拟磁盘映像;使用第一虚拟磁盘映像引导第一计算机;在使用第一虚拟磁盘映像引导了第一计算机之后,提取第一计算机的第一系统注册表信息,所述第一系统注册表信息包括基于第一虚拟磁盘映像的第一网络接口卡的配置值;使用第二虚拟磁盘映像引导第一计算机;在使用第二虚拟磁盘映像引导了第一计算机之后,提取第一计算机的第二系统注册表信息,所述第二系统注册表信息包括基于第二虚拟磁盘映像的第一网络接口卡及第二网络接口卡的配置值;基于第一系统注册表信息与第二系统注册表信息之间的差别以及基于不影响网络功能的注册表来确定网络驱动程序注入组件;将网络驱动程序注入组件注入第一虚拟磁盘映像;以及基于网络驱动程序注入组件来生成计算机程序。
应该理解的是,从以下举例显示并描述了本技术主题的不同配置的详细描述中,本领域技术人员很容易即可清楚了解本技术主题的其他配置。应该认识到的是,在不脱离本技术主题的范围的情况下,本技术主题能够采用其他不同的配置,并且可以在其他不同的方面对其若干处细节进行修改。相应地,附图和详细描述实际应被看作是说明性而不是限制性的。
附图说明
图1A是示出了操作阶段示例的概念性框图。
图1B是示出了构建用于提供网络驱动程序注入处理的软件程序的处理示例的概念性框图。
图2示出的是注册表编辑器200的屏幕快照的示例,其中显示了可供机器或源平台上的Windows OS使用的不同操作系统注册表。
图3是示出了网络系统示例的概念性框图。
图4是示出了机器示例的概念性框图。
图5示出的是注册表编辑器500的屏幕快照的示例,其中显示了可供机器或源平台上的Windows OS使用的不同操作系统注册表。
图6A是示出了驱动程序注入方法的示例的概念性流程图。
图6B是示出了流传输方法的示例的概念性流程图。
图7是示出了响应于图6A的操作630来执行注入驱动程序函数(例如InjectDriver)的方法的示例的概念性流程图。
图8是示出了机器中从软件到硬件的不同层次的示例的概念框图。
图9是示出了响应于图7的操作760来执行检查NIC兼容性函数(例如CheckNICCompatility)的方法示例的概念性流程图。
图10是示出了响应于图7的操作770来执行网络接口驱动程序注入处理(例如InjectWSMNIC)的方法示例的概念性流程图。
图11是示出了机器上的不同网络相关软件层以及网络相关硬件物理层的示例的概念性框图。
图12A是示出了启用流传输且使用Windows XP的源平台上的网络驱动程序之间的绑定关系的示例的概念性框图。
图12B是示出了启动流传输且使用Windows Vista或Windows7的源平台上的网络驱动程序之间的绑定关系的示例的概念性框图。
图13、14、15、16和17是示出了响应于图7的操作770来执行网络接口驱动程序注入处理(例如InjectWSMNIC)的方法的示例的概念性流程图。
图18是示出了用于机器可读介质的硬件配置的示例的概念性框图。
图19是示出了用于提供网络驱动程序注入处理的方法的示例的概念性流程图。
图20是示出了设备硬件配置的示例的概念性框图。
图21是示出了设备硬件配置的示例的概念性框图。
图22是示出了用于构建提供网络驱动程序注入处理的计算机程序的方法的示例的概念性流程图。
图23A示出的是“添加/编辑虚拟磁盘实用工具”对话的屏幕快照的示例。
图23B示出的是VDisklmageCreation(虚拟磁盘映像创建)窗口的屏幕快照的示例。
图23C示出的是“添加/编辑虚拟磁盘实用工具”对话的屏幕快照的示例。
具体实施方式
以下阐述的具体实施方式部分应被认为是描述本技术主题的不同配置,而不是描绘可以实施本技术主题的唯一配置。在这里引入附图并且所述附图构成了本具体实施方式部分的一部分。本具体实施方式部分包含了用于全面理解本技术主题的细节。然而对本领域技术人员来说,很明显,本技术主题是可以在没有这些细节的情况下实施的。在一些情况下,为了避免混淆本技术主题的概念,众所周知的结构和组件是以框图形式显示的。为了易于理解,相同组件是用相同部件编号标记的。
综述
本发明的一个方面规定的是使用驱动程序注入处理来增强已有的虚拟磁盘映像,以便支持多个异构平台进行流传输。
由于在任何OS流传输部署中都很少只有一种平台,因此,如果具有可被流传输到具有不同硬件特性的多个客户机平台的单个虚拟磁盘映像,那么将会是非常理想的。在一个方面中,该虚拟磁盘映像有时可被称为“黄金”映像。
在一个方面中,本技术主题允许用户将关联于OS流传输的驱动程序和配置注入已有的虚拟磁盘映像,以便支持多个异构平台进行OS流传输。所产生的虚拟磁盘映像则会变成“黄金”映像。
在下述情景中举例说明了黄金映像的重要性:
在OS流传输部署中,客户可能具有分散于六个分支机构的100个客户机设备。这100个设备是购自10个不同的制造商/产品型号。如果无法使用黄金映像,那么客户必须创建10个不同的虚拟磁盘映像,并且每一个映像都支持唯一的硬件平台。典型的VDisk映像大小是10GB。
为了在所有分支机构部署OS流传输,客户必须将所有的10个VDisk映像从总部分发到所有的九个分支机构。换句话说,在线路上要传送10*10GB*9=900GB的数据,并且该线路还通常是低带宽信道。为了保持最新的映像具有最新的OS补丁,有必要从总部更新这10个VDisk映像中的每一个。然后,在低带宽信道上必须再次将应用于所有这10个映像的变化推送到每个分支机构。
如果可以使用黄金映像,那么客户只需要创建支持所有10个平台(以及100个客户机设备)的单个虚拟磁盘映像。要想在所有分支机构部署OS流传输,客户只需要从总部向所有的九个分支机构分发一个VDisk映像。换言之,在线路上将会传送10GB*9=90GB的数据,这比没有黄金映像要小出10倍。要想保持最新的映像具有最近的OS补丁,只需要将所述变化仅仅应用于单个黄金映像,以及随后将其分发至分支机构。
很明显,这种创建支持多个异构平台的黄金映像的能力极大改善了OS流传输的可用性,并且真正实现了企业级的可扩展性。
关于不同方法的例证
第一种方法允许用户通过创建黄金虚拟磁盘映像来支持多个异构平台进行OS流传输。然而,该方法在虚拟磁盘创建过程中需要每一个源平台都装有公共网络接口卡(例如网络适配器)。这其中包括打开每个源平台并找到空闲总线接口槽,以便容纳新的网络接口卡。对普通用户来说,这样做是很有挑战性的,并且在没有空闲总线槽的平台上往往是不可行的,膝上型计算机就是这样。此外,该处理不理想的原因还在于打开计算机机壳可能导致丧失制造商的保修保证。另外,该方法还需要所有源平台都具有使用相同硬件抽象层(HAL)的OS安装程序。
本技术主题的一个方面克服了上述方法的缺陷。例如,本技术主题的一个方面既不需要处于不同源平台之间的公共网络接口卡,也不需要用户打开每一个源平台,而且还不需要用于插入新的网络接口卡的空闲总线槽。此外,本技术主题的一个方面不需要所有源平台具有相同的HAL。
第二种方法允许用户通过创建黄金虚拟磁盘映像来支持多个异构平台进行OS流传输。该方法帮助用户在物理硬盘上预备一个OS安装程序,这其中包括在获取硬盘安装程序快照之前将所有源平台的所有驱动程序包含到虚拟磁盘映像中。该处理包括将一个平台的硬盘OS安装程序备份到某个文件(例如wup文件),将该文件从第一源平台恢复到第二源平台的非活动分区。此外,该处理还包括从第二源平台的“恢复”分区和安装驱动程序引导第二源平台。所产生的硬盘OS安装程序驻留在“恢复”分区,并且包含了来自第一和第二源平台的所有驱动程序。在所有源平台上都必须重复这种备份和恢复处理。
这种重复的备份和恢复处理是非常漫长和繁琐的。为三到四个平台创建黄金映像通常会耗费数个小时。此外,除了第一源平台之外的每一个源平台还必须具有至少两个硬盘分区,其中一个分区用于引导,另一个分区则用于恢复(例如wup文件)。如果源平台具有预先安装在单个分区上的操作系统,那么用户需要先移除已有安装程序,重新对硬盘进行分区并且重新安装所述OS。此外,该方法还需要所有源平台的硬盘上都具有使用相同硬件抽象层(HAL)的OS安装程序。
本技术主题的一个方面克服了上述第二种方法的缺陷。例如,本技术主题的一个方面既不需要任一源平台上具有多个硬盘分区,也不需要将整个硬盘映像拷贝至源平台,而且不需要将整个操作系统映像拷贝至源平台。此外,本技术主题的一个方面不需要所有源平台具有相同的HAL。根据本公开的一个方面,在不需要上述特征的同时,本技术主题仍旧可以在存在上述缺陷的情况下运作。
第三种方法使用了一个在物理设备与虚拟机之间创建公共磁盘映像的处理。该方法只能创建用于单个平台和虚拟机的公共虚拟磁盘。其并未实现创建用于任意数量的异构硬件平台的单个虚拟磁盘的目标。
本技术主题的一个方面克服了如上所述的第三种方法的缺陷。例如,本技术主题的一个方面可以创建一个用于任意数量的异构硬件平台的黄金虚拟磁盘映像。
第四种方法使用的是一种将即插即用(PnP)驱动程序预先安装至将被部署给新硬件的脱机Windows OS映像的方法。原始设备制造商(OEM)或公司IT职员可以使用这种方法。这种方法可以在只以引导物理附着于目标设备的硬盘为目标的Windows映像上使用。然而,由于驻留在网络上的虚拟磁盘映像需要与专门被设计成支持OS流传输的OS流传输驱动程序绑定的网络接口卡,因此,该方法不能在驻留于网络的虚拟磁盘映像上使用。由于没有引入网络接口卡与OS流传输驱动程序之间的绑定关系,因此,在虚拟磁盘映像上不能使用第四种方法。此外,该方法只支持即插即用驱动程序。
关于不同优点的例证
本技术主题的一个方面克服了上述第四种方法的缺陷。例如,本技术主题可以支持将网络接口卡驱动程序及相应网络组件注入即插即用接口及非即插即用接口的处理。
特别地,根据本公开的一个方面,本技术主题可以提供以下优点。
1.本技术主题的一个方面可以允许用户增强已有的虚拟磁盘映像,以便支持具有异构硬件特性的多个源平台(例如多个客户机设备)进行OS流传输。
2.本技术主题的一个方面可以允许在任何时间添加任意数量的附加源平台,以便使用已有的虚拟磁盘映像。
3.在一个方面中,虚拟磁盘映像可以支持无限数量的平台。
4.本技术主题的一个方面既不需要附加硬件,也不包含物理硬件操作。
5.本技术主题的一个方面不需要重新安装或重新配置已有操作系统。
6.本技术主题的一个方面不需要复制整个OS安装程序。
7.本技术主题的一个方面提供了一种快速处理。该处理在所要支持的每个附加平台上可以只耗费数秒而不是数小时。
8.本技术主题的一个方面较不容易出错。例如,用于插入公共网络接口卡的确切总线接口槽是不需要知道或记忆的,并且备份和恢复OS安装程序的冗长序列同样是不需要知道或记忆的。
9.本技术主题的一个方面可以在大多数计算机平台上使用。例如,超出正常(硬盘)OS安装程序需要之外的附加硬盘容量、网络接口卡、空闲总线槽或是其他任何硬件需求都是不需要的。
关于代码/伪代码表示的例证
以下显示的用C++编程语言编写的本技术主题的一个方面,然而,本技术主题并不局限于C++,而是可以采用其他编程语言进行编写。以下显示的是关于子例程、函数、数据结构以及定义的一些示例,并且稍后会在本公开中提到这其中的一些示例。
关于术语的例证
根据本技术主题的一个方面,以下举例描述了一些术语。
流传输组件:在一个方面中,举例来说,流传输组件可以包括安装在客户机设备之类的机器上的软件包,其中该软件包能使所述机器经由网络与OS流传输服务器进行通信,从而从驻留在网络上的虚拟磁盘映像中引导所述机器。关于流传输组件的一个示例是WSM客户机软件,该软件是Wyse的流传输管理器产品。此外,另一个示例是名为Master Target Device软件的Citrix置备服务器产品。
兼容:在一个方面中,术语“兼容”可用于描述多个实体之间的关系,例如虚拟磁盘映像与客户机设备之间的关系。举个例子,如果一个实体可以用另一个实体引导,则可以认为这两个实体兼容。举例来说,如果可以通过OS流传输来从虚拟磁盘映像引导客户机设备,则可以认为虚拟磁盘映像与客户机设备兼容。此外,举例来说,如果一个实体不能用另一个实体引导,则可以认为这两个实体不兼容。举个例子,如果不能正确地通过OS流传输来从虚拟磁盘映像引导客户机设备,则可以认为虚拟磁盘映像不兼容客户机设备。
源平台(或源):在一个方面中,源平台或源可以是设备或机器,并且在一个方面中,所述源平台或源既可以是实际的设备或机器,也可以是虚拟设备或机器。例如,所述源平台或源可以是用户希望与虚拟磁盘映像兼容的计算设备或计算机。在一个示例中,它也可被称为客户机设备或客户机。在一个方面中,所述源平台可被称为源机器。在本公开中,术语平台、设备以及机器有时是可以可交换地使用的。
目标平台:在一个方面中,目标平台可以是一个设备或机器。例如,它既可以是目标VDisk所处的服务器,也可以是被流传送到一个或多个源平台的目标VDisk所源自的服务器。在一个方面中,目标平台可被称为目标机器。并且在一个方面中,目标VDisk未必驻留在目标平台。例如,所述目标VDisk可以表现成是驻留在源平台或开发机上的文件。由此,目标VDisk可以驻留在目标平台(例如图3中的304)或是别的机器上。在一个方面中,术语“目标”可以是指一般意义上的目标(例如当前正被进程处理的组件)。
目标VDisk(或目标):在一个方面中,目标VDisk、目标、目标Vdisk或目标vdisk可以描述虚拟磁盘或虚拟磁盘映像。例如,虚拟磁盘映像可以是为使虚拟磁盘映像能够兼容源平台而被添加的支持源平台的软件映像。在一个方面中,目标VDisk可被称为目标映像。并且在一个示例中,目标VDisk可以是保存在网络上的映像文件。此外,在一个方面中,目标VDisk可以用于驱动程序注入和/或流传输。
开发机:在一个方面中,开发机或开发设备是一个物理或虚拟设备或机器。例如,所述开发机可以用于执行驱动程序注入处理(例如图1的驱动程序注入阶段101B)。开发机可以是源平台或另一个机器。在一个方面中,开发机甚至可以是目标平台。
在一个方面中,开发机只需要访问源平台的某些系统信息以及某个或某些相关联的网络文件。相应地,在一个方面中,所述开发机不必是源平台(即便它可以是源平台)。在一个方面中,开发机不需要存储源平台的磁盘映像(即便它可以存储磁盘映像)。在一个方面中,开发机不需要存储所述开发机所需要的系统信息或是相关联的一个或多个网络信息的拷贝,抑或是源平台的其他任何信息或文件(即便它可以这么做)。在一个方面中,源平台的系统信息可以包括源平台的一个或多个网络组件的网络配置(例如列在HKLM\SYSTEM\CurrentControlSet\下方的网络配置信息以及诸如相关联的文件的位置之类的其他网络配置信息)。在一个方面中,所述相关联的网络文件可以包括源平台的一个或多个网络组件的一个或多个驱动程序安装文件以及一个或多个驱动程序二进制文件。
在一个方面中,开发机只需要访问目标VDisk的某些系统信息。相应地,在一个方面中,开发机不需要存储目标VDisk的拷贝(即使它可以存储目标VDisk)。在一个方面中,开发机既不需要存储目标VDisk的系统信息拷贝,也不需要存储任何相关联的网络文件或是目标VDisk的其他任何信息或文件(即使它可以这么做)。在一个方面中,目标VDisk的系统信息可以包括目标VDisk的一个或多个网络组件的网络配置(例如列在HKLM\{_SYSTEM_}\ControlSet00x\下方的网络配置信息以及诸如相关联的文件的位置之类的其他网络配置信息)。在一个方面中,相关联的网络文件可以包括目标VDisk的一个或多个网络组件的一个或多个驱动程序安装文件以及一个或多个驱动程序二进制文件。
在一个方面中,如果不拷贝磁盘映像、系统信息或文件,那么可以具有以下的一些优点:首先,不具有该步骤可以加速驱动程序注入过程。其次,如果磁盘映像、系统信息或文件发生变化,那么可以自动将更新的磁盘映像、系统信息或文件提供给开发机,而不需要更新开发机上的拷贝。
NIC:在一个方面中,NIC可以是指网络接口卡。在一个方面中,NIC可以是物理硬件,如果源平台是虚拟机,那么NIC也可以是虚拟硬件。
网络组件:在一个方面中,网络组件可以是关联于一个或多个网络的组件。举个例子,如图11所示,网络组件可以是网络驱动程序接口规范(NDIS)、迷你端口驱动程序1110A(例如NIC驱动程序)、NDIS中间驱动程序1110B、NDIS协议驱动程序1110C、NDIS协议驱动程序1110C或是网络服务1160。在一个方面中,所述网络组件是软件模块或是与作为硬件的网络接口卡相关的软件驱动程序。在一个方面中,所述网络组件驻留在物理硬件层与应用层之间的层上。参见图11。
系统注册表文件:在一个方面中,系统注册表文件可以是系统信息。例如,系统注册表文件可以包括配置信息、设置信息或系统注册表信息。在一个方面中,系统注册表文件可以是可编辑的。并且在一个方面中,系统注册表文件可以包括至少一些网络配置。在一个方面中,源机器的系统注册表文件可被称为源系统注册表文件。此外,在一个方面中,目标映像的系统注册表文件可被称为目标系统注册表文件。
网络配置:在一个方面中,网络配置可以包括与一个或多个网络组件相关联的配置信息。以下参考图10中的操作1020而在子标题“关于执行网络接口驱动程序注入处理的示例”的下方提供了关于网络配置的描述的示例。
驱动程序注入:在一个方面中,术语“驱动程序注入”可以是指注入一个或多个网络组件(例如一个或多个驱动程序或是一个或多个驱动程序组件)的处理。在一个示例中,在将该处理从源平台应用到目标VDisk之后,所产生的目标VDisk可以兼容源平台。该处理可以包括将存在于源平台之中的选定网络组件的信息注入目标VDisk。所选择的网络组件可被称为“待注入”组件。
NetNode结构:在一个方面中,源平台和目标VDisk的每一个选定网络组件可以用这个名为NetNode(有时也被称为NETNODE或netnode)的数据结构的实例来描述。该结构可以具有用于描述其网络组件与一个或多个其他网络组件的特性及绑定关系的字段。例如,所述结构可以包括显示名称、接口总线类型、由操作系统指定给该组件的全局唯一标识符、用于安装该组件的驱动程序的安装程序文件、含有该组件的不同信息的注册表键值路径、指向该组件在操作系统网络堆栈中绑定的另一个NetNode结构的指针。以上业已在名为“typedef struct_NETNODE{....}”的结构内部用C++代码的形式显示了NetNode结构的示例。
系统卷:在一个方面中,系统卷可以是操作系统系统文件和系统信息所在的磁盘卷。例如,在Windows OS中,系统卷是核心二进制文件及系统注册表配置单元文件所处的位置。
HKLM:在一个方面中,术语HKLM可以是指HKEY_LOCAL_MACHINE(参见图2中的项210)。举个例子,在WindowsOS中,它是存储了本地计算机特有设置的预先定义的注册表句柄。
在本公开使用的一些示例中,源平台的当前系统注册表配置单元名称可以指示加载了源平台系统信息的注册表键值路径。例如,源平台的当前系统注册表配置单元名称可被称为“HKLM\SYSTEM\CurrentControlSet”。此外,有时也可以将“HKLM\SYSTEM\CurrentControlSet”称为“SYSTEM\CurrentControlSet”。在另一个示例中,源平台的当前系统注册表配置单元名称可被称为“HKLM\{_SRCSYSTEM_}\ControlSet00x”,其中x是一个整数。在一个方面中,加载了源平台的系统信息的注册表键值路径可以是另一个名称,而不限于上述示例。
在本公开使用的一些示例中,目标VDisk的当前系统注册表配置单元名称可以指示加载了目标VDisk的系统信息的注册表键值路径。例如,目标VDisk的当前系统注册表配置单元名称可被称为“HKLM\{_SYSTEM_\ControlSet00x”,其中x是一个整数(或者x是图5的“选定”注册表值550)。“HKLM\{_SYSTEM_}\ControlSet00x”有时可被称为“{_SYSTEM_}\ControlSet00x”。在一个方面中,加载了目标VDisk的系统信息的注册表键值路径可以是另一个名称,而不是仅限于上述示例。
虽然在一个方面中,较为优选的是在开发机上加载(而不是保存)源平台的系统信息以及目标VDisk的系统信息,但在另一个方面中,源平台的系统信息和目标VDisk的系统信息可以保存在开发机中。
以下描述的是CInject类的一些主要功能的示例。
InjectDriver:在一个方面中,InjectDriver函数可以是CInject类中的最顶端的函数。所述InjectDriver函数可以检查诸如源平台和目标VDisk之类的多个实体之间的兼容性。如果两个实体不兼容,那么该函数可以通过执行驱动程序注入处理来使这两个实体兼容。
该函数可以采用两个输入参数:
winDir可以是指定给源平台系统卷的驱动器字母或是可以找到源平台系统配置(例如网络组件信息)、驱动程序二进制文件及安装程序文件的路径。
dstDir可以是指定给目标VDisk的系统卷的驱动器名或是可以找到目标VDisk的网络组件信息的路径。
如果成功,该函数可以返回TRUE,否则返回FALSE。
CheckNICCompatibility:在一个方面中,函数CheckNICCompatibility可以检查源平台和目标VDisk之类的多个实体之间的NIC的兼容性。
该函数可以采用两个输入参数:
dstKey:该参数可以是通向目标VDisk的系统信息的注册表键值路径(例如“HKLM\{_SYSTEM_}\ControlSet001”)(参见图5中的项530)。
srcKey:该参数可以是通向源平台的系统信息的注册表键值路径(例如“HKLM\SYSTEM\CurrentControlSet”)(参见图2中的项230或图5中的项570)。
如果失败,该函数可以返回-1,否则:
它可以返回不与目标中的NIC相兼容的源平台中的NIC的总数。
如果目标中支持源平台的所有NIC,则可以返回0。
该函数可以构造m_SrcNICNodeList和m_DstNICNodeList,它们分别是描述源平台和目标VDisk中与流传输相关联的网络组件的NETNODE链接表。
InjectWSMNIC:在一个方面中,函数InjectWSMNIC可以将与OS流传输以及NIC相关的注册表从源注册注入到目标。该函数还可以将NIC驱动程序的二进制文件以及NIC驱动程序的安装文件从源拷贝到目标。
在调用之前,该函数可能需要正确设置CInject类中的一些变量:
m_SrcDir、m_DstDir、m_csSrcSysKey、m_csDstSysKey、m_osvi:在一个方面中,这些变量是在执行该函数之前预先确定和设置的。
m_SrcNICNodeList、m_DstNICNodeList:在一个方面中,这些变量是在执行该函数之前使用与流传输有关的网络组件信息构造及填充的。
如果成功,该函数可以返回TRUE,如果失败则返回FALSE。
以下描述的是用于上述函数的一些助手函数。
EnumWSMNIC:在一个方面中,该函数EnumWSMNIC可以枚举注册表项csSysKey,以便获取具有诸如OS流传输驱动程序这类当前与网络组件绑定的驱动程序的NIC的列表。该函数会为找到的每一个NIC构造一个NETNODE,并且将其添加至“nList”。
该函数可以采用两个输入参数:
csSysKey:该参数可以是保存了源平台或目标VDisk的系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。函数EnumWSMNlC可以评估列在路径下方的信息,以便提取NIC以及相关联的驱动程序信息。
nList:该参数可以是被添加了结果的NETNODE的链接表。
如果成功,该函数可以返回TRUE,如果失败则返回FALSE。
BuildNetNode:在一个方面中,该函数BuildNetNode可以创建一个NETNODE,根据classKey注册表项中的值来填充内容。
该函数可以采用三个输入参数:
classKey:该参数可以是该net node所属的注册表键值句柄。在一个方面中,ClassKey应该是用读访问打开的。
classSubKey:该参数可以是描述了classKey句柄路径的字串(例如"HKLM\System\CurrentControlSet\...\<NetDeviceclass>\000x")
nType:该参数可以是常数nodetype_t(例如ntype_NIC)。
该函数可以返回一个指向新创建和填充的NETNODE结构的指针。
在下文显示的示例中填充了NETNODE结构的字段:
csDriverDesc:从“<classKey>\\DriverDesc”注册表项中读取的值
csGUID:从“<classKey>\\NetCfgInstanceID”注册表项中读取的值
csOldInfPath:从“<classKey>\\InfPath”注册表项中读取的值
csComponentID:从“<classKey>\\ComponentId”注册表项中读取的值
dwBusType:从“<classKey>\\BusType”注册表项中推导的值
nType:与输入参数nType相等的值
csOldNetClassSubKey:与输入参数classSubKey相等的值
FindEnumEntry:在一个方面中,函数FindEnumEntry可以发现一个pNode描述的网络组件所属的列在“Enum”注册表键值下方的条目。该函数枚举列在<csSysKey>\Enum下方的所有键值,读取列在每一个子键值下方的“Driver”注册表值,并且尝试找出“<NetDeviceclass>\<pNode->csOldNetClassSubKey>”上的匹配。
该函数可以采用三个输入参数:
csSysKey:该参数可以是保存了源平台或目标VDisk的系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。这个值会在每一次递归调用中保持相同。
key:该参数可以是应被作为搜索起点的注册表子键值。该参数在每一次递归调用中都会改变,由此越来越深地进入“Enum”注册表树。
pNode:该参数可以是指向描述目标网络组件的NETNODE结构的指针。
如果发现目标网络组件,那么函数FindEnumEntry将会填充pNode中的csEnumKey、csOldBusSpecificID、csService字段,其中csEnumKey是含有目标网络组件的“Enum”键值,csOldBusSpecificID是列在csEnumKey下方且含有目标网络组件的子键值,csService是列在<csSysKey>\<csEnumKey>\<csOldBusSpecificID>下方的“Service”注册表项的字串值。
FindUpper:在一个方面中、函数FindUpper可以找到目标网络组件的上层节点。所述上层节点是当前与来自操作系统网络堆栈上边缘的目标网络组件绑定的网络组件。该函数观察Net Device类的键值并定位一个子键值,其中“RootDevice”包含目标节点的GUID。
该函数可以采用三个输入参数:
csSysKey:该参数可以是保存了源平台或目标VDisk的系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。
pNode:该参数可以是指向描述了上层节点所在的目标网络组件的NETNODE的指针。
upperType:该参数可以是所得到的上层节点的类型。如果找到的话,那么该函数会为上层组件创建一个新的NETNODE,填充所述NETNODE的内容,并且返回一个指向新创建的NETNODE的指针。
否则,该函数返回NULL。
FindDeviceCIassEntry:在一个方面中,函数FindDeviceClassEntry可以找到目标网络组件的DeviceClass注册表条目。该函数观察NDIS LAN类的键值,并且定位与目标节点的GUID匹配的子键值。以上子键值的双亲键值即为Device Class(设备类)条目。
该函数可以采用两个输入参数:
csSysKey:该参数可以是保存了源平台或目标VDisk的系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。
pNode:该参数可以是指向描述了具有将被定位的Device Class注册表条目的目标网络组件的NETNODE的指针。
如果找到的话,则该函数返回TRUE,并且会用目标NETNODE的csOldDeviceClassKey字段来填充双亲键值名称。否则,该函数返回FALSE。
FindLastSubKey:在一个方面中,函数FindLastSubKey可以发现列在regKey下方的最后一个子键值索引。该函数可以采用一个输入参数:
regKey:该参数可以是描述具有将被返回的最后一个子键值的注册表键值的字串。
该函数返回的是一个指示了列在regKey下方的当前的最后一个子键值的数字。
AssignNewNetClassSubKey:在一个方面中,函数AssignNewNetClassSubKey可以递归地将下一个NetClass子键值号分配给待注入的网络组件及其上层节点。NetClass是一个列在注册表键值“HKLM\{_SYSTEM_}\ControlSet00x\Control\Class\<NetDeviceclass>”下方的子键值。每一个注册到OS的功能网络组件都是用列在此类键值下方的子键值表示的。子键值是用4位连续的数字串排列的(例如“0000”、“0001”、“0002”……)。注册到OS的新网络组件将会占用下一个被列举的子键值。源上的网络组件可以通过将其NetClass注册表树从源拷贝至目标中的有效未使用NetClass子键值而被注入目标。此外,该函数还会找出将要在目标中使用的有效的未使用子键值。
该函数可以采用两个输入参数:
pNode:该参数可以是指向具有将被指定的新NetClass子键值号的NETNODE的指针。
pdwLastSubKey:该参数可以是指向存储了所使用的最后一个NetClass子键值索引的缓存器的指针。
该函数可以将最后一个NetClass子键值索引+1指定给pNode指向的NETNODE的csNewNetClassSubKey字段,然后递增最后一个NetClass子键值索引。对于目标net node点及其上层节点来说,相同的操作可以以递归的方式执行。
AssignNewBusSpecificID:在一个方面中,函数AssignNewBusSpecificID可以递归地将newBusSpecificID指定给待注入的网络组件及其上层节点。
例如,在WindowsOS中,Enum注册表键值包含了计算机使用的特定硬件组件的子键值。OS则会使用该信息来分配资源(例如用于组件的10个地址和中断)。
每一个控制器总线类型都具有列在“Enum”键值下方的自己的子键值(例如“PCI”、“ROOT”)。“PCI”子键值包含了用于周边组件互连(PCI)总线上的即插即用设备的条目。每一个PCI设备都是用列在PCI子键值下方的注册表键值表示的,并且由此具有该设备的制造商(或厂家)和产品ID。特定PCI设备实例的信息则被保存在表示总线位置的子键值的下方。由此,列在“Enum”注册表键值下方的硬件设备的完整路径是用其总线类型(PCI)、硬件ID以及总线特有的ID构造的。如果待注入的网络组件是PCI设备,那么在将其移动到目标之后,由于该组件处于相同的PCI总线槽中,因此,其总线特有ID将会保持相同。
“ROOT”子键值包含了用于传统的非即插即用硬件的条目。列在“ROOT”设备子键值下方的设备实例是用4位连续数字串(例如“0000”、“0001”等等)排列的。这种数字子键值字串即为其总线特有的ID。如果待注入的网络组件是ROOT设备,那么它会在目标中占用具有下一个被列举的子键值的新的总线特有ID。
该函数可以采用两个输入参数:
csSysKey:该参数可以是加载了目标系统信息的注册表键值根路径(例如“HKLM\{_SYSTEM_}\ControlSet00x\”)。
pNode:该参数可以是指向具有将被指定的新的总线特有ID的NETNODE的指针。
如果成功,该函数返回TRUE。此外,它还会填充pNode指向的NETNODE的csNewBusSpecificID字段。
AssignNewDeviceClassKey:在一个方面中,函数AssignNewDeviceClassKey可以递归地将csNewDeviceClassKey值指定给待注入的网络组件及其上层组件。
如果目标网络组件的csOldBusSpecificID等于csNewBusSpecificID,那么csNewDeviceClassKey值与csOldDeviceClassKey相同。否则,旧的csOldDeviceClassKey值内部的“#_<csOldBusSpecificID>#_”令牌将会变成“#_<csNewBusSpecificIC>#_”令牌,该令牌将会变成其csNewDeviceClassKey值。
该函数可以采用一个输入参数:
pNode:该参数可以是指向具有将被设置的csNewDeviceClassKey的NETNODE的指针。
在调用该函数之前必须设置目标NETNODE的csOldBusSpecificID和csNewBusSpecificID。
如果成功,该函数返回TRUE。此外还会填充目标NETNODE的csNewDeviceClassKey。
TallyNetworkDescriptionlnstances:在一个方面中,函数TallyNetworkDescriptionlnstances记录的是在注入了网络组件及其上层组件之后将会在目标VDisk中出现的驱动程序描述实例的数量。该函数会将字串中的信息保存在指针映射列表m_NetworkInstanceList中。
在驱动程序注入过程中,m_NetworkInstanceList中的信息将被用于更新目标上的“<Systemregistryhivename>\Class\Network\<NetDeviceclass>”注册表键值下方的“Descriptions”注册表键值。
该函数可以通过确定m_NetworkInstanceList来预备更新。
该函数可以采用两个输入参数:
csSysKey:该参数可以是加载了目标系统信息的注册表键值根路径(例如“HKLM\{_SYSTEM_}\ControlSet00x\”)。所述函数则通过查找列在该键值下方的注册表项来确定目标网络组件实例的当前编号。
pNode:该参数可以是指向描述了待注入网络组件的NETNODE的指针。
AssignNewInfPath:在一个方面中,函数AssignNewInfPath可以设置待注入netnode的csNewInfPath字段。该字段是在将目标组件的安装程序文件移至目标之后可供OS找到所述安装程序文件的路径。Windows OS会将所有驱动程序安装文件保存在系统卷的“windows\inf”文件夹中。Windows的本地驱动程序则具有彼此不同的唯一名称(例如用于分组调度器驱动程序的netpsa.inf)。第三方厂商提供的安装程序文件会被重新命名,例如重新命名为oemx.inf,其中x是存在于当前设备中的唯一数字。
在将来自第三方厂家的网络组件的驱动程序安装文件从源拷贝到目标之后,所述文件可以具有不同的oem.inf编号。所述函数则会找出在目标中使用的最后一个oem.inf编号,并为待注入网络组件及其上层节点的驱动程序安装文件指定下一个列举编号。
该函数可以采用三个输入参数:
pNode:该参数可以是指向描述了待注入网络组件的NETNODE的指针。
dstDir:该参数可以是含有目标VDisk的驱动程序安装文件的目标系统卷的驱动器号或路径。
pLastOEMInfCount:该参数可以是指向存储了在dstDir下方发现的最后一个oem.inf文件编号的缓存器的指针。
如果成功,该函数返回TRUE。pNode->csNewInfPath将被填充。pLastOEMInfCount指向的缓存器将被更新。
CopylnfFile:在一个方面中,除非目标中已经存在inf文件,否则该函数CopylnfFile会将待注入网络组件的驱动程序安装文件从源拷贝到目标。源上的inf文件名将被记录在NETNODE结构的csOldInfPath中。在被拷贝到目标之后,所要使用的inf文件名将被记录在NETNODE结构的csNewInfPath中。
该函数可以采用三个输入参数:
pNode:该参数可以是指向描述了具有将被拷贝的驱动程序安装文件的网络组件的NETNODE的指针。
csSrcDir:该参数可以是被拷贝的驱动程序安装文件所源于的根驱动器(例如“c:\”)。
csDstDir:该参数可以是被拷贝了驱动程序安装文件的根驱动器(例如“f:\”)。
CopyDriverFile:在一个方面中,除非在目标中已经存在驱动程序文件,否则该函数CopyDriverFile可以将用于待注入网络组件的驱动程序二进制文件从源拷贝到目标。
该函数可以采用四个输入参数:
pNode:该参数可以是指向描述了具有将被拷贝的驱动程序文件的网络组件的NETNODE的指针。
csSrcDir:该参数可以是被拷贝的驱动程序文件所源于的根驱动器(例如“c:\”)。
csDstDir:该参数可以是被拷贝了驱动程序文件的根驱动器(例如“f:\”)。
csSrcSysKey:该参数可以是加载了源平台系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。所述函数则通过读取用于目标组件的“Service”键值中的“ImagePath”注册表值来找出驱动程序文件名和路径。
MergeNetClassSubKeys:在一个方面中,函数MergeNetClassSubKeys可以将待注入网络组件(及其上层)的“csSrcSysKey\Class\<NetDeviceclass”子键值并入目标。
该函数执行以下处理:
将注册表树“csSrcSysKey\Control\Class\<NetDeviceclass>\<csOldNetClassSubKey>”拷贝到“csDstSysKey\Control\Class\<NetDeviceclass>\<csNewNetClassSubKey>”。
将注册表值“InfPath”从<csOldInfPath>改成列在目标上的新注册表键值下方的<csNewInfPath>。
该函数可以采用三个输入参数:
pNode:该参数可以是指向描述了具有将被并入的注册表项的网络组件的NETNODE的指针。
csSrcSysKey:该参数可以是加载了源平台系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。
csSysKey:该参数可以是加载了目标系统信息的注册表键值根路径(例如“HKLM\{_SYSTEM_}\ControlSet00x\”)。
如果成功,该函数返回TRUE,否则返回FALSE。
MergeDeviceClassSubKeys:在一个方面中,函数MergeDeviceClassSubKeys可以将待注入网络组件(及其上层)的NDIS LAN类子键值从源并入目标。
该函数可以执行以下处理:
将注册表树“csSrcSysKey\Control\DeviceClasses\<NDISLANclass>\<cs01dDeviceClassKey>”拷贝至“csDstSysKey\Control\DeviceClasses\<NDISLANclass>\<csNewDeviceClassKey>”
如果pNode->csOldBusSecificID!=pNode->csNewBusSpecificID,则:
a.将“#_<csOldBusSpecificID>#_”令牌替换成#_<csGUID>子键值的“symbolicname”值中的"#_<csNewBusSpecificID>#_"
b.将“<csEnumKey-"Enum\”>\\csOldBusSpecificID”令牌替换成“DeviceInstance”值中的“<csEnumKey-“Enum\">\\csNewBusSpecificID”
该函数可以采用三个输入参数:
pNode:该参数可以是指向描述了具有将被并入的注册表项的网络组件的NETNODE的指针。
csSrcSysKey:该参数可以是加载了源平台系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。
csSysKey:该参数可以是加载了目标系统信息的注册表键值根路径(例如“HKLM\{_SYSTEM_}\ControlSet00x\”)。
如果成功,该函数返回TRUE,否则返回FALSE。
MergeEnumSubKey:在一个方面中,函数MergeEnumSubKey可以将待注入网络组件(及其上层)的Enumsubkeys从源拷贝到目标。
该函数可以执行以下处理:
将“Enum”注册表键值(值以及所有子键值)从源拷贝到目标。源Enum子键值名称处于csOldBusSpecificID中。目标Enum子键值名称处于csNewBusSpecificID中。
如果csOldNetClassSubKey!=csNewNetClassSubKey,则将注册表值“Driver”从“<NetDeviceclass>WcsOldOldClassSubKe”更新成“<NetDeviceclass>WcsOldNewClassSubKey”。
如果csOldBusSpecificID!=csNewBusSpecificID,则将注册表值“DeviceParameters\Instancelndex”从csOldBusSpecificID+1更新成csNewBusSpecificID+1。
该函数可以采用三个输入参数:
pNode:该参数可以是指向描述了具有将被并入的注册表项的网络组件的NETNODE的指针。
csSrcSysKey:该参数可以是加载了源平台系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。
csSysKey:该参数可以是加载了目标系统信息的注册表键值根路径(例如“HKLM\{_SYSTEM_}\ControlSet00x\”)。
如果成功,该函数返回TRUE,否则返回FALSE。
AddLinkage:在一个方面中,函数AddLinkage可以枚举目标上的所有“services”注册表键值。如果子键值的已有“linkage\bind”、“linkage\Route”以及“linkage\Export”值包含csRefGUID,那么该函数会通过将csRefGUID替换成待注入网络组件的csGUID来构造类似字串,然后则会将新字串添加至“linkage\bind”、“linkage\Route”以及“linkage\Export”注册表值。这样做会将新的NIC和/或网络组件绑定到这些服务。
该函数可以采用三个输入参数:
pNode:该参数可以是指向描述了将被链接至目标中的已有网络服务的网络组件的NETNODE的指针。
csRefGUID:该参数可以是已被链接至目标中的恰当网络服务的参考NIC的GUID。
csSysKey:该参数可以是加载了目标系统信息的注册表键值根路径(例如“HKLM\{_SYSTEM_}\ControlSet00x\”)。
如果成功,该函数返回ERROR_SUCCESS,如果失败则返回一个差错码。
AddSvcInterfaces:在一个方面中,函数AddSvcInterfaces可以枚举目标上列在“services”注册表键值下方的子键值。如果键名与csRefGUID值匹配,则所述函数会通过将csRefGUID替换成目标NIC的GUID来构造用于目标NIC的类似键值名称。然后,该函数会从源中寻找所述键值。如果找到的话,则所述函数会将整个键值从源拷贝到目标。
该函数可以采用四个输入参数:
pNode:该参数可以是指向描述了将被链接至目标中的已有网络服务的网络组件的NETNODE的指针。
csRefGUID:该参数可以是参考NIC的GUID。
csSrcSysKey:该参数可以是加载了源平台系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。
csSysKey:该参数可以是加载了目标系统信息的注册表键值根路径(例如“HKLM\{_SYSTEM_}\ControlSet00x\”)。
如果成功,该函数返回ERROR_SUCCESS,如果失败则返回一个差错码。
AddRemoteAccessInterfaces:在一个方面中,函数AddRemoteAccess接口可以添加一个与目标的远程访问服务注册表键值对接的接口,以便描绘新的NIC。所述函数可以执行以下处理:
1.找出包含了与源上的“Services\RemoteAccess\Interfaces”下方的目标NIC节点的GUID相同的注册表值“InterfaceName”的注册表子键值。
2.找出列在目标上的“Services\RemoteAccess\Interfaces”下方的最后一个子键值编号。
3.将在源上找到的注册表值和子键值拷贝到目标上的“Services\RemoteAccess\Interfaces\<last subkey#>+1”。
该函数可以采用三个输入参数:
pNode:该参数可以是指向描述了将被添加至目标中的远程访问服务的网络组件的NETNODE的指针。
csSrcSysKey:该参数可以是加载了源平台系统信息的注册表键值根路径(例如“HKLM\SYSTEM\CurrentControlSet\”)。
csSysKey:该参数可以是加载了目标系统信息的注册表键值根路径(例如“HKLM\{_SYSTEM_}\ControlSet00x\”)。
如果成功,该函数返回ERROR_SUCCESS,如果失败则返回一个差错码。
例证组织
现在参考图1A,在一个方面中,举例来说,以下公开提供的是与三个操作阶段相关的描述:计算机程序构建阶段101A、驱动程序注入阶段101B以及流传输阶段101C。在一个方面中,举例来说,计算机程序构建阶段101A是参考图1B和图22描述的。在一个方面中,举例来说,驱动程序注入阶段101B是参考图6A、7、9、10、13-17以及18-21描述的。此外,在一个方面中,举例来说,流传输阶段101C是参考图6B描述的。计算机程序构建阶段101A可以使用两个或更多的物理或虚拟机。驱动程序注入阶段101B可以使用一个或多个物理或虚拟机器。流传输阶段101C则可以使用两个或更多的物理或虚拟机。在一个方面中,所使用的机器在这三个阶段101A、101B和101C中可以是不同的。在另一个方面中,所使用的一些机器在阶段101B和101C中可以是相同的,或者在阶段101A、101B和101C中可以是相同的。
关于构建用于注入驱动程序的软件程序的处理的例证
在本公开的一个方面中,驱动程序注入处理包括将源平台中存在的选定网络组件的信息注入目标VDisk。当在源平台上引导时,通过执行该处理,目标VDisk中的操作系统将会识别出源平台中存在的一个或多个网络组件,并且将会知道在哪儿找到用于一个或多个此类组件的驱动程序二进制文件,以及如何将一个或多个此类组件绑定到其网络堆栈中。其结果是产生了一个能够执行正常网络活动以及OS流传输的网络驱动程序(网络堆栈)功能链。
以下概述的是一个用于构造执行这些特征的软件程序的示例。
1.观察和分析:不同的操作系统采用了不同的形式来存储与网络组件及其绑定关系相关的信息。例如,Windows OS将该信息保存在系统注册表配置单元的不同注册表项中(相关示例可以参见图2的210)。所述系统注册表配置单元是作为驻留在磁盘系统卷中的二进制文件呈现的。对于Linux来说,该信息可以作为配置文件保存在/etc或/proc目录下方。因此,第一个步骤是观察在目标OS中如何记录此类信息,以及准确分析哪些数据将被改成哪些值。
现在参考图1B,以下将会基于Windows XP OS来举例描述一个用于构建提供网络驱动程序注入的软件程序的处理。本技术主题并不局限于Windows XP OS,并且本技术主题同样可以用于其他操作系统。在不同的OS上,所使用的确切工具可以是不同的。
a.选择至少两个设备(例如第一设备102A和第二设备102B),其中除了网络接口卡(NIC)存在差别之外,这两个设备具有完全相同的硬件。其中一个设备可以是机器(例如计算设备、计算机、平台、源平台或客户机设备)。
举例来说,这两个设备的主板、处理器和视频卡是相同的,但是设备102A的网络接口卡(NIC)112A和设备102B的网络接口卡(NIC)112B是不同或具有不同属性的,例如具有不同的制造商、不同的型号、不同的修订版本和/或供所述NIC插入的不同总线槽。优选地,这两个设备的硬件特性是尽可能相同的,由此,其注册表值间的差异将会减至最小。
b.构建用于设备102A的虚拟磁盘映像。该映像被称为VDisk_a。
c.使用传统方法(例如以上描述的第二种方法)来构建与设备102A和设备102B兼容的虚拟磁盘映像,以便创建黄金VDisk。该映像被称为VDisk_ab。
d.从VDisk_a中引导第一设备102A。
e.在操作d之后,提取设备102A的第一系统注册表信息132A。例如,对于Windows OS而言,使用Windows的regedit.exe工具来将HKEY_LOCAL_MACHINE(HKLM)系统注册表配置单元导出到一个文本文件A.reg。在本示例中,第一系统注册表信息132A可以包含在文本文件A.reg中。
图2示出的是注册表编辑器200的屏幕快照的一个示例,其中该图显示了供客户机设备上的Windows OS使用的不同的操作系统注册表项。这些注册表项包括图2所示的四种类型:
HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE,HKEY_USERS以及HKEY_CURRENT_CONFIG。在一个方面中,只有HKEY_LOCAL_MACHINE(HKLM)是本技术主题所必需的。HKLM系统注册表配置单元可以是指HKEY_LOCAL_MACHINE\SYSTEM220。
f.回过来参考图1B,从VDisk_ab中引导第一设备102A。
g.在操作f之后,提取设备102A的第二系统注册表信息132B。例如使用windows的regedit.exe工具来将HKLM系统注册表配置单元导出到文本文件AB.reg。在本示例中,系统注册表信息132B可以包含在文本文件AB.reg中。
h.基于第一系统注册表信息132A与第二系统注册表信息132B之间的差异以及基于不影响网络功能的注册表项,确定网络驱动程序注入组件142。
h1.确定从第一系统注册表信息132A的注册表项与第二系统注册表信息132B的注册表项之间的差异中获取的第一组注册表项(例如注册表项的超集)。
例如使用一个文件比较工具来比较A.reg和AB.reg。对注册表的差异进行收集。这些差异可以是被注入VDisk_a中而使VDisk_a兼容第二设备102B的注册表项的超集。
h2.确定第二组注册表项(例如注入到VDisk_a中的最后的注册表项),其中所述注册表项是通过从第一组注册表中滤除那些不会影响网络功能的注册表项来获取的。
例如,该处理可以通过从获取自VDisk_ab的第二系统注册表信息132B中逐一移除第一组注册表项中的一个或多个注册表项来实现(例如在VDisk_ab上逐一还原源于操作h1中获取的注册表项列表的变化),然后,在没有这些已移除注册表项的情况下,尝试从VDisk_ab中引导第一设备102A和第二设备102B。如果第一设备102A和第二设备102B在具有经过修改的注册表项的VDisk_ab上正常运作,那么所移除的这些注册表项是不相关的,并且可被从注入VDisk_a的最终注册表项中去除。该处理可以一直重复,直至消除不与网络功能相关的所有注册表项。
网络驱动程序注入组件142可以包括(i)第二组注册表项(例如注入VDisk_a中的最后的注册表项),以及(ii)相关联的文件(例如与注入VDisk_a的最终的注册表项集合相关联的驱动程序安装文件以及驱动程序二进制文件)。
2.执行注入处理:将网络驱动程序注入组件142注入VDisk_a。例如,在收集了将要注入的注册表项的列表之后,在VDisk_a上手动执行注入处理,并且核实执行了网络驱动程序注入处理152的VDisk_a现在可以引导第一设备102A以及第二设备102B。举例来说,在这里可以使用执行了网络驱动程序注入处理152的VDisk_a来引导第一设备102A,并且可以通过检测所述引导是否正常进行来确定执行了网络驱动程序注入处理152的VDisk_a是否兼容第一设备102A。此外,在这里还可以使用执行了网络驱动程序注入处理152的VDisk_a来引导第二设备102B,并且可以通过检测所述引导是否正常进行来确定执行了网络驱动程序注入处理152的VDisk_a是否兼容第二设备102B。在少量的其他设备上重复执行前述的操作1和2。
3.归纳变化:确定适用于一个或多个其他设备的注册表注入模式145。
举例来说,基于上述操作和观察,推断出可以应用于与任一VDisk耦合的任何设备(例如任何客户机设备)的注册表注入模式。例如,在将上述操作应用于多个设备之后,确定来自一个或多个设备的已有注册表值是否与来自另外的一个或多个设备的注册表值发生冲突。如果已有的注册表值发生冲突,则需要通过调整注册表值来避免冲突。注册表注入模式145可以是基于针对已有注册表值和冲突所做的评估而被产生的。在以下的操作4产生的计算机程序中,诸如AssignNewNetClassSubKey和AssignNewBusSpecificID之类的函数是遗迹以注册表注入模式145为基础编写的一些函数的示例。
4.产生执行注入处理的计算机程序。基于上述操作1-3中的一些或所有操作,生成计算机程序162(或软件应用)。该计算机程序可以基于网络驱动程序注入组件142。此外,它还可以基于如上所述的注册表注入模式145。然后,该计算机程序可被编码到机器可读的存储介质上。
关于驱动程序注入系统的例证
图3示出的是根据本公开的一个方面的计算机网络系统的简图。
计算机网络系统300可以包括经由网络306而与目标平台304进行通信的一个或多个远端源平台302。在一个方面中,目标平台被配置成允许进行远程会话(例如远程桌面会话),在该会话中,用户可以通过从源平台302登录到目标平台304来访问目标平台304上的应用和文件。这种连接可以是用若干种众所周知的技术中的任一技术建立的,例如基于windows的服务器上的远程桌面协议(RDP)。
作为例证而不是限制,源平台302可以代表计算机、移动电话、膝上型计算机、瘦的源平台、个人数字助理(PDA)、便携计算设备、虚拟机或是具有处理器的适当设备。在一个示例中,源平台302是智能电话(例如iPhone、Android电话、黑莓等等)。在某些配置中,源平台302可以代表音频播放器、游戏机、相机、摄像机、音频设备、视频设备、多媒体设备或是能够支持与远端目标平台的连接的设备。在一个示例中,源平台302可以是移动的。在另一个示例中,源平台302可以是固定的。在一个示例中,源平台302可以是至少具有处理器和存储器的设备,其中所述源平台302的存储器总数可以少于目标平台304的存储器的总数。在一个示例中,源平台302不具有硬盘。并且在一个方面中,源平台302的显示器少于目标平台304所支持的显示器。在一个方面中,源平台可以包括一个或多个源平台。并且在一个方面中,每一个源平台302可以是相同(例如相同的系统配置和相同的网络组件配置)或不同的(例如不同的系统配置或是不同的网络组件配置)。
在一个方面中,目标平台304可以代表计算机、膝上型计算机、计算设备、虚拟机(例如虚拟机)、桌面会话(例如Microsoft TerminalServer)、已发布的应用(例如Microsoft Terminal Server)或是具有处理器的适当设备。在一个方面中,目标平台304可以固定的。在另一个方面中,目标平台304可以是移动的。在某些配置中,目标平台304可以是能够代表源平台的任何设备。在一个方面中,目标平台304可以包括一个或多个目标平台。
在一个示例中,当第一设备不与第二设备直接连接时,所述第一设备处于第二设备远端。在一个示例中,第一远程设备可以经由诸如局域网(LAN)、广域网(WAN)和/或其他网络之类的通信网络连接到第二设备。
当源平台302和目标平台304处于彼此的远端时,源平台302可以经由网络306连接到目标平台304,例如经由调制解调器连接,包括以太网在内的局域网连接,包括DSL、电缆、T1、T3、光纤、Wi-Fi在内的宽带WAN连接,或是包括GSM、GPRS、3G、WiMax或其他网络连接在内的移动网络连接。网络306可以是LAN网络、WAN网络、无线网络、因特网、内部网或其他网络。网络306可以包括用于在源平台和/或目标平台之间路由数据的一个或多个路由器。网络上的远端设备(例如源平台、目标平台)可以通过相应网络地址寻址,其示例可以包括但不局限于网际协议(IP)地址、因特网名称、Windows Internet命名服务(WINS)名称、域名或其他系统名称。以上示出的仅仅是一个设备如何可以位于另一个设备远端的一些示例。然而,本技术主题不局限于这些示例。
在本公开的一个方面中,“源平台”有时可被称为源平台、源机器、源、客户机、客户机设备,反之亦然。同样,“目标平台”有时可被称为目标平台、目标机、服务器,反之亦然。
在一个方面中,术语“本地”和“远端”是相对术语,依照从源平台端还是目标平台端描述所述源平台,可以分别将源平台称为本地源平台或远端源平台。同样,依照从目标平台端还是从源平台端描述目标平台,可以分别将所述目标平台称为本地目标平台或远端目标平台。
在一个方面中,位于源平台端的设备(例如直接连接到一个或多个源平台或是使用有线或无线方式互连的设备)相对于源平台而言可被称为本地设备,相对于目标平台而言则可被称为远端设备。同样,位于目标平台端的设备(例如直接连接到一个或多个源平台或是使用有线或无线方式相互连接的设备)相对于目标平台而言可被称为本地设备,相对于源平台而言则可被称为远端设备。
图4是示出了机器的示例的概念性框图。
例如,机器400可以是源平台、目标平台、开发机、源平台、目标平台、源机器、目标机、开发机、计算机、计算设备、客户机设备、设备或计算机。机器400可以包括处理系统402。该处理系统402能够通过总线404或其他结构或设备来与接收机406和发射机409进行通信。应该理解的是,除了总线之外的通信手段同样可以与所公开的配置结合使用。处理系统402可以产生提供给发射机409以进行传递的音频、视频、多媒体和/或其他类型的数据。此外,在接收机406上可以接收并由处理系统402处理音频、视频、多媒体和/或其他类型的数据。
处理系统402可以包括用于执行指令的通用处理器或专用处理器,并且还可以包括用于存储软件程序的数据和/或指令的机器可读介质419,例如易失或非易失存储器。保存在机器可读介质410和/或419中的指令可以由处理系统402运行,以便控制和管理针对不同网络的访问以及提供其他通信和处理功能。这些指令还可以包括处理系统402为诸如显示器412和数字键盘414之类的不同用户接口设备运行的指令。处理系统402可以包括输入端口422和输出端口424。输入端口422和输出端口424中的每一个可以包括一个或多个端口。所述输入端口422和输出端口424既可以是相同端口(例如双向端口),也可以是不同端口。
处理系统402可以用软件、硬件或软硬件组合来实施。作为示例,处理系统102可以用一个或多个处理器来实施。处理器可以是通用微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)、控制器、状态机、门逻辑、分立硬件元件或是可以执行计算或其他信息操作的其他任何适当的设备。
机器可读介质可以是一个或多个机器可读介质。无论被称为软件、固件、中间件、微代码、硬件描述语言或其他,软件都应被广义地解释成是指指令、数据或是其任何组合。指令可以包括代码(例如源代码格式、二进制码格式、可执行代码格式或是其他任何适当的代码格式)。
机器可读介质(例如419)可以包括集成在处理系统中的存储器,例如,ASIC即为这种情况。机器可读介质(例如410)还可以包括位于处理系统外部的存储器,例如随机存取存储器(RAM)、闪速存储器、只读存储器(ROM)、可编程序只读存储器(PROM)、可擦写PROM(EPROM)、寄存器、硬盘、可移除磁盘、CD-ROM、DVD或是其他任何适当的存储设备。此外,机器可读介质可以包括对数据信号进行编码的传输线或载波。本领域技术人员将会认识到如何最佳地为处理系统402实施所描述的功能。依照本公开的一个方面,机器可读介质是用指令编码或保存了指令的计算机可读介质,并且所述介质是一个定义了指令与允许实现指令功能的系统剩余部分之间的结构和功能方面的相互关系的计算部件。在一个方面中,机器可读介质是机器可读的存储介质。例如,指令可以由机器(例如源平台或目标平台)、源平台或目标平台的处理系统执行。其中举例来说,指令可以是包含代码的计算机程序。
接口或接口卡416可以是任何类型的接口,并且可以驻留在图4所示的组件中的任何组件之间。举个例子,接口416还可以是与外部世界对接的接口(例如网络接口卡或因特网网络接口卡)。接口或接口卡416可以是一个或多个。收发信机部件407可以代表一个或多个收发信机,并且每一个收发信机都可以包括接收机406和发射机409。处理系统402中实施的功能可以在接收机406的一部分、发射机409的一部分、机器可读介质410的一部分、显示器412的一部分、数字键盘414的一部分或是接口416的一部分中实施,反之亦然。在一个方面中,机器可以只包括图4所示部件中的一些部件或全部部件。机器可以包括图4中未显示的其他部件。此外,机器可以包括一个以上的相同部件。
关于驱动程序注入方法的例证
以下示出的是用于执行将驱动程序从一个或多个源平台注入目标VDisk的方法的示例。在一个方面中,该方法可以由子标题“关于构建用于驱动程序注入的软件程序的处理的例证”下方描述的操作4生成的计算机程序来执行(例如用C++编程语言编写的名为VDiskImageCreation.exe的计算机程序)。在本示例中,该方法使用的是Windows XP。然而,本技术主题并不仅限于使用C++或是在WindowsOS中编写的程序。在一个方面中,本技术主题可以采用其他工具、编程语言或操作系统来实现。
以下参考图3、4、5、6A、6B、7、8、9和10来示出本方法的一个示例,并且本方法可以使用如下所述的一些或所有操作。
目标VDisk可以用机器(例如图4中的402)构建。例如,该机器可以是图3中的目标平台304或别的机器。在一个示例中,目标VDisk是用目标平台304构建的图3中的目标VDisk324。在另一个示例中,目标VDisk可以是先前从第一平台310之类的别的机器构建并被拷贝至目标平台304或别的平台的图像。在一个方面中,虽然非常少见,但在驱动程序注入过程中有可能使用某一个源平台302包含目标VDisk,并且有可能使用所述源平台302作为目标平台(例如图6A中的630)。在一个示例中,在驱动程序注入过程(例如图6A中的630)或流传输过程(例如图6B中的670)中,目标VDisk可以位于相同的平台。在另一个示例中,在驱动程序注入过程(例如图6A中的630)中,目标VDisk可以驻留在一个平台,然后则被拷贝至另一个平台,以便进行流传输(例如图6B中的670)。目标VDisk可以驻留在平台的机器可读介质中(相关示例可以参见图3中的324以及图4中的419、410)。在一个示例中,目标VDisk可以包含操作系统。在另一个示例中,目标VDisk可以包含操作系统以及一个或多个软件应用。此外,在另一个示例中,目标VDisk可以包含平台的整个硬盘的拷贝。
图6A中用于注入驱动程序的计算机程序615(例如VDiskImageCreation)可以驻留在开发机625上。举例来说,计算机程序615可以驻留在机器可读介质(例如图4中的419、410)中,并且可以由开发机625的处理系统(例如图4中的402)来执行。在一个方面中,开发机可以是具有将被注入已有目标VDisk(例如从这个子标题下方的操作1中获取的目标VDisk)的网络组件的源平台(例如图4中的400或图3中的302)。在另一个方面中,开发机625可以是计算机程序615所在的其他任何机器(并非源平台),并且所述机器可以访问源平台的网络组件信息以及相关联的文件(例如驱动程序安装文件以及驱动程序二进制文件)。
对于以下针对驱动程序注入处理所提供的论述而言,所选定的源平台是开发机625,并且所参考的是源平台而不是开发机。然而应该理解,为驱动程序注入处理(例如驱动程序注入阶段101B)所使用的术语“源平台”是可以用术语“开发机”替换的,除非另有说明,否则所述开发机也可以是源平台或别的机器。
当计算机程序615开始运行时,计算机程序615的模块可以促使安装作为特定驱动器号的驱动卷(例如e:/或f:/)的目标VDisk。该能力通常在OS流传输产品中是可以提供的。在这种情况下,目标VDisk仅仅是作为驱动卷安装的,目标VDisk本身不会被拷贝到源平台上。参见图6A中的操作620。
作为替换,用户可以通过将文件从目标VDisk拷贝到源平台(例如拷贝到图4中的机器可读介质419或410)来使计算机程序可以到达目标VDisk的系统注册表文件。在一个方面中,计算机程序模块可以促成文件拷贝处理。该文件的大小可以是数兆字节(例如1~5MB)而不是数吉字节(例如10~20GB)。在这种情况下,系统注册表文件可以在不拷贝整个目标VDisk的情况下被拷贝到源平台。
计算机程序615的一个模块可以通过调用另一个模块来发起驱动程序注入处理。例如,计算机程序(VDiskImageCreation.exe)的模块可以调用模块InjectDriver,由此传递指定给源平台的系统卷的驱动器号(例如C:)以及指定给目标VDisk的系统卷的驱动器号(例如e:/),以便执行驱动程序注入。参见图6A中的操作630。
计算机程序615的一个模块(例如InjectDriver)可以执行以下的一些或所有处理。参见图7中的操作710。
将目标VDisk的系统注册表文件加载到源平台上的当前注册表。例如,对于Windows OS而言,使用Windows系统的应用编程接口(API)来将目标VDisk的系统注册表配置单元文件(例如图5中的520)加载到源平台的当前注册表。在这里将会使用一个与任何已有注册表配置单元名称不同的注册表配置单元名称。例如,通过将该配置单元称为“{_SYSTEM_}”(参见图5中的590),可以将其与图5中的“SYSTEM”220区分开来。参见图7中的操作720。
确定目标VDisk的当前系统信息位置(或路径)。例如,对于Windows OS来说,第一组系统信息位于“ControlSet001”530,第二组系统信息位于“ControlSet002”540,“Select”注册表值550则表明“ControlSet001”530或“ControlSet002”540是否为当前集合。由此,对本示例而言,通过观察列在“HKLM\{_SYSTEM_}”注册表键值520下方的“Select”注册表值550,可以找出在VDisk引导时使用的{_SYSTEM_}520下方的注册表项集合。构造一个通向目标VDisk的系统信息的注册表键值路径,例如“HKLM\{_SYSTEM_}\ControlSet00x”,其中x是“Select”注册表值550。参见图7中的操作730。
当这里给出的示例使用源平台作为开发机时,如果开发机与源平台不同,则将源平台的系统注册表文件加载到开发机上的当前注册表中。例如,对于Windows OS而言,通过使用Windows的系统应用编程接口(API)来将源平台的系统注册表配置单元文件加载到开发机的当前注册表中。在这里将会使用一个与任何已有的注册表配置单元名称不同的注册表配置单元名称。例如,通过将所述注册表配置单元称为“{_SRCSYSTEM_}”,可以将其与图5中的“SYSTEM”220或{_SYSTEM_}区分开来。参见图7中的操作734。
确定源平台的当前系统信息的位置(或路径)。构造一个通向源平台的系统信息的注册表键值路径,例如“HKLM\{_SRCSYSTEM_}\ControlSet00x”。在本示例中,“HKLM{_SRCSYSTEM_}\ControlSet00x”可被称为<源平台的当前系统注册表配置单元名称>。参见图7中的操作738。
确定源平台的操作系统是否兼容目标VDisk的操作系统。例如,在这里将会检测源平台与目标VDisk之间的OS版本是否具有相同的主内部版本号。执行该处理的原因在于Windows驱动程序通常不会跨越不同的主OS修订版本来工作(例如,XP和Windows7的驱动程序并不是二进制兼容的)。在一个方面中,如果源平台与目标之间的主OS版本存在差别,那么作为驱动程序注入操作而从源平台拷贝的一个或多个网络组件驱动程序将无法在目标上工作。参见图7中的操作740。
确定目标VDisk的硬件抽象层(HAL)是否低于或等于源平台的HAL。例如,在这里将会检测目标VDisk中使用的HAL是否低于或等于源平台的HAL。通常,使用特定等级的HAL的Windows OS可以引导那些基本输入/输出系统(BIOS)支持相同或更高HAL而不是更低HAL的设备。因此,在注入驱动程序之后,如果源平台具有低于目标的HAL,那么目标VDisk将无法引导源平台。参见图7中的操作750。
图8是显示了机器800中从软件到硬件的不同层次的示例的概念性框图。顶层810可以包括驻留在机器中的应用。在一个示例中,HAL820可被描述成是可加载的核心模式模块,其中该模块提供的是对接到运行操作系统的硬件平台820的低级接口。HAL820隐藏了诸如I/O接口、中断控制器以及多处理器通信机制之类的硬件相关细节,例如特定于架构以及依赖于机器的任何功能。所述HAL820可以与机器800的BIOS820以及硬件820进行通信。
在下文中按照从低到高的顺序提供了关于Windows XP的不同HAL等级的一些示例(依照功能等级)。
标准PC
高级配置和电源接口(ACPI)PC
ACPI单处理器PC
ACPI多处理器PC
在下文中按照从低到高的顺序提供了关于Vista/Windows7上的不同HAL等级的一些示例(依照功能等级)。
高级配置和电源接口(ACPI)PC
基于ACPI x86的PC
基于ACPI x64的PC
基于ACPI IA64的PC
确定源平台的一个或多个网络接口卡(NIC)是否兼容目标VDisk。例如,在这里可以调用CheckNICCompatibility函数,其中该函数检测的是源平台的一个或多个NIC是否兼容目标VDisk的一个或多个NIC。参见图7中的操作760以及图9中的910。
如果一个或多个网络接口卡不兼容目标VDisk,则执行网络接口驱动程序注入处理。举个例子,如果源平台不兼容目标VDisk,则通过调用InjectWSMNIC函数来注入与OS流传输以及NIC相关的注册表项,以及将一个或多个NIC二进制文件和一个或多个NIC驱动程序安装文件从源平台拷贝到目标VDisk。参见图7中的操作770以及图10中的1010。
从源平台上的当前注册表中卸载目标VDisk的系统注册表文件。例如,在这里可以从当前注册表中卸载目标VDisk的系统注册表配置单元文件。参见图7中的操作780。
如果开发机不同于源平台,则从开发机上的当前注册表中卸载源平台的系统注册表文件。参见图7中的操作790。
计算机程序615促成从源平台中卸载目标VDisk的处理。例如,名为VDiskImageCreation.exe的计算机程序将会卸载目标VDisk。参见图6A中的操作640。
现在,目标VDisk执行了驱动程序注入处理,并且预备进行针对源平台的流传输。举例来说,如图6B中的操作670所示,目标VDisk可被流传输至源平台。图3中的一个或多个源平台302可以经由网络306上的流传输来从图3的目标平台304接收目标VDisk324。在图6A的操作650,所述流传输可以在计算机程序退出之后使用单独的计算机程序来完成。作为替换,图6A所示的计算机程序615可以包括流传输模块。
在这里可以为具有相同的目标VDisk以及相同的目标平台的其他源平台重复执行以上在子标题“关于驱动程序注入方法的例证”下方的操作1到7中描述的一些或所有处理(在这种情况下,操作1将被跳过)。作为替换,在这里可以为具有不同的目标VDisk和/或不同的目标平台的其他源平台重复执行这其中的一些或所有处理。
关于检查NIC兼容性的处理的例证
以下示出的是用于确定源平台的一个或多个网络接口卡(NIC)是否兼容目标VDisk的方法的示例。图9显示的是用于检查NIC兼容性的操作910。举例来说,操作910代表的是图7中的操作760。在一个示例中,操作910也被称为CheckNICCompatibility函数,并且它可以执行以下的一些或所有操作。
确定与源平台的一个或多个操作系统流传输驱动程序绑定的一个或多个网络接口卡驱动程序。例如,在这里可以调用EnumWSMNIC函数,由此传递源平台的系统注册表键值路径(例如“HKLM\SYSTEM\CurrentControlSet\”),从而获取具有当前与源平台中的OS流传输驱动程序绑定的驱动程序的NIC的列表。此类列表被保存在m_SrcNICNodeList中。参见图9中的操作920。
在一个方面中,NETNODE包含了与整个NIC而不只是NIC驱动程序相关的信息。在确定将哪一个NIC与列表绑定时,有必要对一个或多个NIC驱动程序进行识别,以及确定当前将哪个或哪些NIC驱动程序绑定至OS流传输驱动程序。
确定与用于目标VDisk的一个或多个操作系统流传输驱动程序绑定的一个或多个网络接口卡驱动程序。例如,在这里可以调用EnumWSMNIC函数,由此传递目标VDisk中的系统注册表键值路径(例如“HKLM\{_SYSTEM_}\ControlSet001\”),以便获取具有当前与目标中的OS流传输驱动程序绑定的驱动程序的NIC的列表。此类列表被保存在m_DstNICNodeList中。参见图9中的操作930。
确定源平台的一个或多个网络接口卡与目标VDisk的一个或多个网络接口卡是否相同。例如,在这里将会评估m_SrcNICNodeList中的每一个NIC,并且将会通过比较csEnumKey和csOldBusSpecificID值来确定m_DsfNICNodeList中是否存在此类NIC。例如,如果这两个值匹配,则意味着这两个NIC来自相同的制造商或厂家、具有相同的型号、具有相同的修订版本以及位于相同的总线槽。更进一步,这意味着源平台中的这个NIC与目标VDisk是兼容的。参见图9中的操作940。
对于m_SrcNICNodeList中的每一个NIC而言,如果其不兼容目标VDisk,则将bToBeInjected值设定成1。参见图9中的操作950。
前述操作1和2通过检测当前与源平台上的OS流传输驱动程序绑定的一个或多个NIC来从源平台中选择一个或多个NIC,以便将其注入目标VDisk。然而,其他那些用于选择一个或多个NIC的方法也是存在的。例如,(i)提示用户选择源平台中存在的一个或多个NIC,(ii)选择具有一个或多个特定特性的一个或多个NIC(例如所有以太网NIC),或者(iii)选择源平台中的所有NIC,而不对其特性加以考虑。在使用本公开中描述的方法来将选定的NIC驱动程序/配置从源平台注入目标VDisk之后,通过添加OS流传输驱动程序来绑定到目标VDisk上的一个或多个新注入的NIC。该处理可以产生与源平台兼容并且可以被流传输到源平台的目标VDisk。
在一个方面中,在源平台、目标VDisk或开发机中没有流传输驱动程序的情况下,驱动程序注入阶段101B也是可以恰当运转的。如果目标VDisk不具有流传输驱动程序,则可以将流传输驱动程序添加至(或拷贝至)目标VDisk,并且可以在将目标VDisk流传送到源平台之前(例如在图6B的流传输操作670之前)将所述流传输驱动程序与目标VDisk上的一个或多个恰当的网络组件绑定。
关于执行网络接口驱动程序注入的处理的例证
以下示出的是一种用于执行网络接口驱动程序注入处理的方法的示例。在图10中显示的是一种用于在一个或多个网络接口卡不与目标VDisk相兼容的情况下执行网络接口驱动程序注入处理的操作1000。举例来说,操作1000代表的是图7中的操作770。在一个示例中,操作1000也被称为InjectWSMNIC函数,并且它可以执行以下的一些或所有操作。在下文中,该操作是参考图3、4、5、10、11、12A和12B而被示出的。
确定与平台的一个或多个网络接口卡相关联的一个或多个网络组件,其中一个或多个此类网络接口卡不与目标VDisk相兼容。参见图10中的操作1010。举例来说,对于来自源平台的每一个待注入的NIC驱动程序,确定与网络驱动程序接口规格(NDIS)驱动程序堆栈中的上边缘绑定的OS流传输驱动程序实例以及网络组件实例。这些组件是具有将被注入目标VDisk的配置和文件的网络组件。以下将会参考图11、12A和12B来更详细地描述这些组件。
图11是示出了可以驻留在使用Windows OS的机器(例如图3中的302或304或是图4中的410)中的不同层的示例的概念性框图。NDIS接口层1110可以包括一个或多个迷你端口驱动程序1110A、一个或多个NDIS中间驱动程序1110B以及一个或多个NDIS协议驱动程序111OC。所述一个或多个NDIS驱动程序1110A可以是用于驻留在物理层上的一个或多个网络接口卡1150的一个或多个NIC驱动程序。关于NDIS中间驱动程序1110B的示例可以包括一个或多个OS流传输驱动程序以及一个或多个分组调度器驱动程序。关于NDIS协议驱动程序1110C的示例可以包括一个或多个TCPIP驱动程序以及一个或多个NetBT驱动程序。在这个示例中,NDIS迷你端口驱动程序的上边缘被绑定到一个或多个NDIS中间驱动程序1110B。一个或多个NDIS中间驱动程序1110B的上边缘被绑定到一个或多个NDIS协议驱动程序1110C。一个或多个NDIS中间驱动程序1110C的上边缘可被绑定到一个或多个网络服务1160。关于网络服务1160的示例可以包括Winsock、LanmanServer、LanmanWorkStation、NDISUIO以及NetBIOS。软件应用可以位于远高出一个或多个网络服务160的应用层1170。例如,源平台或目标平台可以具有与图11所示的层相类似的层。举例来说,目标VDisk可以包括一些或全部的项1110A、1110B、110C以及1160。在另一个示例中,如果机器是用不同OS工作,那么它可以具有不同类型的层以及不同类型的网络驱动程序。
图12A是示出了使用Windows XP的源平台上的网络驱动程序间的绑定关系的示例的概念性框图。在该示例中,网络接口卡(NIC)驱动程序1230A的上边缘与OS流传输驱动程序1220A绑定。OS流传输驱动程序1220A的上边缘与分组调度器驱动程序1210A绑定。这些驱动程序(例如1230A、1220A和1210A)是与源平台上的NIC相关联的网络组件。在该示例中,用于NIC驱动程序1230A的配置和文件、用于OS流传输驱动程序1220A的配置和文件以及用于分组调度器驱动程序1210A的配置和文件被注入到目标VDisk。驱动程序1230A、1220A以及1210A可以是图11中的驱动程序1110A、1110B以及1110C的示例。目标VDisk可以具有
图12B是示出了使用Windows Vista或Windows7的源平台上的网络驱动程序间的绑定关系示例的概念性框图。在该示例中,网络接口卡(NIC)驱动程序1230B的上边缘与OS流传输驱动程序1220B绑定。OS流传输驱动程序1220B的上边缘与站内自动隧道寻址协议(ISATAP)驱动程序1210B绑定。这些驱动程序(例如1230B、1220B和1210B)是与源平台上的NIC相关联的网络组件。此外,在该示例中,用于NIC驱动程序1230B的配置和文件、用于OS流传输驱动程序1220B的配置和文件以及用于ISATAP驱动程序1210B的配置和文件被注入到目标VDisk。驱动程序1230B、1220B以及1210B可以是图11中的驱动程序1110A、1110B以及1110C的示例。
确定源平台的一个或多个网络组件的网络配置。参见图10中的操作1020。例如,在这里将会确定与在子标题“关于执行网络接口驱动程序注入的方法的例证”的下方的上述操作1中含有的每一个网络组件相关的详细信息。网络配置可以是网络组件的配置信息、设置信息或系统注册表信息。其中举例来说,网络配置可以包括(但不局限于)以下各项中的一些或全部:驱动程序安装文件名称及其位置、windows服务名称、驱动程序二进制文件名称及其位置、全局唯一标识符(GUID)、总线类型(例如周边总线互连(PCI)、系统根目录)、PCI总线位置(仅PCI NIC)、实例索引等等。请注意,这里给出的并不是一个穷举性列表。举个例子,对于Windows OS而言,至少一些网络配置信息可以在“HKLM\SYSTEM\CurrentControlSet\”下方的系统注册表项中找到(参见图2中的项230或图5中的项570)。在一个方面中,在“HKLM\SYSTEM\CurrentControlSet\”下方的系统注册表项中至少可以找到以上列举的所有项。
根据需要,确定与目标VDisk的一个或多个网络接口卡相关联的一个或多个网络组件,以及确定目标VDisk的一个或多个网络组件的网络配置。参见图10中的操作1030。在这里应用的可以是与前述操作1-2中描述的方法相类似的方法。举个例子,对于Windows OS而言,用于目标VDisk的网络配置信息可以在“HKLM\{_SYSTEM_}\ControlSet00x\”下方的系统注册表项中找到(相关示例可以参见图2中的项230或是图5中的项570)。
确定源平台的一个或多个网络组件的网络配置是否与目标VDisk的网络配置发生冲突。参见图10中的操作1040。例如,在将获取自前述操作2的网络配置值注入目标VDisk之前,通过确定是否需要调整所述网络配置值来避免与目标VDisk中的已有值发生冲突。
如果源平台的一个或多个网络组件的网络配置与目标VDisk的网络配置发生冲突,则通过调整源平台的一个或多个网络组件的网络配置来使源平台的一个或多个网络组件的网络配置不与目标VDisk的已有网络配置发生冲突。参见图10中的操作1050。举例来说,如果发生冲突,则确定用于源平台的一个或多个网络组件的新的网络配置值。以下提供的是可能发生冲突的网络配置项的一些示例。这些示例只是一些示例(并不是穷举性列表),并且其他可能发生冲突的网络配置项也是可以存在的。
驱动程序安装文件名:举例来说,如果用于源平台的网络组件的驱动程序安装文件名是OEMx.inf,并且在目标VDisk中已经存在用于另一个驱动程序的OEMx.inf,那么,在将该文件拷贝到目标VDisk的时候,源平台的OEMx.inf将被重命名成另一个名称,例如OEMy.inf。新名称OEMy.inf应该是目标VDisk中尚不存在的崭新的文件名。
用于确定驱动程序安装文件名称是否发生冲突的处理可以是通过搜索目标VDisk(例如搜索Windows\inf文件夹,其中所述文件夹是系统文件夹)以及确定是否已经在目标VDisk上使用了源平台的一个或多个网络组件使用的文件名称来执行。
实例索引:作为另一个示例,如果网络组件的当前实例在源平台中的索引值是2,并且在目标VDisk中已经使用了相同的实例索引,那么需要为目标VDisk中未使用的网络组件使用新的实例索引(例如3)。
将源平台的一个或多个网络组件中的每一个的网络配置注入目标VDisk(在进行了前述操作5中描述的网络配置所必需的任何调整之后)。参见图10中的操作1060。例如,在这里会将用于源平台的一个或多个网络组件中的每一个的网络配置(在任何调整之后)拷贝到目标VDisk的系统注册表文件中。作为例证,无论哪一个注册表项被选定成当前注册表项,都会将图5中的HKLM\SYSTEM\CurrentControlSet\...570下方的某些注册表项拷贝到图5中的HKLM\{_SYSTEM_}\ControlSet00x\...530或540下方的注册表项。
将与源平台的一个或多个网络组件中的每一个相关联的文件注入目标VDisk。参见图10中的操作1070。例如,在这里会将与源平台的一个或多个网络组件中的每一个相关联的驱动程序安装文件以及驱动程序二进制文件拷贝到目标VDisk。
根据需要来调整目标VDisk的网络配置值。参见图10中的操作1080。例如,在这里会根据需要来更新目标VDisk的系统注册表文件中的系统注册表值(例如网络组件实例的数量)。
将源平台的一个或多个新注入的网络组件与目标VDisk上的一个或多个恰当的高级网络组件(例如目标VDisk上的一个或多个协议驱动程序和/或一个或多个网络服务)绑定。参见图10中的操作1090。例如,在这里将会选择目标VDisk的至少一个网络组件作为参考网络组件(例如参考NIC驱动程序)。并且将会确定目标VDisk上的参考网络组件与一个或多个高级网络组件之间的已有绑定关系。然后则会确定所注入的一个或多个网络组件与目标VDisk上的一个或多个高级网络组件之间的绑定关系。
关于执行网络接口驱动程序注入的处理的详细例证
以下参考图13-17来示出在一个或多个网络接口卡不与目标VDisk相兼容时执行网络接口驱动程序注入处理的方法的详细示例。这个参考图13-17描述的方法可以更详细地描述参考图10所描述的方法。
在本公开的一个方面中,参考图10描述的方法以及参考图13-17描述的方法具有以下的例示关系。
图10的操作1010的示例是作为图13的操作1320示出的。图10的操作1020的示例是作为图13的操作1320示出的。图10的操作1030的示例是作为图14的操作1410示出的。图10的操作1040和1050的示例是作为图14操作1420、1430、1440以及1450示出的。图10的操作1060的示例是作为图15和16操作1530、1540、1550、1620、1630和1640示出的。图10的操作1070的示例是作为图15的操作1510和1520示出的。图10的操作1080的示例是作为图16的操作1610示出的。图10的操作1080的示例是作为图16的操作1650示出的。图10的操作1090的示例是作为图16的操作1660以及图17的操作1710、1720和1730示出的。
在本示例中,本方法更详细地描述了在被用在使用Windows OS的源平台(例如图3中的302、图4中的400)时的InjectWSMNIC函数(相关示例可以参见图13中的1310、图10中的1000、图7中的770)。现在参考图12A和13-17,该方法可以执行以下的一些或所有操作:
为m_SrcNICNodeList中的每一个NIC驱动程序(例如图12A中的1230A)调用FindUpper函数,以便找到与其上边缘绑定的网络组件。例如,该组件可以是一个OS流传输驱动程序(例如图12A中的1220A)。再次调用FindUpper,以便找到将OS流传输驱动程序与其上边缘绑定的网络组件。例如,该网络组件可以是分组调度器驱动程序(例如图12B中的1210A)。对于所有的三个网络组件、也就是NIC驱动程序、OS流传输驱动程序以及分组调度器驱动程序来说,将其NETNODE的bToBeInjected值设定成1。现在,与从源平台注入到目标VDisk的所有网络组件相关的信息都已被确定。参见图13中的操作1320。
为每一个待注入的NETNODE调用FindDeviceClassEntry。参见图13中的操作1320。
通过调用FindLastSubKey来找到目标VDisk的Net Device类注册表键值的最后一个子键值编号,其中举例来说,所述注册表键值可以位于注册表键值路径HKLM\{_SYSTEM_}\ControlSet001\下方。参见图14中的操作1410。来自源平台的NETNODE可以使用列举下一个子键值的处理而被注入到目标VDisk中。例如,所述NETNODE可被注入到系统注册表键值的NetDevice类注册表项下方的新的子键值中,例如HKLM\{_SYSTEM_}\ControlSet00x,其中x是图5中的“Select”注册表值550。
对于m_SrcNICNodeList中的每一个待注入的NIC及其上层节点:
通过调用AssignNewNetClassSubKey函数来指定目标VDisk中的NETNODE使用的NETCLASS子键值。参见图14中的操作1420。
通过调用AssignNewBusSpecificID函数来指定供目标VDisk中的NETNODE使用的新的总线特有ID。参见图14中的操作1430。
在将每一个NETNODE注入目标VDisk之后,通过调用TallyNetworkDescriptionlnstances函数来追踪每一个NETNODE的实例数量。参见图14中的操作1440。
通过调用AssignNewInfPath函数来设置csNewInflPath字段。在将该NETNODE注入目标VDisk之后,所述字段是驱动程序安装文件的名称。参见图14中的操作1450。
对于m_SrcNICNodeList中的每一个待注入的NIC及其上层节点:通过调用CopyInfFile函数来将驱动程序安装文件从源平台拷贝到目标VDisk。参见图15中的操作1510。驱动程序安装文件名可以是基于图14的操作1450而被改变的。
通过调用CopyDriverFile函数来将驱动程序二进制文件从源平台拷贝到目标VDisk。参见图15中的操作1520。驱动程序文件名称不会改变。
通过调用MergeNetClassSubKeys函数来将待注入节点的NetDevice类注册表键值从源平台并入目标VDisk。参见图15中的操作1530。该操作可以基于图14的操作1420和1450。
通过调用MergeDeviceClassSubKeys函数来将待注入节点的NDIS LAN类注册表键值从源平台并入目标VDisk。参见图15中的操作1540。该操作可以基于图14的操作1430。
通过调用MergeEnumSubKey函数来将待注入节点的Enum注册表键值从源平台并入目标VDisk。参见图15中的操作1550。该操作可以基于图14的操作1430。
枚举m_NetworkInstanceList。对于具有与OldLastInstance不等的NewLastInstance的每一个条目而言,将注册表项HKLM\{_SYSTEM_}\ControlSet00x\Control\Network\<NetDeviceclass>\...\<DriverDesc>的值更新成一个代表newLastInstance值的多字串值(例如”12”->“123”)。参见图16中的操作1610。该操作可以基于图14的操作1440。
对于m_SrcNICNodeList中的每一个待注入的NIC节点:
将注册表项HKLM\SYSTEM\CurrentControlSet\Control\Network\<NetDeviceclass>\<csGUID>\registry value(值和子键值)拷贝到HKLM\{_SYSTEM_}\ControlSet00x\Control\Network\<Net Deviceclass>\<csGUID>\。参见图16中的操作1620。
将键值路径HKLM\SYSTEM\CurrentControlSet\下方的注册表项中的服务注册表键值(值和子键值)从源平台拷贝到用于目标VDisk的键值路径HKLM\{_SYSTEM_}\ControlSet00x\下方的注册表项。参见图16中的操作1630。
将注册表项HKLM\SYSTEM\CurrentControlSet\Services\<csGUID ofpNode>拷贝到HKLM\{_SYSTEM_}\ControlSet00x\Services\<csGUID ofpNode>。参见图16中的操作1640。
如果目标VDisk中已经存在<csService>键值(例如在键值路径HKLM\{_SYSTEM_}\ControlSet00x\下方的注册表项中),则不需要拷贝所述键值。出现这种情况的原因有可能是在目标VDisk中已经存在NIC,但是所述NIC处于不同的总线槽中。
删除键值路径HKLM\{_SYSTEM_}\ControlSet00x\下方的注册表项中的网络配置注册表值。参见图16中的操作1650。如此这般,操作系统可以识别出目标VDisk的当前系统信息所发生的变化。例如,目标VDisk的系统注册表文件有可能发生了变化。参见图16中的操作1650。
预备将新的NIC驱动程序GUID(从源平台)插入目标VDisk上的不同协议驱动程序及网络服务的绑定列表。首先,从目标VDisk中找出一个已有NIC驱动程序,以此作为参考。例如,当前绑定到目标VDisk中的OS流传输驱动程序的任何NIC驱动程序都可以是参考NIC驱动程序。将csRefGUID设置成等于参考NIC驱动程序的GUID。参见图16中的操作1660。
对于m_SrcNICNodeList中的每一个待注入的NIC节点:
通过调用AddLinkage函数来将NIC组件从源平台添加到目标VDisk上的不同网络服务的“linkage”注册表键值中。参见图17中的操作1710。
通过调用AddSvcInterfaces函数来将NIC组件从源平台添加到目标VDisk上的不同网络服务的支持适配器或接口列表中。参见图17中的操作1720。
通过调用AddRemoteAccessInterfaces函数来将NIC组件从源平台添加到目标VDisk上的支持远程访问服务接口列表中。参见图17中的操作1730。
一旦以如上所述的方式完成了前述操作9和10,则可以进行以下处理。例如,参考图11和12,基于参考NIC驱动程序,可以将那些从源平台注入目标VDisk的NIC驱动程序1110A和/或一个或多个相应NIC组件1110B(例如OS流传输驱动程序1220A和分组调度器驱动程序1210A)绑定到相应的协议驱动程序1110C以及一个或多个相应的网络服务1160。
请注意,网络组件可以与并不紧邻的另一个网络组件绑定。举个例子,在图12A中,NIC驱动程序1230A可以与分组调度器驱动程序1210A绑定。在图11中,NDIS迷你端口驱动程序1110A可以与网络服务1160或NDIS协议驱动程序1110C绑定。
用于驱动程序注入和流传输的机器可读介质的例证(作为条款来描述)
作为示例,本技术主题是依照如下所述的不同方面示出的。为了方便起见,关于本技术主题方面的不同示例是作为带编号的条款来描述的。这些条款则是作为示例提供的,其并不对本技术主题构成限制。例如,用于以下的第一条款的指令和代码是参考图18给出的。用于其他条款的指令和代码也可以用类似的方式给出。
1.一种机器可读存储介质(例如图18中的1800或图4中的410、419),其中所述介质用处理系统(例如图4中的402)可执行指令(例如图18中的1815)编码,以便执行一种用于提供针对目标映像(例如图3中的324)的网络驱动程序注入的方法,从而将目标映像变换成与一个或多个源机器相兼容,所述指令包括用于以下处理的代码:
促使访问源机器的源系统注册表文件(例如图18中的1805);
在不拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件(例如图18中的1810),其中目标映像包括操作系统;
确定源机器的一个或多个源网络接口卡是否兼容目标映像(例如图18中的1820);以及
如果一个或多个源网络接口卡不兼容目标映像,则执行网络接口驱动程序注入(例如图18中的1830),其中执行网络接口驱动程序注入的操作包括:
确定与一个或多个源网络接口卡相关联的一个或多个源网络组件(例如图18中的1830-A);
确定一个或多个源网络组件的源网络配置(例如图18中的1830-B);
确定目标映像的一个或多个目标网络组件的目标网络配置(例如图18中的1830-C);
确定源网络配置是否与目标网络配置冲突(例如图18中的1830-D);
如果源网络配置与目标网络配置冲突,则通过调整源网络配置来使源网络配置不与目标网络配置冲突(例如图18中的1830-E);以及
将一个或多个源网络组件的源网络配置注入目标系统注册表文件(例如图18中的1830-F)。
2.如条款1所述的机器可读存储介质,
其中该指令还包括用于以下处理的代码:
促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件,
其中该方法促成经由网络的操作系统流传输(例如图3中的306),
其中在不拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件的操作包括:
在没有将目标映像拷贝至开发机的情况下,促使访问目标映像的目标系统注册表文件,以及
其中促使访问源机器的源系统注册表文件的操作、促使访问目标映像的目标系统注册表文件的操作、确定操作以及执行网络接口驱动程序注入的操作是由开发机执行的。
3.如条款1所述的机器可读存储介质,其中该指令还包括用于以下处理的指令:
选择一个或多个目标网络组件中的至少一个作为参考网络组件;
确定用于目标映像的参考网络组件与一个或多个网络服务之间的绑定关系;以及
确定一个或多个源网络组件中的至少一个与一个或多个网络服务之间的绑定关系。
4.如条款1所述的机器可读存储介质,其中该指令还包括用于以下处理的指令:
确定源机器的操作系统是否兼容目标映像的操作系统;以及
确定目标映像的硬件抽象层是否低于或等同于源机器的硬件抽象层;以及
如果源机器的操作系统兼容目标映像的操作系统并且如果目标映像的硬件抽象层低于或等同于源机器的硬件抽象层,则执行以下操作:
确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作;以及
在一个或多个源网络接口卡不兼容目标映像的情况下执行网络接口驱动程序注入的操作。
5.如条款1所述的机器可读存储介质,
其中执行网络接口驱动程序注入的操作还包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上,其中该目标映像处于目标机上,
其中开发机单纯基于源机器的源系统注册表文件来执行用以确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的操作,
其中开发机基于源机器的源系统注册表文件以及基于与源机器的一个或多个网络组件相关联的一个或多个文件来执行用以确定一个或多个源网络组件的源网络配置的操作,以及
其中开发机基于目标映像的目标系统注册表文件以及基于与目标映像的一个或多个目标网络组件相关联的一个或多个文件来执行用以确定目标映像的一个或多个目标网络组件的目标网络配置的操作。
6.如条款1所述的机器可读存储介质,
其中在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上安装作为驱动卷的目标映像;以及
将目标系统注册表文件加载到开发机的注册表中,
其中所述指令还包括用于以下处理的代码:
在实施了执行网络接口驱动程序注入的操作之后,从开发机的注册表中卸载目标系统注册表文件;以及
促使从开发机中卸载所述目标映像。
7.如条款1所述的机器可读存储介质,其中该指令还包括用于以下处理的指令:
促使将目标映像从目标机经由网络流传输到源机器。
8.如条款1所述的机器可读存储介质,
其中在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上拷贝目标映像的目标系统注册表文件;以及
将目标系统注册表文件加载到开发机的注册表中,
其中该指令还包括用于以下处理的代码:
在实施了执行网络接口驱动程序注入的操作之后,从开发机的注册表中卸载目标系统注册表文件;以及
促使从开发机中移除目标系统注册表文件。
9.如条款1所述的机器可读存储介质,其中目标映像驻留在目标机上,并且源机器经由网络位于目标机的远端,
其中一个或多个源网络组件至少包括网络接口卡驱动程序以及操作系统流传输驱动程序,以及
其中目标映像是虚拟磁盘映像。
10.如条款1所述的机器可读存储介质,
其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作包括:
确定与用于源机器的一个或多个源操作系统流传输驱动程序绑定的一个或多个源网络接口卡驱动程序;
确定与用于目标映像的一个或多个目标操作系统流传输驱动程序绑定的一个或多个目标网络接口卡驱动程序;
确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同,其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作是基于源系统注册表文件和目标系统注册表文件执行的,以及
其中确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的操作包括:
确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商,具有相同的型号,具有相同的修订版本,以及用于相同的总线槽。
11.如条款1所述的机器可读存储介质,
其中确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的操作包括:
确定与用于一个或多个源网络接口卡之一的源网络接口卡驱动程序的实例的上边缘绑定的第一源中间网络驱动程序的实例;以及
确定与第一源中间网络驱动程序实例的上边缘绑定的第二源中间网络驱动程序实例,以及
其中一个或多个源网络组件包括源网络接口卡驱动程序的实例,第一源中间网络驱动程序的实例,以及第二源中间网络驱动程序的实例,
其中确定一个或多个源网络组件的源网络配置的操作包括:
基于源系统注册表文件来为一个或多个源网络组件中的每一个确定驱动程序安装文件名称和位置、驱动程序二进制文件的名称和位置、windows服务名称以及全局唯一标识符,
其中在源网络配置与目标网络配置冲突的情况下调整源网络配置的操作包括:
如果与安装文件名称发生冲突,则改变安装文件的名称;
如果与实例索引值发生冲突,则改变实例索引值;以及
确定一个或多个源网络组件的实例的数量。
12.如条款1所述的机器可读存储介质,
其中执行网络接口驱动程序注入的操作还包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上,其中该目标映像处于目标机上。
其中促使拷贝一个或多个文件的操作包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序安装文件拷贝到目标映像上;以及促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序二进制文件拷贝到目标映像上,
其中将一个或多个源网络组件的源网络配置注入目标系统注册表文件的操作包括:
促使将一个或多个源网络组件的源网络配置的注册表值拷贝到目标系统注册表文件中;以及
更新目标系统注册表文件的注册表值。
13.如条款2所述的机器可读存储介质,其中开发机是源机器。
14.如条款2所述的机器可读存储介质,其中促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件的操作包括:
在没有将一个或多个文件拷贝到开发机上的情况下,促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件。
15.如条款1的机器可读存储介质,
其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作包括:
促使访问源机器的一个或多个源网络接口卡;确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同,其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作是基于源系统注册表文件和目标系统注册表文件执行的,以及
其中确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的操作包括:
确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商,具有相同的型号,具有相同的修订版本,以及用于相同的总线槽。
关于驱动程序注入及流传输方法的例证(作为条款来描述)
作为示例,本技术主题是依照如下所述的不同方面示出的。为了方便起见,关于本技术主题方面的不同示例是作为带编号的条款来描述的。这些条款则是作为示例提供的,其并不对本技术主题构成限制。例如,用于以下的第一条款的方法操作是参考图19给出的。用于其他条款的方法操作也可以用类似的方式给出。
1.一种通过提供针对目标映像网络驱动程序注入(例如图3中的324)来将目标映像变换成与一个或多个源机器相兼容的方法(例如1900),该方法包括:
促使访问源机器的源系统注册表文件(例如图19中的1905);
在不拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件(例如图19中的1910),其中目标映像包括操作系统;
确定源机器的一个或多个源网络接口卡是否兼容目标映像(例如图19中的1920);以及
如果一个或多个源网络接口卡不兼容目标映像,则执行网络接口驱动程序注入(例如图19中的1930),其中执行网络接口驱动程序注入的操作包括:
确定与一个或多个源网络接口卡相关联的一个或多个源网络组件(例如图19中的1930-A);
确定一个或多个源网络组件的源网络配置(例如图19中的1930-B);
确定目标映像的一个或多个目标网络组件的目标网络配置(例如图19中的1930-C);
确定源网络配置是否与目标网络配置冲突(例如图19中的1930-D);
如果源网络配置与目标网络配置冲突,则通过调整源网络配置来使源网络配置不与目标网络配置冲突(例如图19中的1930-E);以及
将一个或多个源网络组件的源网络配置注入目标系统注册表文件(例如图19中的1930-F)。
2.如条款1所述的方法,
其中该方法还包括:
促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件,
其中该方法促成经由网络的操作系统流传输(例如图3中的306),
其中在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将目标映像拷贝到开发机上的情况下,促使访问目标映像的目标系统注册表文件,以及
其中促使访问源机器的源系统注册表文件的操作、促使访问目标映像的目标系统注册表文件的操作、确定操作以及执行网络接口驱动程序注入的操作是由开发机执行的。
3.如条款1所述的方法,还包括:
选择一个或多个目标网络组件中的至少一个作为参考网络组件;
确定用于目标映像的参考网络组件与一个或多个网络服务之间的绑定关系;以及
确定一个或多个源网络组件中的至少一个与一个或多个网络服务之间的绑定关系。
4.如条款1所述的方法,还包括:
确定源机器的操作系统是否兼容目标映像的操作系统;以及
确定目标映像的硬件抽象层是否低于或等同于源机器的硬件抽象层;以及
如果源机器的操作系统兼容目标映像的操作系统,以及如果目标映像的硬件抽象层低于或等同于源机器的硬件抽象层,则执行以下操作:
确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作;以及
如果一个或多个源网络接口卡不兼容目标映像,则执行网络接口驱动程序注入的操作。
5.如条款1所述的方法,
其中执行网络接口驱动程序注入的操作还包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上,其中该目标映像处于目标机上,
其中开发机单纯基于源机器的源系统注册表文件来执行用以确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的操作,其中开发机基于源机器的源系统注册表文件以及基于与源机器的一个或多个网络组件相关联的一个或多个文件来执行用以确定一个或多个源网络组件的源网络配置的操作,以及
其中开发机基于目标映像的目标系统注册表文件以及基于与目标映像的一个或多个目标网络组件相关联的一个或多个文件来执行用以确定目标映像的一个或多个目标网络组件的目标网络配置的操作。
6.如条款1所述的方法,
其中在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上安装作为驱动卷的目标映像;以及
将目标系统注册表文件加载到开发机的注册表中,其中该方法还包括:
在实施了执行网络接口驱动程序注入的操作之后,从开发机的注册表中卸载目标系统注册表文件;以及
促使从开发机中卸载所述目标映像。
7.如条款1所述的方法,还包括:
在实施了执行网络接口驱动程序注入的操作之后,促使将目标映像从目标机经由网络流传输到源机器。
8.如条款1所述的方法,
其中在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上拷贝目标映像的目标系统注册表文件;以及
将目标系统注册表文件加载到开发机的注册表中,
其中该方法还包括:
在实施了执行网络接口驱动程序注入的操作之后,从开发机的注册表中卸载目标系统注册表文件;以及
促使从开发机中移除目标系统注册表文件。
9.如条款1所述的方法,其中目标映像驻留在目标机上,并且源机器经由网络位于目标机的远端,
其中一个或多个源网络组件至少包括网络接口卡驱动程序以及操作系统流传输驱动程序,以及
其中目标映像是虚拟磁盘映像。
10.如条款1所述的方法,
其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作包括:
确定与用于源机器的一个或多个源操作系统流传输驱动程序绑定的一个或多个源网络接口卡驱动程序;
确定与用于目标映像的一个或多个目标操作系统流传输驱动程序绑定的一个或多个目标网络接口卡驱动程序;
确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同,其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作是基于源系统注册表文件和目标系统注册表文件执行的,以及
其中确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的操作包括:
确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商,具有相同的型号,具有相同的修订版本,以及用于相同的总线槽。
11.如条款1所述的方法,
其中确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的操作包括:
确定与用于一个或多个源网络接口卡之一的源网络接口卡驱动程序的实例的上边缘绑定的第一源中间网络驱动程序的实例;以及
确定与第一源中间网络驱动程序实例的上边缘绑定的第二源中间网络驱动程序实例,以及
其中一个或多个源网络组件包括源网络接口卡驱动程序的实例,第一源中间网络驱动程序的实例,以及第二源中间网络驱动程序的实例,
其中确定一个或多个源网络组件的源网络配置的操作包括:
基于源系统注册表文件来确定用于一个或多个源网络组件中的每一个的驱动程序安装文件名称和位置,驱动程序二进制文件名称和位置,windows服务名称,以及全局唯一标识符,
其中在源网络配置与目标网络配置冲突的情况下调整源网络配置的操作包括:
如果与安装文件名称发生冲突,则改变安装文件的名称;
如果与实例索引值发生冲突,则改变实例索引值;以及
确定一个或多个源网络组件的实例的数量。
12.如条款1所述的方法,
其中执行网络接口驱动程序注入的操作还包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上,其中该目标映像处于目标机上。
其中促使拷贝一个或多个文件的操作包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序安装文件拷贝到目标映像上;以及
促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序二进制文件拷贝到目标映像上,
其中将一个或多个源网络组件的源网络配置注入目标系统注册表文件的操作包括:
促使将一个或多个源网络组件的源网络配置的注册表值拷贝到目标系统注册表文件中;以及
更新目标系统注册表文件的注册表值。
13.如条款2所述的方法,其中开发机是源机器。
14.如条款2所述的方法,其中促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件的操作包括:
在没有将一个或多个文件拷贝到开发机上的情况下,促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件。
15.如条款1所述的方法,
其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作包括:
促使选择源机器的一个或多个源网络接口卡;
确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同,其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作是基于源系统注册表文件和目标系统注册表文件执行的,以及
其中确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的操作包括:
确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商,具有相同的型号,具有相同的修订版本,以及用于相同的总线槽。
在一个方面中,在以上的子标题“关于驱动程序输入和流传输方法的例证(作为条款来描述)”的下方描述的所有操作是由开发机(或开发机的处理系统)执行的。在另一个方面,在以上的子标题下方描述的至少一些操作是由开发机(或开发机的处理系统)执行的。所述开发机可以是源机器或另一个机器。
关于驱动程序注入及流传输设备的例证(作为条款来描述)
作为示例,本技术主题是依照如下所述的不同方面示出的。为了方便起见,关于本技术主题方面的不同示例是作为带编号的条款来描述的。这些条款则是作为示例提供的,其并不对本技术主题构成限制。例如,用于以下的第一条款的指令和代码是参考图20给出的。用于其他条款的指令和代码也可以用类似的方式给出。
1.一种设备(例如图20中的2090),包括:
处理系统(例如图4或图20中的402);以及
使用处理系统可执行的指令(例如图20中的2015)编码的机器可读存储介质(例如图20中的2000),其中该指令包括用于以下处理的代码:
促使访问源机器的源系统注册表文件(例如图20中的2005);
在不拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件(例如图20中的2010),其中目标映像包括操作系统;
确定源机器的一个或多个源网络接口卡是否兼容目标映像(例如图20中的2020);以及
如果一个或多个源网络接口卡不兼容目标映像,则执行网络接口驱动程序注入(例如图20中的2030),其中执行网络接口驱动程序注入的操作包括:
确定与一个或多个源网络接口卡相关联的一个或多个源网络组件(例如图20中的2030-A);
确定一个或多个源网络组件的源网络配置(例如图20中的2030-B);
确定目标映像的一个或多个目标网络组件的目标网络配置(例如图20中的2030-C);
确定源网络配置是否与目标网络配置冲突(例如图20中的2030-D);
如果源网络配置与目标网络配置冲突,则通过调整源网络配置来使源网络配置不与目标网络配置冲突(例如图20中的2030-E);以及
将一个或多个源网络组件的源网络配置注入目标系统注册表文件(例如图20中的2030-F)。
2.如条款1所述的设备,
其中该指令还包括用于以下处理的代码:
促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件,
其中该设备旨在提供将网络驱动程序注入目标映像的处理,以便将目标映像变换成与一个或多个源机器相兼容,从而促使经由网络的操作系统流传输(例如图3中的306),
其中在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将目标映像拷贝到开发机上的情况下,促使访问目标映像的目标系统注册表文件,以及
其中促使访问源机器的源系统注册表文件的操作、促使访问目标映像的目标系统注册表文件的操作、确定操作以及执行网络接口驱动程序注入的操作是由开发机执行的,以及
其中开发机是一个设备。
3.如条款1所述的设备,其中该指令还包括用于以下处理的指令:
选择一个或多个目标网络组件中的至少一个作为参考网络组件;
确定用于目标映像的参考网络组件与一个或多个网络服务之间的绑定关系;以及
确定一个或多个源网络组件中的至少一个与一个或多个网络服务之间的绑定关系。
4.如条款1所述的设备,其中该指令还包括用于以下处理的指令:
确定源机器的操作系统是否兼容目标映像的操作系统;以及
确定目标映像的硬件抽象层是否低于或等同于源机器的硬件抽象层;以及
如果源机器的操作系统兼容目标映像的操作系统,以及如果目标映像的硬件抽象层低于或等同于源机器的硬件抽象层,则执行以下操作:
确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作;以及
如果一个或多个源网络接口卡不兼容目标映像,则执行网络接口驱动程序注入的操作。
5.如条款1所述的设备,
其中执行网络接口驱动程序注入的操作还包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上,其中该目标映像处于目标机上。
其中开发机单纯基于源机器的源系统注册表文件来执行用以确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的操作,
其中开发机基于源机器的源系统注册表文件以及基于与源机器的一个或多个网络组件相关联的一个或多个文件来执行用以确定一个或多个源网络组件的源网络配置的操作,以及
其中开发机基于目标映像的目标系统注册表文件以及基于与目标映像的一个或多个目标网络组件相关联的一个或多个文件来执行用以确定目标映像的一个或多个目标网络组件的目标网络配置的操作。
其中开发机是一个设备。
6.如条款1所述的设备,
其中在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上安装作为驱动卷的目标映像;以及
将目标系统注册表文件加载到开发机的注册表中,
其中该指令还包括用于以下处理的代码:
在实施了执行网络接口驱动程序注入的操作之后,从开发机的注册表中卸载目标系统注册表文件;以及
促使从开发机中卸载所述目标映像。
其中开发机是一个设备。
7.如条款1所述的设备,其中该指令还包括用于以下处理的代码:
促使将目标映像从目标机经由网络流传输到源机器。
8.如条款1所述的设备,
其中在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上拷贝目标映像的目标系统注册表文件;以及
将目标系统注册表文件加载到开发机的注册表中,其中该指令还包括用于以下处理的代码:
在实施了执行网络接口驱动程序注入的操作之后,从开发机的注册表中卸载目标系统注册表文件;以及
促使从开发机中移除所述目标系统注册表文件,以及
其中开发机是一个设备。
9.如条款1所述的设备,其中目标映像驻留在目标机上,源机器经由网络位于远离目标机的位置,
其中一个或多个源网络组件至少包括网络接口卡驱动程序以及操作系统流传输驱动程序。
其中该目标映像是虚拟磁盘映像,以及
其中该设备包括显示器、发射机以及接收机。
10.如条款1所述的设备,
其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作包括:
确定与用于源机器的一个或多个源操作系统流传输驱动程序绑定的一个或多个源网络接口卡驱动程序;
确定与用于目标映像的一个或多个目标操作系统流传输驱动程序绑定的一个或多个目标网络接口卡驱动程序;
确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同,其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作是基于源系统注册表文件和目标系统注册表文件执行的,以及
其中确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的操作包括:
确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商,具有相同的型号,具有相同的修订版本,以及用于相同的总线槽。
11.如条款1所述的设备,
其中确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的操作包括:
确定与用于一个或多个源网络接口卡之一的源网络接口卡驱动程序的实例的上边缘绑定的第一源中间网络驱动程序的实例;以及
确定与第一源中间网络驱动程序实例的上边缘绑定的第二源中间网络驱动程序实例,以及
其中一个或多个源网络组件包括源网络接口卡驱动程序的实例,第一源中间网络驱动程序的实例,以及第二源中间网络驱动程序的实例,
其中确定一个或多个源网络组件的源网络配置的操作包括:
基于源系统注册表文件来为一个或多个源网络组件中的每一个确定驱动程序安装文件名称和位置、驱动程序二进制文件的名称和位置、windows服务名称以及全局唯一标识符。
其中在源网络配置与目标网络配置冲突的情况下调整源网络配置的操作包括:
如果与安装文件名称发生冲突,则改变安装文件的名称;
如果与实例索引值发生冲突,则改变实例索引值;以及
确定一个或多个源网络组件的实例的数量。
12.如条款1所述的设备,
其中执行网络接口驱动程序注入的操作还包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上,其中该目标映像处于目标机上。
其中促使拷贝一个或多个文件的操作包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序安装文件拷贝到目标映像上;以及
促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序二进制文件拷贝到目标映像上,
其中将一个或多个源网络组件的源网络配置注入目标系统注册表文件的操作包括:
促使将一个或多个源网络组件的源网络配置的注册表值拷贝到目标系统注册表文件中;以及
更新目标系统注册表文件的注册表值。
13.如条款2所述的设备,其中开发机是源机器。
14.如条款2所述的设备,其中促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件的操作包括:
在没有将一个或多个文件拷贝到开发机上的情况下,促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件。
15.如条款1所述的设备,
其中确定源机器的一个或多个源网络接口卡是否兼容目标映像的操作包括:
促使选择源机器的一个或多个源网络接口卡;
确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同,其中确定源机器的一个或多个源网络接口卡确定兼容目标映像的操作是基于源系统注册表文件和目标系统注册表文件执行的,以及
其中确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的操作包括:
确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商,具有相同的型号,具有相同的修订版本,以及用于相同的总线槽。
关于驱动程序注入及流传输装置的例证(作为条款来描述)
作为示例,本技术主题是依照如下所述的不同方面示出的。为了方便起见,关于本技术主题方面的不同示例是作为带编号的条款描述的。这些条款则是作为示例提供的,其并不对本技术主题构成限制。例如,以下的第一条款是参考图20给出的。其他条款也可以用类似的方式给出。
作为示例,以下描述的“装置”可以作为图21显示的模块来实施。所述模块可以作为电子硬件、计算机软件或是这二者的组合来实施。软件模块可以包括能被编码到机器可读介质或机器可读存储介质上的计算机程序子程序、函数或其他软件组件。软件模块可以由处理系统执行。硬件模块则可以用一个或多个处理器、一个或多个微控制器、一个或多个控制器、一个或多个数字信号处理器(DSP)、一个或多个专用集成电路(ASIC)、一个或多个现场可编程门阵列(FPGA)、一个或多个可编程逻辑器件(PLD)、一个或多个状态机、一个或多个门逻辑、一个或多个分立硬件元件或是其他任何可以执行计算或其他信息操作的适当设备来实施。所述硬件模块可以在一个设备或多个设备上实施。此外,多个硬件模块也可以在一个设备或多个设备上实施。
1.一种设备(例如图21中的2100),包括:
用于促使访问源机器的源系统注册表文件的装置(例如图21中的2105);
用于在不拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件的装置(例如图21中的2110),其中该目标映像包括操作系统;
用于确定源机器的一个或多个源网络接口卡是否兼容目标映像的装置(例如图21中的2120);以及
用于在一个或多个源网络接口卡不兼容目标映像的情况下执行网络接口驱动程序注入的装置(例如图21中的2130),其中用于执行网络接口驱动程序注入的装置包括:
用于确定与一个或多个源网络接口卡关联的一个或多个源网络组件的装置(例如图21中的2130-A);
用于确定一个或多个源网络组件的源网络配置的装置(例如图21中的2130-B);
用于确定目标映像的一个或多个目标网络组件的目标网络配置的装置(例如图21中的2130-C);
用于确定源网络配置是否与目标网络配置冲突的装置(例如图21中的2130-D);
用于在源网络配置与目标网络配置冲突的情况下,通过调整源网络配置来使源网络配置不与目标网络配置冲突的装置(例如图21中的2130-E);以及
用于将一个或多个源网络组件的源网络配置注入目标系统注册表文件的装置(例如图21中的2130-F)。
2.如条款1所述的设备,
其中该设备还包括:
用于促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件的装置,
其中该设备旨在提供针对目标映像的网络驱动程序注入,以便将目标映像变换成与一个或多个源机器相兼容,从而促成经由网络的操作系统流传输(例如图3中的306),
其中用于在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的装置包括:
用于在没有将目标映像拷贝至开发机的情况下促使访问目标映像的目标系统注册表文件的装置,以及
其中用于促使访问源机器的源系统注册表文件的装置、用于促使访问目标映像的目标系统注册文件的装置、用于确定的装置以及用于执行网络接口驱动程序注入的装置是由开发机执行的,以及
其中所述开发机是所述设备。
3.如条款1所述的设备,还包括:
用于选择一个或多个目标网络组件中的至少一个作为参考网络组件的装置;
用于确定目标映像的参考网络组件以及一个或多个网络服务之间的绑定关系的装置;以及
用于确定一个或多个源网络组件中的至少一个与一个或多个网络服务之间的绑定关系的装置。
4.如条款1所述的设备,还包括:
用于确定源机器的操作系统是否兼容目标映像的操作系统的装置;以及
用于确定目标映像的硬件抽象层是否低于或等同于源机器的硬件抽象层的装置;以及
用于在源机器的操作系统兼容目标映像的操作系统以及目标映像的硬件抽象层低于或等同于源机器的硬件抽象层的情况下允许以下装置执行处理的装置:
用于确定源机器的一个或多个源网络接口卡是否兼容目标映像的装置;以及
用于在一个或多个源网络接口卡不兼容目标映像的情况下执行网络接口驱动程序注入的装置。
5.如条款1所述的设备,
其中用于执行网络接口驱动程序注入的装置还包括:
用于促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝至目标映像的装置,其中所述目标映像位于目标机上,
其中用于确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的装置包括:单纯基于源机器的源系统注册文件来执行用以确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的装置,
其中用于确定一个或多个源网络组件的源网络配置的装置包括:基于源机器的源系统注册文件以及基于与源机器的一个或多个网络组件相关联的一个或多个文件来执行用以确定一个或多个源网络组件的源网络配置的装置,以及
其中用于确定目标映像的一个或多个目标网络组件的目标网络配置的装置包括:基于目标映像的目标系统注册表文件以及基于与目标映像的一个或多个目标网络组件相关联的一个或多个文件来确定目标映像的一个或多个目标网络组件的目标网络配置的装置。
其中所述开发机是所述设备。
6.如条款1所述的设备,
其中用于在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的装置包括:
用于在没有将整个目标映像拷贝至开发机的情况下促使在开发机上安装作为驱动卷的目标映像的装置;以及
用于将目标系统注册表文件加载到开发机的注册表中的装置,
其中该设备还包括:
用于在执行网络接口驱动程序注入的处理之后,从开发机的注册表中卸载目标系统注册表文件的装置;以及
用于促使从开发机中卸载所述目标映像的装置。
其中所述开发机是所述设备。
7.如条款1所述的设备,还包括:
用于促使将目标映像从目标机经由网络流传输到源机器的装置。
8.如条款1所述的设备,
其中用于在不拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的装置包括:
用于在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上拷贝目标映像的目标系统注册表文件的装置;以及
用于将目标系统注册表文件加载到开发机的注册表中的装置,
其中该设备还包括:
用于在实施了执行网络接口驱动程序注入的处理之后从开发机的注册表中卸载目标系统注册表文件的装置;以及
用于促使从开发机中移除所述目标系统注册表文件的装置,
其中所述开发机是所述设备。
9.如条款1所述的设备,其中目标映像驻留在目标机上,源机器经由网络位于远离目标机的位置,
其中一个或多个源网络组件至少包括网络接口卡驱动程序以及操作系统流传输驱动程序,以及
其中目标映像是虚拟磁盘映像。
10.如条款1所述的设备,
其中用于确定源机器的一个或多个源网络接口卡是否兼容目标映像的装置包括:
用于确定与用于源机器的一个或多个源操作系统流传输驱动程序绑定的一个或多个源网络接口卡驱动程序的装置;
用于确定与用于目标映像的一个或多个目标操作系统流传输驱动程序绑定的一个或多个目标网络接口卡驱动程序的装置;
用于确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的装置,
其中用于确定源机器的一个或多个源网络接口卡是否兼容目标映像的装置包括:基于源系统注册表文件和目标系统注册表文件来确定源机器的一个或多个源网络接口卡是否兼容目标映像的装置,以及
其中用于确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的装置包括:
用于确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商、具有相同的型号、具有相同的修订版本以及用于相同总线槽的装置。
11.如条款1所述的设备,
其中用于确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的装置包括:
用于确定与用于一个或多个源网络接口卡之一的源网络接口卡驱动程序的实例的上边缘绑定的第一源中间网络驱动程序的实例的装置;以及
用于确定与第一源中间网络驱动程序实例的上边缘绑定的第二源中间网络驱动程序实例的装置,以及
其中所述一个或多个源网络组件包括源网络接口卡驱动程序的实例、第一源中间网络驱动程序的实例以及第二源中间网络驱动程序的实例,
其中用于确定一个或多个源网络组件的源网络配置的装置包括:
基于源系统注册表文件来确定用于一个或多个源网络组件中的每一个的驱动程序安装文件名称和位置、驱动程序二进制文件名称和位置、windows服务名称以及全局唯一标识符的装置,
其中用于在源网络配置与目标网络配置冲突的情况下调整源网络配置的装置包括:
用于在与安装文件名称发生冲突的情况下改变安装文件的名称的装置;
用于在与实例索引值发生冲突的情况下改变实例索引值的装置;以及
用于确定一个或多个源网络组件的实例的数量的装置。
12.如条款1所述的设备,
其中用于执行网络接口驱动程序注入的装置还包括:
用于促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝至目标映像的装置,其中该目标映像处于目标机上,
其中用于促使拷贝一个或多个文件的装置包括:
用于促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序安装文件拷贝至目标映像的装置;以及
用于促使将与源机器一个或多个源网络组件相关联的一个或多个驱动程序二进制文件拷贝至目标映像的装置,
其中用于向目标系统注册表文件注入一个或多个源网络组件的源网络配置的装置包括:
用于促使将一个或多个源网络组件的源网络配置的注册表值拷贝到目标系统注册表文件中的装置;以及
用于更新目标系统注册表文件的注册表值的装置。
13.如条款2所述的设备,其中所述开发机是所述源机器。
14.如条款2所述的设备,其中用于促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件的装置包括:
用于在没有将一个或多个文件拷贝至开发机的情况下促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件的装置。
15.如条款1所述的设备,
其中用于确定源机器的一个或多个源网络接口卡是否兼容目标映像的装置包括:
用于促使选择源机器的一个或多个源网络接口卡的装置;
用于确定源机器的一个或多个源网络接口卡与用于目标映像的一个或多个目标网络接口卡是否相同的装置,
其中用于确定源机器的一个或多个源网络接口卡是否兼容目标映像的装置包括:基于源系统注册表文件和目标系统注册表文件来确定源机器的一个或多个源网络接口卡是否兼容目标映像的装置,以及
其中用于确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的装置包括:
用于确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商、具有相同的型号、具有相同的修订版本以及用于相同总线槽的装置。
关于构建计算机程序的方法的例证(作为条款来描述)
作为示例,本技术主题是依照如下所述的不同方面示出的。为了方便起见,关于本技术主题方面的不同示例是作为带编号的条款来描述的。这些条款则是作为示例提供的,其并不对本技术主题构成限制。例如,用于以下的第一条款的方法操作是参考图22给出的。用于其他条款的方法操作也可以用类似的方式给出。
1.一种构建计算机程序的方法(例如图22中的2200),其中所述计算机程序提供将网络驱动程序注入目标映像的处理(例如图3中的324),以便将目标映像变换成与一个或多个计算机相兼容,从而促成经由网络的操作系统流传输(例如图3中的306),该方法包括:
选择第一计算机和第二计算机(例如图22中的2210),其中第一计算机包括第一网络接口卡,第二计算机包括第二网络接口卡,并且其中第二网络接口卡的配置不同于第一网络接口卡的配置;
构建第一计算机的第一虚拟磁盘映像(例如图22中的2220);
构建与第一计算机和第二计算机相兼容的第二虚拟磁盘映像(例如图22中的2230);
使用第一虚拟磁盘映像来引导第一计算机(例如图22中的2240);
在使用第一虚拟磁盘映像引导了第一计算机之后,提取第一计算机的第一系统注册表信息,所述第一系统注册表信息包括基于第一虚拟磁盘映像的第一网络接口卡的配置值(例如图22中的2250);
使用第二虚拟磁盘映像来引导第一计算机(例如图22中的2260);
在使用第二虚拟磁盘映像引导了第一计算机之后,提取第一计算机的第二系统注册表信息,所述第二系统注册表信息包括基于第二虚拟磁盘映像的第一网络接口卡和第二网络接口卡的配置值(例如图22中的2270);
基于第一系统注册表信息与第二系统注册表信息之间的差异以及基于不影响网络功能的注册表项来确定网络驱动程序注入组件(例如图22中的2280);
将网络驱动程序注入组件注入第一虚拟磁盘映像(例如图22中的2290);以及
基于网络驱动程序注入组件来生成计算机程序(例如图22中的2295)。
2.如条款1所述的方法,还包括:
在实施产生计算机程序的操作之前,确定适用于一个或多个其他计算机的注册表注入模式;以及
将计算机程序编码到机器可读存储介质中,其中基于网络驱动程序注入组件来生成计算机程序的操作进一步是以所述注册表注入模式为基础的。
3.如条款1所述的方法,
其中网络驱动程序注入组件包括注册表项以及与第二计算机的网络组件相关联的一个或多个文件,
其中将网络驱动程序注入组件注入第一虚拟磁盘映像的操作包括:
将网络驱动程序注入组件的注册表项注入第一虚拟磁盘映像;
将关联于网络组件的一个或多个文件注入第一虚拟磁盘映像,
其中注入一个或多个文件的操作包括:
将关联于网络组件的一个或多个驱动程序安装文件注入第一虚拟磁盘映像;以及
将关联于网络组件的一个或多个驱动程序二进制文件注入第一虚拟磁盘映像。
4.如条款1所述的方法,其中第一和第二网络接口卡的配置在以下的至少一个属性上存在差异:网络接口卡的制造商,网络接口卡的型号,网络接口卡的修订版本,或是用于网络接口卡的总线槽。
5.如条款1所述的方法,
其中确定网络驱动程序注入组件的操作包括:
确定第一组注册表项,其中所述注册表项是从第一系统注册表信息的注册表项与第二系统注册表信息的注册表项之间的差异中获取的;以及
确定第二组注册表项,所述第二组注册表项是通过从第一组注册表项中滤除第三组注册表项获取的,其中所述第三组注册表项包含的是不影响网络功能的注册表项,
其中网络驱动程序注入组件包括第二组注册表项,
其中确定第二组注册表项的操作包括:
通过从第二系统注册表信息的注册表项中移除第一组注册表项中的一个或多个注册表项来确定第四组注册表项;
使用具有第四组注册表项的第二虚拟磁盘映像来引导第一计算机,其中所述第四组注册表项没有所述一个或多个注册表项;
使用具有第四组注册表项的第二虚拟磁盘映像来引导第二计算机,其中所述第四组注册表项没有所述一个或多个注册表项;
确定具有第四组注册表项的第二虚拟磁盘映像是否兼容第一计算机,其中所述第四组注册表项没有所述一个或多个注册表项;
确定具有第四组注册表项的第二虚拟磁盘映像是否兼容第二计算机,其中所述第四组注册表项没有所述一个或多个注册表项;以及
如果具有第四组注册表项的第二虚拟磁盘映像兼容第一计算机,以及如果具有第四组注册表项的第二虚拟磁盘映像兼容第二计算机,则从第二组注册表项中排除所述一个或多个注册表项,其中所述第四组注册表项没有所述一个或多个注册表项,以及
其中该方法还包括:
使用具有网络驱动程序注入组件的第一虚拟磁盘映像来引第一计算机;
使用具有网络驱动程序注入组件的第一虚拟磁盘映像来引第二计算机;以及
确定具有网络驱动程序注入组件的第一虚拟磁盘映像是否兼容第一计算机和第二计算机。
附录:用于某一个情景示例的驱动程序注入处理的例证
该子标题下方提供的公开只是一个例示情景,其并未对本技术主题构成限制。
使用驱动程序注入处理来创建黄金映像
综述
在一个方法中,只要多个客户机设备具有相似硬件特性,则可以将单个虚拟磁盘映像流传输到多个客户机设备。在本示例中,主板、启用预启动运行环境(PXE)的网卡及视频卡必须相同。
根据另一个方法,一种技术可以促使创建一个“黄金”虚拟磁盘映像,以便支持具有不同主板、网卡或视频卡的多个异构客户机平台。该处理包括:首先创建包含所有源平台的所有驱动程序的硬盘OS安装程序,然后安装WSM客户机软件之类的流传输组件,最后将OS安装程序的快照捕捉至虚拟磁盘映像。
根据本技术主题的一个方面,本技术主题的驱动程序注入特征极大地缩短了创建黄金映像所涉及的时间和过程。在这个子标题中,本公开描述的是如何在一个例示情景中使用驱动程序注入处理来创建黄金映像,以便支持具有异构硬件特性的客户机设备(例如源平台)。
关于该情景示例的特征
在一个方面中,每一个客户机平台必须具有可用的基准设备,其中该基准设备具有启用PXE的网络适配器和硬盘。
在一个方面中,每一个基准设备必须具有安装在其硬盘上的WindowsOS。
在一个方面中,所有基准设备安装的Windows OS版本都必须具有相同的主版本号。例如,Windows2000、2003和XP具有相同的主Windows版本号。Vista和Windows7则具有另一个主Windows版本号。因此,基准设备不能具有介于XP与Windows7之间的混合版本。
在一个方面中,最终的黄金虚拟磁盘映像具有被支持的所有平台当中的最低硬件抽象层(HAL)。举个例子,如果用于三个源平台的本地HAL是:
高级配置和电源接口(ACPI)
PC-ACPI单处理器PC
ACPI多处理器PC
那么最终的黄金VDisk将会使用“高级配置和电源接口(ACPI)PC”HAL。
在一个方面中,依照源平台特性,在源平台上有可能强制性地存在PS/2鼠标及键盘接口。
在一个方面中,在黄金映像上可能需要禁用一些无线网络适配器。
在一个方面中,所使用的是Windows XP OS。
在一个方面中,为服务器或目标平台使用的是Wyse流传输管理器,其名称是名为WSM Server3.5版或更高版本。
在一个方面中,在源平台的硬盘上安装的是名为WSM Client3.5版或更高版本的Wyse流传输管理器。
用于本情景示例的处理
在一个方面中,用于预备进行流传输的黄金虚拟磁盘的驱动程序注入处理可以包括以下的一些或所有步骤:
预备用于其中一个源平台(第一平台)的VDisk。这个VDisk是“基础”VDisk。
如果基础VDisk处于专用模式,则制作一个备份拷贝。
在第二源平台上安装WSM客户机。
从硬盘引导第二源平台,通过运行VDiskImageCreation.exe来将第二源平台的NIC驱动程序注入第一平台的VDisk。
从VDisk引导第二源平台。
将用于第二源平台的剩余驱动程序安装到VDisk。
如果基础VDisk处于永久或易失缓存模式,则通过将用于第二源平台的缓存文件并入VDisk来提交针对VDisk的变化。
为每一个附加源平台重复执行步骤2到7。
关于本情景示例的一些细节
由于很多步骤都是标准操作,因此,该子标题下方的公开主要论述的是驱动程序注入特征特有的步骤。
选择第一平台
驱动程序注入处理以用于第一平台的VDisk为开始。在一个方面中,第一平台需要具有所有源平台中的最低HAL。举个例子,如果用于三个源平台的本地HAL是:
高级配置和电源接口(ACPI)PC
ACPI单处理器PC
ACPI多处理器PC
那么所述VDisk将会使用“高级配置和电源接口(ACPI)PC”HAL。
这个“基础”VDisk既可以是从第一平台创建的新磁盘,也可以是能被流传输至第一平台的已有VDisk。
虽然推荐的是以具有最新WSM客户机的基础VDisk为开始,但这并不是必需的。我们也可以使用从较早的流传输管理器版本创建的VDisk。
基础VDisk可以包含任意数量的分区。
用于基础VDisk的缓存模式
在驱动程序注入处理过程中,所述基础VDisk可被配置成专用、永久或易失缓存模式。然而,使用不同的缓存模式具有不同的含义:
如果基础VDisk处于专用模式,则直接将驱动程序注入变化写入VDisk。如果注入处理过程出错,那么即使用于初始的第一平台的基础VDisk也有可能变得无法使用。然而,如果驱动程序注入处理成功,则可以省略将驱动程序注入变化提交给基础VDisk的步骤。因此,如果基础VDisk处于专用模式,则建议在启动驱动程序注入处理之前制作基础VDisk的备份拷贝。
如果基础VDisk处于永久缓存模式,则将驱动程序注入变化写入新设备的缓存文件。如果驱动程序注入处理失败,那么该缓存文件将被自动丢弃。如果驱动程序注入处理成功,则用户需要通过将缓存文件显性地并入基础VDisk来提交所述变化。一旦提交了所述变化,那么将不再可以使用第一平台的缓存文件。这意味着第一平台在先前的流传输会话中的任何变化都会丢失。如果这种变化合乎需要,则需要考虑在注入驱动程序之前将来自第一平台的缓存文件并入基础VDisk。
如果基础VDisk处于易失缓存模式,则将驱动程序注入变化写入新设备的缓存文件。在默认情况下,一旦重新引导客户机设备,所述缓存文件将被丢弃。易失缓存模式的这种特性使其无法测试由驱动程序注入处理产生的变化。由此产生了一种例外情况:如果成功注入驱动程序,则自动将所创建的缓存文件重命名成<缓存文件名>_TMPUSE。流传输服务器会将这个TMPUSE缓存文件用于目标设备的后续流传输会话,并且将其视为永久缓存模式。一旦确认驱动程序注入变化对新设备产生了作用,则用户需要通过显性地将TMPUSE缓存文件并入基础VDisk来提交所述变化,然后,所述TMPUSE缓存文件将被删除。
注入驱动程序
在一个方面中,通过使用以下的例示步骤,可以将设备的NIC驱动程序注入VDisk:
在源平台上安装3.5版或更高版本的WSM Client。
从硬盘引导源平台。
将Windows Explorer导航至“<WSM客户机安装文件夹>\OS”文件夹,运行VDiskImageCreation.exe。
选择“Existing DisK”(退出磁盘)并且输入基础VDisk名称,检查“injectNetwork Driver into Existing Image”(将网络驱动程序插入已有映像)。如果同时还希望扩展VDisk大小,则填充VDisk大小字段。否则保持该字段空白。在一个方面中,为使VDisk大小调节处理发挥作用,所述VDisk需要处于专用模式。参见图23A。
一旦完成了驱动程序注入处理,则点击“OK”。参见图23B。
关闭Add/Edit Virtual Disk Utility(添加/编辑虚拟磁盘实用工具)对话。参见图23C。
现在,VDisk已经准备流传输至源平台。
安装附加驱动程序
一旦从“新的”VDisk成功引导了源平台,那么Windows的硬件发现向导将会提示为在源平台中发现的硬件安装驱动程序。通常,在本地硬盘上可以找到这些驱动程序以及相应的.inf文件。
有时,本地硬盘卷未被指定驱动器号。如果发生这种情况,则转到MyComputer->Manage->Disk Manager(我的计算机->管理->磁盘管理器),右键点击本地硬盘,选择Change driver letter and Path(改变驱动器号和路径),然后添加一个驱动器号。
我们可以将硬件安装向导指向包含了所有驱动程序的inf文件的本地磁盘驱动器(<本地磁盘>:\windows\inf)。驱动程序二进制文件通常位于<本地磁盘>:\windows\system32\drivers、<本地磁盘>:\windows\system32或是<本地磁盘>:\windows文件夹的下方。
在一些平台上可以发现,如果从本地磁盘含有的二进制文件来安装视频和音频驱动程序,那么将会导致显示或音频硬件发生故障。如果可能的话,建议从硬件厂家提供的完整驱动程序安装包中安装这些驱动程序。
为了安装新发现的硬件的驱动程序,有可能需要使用键盘和/或鼠标来从硬件发现向导中选择一些菜单。如果在VDisk上尚未安装通用串行总线(USB)控制器驱动程序,那么将无法使用USB键盘和鼠标。因此,在首次从新的VDisk引导平台时,建议将PS2键盘和鼠标连接到所述平台。一旦安装了USB控制器驱动程序,则可以在后续引导过程中使用USB键盘鼠标。如果平台不具有PS2键盘/鼠标接口,那么有可能无法继续进行驱动程序安装过程。
在一个方面中,建议用户不要去尝试更新启用PXE的以太网网络适配器的驱动程序。这样做可能会导致VDisk中止。在从硬盘引导平台时,在注入驱动程序之前需要为启用PXE的以太网网络适配器完成其驱动程序升级。
某些无线网络驱动程序的安装可能会导致重新绑定网络堆栈,而这转而可能导致VDisk中止。如果出现这种情况,那么有可能需要通过删除目标设备的缓存文件来卷回恢复驱动程序注入变化,从而将NIC驱动程序重新注入VDisk,以及在新的VDisk中禁用无线网络适配器。如果需要无线网络适配器功能,则需要使用传统工具来创建黄金VDisk。
一旦安装了所有驱动程序,则重启一次设备,以便进入新的VDisk,从而确认正确的操作。
将驱动程序注入变化提交给VDisk
在一个方面中,如果VDisk处于永久或易失缓存模式,那么,一旦确认VDisk在源平台上工作正常,则需要将缓存文件的变化提交给VDisk本身。该处理可以通过将源平台的缓存文件并入VDisk文件来完成。
检查设备与已有VDisk之间的兼容性
当通过正常的映像获取处理来创建VDisk时,所述VDisk可被流传输至多个设备,并且这些设备与从中获取VDisk的初始设备具有相同硬件特性。然而,在一些情况下,即使设备看上去与初始设备相同(例如来自相同的制造商的相同型号),所述流传输也有可能失败。这既有可能是因为两个设备之间的网卡可能具有略有差异的修订号,也有可能是因为其位于不同的PCI槽。网卡间的这些细微差异可能导致VDisk无法引导。在尝试将不兼容的VDisk流传输至设备的时候,所述设备通常会悬停在Windows引导进度条上。
过去,用户在实际将VDisk流传输至目标设备之前是无法了解这种不兼容性的。WSM3.5引入了一种用于检测已有VDisk与设备之间的兼容性的工具。特别地,在使用了具有相同制造型号的数千客户机设备的大型流传输部署中,这种工具是非常有用的。在总部考核并部署了VDisk之后,要想发现VDisk不与分支机构的一些客户机设备兼容往往是不切实际的。
这种工具可以在未安装流传输软件WSM客户机的设备上运行。它可以采用一个输入参数:通向VDisk的系统配置单元文件的路径。该工具将会产生一个显示兼容性检查结果的日志文件。以下描述的是在大规模流传输部署情景中使用该工具的一些典型步骤:
在一个方面中,在总部执行以下处理:
在任一台式机上安装WSMClient与WSMClientUtilities(3.5版或更高版本)。创建名为“CheckCompat”的临时文件夹。
通过运行VDiskImageMap.exe来映射到兼容性将被检查的VDisk。
将VDisk的系统注册表配置单元文件拷贝至客户台式机上的CheckCompat文件夹(例如copy<vdisk驱动器>:\windows\system32\config\system c:\temp\checkcompat\system)。
反映射Vdisk。
将三个二进制文件OSMCheckCompat.exe、SelectNIC.exe以及OSMComCls.dll从<WSMClientUtilities的安装文件夹>拷贝到CheckCompat文件夹。
CheckCompat文件夹现在包含了四个文件,即system、OSMCheckCompat.exe、SelectNIC.exe以及OSMComCls.dll。将CheckCompat文件夹压缩成zip文件并将其发送至所有分支机构。
在一个方面中,在分支机构,在每一个客户机设备上执行以下处理:
解压缩checkcompat.zip
从命令窗口中将目录改成checkcompat文件夹。
运行“OSMChecompat.exe system”。
如果设备具有多个网络适配器,则提示用户选择用于流传输的NIC。
如果设备只有一个网络适配器,则只在selectNIC结束检测NIC之后点击“OK”按钮。
将产生的日志文件发送到总部,以便进行分析。
以下是来自某个样本日志文件的最后几行:
样本1:设备和VDisk是兼容的
04072010[19:00:38:312][244]INFO:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
04072010[19:00:38:312][244]INFO:COMPUTERNAME:mlam-c.wsm3.local
04072010[19:00:38:312][244]INFO:OSMCheckCompat SUCCEEDED.Incompatible NI Ccount:0
04072010[19:00:38:312][244]INFO:a!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
或者
样本2:设备与VDisk是不兼容的。有一个NIC将被注入VDisk
04072010[19:00:01:812][264]INFO:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
04072010[19:00:01:812][264]INFO:COMPUTERNAME:mlam-c.wsm3.local
04072010[19:00:01:812][264]INFO:OSMCheckCompat SUCCEEDED.Incompatible NIC count:1>>
04072010[19:00:01:812][264]INFO:VIA Velocity Family GigabitEthernet Adapter
04072010[19:00:01:812][264]INFO:
Enum\PCI\VEN_1106&DEV_3119&SUBSYS_01101106&REV_11\4&eedbbf7&0&1898
04072010[19:00:01:812][264]INFO:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
或者
样本3:设备与VDisk是不兼容的。VDisk不能在此类设备上使用。
04072010[19:10:51:046][1604]INFO:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
04072010[l9:10:51.046][1604]INFO:COMPUTER NAME:mlam-c.wsm3.local
04072010[19:10:51:046][1604]ERROR:OSMCheckCompat FAILED
04072010[19:10:51:046][1604]ERROR:Mismatch OS Version betweencurrent platform and VDisk
04072010[19:10:51:046][1604]INFO:!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
在一个方面中,在总部执行了以下处理:
解析日志文件(借助脚本或手动),识别需要执行驱动程序注入处理的客户机设备。行“Enum\PCI\VEN_1106&DEV_3119&SUBSYS_01101106&REV_11\4&eedbbf7&0&1898”识别的是不兼容NIC的“ID”。在一个方面中,如果多个客户机设备具有完全相同的NIC ID,那么只需要在其中一个客户机设备上执行驱动程序注入处理。所产生的VDisk将会兼容整个“群组”。
在不兼容客户机设备“群组”中的每个客户机设备上逐一执行驱动程序注入处理。
OSMCheckCompat.exe命令行选项:
OSMCheckCompat.exe<VDisk system registry file name>[/l<log filename>][/v<log level in hex>][/?]
其中/?-显示使用方法;
<log level in hex>跟随的是在OSMLogging.h中定义的比特掩码,即
ERROR_ONLY=0x01;
WARNINGS_ONLY=0x02;
DEBUG_ONLY=0x04;
VERBOSE_ONLY=0x08;
INFO_DNLY=0x10;
如果未规定用于系统注册表文件或日志文件的路径,则使用该程序当前运行时所在的路径。
例如,OSMCheckCompat.exe c:\temp\system/lcheckcompat.log/l0x17
以上命令将会检查当前设备与c:\temp\system registry之间的兼容性,该命令会向当前文件夹中的checkcompat.log输出INFO+ERRORS+WARNINGS+DEBUG消息
如果失败,程序退出并具有代码-1
如果所有NIC全都兼容VDISK,则具有代码0
具有大于0的代码,其中所述代码是不与VDisk兼容的一个或多个NIC的数量
在安装WSM客户机时,运行OSMCheckCompat:
虽然可以在未安装WSM客户机的情况下在系统上运行OSMCheckCompat.exe,但在安装了WSM客户机之后,它也可以在系统上运行。在一个方面中,其中使用了以下步骤:
在安装了任一版本的WSM客户机的设备上安装3.5版或更高版本的WSM客户机实用工具。
通过使用VDiskImageMap.exe来映射将被检查兼容性的VDisk。
在命令窗口中运行OSMCheckCompat.exe,并且提供通向目标VDisk的系统配置单元文件的完整路径。(例如“c:\programfiles\Wyse\WSMClientUtilities\OSMCheckCompat.exe
e:\Windows\System32\Config\system”)
结束语
本领域技术人员将会了解,这里描述的不同说明性部件、模块、要素、组件、方法和算法可以作为电子硬件、计算机软件或是这二者的组合来实施。为了例证硬件与软件的这种可互换性,在上文中依照功能概括性地描述了不同的说明性部件、模块、要素、组件、方法和算法。用硬件还是软件实施这些功能取决于具体的应用以及施加于整个系统的设计约束条件。技术人员可以采用不同方式来为每一个具体应用实施所描述的功能。不同的组件和部件可以用不同方式排列(例如按照不同顺序排列或是按照不同方式划分),所有这些均未脱离本技术主题的范围。举个例子,具体的操作顺序是可以重新调整的,并且一些或所有组件是可以用不同的方式划分的。
应该理解的是,所公开的处理中的特定步骤顺序或层级是对例示方法所做的例证。此外还应该理解,这些处理中的特定步骤顺序或层次是可以基于设计偏好而被重新排列的。其中一些步骤是可以同时执行的。附带的方法权利要求是以作为样本的顺序来给出不同步骤中的要素的,但这并不意味着受所给出的特定顺序或层级限制。
通过提供在先描述,本领域技术人员能够实现这里描述的不同方面。在先描述提供的是本技术主题的不同示例,而本技术主题并不仅限于这些示例。本领域技术人员很容易清楚了解针对这些方面的不同修改,并且这里定义的一般原则也可应用于其他方面。由此,权利要求并不受这里显示的方面的限制,而是与符合文本权利要求的完整范围相一致,其中除非特别说明,否则,对于单数形式的部件的引用并不意味着“唯一”,而是意味着“一个或多个”。例如,一个文件可以包括一个或多个文件。此外,除非以别的方式特别说明,否则术语“一些”指的是一个或多个。阳性代词(例如他)包含了阴性和中性(例如她和它),反之亦然。出现的标题和子标题仅仅是为了方便起见而被使用的,其并未对本发明构成限制。
诸如“方面”之类的短语既不意味着所述方面是本技术主题所必需的,也不意味着所述方面适用于本技术主题的所有配置。与一个方面相关的公开内容既有可能适用于所有配置,也有可能适用于一个或多个配置。一个方面可以提供一个或多个示例。诸如一个方面之类的短语可以是指一个或多个方面,反之亦然。诸如“实施例”之类的短语既不意味着所述实施例是本技术主题所必需的,也不意味着所述实施例适用于本技术主题的所有配置。与一个实施例相关的公开内容既有可能适用于所有实施例,也有可能适用于一个或多个实施例。一个实施例可以提供一个或多个示例。短语“此类实施例”可以是指一个或多个实施例,反之亦然。诸如“配置”之类的短语既不意味着所述配置是本技术主题所必需的,也不意味着所述配置适用于本技术主题的所有配置。与一个配置相关的公开内容既有可能适用于所有配置,也有可能适用于一个或多个配置。一个配置可以提供一个或多个示例。短语“此类配置”可以是指一个或多个配置,反之亦然。
这里使用的单词“例示”指的是“充当一个示例或例证”。在这里被描述成“例示”的任何方面或设计没有必要被理解成比其他方面或设计更为优先或优越。
作为参考,在这里显性地引入了本领域普通技术人员已知或者以后将会知道的与本公开中描述的不同方面的要素等价的所有结构和功能等价物,并且权利要求应该包含这些等价物。此外,不管有没有在权利要求书中明确地要求保护,本申请公开的内容都不应该无偿贡献给公众。除非明确使用了短语“用于……的装置”来表达部件或是在方法权利要求中使用了短语“用于……的步骤”来表达要素,否则不能根据35U.S.C.&112第六款来解释权利要求中的要素。另外,在说明书或权利要求中使用了“包括”、“具有”等术语,从这个意义上讲,与在权利要求中使用术语“包含”作为过渡词时对其所做的解释相类似,此类术语同样应该是包含性的。
Claims (23)
1.一种机器可读存储介质,其中所述介质使用处理系统可执行的指令编码,以便执行一种用于将网络驱动程序注入目标映像,从而将目标映像变换成与一个或多个源机器相兼容的方法,所述指令包括用于以下处理的代码:
促使访问源机器的源系统注册表文件;
在没有拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件,其中目标映像包括操作系统;
确定源机器的一个或多个源网络接口卡是否与目标映像相兼容;以及
如果一个或多个源网络接口卡不与目标映像相兼容,则执行网络接口驱动程序注入,其中执行网络接口驱动程序注入的操作包括:
确定与一个或多个源网络接口卡相关联的一个或多个源网络组件;
确定一个或多个源网络组件的源网络配置;
确定目标映像的一个或多个目标网络组件的目标网络配置;
确定源网络配置是否与目标网络配置相冲突;
如果源网络配置与目标网络配置相冲突,则通过调整源网络配置来使源网络配置不与目标网络配置相冲突;以及
将一个或多个源网络组件的源网络配置注入目标系统注册表文件。
2.如权利要求1所述的机器可读存储介质,
其中该指令还包括用于以下处理的代码:
促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件,
其中该方法用于促成经由网络的操作系统流传输,
其中在没有拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将目标映像拷贝至开发机的情况下促使访问目标映像的目
标系统注册表文件,以及
其中促使访问源机器的源系统注册表文件的操作、促使访问目标映像的目标系统注册表文件的操作、确定操作以及执行网络接口驱动程序注入的操作是由开发机执行的。
3.如权利要求1所述的机器可读存储介质,其中该指令还包括用于以下处理的代码:
选择一个或多个目标网络组件中的至少一个作为参考网络组件;
确定用于目标映像的参考网络组件与一个或多个网络服务之间的绑定关系;以及
建立一个或多个源网络组件中的至少一个与一个或多个网络服务之间的绑定关系。
4.如权利要求1所述的机器可读存储介质,其中该指令还包括用于以下处理的代码:
确定源机器的操作系统是否与目标映像的操作系统相兼容;以及
确定目标映像的硬件抽象层是否低于或等同于源机器的硬件抽象层;以及
如果源机器的操作系统与目标映像的操作系统相兼容并且如果目标映像的硬件抽象层低于或等同于源机器的硬件抽象层,则执行以下操作:
确定源机器的一个或多个源网络接口卡是否与目标映像相兼容的操作;以及
在一个或多个源网络接口卡不与目标映像相兼容的情况下执行网络接口驱动程序注入的操作。
5.如权利要求1所述的机器可读存储介质,
其中执行网络接口驱动程序注入的操作还包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上,其中该目标映像处于目标机上,
其中开发机单纯基于源机器的源系统注册表文件来执行用以确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的操作,
其中开发机基于源机器的源系统注册表文件以及基于与源机器的一个或多个网络组件相关联的一个或多个文件来执行用以确定一个或多个源网络组件的源网络配置的操作,以及
其中开发机基于目标映像的目标系统注册表文件以及基于与目标映像的一个或多个目标网络组件相关联的一个或多个文件来执行用以确定目标映像的一个或多个目标网络组件的目标网络配置的操作。
6.如权利要求1所述的机器可读存储介质,
其中在没有拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上安装作为驱动卷的目标映像;以及
将目标系统注册表文件加载到开发机的注册表中,
其中所述指令还包括用于以下处理的代码:
在执行了网络接口驱动程序注入的操作之后,从开发机的注册表中卸载目标系统注册表文件;以及
促使从开发机中卸载所述目标映像。
7.如权利要求1所述的机器可读存储介质,其中该指令还包括用于以下处理的代码:
促使将目标映像从目标机经由网络流传输到源机器。
8.如权利要求1所述的机器可读存储介质,
其中在没有拷贝目标映像的情况下促使访问目标映像的目标系统注册表文件的操作包括:
在没有将整个目标映像拷贝至开发机的情况下,促使在开发机上拷贝目标映像的目标系统注册表文件;以及
将目标系统注册表文件加载到开发机的注册表中,其中该指令还包括用于以下处理的代码:
在执行了网络接口驱动程序注入的操作之后,从开发机的注册表中卸载目标系统注册表文件;以及
促使从开发机中移除目标系统注册表文件。
9.如权利要求1所述的机器可读存储介质,其中目标映像驻留在目标机上,并且源机器经由网络位于目标机的远端,
其中一个或多个源网络组件至少包括网络接口卡驱动程序以及操作系统流传输驱动程序,以及
其中所述目标映像是虚拟磁盘映像。
10.如权利要求1所述的机器可读存储介质,
其中确定源机器的一个或多个源网络接口卡是否与目标映像相兼容的操作包括:
确定与用于源机器的一个或多个源操作系统流传输驱动程序绑定的一个或多个源网络接口卡驱动程序;
确定与用于目标映像的一个或多个目标操作系统流传输驱动程序绑定的一个或多个目标网络接口卡驱动程序;
确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同,其中确定源机器的一个或多个源网络接口卡是否与目标映像相兼容的操作是基于源系统注册表文件和目标系统注册表文件执行的,以及
其中确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的操作包括:
确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商,具有相同的型号,具有相同的修订版本,以及用于相同的总线槽。
11.如权利要求1所述的机器可读存储介质,
其中确定与一个或多个源网络接口卡相关联的一个或多个源网络组件的操作包括:
确定与用于一个或多个源网络接口卡之一的源网络接口卡驱动程序的实例的上边缘绑定的第一源中间网络驱动程序的实例;以及
确定与第一源中间网络驱动程序实例的上边缘绑定的第二源中间网络驱动程序实例,以及
其中一个或多个源网络组件包括源网络接口卡驱动程序的实例,第一源中间网络驱动程序的实例,以及第二源中间网络驱动程序的实例,
其中确定一个或多个源网络组件的源网络配置的操作包括:
基于源系统注册表文件来为一个或多个源网络组件中的每一个确定驱动程序安装文件名称和位置、驱动程序二进制文件的名称和位置、windows服务名称以及全局唯一标识符,
其中在源网络配置与目标网络配置相冲突的情况下调整源网络配置的操作包括:
如果与安装文件的名称发生冲突,则改变安装文件的名称;
如果与实例索引值发生冲突,则改变实例索引值;以及
确定一个或多个源网络组件的实例数量。
12.如权利要求1所述的机器可读存储介质,
其中执行网络接口驱动程序注入的操作还包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个文件拷贝到目标映像上,其中该目标映像处于目标机上,
其中促使拷贝一个或多个文件的操作包括:
促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序安装文件拷贝到目标映像上;以及促使将与源机器的一个或多个源网络组件相关联的一个或多个驱动程序二进制文件拷贝到目标映像上,
其中将一个或多个源网络组件的源网络配置注入目标系统注册表文件的操作包括:
促使将一个或多个源网络组件的源网络配置的注册表值拷贝到目标系统注册表文件中;以及
更新目标系统注册表文件的注册表值。
13.如权利要求2所述的机器可读存储介质,其中开发机是源机器。
14.如权利要求2所述的机器可读存储介质,其中促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件的操作包括:
在没有将一个或多个文件拷贝到开发机上的情况下,促使访问与源机器的一个或多个源网络组件相关联的一个或多个文件。
15.如权利要求1的机器可读存储介质,
其中确定源机器的一个或多个源网络接口卡是否与目标映像相兼容的操作包括:
促使选择源机器的一个或多个源网络接口卡;
确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同,其中确定源机器的一个或多个源网络接口卡是否与目标映像相兼容的操作是基于源系统注册表文件和目标系统注册表文件执行的,以及
其中确定源机器的一个或多个源网络接口卡是否与用于目标映像的一个或多个目标网络接口卡相同的操作包括:
确定一个或多个源网络接口卡中的第一源网络接口卡以及一个或多个目标网络接口卡中的第一目标网络接口卡是否来自相同的制造商,具有相同的型号,具有相同的修订版本,以及用于相同的总线槽。
16.一种通过将网络驱动程序注入目标映像从而将目标映像变换成与一个或多个源机器相兼容的方法,该方法包括:
促使访问源机器的源系统注册表文件;
在没有拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件,其中目标映像包括操作系统;
确定源机器的一个或多个源网络接口卡是否与目标映像相兼容;以及
如果一个或多个源网络接口卡不与目标映像相兼容,则执行网络接口驱动程序注入,其中执行网络接口驱动程序注入的操作包括:
确定与一个或多个源网络接口卡相关联的一个或多个源网络组件;
确定一个或多个源网络组件的源网络配置;
确定目标映像的一个或多个目标网络组件的目标网络配置;
确定源网络配置是否与目标网络配置相冲突;
如果源网络配置与目标网络配置相冲突,则通过调整源网络配置来使源网络配置不与目标网络配置相冲突;以及
将一个或多个源网络组件的源网络配置注入目标系统注册表文件。
17.一种设备,包括:
处理系统;以及
使用处理系统可执行的指令编码的机器可读存储介质,其中该指令包括用于以下处理的代码:
促使访问源机器的源系统注册表文件;
在没有拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件,其中目标映像包括操作系统;
确定源机器的一个或多个源网络接口卡是否与目标映像相兼容;以及
如果一个或多个源网络接口卡不与目标映像相兼容,则执行网络接口驱动程序注入,其中执行网络接口驱动程序注入的操作包括:
确定与一个或多个源网络接口卡相关联的一个或多个源网络组件;
确定一个或多个源网络组件的源网络配置;
确定目标映像的一个或多个目标网络组件的目标网络配置;
确定源网络配置是否与目标网络配置相冲突;
如果源网络配置与目标网络配置相冲突,则通过调整源网络配置来使源网络配置不与目标网络配置相冲突;以及
将一个或多个源网络组件的源网络配置注入目标系统注册表文件。
18.一种设备,包括:
用于促使访问源机器的源系统注册表文件的装置;
用于在没有拷贝目标映像的情况下,促使访问目标映像的目标系统注册表文件的装置,其中该目标映像包括操作系统;
用于确定源机器的一个或多个源网络接口卡是否与目标映像相兼容的装置;以及
用于在一个或多个源网络接口卡不与目标映像相兼容的情况下执行网络接口驱动程序注入的装置,其中用于执行网络接口驱动程序注入的装置包括:
用于确定与一个或多个源网络接口卡关联的一个或多个源网络组件的装置;
用于确定一个或多个源网络组件的源网络配置的装置;
用于确定目标映像的一个或多个目标网络组件的目标网络配置的装置;
用于确定源网络配置是否与目标网络配置相冲突的装置;
用于在源网络配置与目标网络配置相冲突的情况下,通过调整源网络配置来使源网络配置不与目标网络配置相冲突的装置;以及
用于将一个或多个源网络组件的源网络配置注入目标系统注册表文件的装置。
19.一种构建计算机程序的方法,其中所述计算机程序提供将网络驱动程序注入目标映像的处理,以便将目标映像变换成与一个或多个计算机相兼容,从而促成经由网络的操作系统流传输,该方法包括:
选择第一计算机和第二计算机,其中第一计算机包括第一网络接口卡,第二计算机包括第二网络接口卡,并且其中第二网络接口卡的配置不同于第一网络接口卡的配置;
构建第一计算机的第一虚拟磁盘映像;
构建与第一计算机和第二计算机相兼容的第二虚拟磁盘映像;
使用第一虚拟磁盘映像来引导第一计算机;
在使用第一虚拟磁盘映像引导了第一计算机之后,提取第一计算机的第一系统注册表信息,所述第一系统注册表信息包括基于第一虚拟磁盘映像的第一网络接口卡的配置值;
使用第二虚拟磁盘映像来引导第一计算机;
在使用第二虚拟磁盘映像引导了第一计算机之后,提取第一计算机的第二系统注册表信息,所述第二系统注册表信息包括基于第二虚拟磁盘映像的第一网络接口卡和第二网络接口卡的配置值;
基于第一系统注册表信息与第二系统注册表信息之间的差异以及基于不影响网络功能的注册表项来确定网络驱动程序注入组件;
将网络驱动程序注入组件注入第一虚拟磁盘映像;以及
基于网络驱动程序注入组件来生成计算机程序。
20.如权利要求19所述的方法,还包括:
在实施生成计算机程序的操作之前,确定适用于一个或多个其他计算机的注册表注入模式;以及
将计算机程序编码到机器可读存储介质中,
其中基于网络驱动程序注入组件来生成计算机程序的操作进一步是以所述注册表注入模式为基础的。
21.如权利要求19所述的方法,
其中网络驱动程序注入组件包括注册表项以及与第二计算机的网络组件相关联的一个或多个文件,
其中将网络驱动程序注入组件注入第一虚拟磁盘映像的操作包括:
将网络驱动程序注入组件的注册表项注入第一虚拟磁盘映像;
将关联于网络组件的一个或多个文件注入第一虚拟磁盘映像,
其中注入一个或多个文件的操作包括:
将关联于网络组件的一个或多个驱动程序安装文件注入第一虚拟磁盘映像;以及
将关联于网络组件的一个或多个驱动程序二进制文件注入第一虚拟磁盘映像。
22.如权利要求19所述的方法,其中第一和第二网络接口卡的配置在以下的至少一个属性上存在差异:网络接口卡的制造商,网络接口卡的型号,网络接口卡的修订版本,或是用于网络接口卡的总线槽。
23.如权利要求19所述的方法,
其中确定网络驱动程序注入组件的操作包括:
确定第一组注册表项,其中所述第一组注册表项是从第一系统注册表信息的注册表项与第二系统注册表信息的注册表项之间的差异中获取的;以及
确定第二组注册表项,所述第二组注册表项是通过从第一组注册表项中滤除第三组注册表项获取的,其中所述第三组注册表项包含的是不影响网络功能的注册表项,
其中网络驱动程序注入组件包括第二组注册表项,
其中确定第二组注册表项的操作包括:
通过从第二系统注册表信息的注册表项中移除第一组注册表项中的一个或多个注册表项来确定第四组注册表项;
使用具有第四组注册表项的第二虚拟磁盘映像来引导第一计算机,其中所述第四组注册表项没有所述一个或多个注册表项;
使用具有第四组注册表项的第二虚拟磁盘映像来引导第二计算机,其中所述第四组注册表项没有所述一个或多个注册表项;
确定具有第四组注册表项的第二虚拟磁盘映像是否与第一计算机相兼容,其中所述第四组注册表项没有所述一个或多个注册表项;
确定具有第四组注册表项的第二虚拟磁盘映像是否与第二计算机相兼容,其中所述第四组注册表项没有所述一个或多个注册表项;以及
如果具有第四组注册表项的第二虚拟磁盘映像与第一计算机相兼容,以及如果具有第四组注册表项的第二虚拟磁盘映像与第二计算机相兼容,则从所述第二组注册表项中排除所述一个或多个注册表项,其中所述第四组注册表项没有所述一个或多个注册表项,以及其中该方法还包括:
使用具有网络驱动程序注入组件的第一虚拟磁盘映像来引第一计算机;
使用具有网络驱动程序注入组件的第一虚拟磁盘映像来引第二计算机;以及
确定具有网络驱动程序注入组件的第一虚拟磁盘映像是否与第一计算机和第二计算机相兼容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610528490.1A CN106201927B (zh) | 2010-06-25 | 2011-04-05 | 用于将网络驱动程序注入目标映像的设备和方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/824,029 | 2010-06-25 | ||
US12/824,029 US8407662B2 (en) | 2010-06-25 | 2010-06-25 | Apparatus and method for network driver injection into target image |
PCT/US2011/031290 WO2011162856A1 (en) | 2010-06-25 | 2011-04-05 | Apparatus and method for network driver injection into target image |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610528490.1A Division CN106201927B (zh) | 2010-06-25 | 2011-04-05 | 用于将网络驱动程序注入目标映像的设备和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103189851A true CN103189851A (zh) | 2013-07-03 |
CN103189851B CN103189851B (zh) | 2016-08-03 |
Family
ID=45353703
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610528490.1A Active CN106201927B (zh) | 2010-06-25 | 2011-04-05 | 用于将网络驱动程序注入目标映像的设备和方法 |
CN201180041179.XA Active CN103189851B (zh) | 2010-06-25 | 2011-04-05 | 用于将网络驱动程序注入目标映像的设备和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610528490.1A Active CN106201927B (zh) | 2010-06-25 | 2011-04-05 | 用于将网络驱动程序注入目标映像的设备和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8407662B2 (zh) |
EP (1) | EP2585927B1 (zh) |
CN (2) | CN106201927B (zh) |
IN (1) | IN2013CN00427A (zh) |
SG (2) | SG187150A1 (zh) |
WO (1) | WO2011162856A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503775A (zh) * | 2014-12-02 | 2015-04-08 | 中国航天科工集团第三研究院第八三五七研究所 | 一种Windows下双冗余网络切换方法 |
CN105700914A (zh) * | 2015-12-31 | 2016-06-22 | 北京金山安全软件有限公司 | 一种应用软件安装、启动方法和装置 |
CN107533441A (zh) * | 2016-02-12 | 2018-01-02 | 慧与发展有限责任合伙企业 | 创建操作系统卷 |
CN108228214A (zh) * | 2017-12-29 | 2018-06-29 | 北京致远互联软件股份有限公司 | 一种应用程序的更新方法、介质以及设备 |
CN108920216A (zh) * | 2018-08-03 | 2018-11-30 | 武汉斗鱼网络科技有限公司 | 关闭软件兼容模式的方法、装置、终端及存储介质 |
CN111309387A (zh) * | 2020-01-22 | 2020-06-19 | 阿里巴巴集团控股有限公司 | 一种驱动加载的方法及装置、电子设备、存储介质 |
CN112231122A (zh) * | 2020-10-27 | 2021-01-15 | 南京林洋电力科技有限公司 | 一种基于异构通信模型及面向终端软件平台的app管理方法 |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510422B2 (en) * | 2009-09-30 | 2013-08-13 | Dell Products L.P. | Systems and methods for extension of server management functions |
US9122558B2 (en) | 2009-11-09 | 2015-09-01 | Bank Of America Corporation | Software updates using delta patching |
US9128799B2 (en) | 2009-11-09 | 2015-09-08 | Bank Of America Corporation | Programmatic creation of task sequences from manifests |
US9176898B2 (en) | 2009-11-09 | 2015-11-03 | Bank Of America Corporation | Software stack building using logically protected region of computer-readable medium |
US8972974B2 (en) * | 2009-11-09 | 2015-03-03 | Bank Of America Corporation | Multiple invocation points in software build task sequence |
US8996667B2 (en) | 2010-04-27 | 2015-03-31 | International Business Machines Corporation | Deploying an operating system |
US8407662B2 (en) * | 2010-06-25 | 2013-03-26 | Wyse Technology Inc. | Apparatus and method for network driver injection into target image |
US20120042054A1 (en) * | 2010-08-13 | 2012-02-16 | Dell Products, Lp | System and Method for Virtual Switch Architecture to Enable Heterogeneous Network Interface Cards within a Server Domain |
GB2499956B (en) | 2010-11-23 | 2018-02-14 | Servicenow Inc | Direct migration of software images with streaming technique |
WO2012076266A1 (en) | 2010-12-09 | 2012-06-14 | International Business Machines Corporation | Computer-readable storage mediums for encrypting and decrypting a virtual disc |
GB2499964B (en) * | 2010-12-13 | 2013-12-11 | Ibm | Upgrade of software images based on streaming technique |
JP5767565B2 (ja) | 2010-12-14 | 2015-08-19 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理) |
US9032394B1 (en) * | 2010-12-16 | 2015-05-12 | Crimson Corporation | Deploying drivers for an operating system on a computing device |
JP5682467B2 (ja) * | 2011-06-14 | 2015-03-11 | 富士通株式会社 | 設定情報管理プログラム、設定情報管理方法及び情報処理装置 |
US8707402B1 (en) * | 2011-06-22 | 2014-04-22 | Amazon Technologies, Inc. | Secure computer provisioning |
US9191275B1 (en) | 2011-06-22 | 2015-11-17 | Amazon Technologies, Inc. | Global computer provisioning |
US8745730B1 (en) | 2011-09-13 | 2014-06-03 | Amazon Technologies, Inc. | Secure computer provisioning and operation |
US8874703B1 (en) | 2011-09-20 | 2014-10-28 | Amazon Technologies, Inc. | System and method of selectively implementing network configurations |
US9064117B1 (en) | 2011-09-20 | 2015-06-23 | Amazon Technologies, Inc. | Mobile provisioning device |
US9146812B2 (en) | 2012-02-03 | 2015-09-29 | Dell Products Lp | Systems and methods for out-of-band backup and restore of hardware profile information |
US20130346571A1 (en) * | 2012-06-24 | 2013-12-26 | Sergei MAKAVEEV | Computer and method of operation of its network |
US9223592B2 (en) | 2012-08-09 | 2015-12-29 | International Business Machines Corporation | Configuring a system with various system components utilizing a configuration profile |
US9342317B2 (en) * | 2012-08-09 | 2016-05-17 | International Business Machines Corporation | Importing profiles for configuring specific system components into a configuration profile for the system |
US10067887B2 (en) * | 2012-09-14 | 2018-09-04 | Dell Products L.P. | Local interface redirection |
GB2506181A (en) | 2012-09-25 | 2014-03-26 | Ibm | Generating customised program logic for hardware devices |
US9400495B2 (en) | 2012-10-16 | 2016-07-26 | Rockwell Automation Technologies, Inc. | Industrial automation equipment and machine procedure simulation |
US10140198B1 (en) * | 2012-10-30 | 2018-11-27 | Google Llc | Networked desktop environment |
US8996778B2 (en) * | 2012-12-13 | 2015-03-31 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Cable adapter correlation in a cluster |
US20150127770A1 (en) * | 2013-11-06 | 2015-05-07 | Pax8, Inc. | Distributed Cloud Disk Service Provisioning and Management |
US10372463B1 (en) * | 2013-11-27 | 2019-08-06 | EMC IP Holding Company LLC | Provisioning a computerized device with an operating system |
CN104978259B (zh) * | 2014-04-01 | 2017-11-17 | 中国银联股份有限公司 | 移动设备软件自动化测试集群系统及其测试方法 |
CN104978264B (zh) * | 2014-04-09 | 2017-09-19 | 上海宝信软件股份有限公司 | 组态软件中图库精灵的动态调试方法 |
CN103970655A (zh) * | 2014-05-08 | 2014-08-06 | 浪潮电子信息产业股份有限公司 | 一种基于expect的服务器自动化集群测试方法 |
US9361126B1 (en) | 2014-11-24 | 2016-06-07 | International Business Machines Corporation | Device driver aggregation in operating system deployment |
US9952853B2 (en) * | 2015-02-10 | 2018-04-24 | Mediatek Inc. | Methods for cross-mounting devices and apparatus utilizing the same |
US9756515B1 (en) | 2015-03-16 | 2017-09-05 | Amazon Technologies, Inc. | Mobile device test infrastructure |
US10097534B2 (en) * | 2015-08-28 | 2018-10-09 | Dell Products L.P. | System and method to redirect hardware secure USB storage devices in high latency VDI environments |
US10108434B2 (en) * | 2015-09-11 | 2018-10-23 | Vmware, Inc. | Booting a computing device by streaming a desktop image over a network |
US10540147B2 (en) * | 2016-02-26 | 2020-01-21 | Red Hat, Inc. | Add-on image for a platform-as-a-service system |
US10949234B2 (en) * | 2016-10-11 | 2021-03-16 | Cisco Technology, Inc. | Device pass-through for virtualized environments |
US10944758B1 (en) * | 2018-09-28 | 2021-03-09 | Amazon Technologies, Inc. | Computer resource vulnerability assessment and remediation |
CN110618822B (zh) * | 2019-08-26 | 2023-02-07 | 杭州顺网科技股份有限公司 | 无盘工作站启动阶段预安装网卡驱动的方法 |
US11243781B2 (en) * | 2020-03-04 | 2022-02-08 | Citrix Systems, Inc. | Provisioning services (PVS) cloud streaming with read cache file storing preboot data including a network driver |
US11765024B2 (en) * | 2020-04-24 | 2023-09-19 | Hewlett Packard Enterprise Development Lp | Automatic provisioning of a computing device with operating system and network processing functions |
US11194561B1 (en) * | 2020-07-08 | 2021-12-07 | Vmware, Inc. | System and method for generating and recommending desired state of virtualization software |
CN113190280A (zh) * | 2021-04-07 | 2021-07-30 | 北京鲸鲮信息系统技术有限公司 | Linux系统调用Android HAL动态库的方法、装置及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050010918A1 (en) * | 2003-07-11 | 2005-01-13 | International Business Machines Corporation | Autonomic image migration/deployment appliance |
US20050229175A1 (en) * | 2004-04-13 | 2005-10-13 | Surgient, Inc. | Hardware agnostic manipulation and management of image resources |
US7330967B1 (en) * | 2004-12-03 | 2008-02-12 | Symantec Operating Corporation | System and method for injecting drivers and setup information into pre-created images for image-based provisioning |
US7356679B1 (en) * | 2003-04-11 | 2008-04-08 | Vmware, Inc. | Computer image capture, customization and deployment |
US20090006449A1 (en) * | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Modeling and Analysis of Computer Networks |
US7630341B2 (en) * | 2003-07-14 | 2009-12-08 | Alcatel-Lucent Usa Inc. | Method and system for mobility across heterogeneous address spaces |
US7644140B2 (en) * | 2004-10-21 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for proliferating a computing device configuration |
CN101650660A (zh) * | 2008-08-11 | 2010-02-17 | 威睿公司 | 从中央存储装置引导计算机系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918039A (en) * | 1995-12-29 | 1999-06-29 | Wyse Technology, Inc. | Method and apparatus for display of windowing application programs on a terminal |
US6681323B1 (en) * | 1999-11-29 | 2004-01-20 | Toshiba America Information Systems, Inc. | Method and system for automatically installing an initial software configuration including an operating system module from a library containing at least two operating system modules based on retrieved computer identification data |
US6804774B1 (en) * | 2000-05-12 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Software image transition aid comprising building a disk image based on identified hardware |
US7031945B1 (en) * | 2000-07-24 | 2006-04-18 | Donner Irah H | System and method for reallocating and/or upgrading and/or rewarding tickets, other event admittance means, goods and/or services |
US6718463B1 (en) * | 2000-08-17 | 2004-04-06 | International Business Machines Corporation | System, method and apparatus for loading drivers, registry settings and application data onto a computer system during a boot sequence |
US7610331B1 (en) * | 2000-09-13 | 2009-10-27 | Lightsurf Technologies, Inc. | System and method for dynamic uploading and execution of applications and drivers between devices |
US7558867B2 (en) * | 2004-04-20 | 2009-07-07 | Wyse Technology Inc. | Automatic firmware upgrade for a thin client using one or more FTP servers |
US8417796B2 (en) * | 2006-01-17 | 2013-04-09 | Leostream Corporation | System and method for transferring a computing environment between computers of dissimilar configurations |
US8302091B2 (en) * | 2006-06-05 | 2012-10-30 | International Business Machines Corporation | Installation of a bootable image for modifying the operational environment of a computing system |
US8671166B2 (en) * | 2007-08-09 | 2014-03-11 | Prowess Consulting, Llc | Methods and systems for deploying hardware files to a computer |
US9317274B2 (en) * | 2008-08-06 | 2016-04-19 | Lenovo (Singapore) Pte. Ltd. | Apparatus, system and method for integrated customization of multiple disk images independent of operating system type, version or state |
WO2010117967A2 (en) * | 2009-04-05 | 2010-10-14 | Citrix Systems, Inc. | Methods and systems for modifying disk images to provide network interface card teaming capabilities |
US9946554B2 (en) * | 2009-09-24 | 2018-04-17 | International Business Machines Corporation | System, method, and apparatus for configuring a streamed operating system with associated peripheral information |
US8112505B1 (en) * | 2009-10-20 | 2012-02-07 | Wanova Technologies, Ltd. | On-demand block-level file system streaming to remote desktops |
US8407662B2 (en) * | 2010-06-25 | 2013-03-26 | Wyse Technology Inc. | Apparatus and method for network driver injection into target image |
-
2010
- 2010-06-25 US US12/824,029 patent/US8407662B2/en active Active
-
2011
- 2011-04-05 SG SG2013004510A patent/SG187150A1/en unknown
- 2011-04-05 WO PCT/US2011/031290 patent/WO2011162856A1/en active Application Filing
- 2011-04-05 EP EP11798540.8A patent/EP2585927B1/en active Active
- 2011-04-05 CN CN201610528490.1A patent/CN106201927B/zh active Active
- 2011-04-05 CN CN201180041179.XA patent/CN103189851B/zh active Active
- 2011-04-05 SG SG10201505025PA patent/SG10201505025PA/en unknown
-
2013
- 2013-01-18 IN IN427CHN2013 patent/IN2013CN00427A/en unknown
- 2013-02-27 US US13/778,711 patent/US8856723B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356679B1 (en) * | 2003-04-11 | 2008-04-08 | Vmware, Inc. | Computer image capture, customization and deployment |
US20050010918A1 (en) * | 2003-07-11 | 2005-01-13 | International Business Machines Corporation | Autonomic image migration/deployment appliance |
US7630341B2 (en) * | 2003-07-14 | 2009-12-08 | Alcatel-Lucent Usa Inc. | Method and system for mobility across heterogeneous address spaces |
US20050229175A1 (en) * | 2004-04-13 | 2005-10-13 | Surgient, Inc. | Hardware agnostic manipulation and management of image resources |
US7644140B2 (en) * | 2004-10-21 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for proliferating a computing device configuration |
US7330967B1 (en) * | 2004-12-03 | 2008-02-12 | Symantec Operating Corporation | System and method for injecting drivers and setup information into pre-created images for image-based provisioning |
US20090006449A1 (en) * | 2007-06-29 | 2009-01-01 | Microsoft Corporation | Modeling and Analysis of Computer Networks |
CN101650660A (zh) * | 2008-08-11 | 2010-02-17 | 威睿公司 | 从中央存储装置引导计算机系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503775A (zh) * | 2014-12-02 | 2015-04-08 | 中国航天科工集团第三研究院第八三五七研究所 | 一种Windows下双冗余网络切换方法 |
CN105700914A (zh) * | 2015-12-31 | 2016-06-22 | 北京金山安全软件有限公司 | 一种应用软件安装、启动方法和装置 |
CN107533441A (zh) * | 2016-02-12 | 2018-01-02 | 慧与发展有限责任合伙企业 | 创建操作系统卷 |
US10922116B2 (en) | 2016-02-12 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Creating operating system volumes |
CN108228214A (zh) * | 2017-12-29 | 2018-06-29 | 北京致远互联软件股份有限公司 | 一种应用程序的更新方法、介质以及设备 |
CN108920216A (zh) * | 2018-08-03 | 2018-11-30 | 武汉斗鱼网络科技有限公司 | 关闭软件兼容模式的方法、装置、终端及存储介质 |
CN108920216B (zh) * | 2018-08-03 | 2021-11-09 | 武汉斗鱼网络科技有限公司 | 关闭软件兼容模式的方法、装置、终端及存储介质 |
CN111309387A (zh) * | 2020-01-22 | 2020-06-19 | 阿里巴巴集团控股有限公司 | 一种驱动加载的方法及装置、电子设备、存储介质 |
CN111309387B (zh) * | 2020-01-22 | 2023-04-18 | 阿里巴巴集团控股有限公司 | 一种驱动加载的方法及装置、电子设备、存储介质 |
CN112231122A (zh) * | 2020-10-27 | 2021-01-15 | 南京林洋电力科技有限公司 | 一种基于异构通信模型及面向终端软件平台的app管理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20110320799A1 (en) | 2011-12-29 |
SG10201505025PA (en) | 2015-07-30 |
US8407662B2 (en) | 2013-03-26 |
WO2011162856A1 (en) | 2011-12-29 |
CN103189851B (zh) | 2016-08-03 |
US20130179856A1 (en) | 2013-07-11 |
IN2013CN00427A (zh) | 2015-07-03 |
US8856723B2 (en) | 2014-10-07 |
EP2585927A4 (en) | 2014-07-23 |
CN106201927B (zh) | 2019-03-19 |
EP2585927B1 (en) | 2017-09-06 |
CN106201927A (zh) | 2016-12-07 |
SG187150A1 (en) | 2013-02-28 |
EP2585927A1 (en) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103189851A (zh) | 用于将网络驱动程序注入目标映像的设备和方法 | |
US9940330B2 (en) | System and method for converting a physical disk to a virtual disk | |
US8352721B1 (en) | Initiating an operating system boot from firmware | |
US7644264B1 (en) | Method and system for creating and deploying disk images | |
US8352577B2 (en) | Method and apparatus for updating information on an embedded system | |
US10055415B2 (en) | Methods and systems for deploying hardware files to a computer | |
US8166492B2 (en) | Application compatibility using a hybrid environment | |
US7310801B2 (en) | Servicing a component-based software product throughout the software product lifecycle | |
US7330967B1 (en) | System and method for injecting drivers and setup information into pre-created images for image-based provisioning | |
US9146729B2 (en) | Deployment and updating of applications and drivers on a client device using an extensible markup language (XML) configuration file | |
US6237144B1 (en) | Use of relational databases for software installation | |
US7146609B2 (en) | Method, system and article of manufacture for a firmware image | |
US20030221094A1 (en) | Method and system for configuring a computer | |
CN102193817B (zh) | 简化物理和虚拟部署的管理 | |
CN103826162B (zh) | 基于安卓的智能机顶盒的嵌入式系统及其recovery方法 | |
KR20060070412A (ko) | 소프트웨어 셋업을 위한 언어-중립 및 언어-특정 설치패키지 | |
US10268628B2 (en) | Method for extracting BIOS attributes for BIOS management and system therefor | |
EP2786279A2 (en) | Deployment of a driver or an application on a client device having a write-filter | |
CN102880498A (zh) | 在安卓系统的装置上虚拟sd卡的方法 | |
CN101371228B (zh) | 使用第二计算机的操作系统来引导第一计算机的过程 | |
CN110618822A (zh) | 无盘工作站启动阶段预安装网卡驱动的方法 | |
CN106796521B (zh) | 独立于产品发布的api版本控制 | |
CN104598237B (zh) | 一种在升级模式下生成用户界面的方法和装置 | |
CN113687837A (zh) | 启动方式的转换方法及系统、虚拟机运行方法 | |
KR20080027293A (ko) | 데이터 언어에서 다수 언어들의 관리 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Wyse Technology Inc. Address before: American California Applicant before: Wyse Technology Inc. |
|
COR | Change of bibliographic data | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220526 Address after: Texas, USA Patentee after: DELL marketing Address before: California, USA Patentee before: WYSE TECHNOLOGY Inc. |