首页 技术文章

高速PCIE采集卡在64位系统下的安装(一)

2015-06-04 17:02:00 坤驰科技

64位系统的INF需求

WindowsServer2003SP1和更高的Windows版本不会在x64系统上安装带有未修饰INF节的驱动程序包。为了与IntelItanium系统兼容,WindowsServer2003SP1将会安装带有未修饰INF节的驱动程序软件包;但是,INF修饰是Windows硬件徽标计划的要求,因此带有未修饰INF节的驱动程序包没有资格获得该徽标。

本文描述影响64位非x86系统(IntelItanium和AMD64)上的设备安装的INF需求变化。在本文中,"x64"指在AMD64和Intel扩

展内存64技术系统中使用的64位体系结构。

为了防止用户将基于INF的设备驱动程序包安装到错误的系统上,并帮助制造商避免相关联的支持成本,对WindowsServer2003SP1的INF语法要求进行了如下修改:

WindowsServer2003SP1和更高Windows版本上的驱动程序INF文件必须使用.ntia64或.ntamd64正确修饰[Manufacturer]节和[Models]节名称中的条目,以指定非x86系统上的操作系统版本。此更改不会影响基于x86的系统的INF文件或非PnP驱动程序的INF文件(包括基于x64的体系结构的文件系统驱动程序INF文件)。

INF修饰如何影响驱动程序包的安装

当INF节名称包含标识特定平台和操作系统的TargetOSVersion后缀时,认为INF节是有修饰的。修饰节包含仅与TargetOSVersion指定的平台和操作系统相关的安装信息。

WindowsServer2003和早期版本的安装行为

本节描述在安装过程中,操作系统如何处理原始发布版MicrosoftWindowsServer2003和早期Windows版本的修饰和未修饰INF。下面的示例展示了典型的未修饰[Manufacturer]节和[Models]节名称在设备驱动程序包INF文件中可能的外观:

[Manufacturer]%mycompany%=MyCompanyModels

[MyCompanyModels]%MyDev%=mydevInstall,mydevHwid

此示例未使用TargetOsVersion修饰。WindowsServer2003和早期Windows版本的设备匹配语法规则允许将这些语句解析为安装到任意平台。理想情况下,用户无法选择安装此设备包,除非确信该包拥有正确的二进制文件,但是此INF文件不会阻止这类安装。

下面的例子给出了相同的[Manufacturer]节和[Models]节名称,这些节名称都带有TargetOSVersion修饰,该修饰指定基于x64的平台。其中,"x64"指AMD64和Intel扩展内存64技术系统使用的64位体系结构。INF中的.ntamd64修饰用于所有基于x64的系统。

[Manufacturer]%mycompany%=MyCompanyModels,NTamd64

[MyCompanyModels.NTamd64]%MyDev%=mydevInstall,mydevHwid

安装此驱动程序包时,INF解析器生成一个包含该修饰的节名称,然后检查该节名称是否适用于目标平台。如果适用,INF解析器在INF文件中查找该节名称并使用该节(如果存在)。

在WindowsServer2003和早期的Windows版本上,如果没有修饰节,INF解析器会检查所有未修饰节,以找到一个匹配的节。因为这些修饰并不常用,所以如果有一个匹配的设备,PnP会尝试将驱动程序安装到错误的平台上。

WindowsServer2003SP1及更高版本的64位非x86平台的安装行为

在WindowsXP和原始发布版的WindowsServer2003上,如果指定了修饰节名称,INF解析器将使用该修饰节名称;否则使用未修饰节。但是,在WindowsServer2003SP1和更高版本中,INF解析器不会在基于x64的平台上查找未修饰节名称。

在运行WindowsServer2003SP1及更高版本的非x86平台上,INF解析器需要[Models]节名称的TargetOsVersion修饰。例如,如果用户试图在基于x64的系统上安装未修饰的驱动程序包,PnP将不会找到有修饰的[Models]名称,因此不会尝试匹配任何设备ID。

注意:使用未修饰INF的存储驱动程序初会使用F6加载,但是当系统在后一次设置GUI模式之后重新启动时,会生成检测错误7B。因为F6运行机制未使用SetupAPI逻辑加载存储驱动程序。要安装这类驱动程序,可以获取使用64位INF修饰的更新版本的驱动程序,或者手动修饰INF(本文稍后的“在基于x64的系统上安装未修饰INF”一节将会描述)。检测错误7B无法恢复;必须按照描述的方法更新存储驱动程序,并使用F6重新启动安装过程。

多平台INF文件

可以使INF文件包含基于x64和Itanium系统的修饰节,也可以包含未修饰节或基于x86的系统的ntx86修饰节,这样可以创建多平台INF文件。

注意:带有修饰INF的驱动程序包不会安装在Windows2000上。修饰是在WindowsXP上首次实现的。

可以采用两种方法来支持多平台驱动程序包:

•方法1:为每个平台提供一个单独的INF

•方法2:为所有支持的平台提供一个多平台INF

优先采用方法1,因为该方法的[Models]节名称上少仅需一个修饰。如果采用方法2,INF解析器将提供可用的语法来修饰不同的节并创建一个INF。但是,生成的INF比较复杂并且可能难以维护。

下面的示例给出一个多平台INF。

[Manufacturer]%mycompany%=MyCompanyModels,NTx86,NTia64

[MyCompanyModels.NTx86]%MyDev%=mydevInstallx86,mydevHwid

[MyCompanyModels.NTia64]%MyDev%=mydevInstallia64,mydevHwid

INF还可以在[Version]节中包含修饰的CatalogFile条目。有关新信息,请参阅WDK文档中的“为多个平台和操作系统创建INF文件”。

在基于x64的平台上安装未修饰INF

以下方法可用于在x64系统上安装未修饰INF。这些解决方法只适用于测试系统,不建议用于产品驱动程序。

方法1.关闭AMD64的未修饰模型检测。想要仅关闭针对AMD64系统的未修饰模型检测,可以创建下面的注册表非零数字值。

HKLM\Software\Microsoft\Windows\CurrentVersion\Setup:REG_DWORD:DisableDecoratedModelsRequirement

将该键设为非零值(例如1)并重新启动系统,然后安装驱动程序。

方法2:编辑INF以添加修饰。可以按照本文所述的方法手动向INF添加修饰,或者仿照其他64位驱动程序包的修饰INF手动向INF添加修饰。这将破坏签名驱动程序的签名,但是允许安装驱动程序(取决于本地机器上的签名驱动程序策略)。

若您有高速数据采集板卡定制需求,请联系我们:400-000-4026

关于坤驰科技:
坤驰科技是专注于
高速数据采集与信号处理、高速数据存储与记录的高科技公司。坤驰科技为用户提供成熟的标准高速数据采集产品与技术,也可为用户提供定制化的高速信号采集解决方案。目前坤驰科技服务过的研究所、科研单位已达近百家。高速数据采集产品线涵盖PCIExpress、cPCI、PXIe、VPX、USB等总线,包含高速AD、DA平台、FPGA、DSP处理平台,SATA/SSD、Flash存储平台等。
全国咨询电话:400-000-4026

公司官方网站:http://www.queentest.cn

网友热评