使程序看到已编程为检测 PCI 的 PCIe 卡

make a program see a PCIe card that has been programmed to detect PCI

我有一些旧硬件上的第 3 方专有软件,这个盒子还有一个插入特殊机器的 PCI SCSI 卡,这个软件被编程为查看卡插入的 PCI 端口.我最近将盒子升级为 HP elitedesk 800 G3 塔式电脑。我购买了一个定制的 SCSI 到 PCIe 卡,因为它不再有 PCI 端口。我 运行 遇到的问题是程序正在寻找 PCI 并且不会检测到任何东西,因为没有 PCI 端口。我知道这可能需要一些独创性,但我想解决一些问题,因为我们已经花了很多钱升级这些系统。我看到 PCI 到 PCIe 适配器,但这不会解决任何问题。有没有软件可以给我某种虚拟 PCI 端口,我们可以 "trick" 认为软件已安装并将 PCIe 指向它?我不知道这是否可能。该软件的配置文件在下面,我不知道希腊语是什么。也许有更多知识的人会有想法?

; ICS.INF
; Copyright (c) 1999

[Version]
Signature="$CHICAGO$"
Class="Data Acquisition"
Provider=%IO%

[DestinationDirs]
DefaultDestDir=11
ComPort.Copy=17

[Manufacturer]
%ACCES%=IOMAN

[IOMAN]
%PCICOM1S%=ComPort,PCI\VEN_494F&DEV_10C8
%PCICOM1Sa%=ComPort,PCI\VEN_494F&DEV_10C9
%PCICOM2321S%=ComPort,PCI\VEN_494F&DEV_1088
%PCICOM2S%=ComPort2,PCI\VEN_494F&DEV_10D0
%PCICOM2322S%=ComPort2,PCI\VEN_494F&DEV_1090
%PCIICM1S%=ComPort,PCI\VEN_494F&DEV_1148
%PCIICM4222%=ComPort2,PCI\VEN_494F&DEV_1150
%PCIICM4852%=ComPort2,PCI\VEN_494F&DEV_1151
%PCIICM4224%=ComPort4,PCI\VEN_494F&DEV_1158
%PCIICM4854%=ComPort4,PCI\VEN_494F&DEV_1159
%PCICOM4224%=ComPort4,PCI\VEN_494F&DEV_1058
%PCICOM4854%=ComPort4,PCI\VEN_494F&DEV_1059
%PCIDA1216%=InstallSect,PCI\VEN_494F&DEV_6CB0
%PCIDA128%=InstallSect,PCI\VEN_494F&DEV_6CA8
%PCIDA1216V%=InstallSect,PCI\VEN_494F&DEV_6CB1
%PCIDA128V%=InstallSect,PCI\VEN_494F&DEV_6CA9
%PCIDIO24H%=InstallSect,PCI\VEN_494F&DEV_0C50
%PCIDIO24D%=InstallSect,PCI\VEN_494F&DEV_0C51
%PCIDIO24HC%=InstallSect,PCI\VEN_494F&DEV_0E51
%PCIDIO24DC%=InstallSect,PCI\VEN_494F&DEV_0E52
%PCIDIO24S%=InstallSect,PCI\VEN_494F&DEV_0E50
%PCIDIO48%=InstallSect,PCI\VEN_494F&DEV_0C60
%PCIDIO48S%=InstallSect,PCI\VEN_494F&DEV_0E60
%PCIDIO72%=InstallSect,PCI\VEN_494F&DEV_0C68
%PCIDIO96%=InstallSect,PCI\VEN_494F&DEV_0C70
%PCIDIO120%=InstallSect,PCI\VEN_494F&DEV_0C78
%PCIWDGCSM%=InstallSect,PCI\VEN_494F&DEV_22C0
%PCIAI1216%=InstallSect,PCI\VEN_494F&DEV_ACA8
%PCIAI1216A%=InstallSect,PCI\VEN_494F&DEV_ACA9
%PCIIIRO8%=InstallSect,PCI\VEN_494F&DEV_0F00
%PCM485%=ComPort,PCMCIA\Industrial_Computer_Source-PCM485-A505
%PCM485%=ComPort,PCMCIA\Industrial_Computer_Source-PCM485-D2B0
%PCM485%=ComPort,PCMCIA\Industrial_Computer_Source-PCM485-B233
%PCM485%=ComPort,PCMCIA\Industrial_Computer_Source-PCM485-D2ED
%PCM485%=ComPort,PCMCIA\Industrial_Computer_Source-PCM485-7609
%PAD128%=InstallSect,PCMCIA\Industrial_Computer_Source-PAD128-4498
%PAD128%=InstallSect,PCMCIA\Industrial_Computer_Source-PAD128-74EE
%PIOD24%=InstallSect,PCMCIA\Industrial_Computer_Source-PIOD24-2705
%PIOD24%=InstallSect,PCMCIA\Industrial_Computer_Source-PIOD24-368B
%PIOD24%=InstallSect,PCMCIA\Industrial_Computer_Source-PIOD24-32B6
%PIOD24%=InstallSect,PCMCIA\Industrial_Computer_Source-PIOD24-8BDC
%MF5PORTA%=ComPort,MF5PORTA
%MF5PORTB%=ComPort,MF5PORTB
%MF5PORTC%=ComPort,MF5PORTC
%MF5PORTD%=ComPort,MF5PORTD

[InstallSect] 

[ComPort2]
AddReg=StandardMF.Reg

[ComPort4]
AddReg=StandardMF.Reg

[StandardMF.Reg]
HKR,,DevLoader,,*CONFIGMG
HKR,,Enumerator,,*CONFIGMG
HKR,,CMDrivFlags,01,03,00,00,00

[ComPort2.HW]
AddReg=ComPort2.RegHW

[ComPort4.HW]
AddReg=ComPort4.RegHW

[ComPort2.RegHW]
HKR,Child0000,HardwareID,,MF5PORTA
HKR,Child0000,ResourceMap,1,00,03
HKR,Child0001,HardwareID,,MF5PORTB
HKR,Child0001,ResourceMap,1,00,04

[ComPort4.RegHW]
HKR,Child0000,HardwareID,,MF5PORTA
HKR,Child0000,ResourceMap,1,00,03
HKR,Child0001,HardwareID,,MF5PORTB
HKR,Child0001,ResourceMap,1,00,04
HKR,Child0002,HardwareID,,MF5PORTC
HKR,Child0002,ResourceMap,1,00,05
HKR,Child0003,HardwareID,,MF5PORTD
HKR,Child0003,ResourceMap,1,00,06

[Ports.AddReg]
HKR,,NoSetupUI,,1

[ComPort]
CopyFiles=ComPort.Copy,VXD.Copy
AddReg=ComPort.AddReg
LogConfig=c14,c1a,c23,c2a,c34,c3a,c43,c4a,caa

[ComPort.Copy]
ics.inf

[VXD.Copy]

[ComPort.AddReg]
HKR,,DevLoader,,*vcomm
HKR,,Enumerator,,serenum.vxd
HKR,,PortDriver,,serial.vxd
HKR,,Contention,,*vcd
HKR,,ConfigDialog,,serialui.dll 
HKR,,DCB,3,1C,00,00,00, 80,25,00,00, 11,33,00,00, 00,00, 0a,00, 0a,00, 08,    00, 00, 11, 13, 00, 00, 00
HKR,,PortSubClass,1,01
HKR,,EnumPropPages,,"serialui.dll,EnumPropPages"

[*pnp0500.det]
AddReg=Ports.AddReg,DevMap.AddReg

; The following sections are COM port resource configs.
; Section name format means:
; Char 1 = c (COM port)
; Char 2 = I/O config: 1 (3f8), 2 (2f8), 3 (3e8), 4 (2e8), a (any)
; Char 3 = IRQ config: #, a (any)

[c14]                   ; COM1,IRQ4
ConfigPriority=HARDRECONFIG
IOConfig=3f8-3ff(3ff::)
IRQConfig=S:4

[c1a]                   ; COM1, any IRQ
ConfigPriority=HARDRECONFIG
IOConfig=3f8-3ff(3ff::)
IRQConfig=S:3,4,5,7,9,10,11,12,14,15

[c23]                   ; COM2, IRQ3
ConfigPriority=HARDRECONFIG
IOConfig=2f8-2ff(3ff::)
IRQConfig=S:3

[c2a]                   ; COM2, any IRQ
ConfigPriority=HARDRECONFIG
IOConfig=2f8-2ff(3ff::)
IRQConfig=S:3,4,5,7,9,10,11,12,14,15

[c34]                   ; COM3, IRQ4
ConfigPriority=HARDRECONFIG
IOConfig=3e8-3ef(3ff::)
IRQConfig=S:4

[c3a]                   ; COM3, any IRQ
ConfigPriority=HARDRECONFIG
IOConfig=3e8-3ef(3ff::)
IRQConfig=S:3,4,5,7,9,10,11,12,14,15

[c43]                   ; COM4, IRQ3
ConfigPriority=HARDRECONFIG
IOConfig=2e8-2ef(3ff::)
IRQConfig=S:3,5

[c4a]                   ; COM4, any IRQ
ConfigPriority=HARDRECONFIG
IOConfig=2e8-2ef(3ff::)
IRQConfig=S:3,4,5,7,9,10,11,12,14,15

[caa]                   ; Any base, any IRQ
ConfigPriority=HARDRECONFIG
IOConfig=8@100-ffff%fff8(3ff::)
IRQConfig=S:3,4,5,7,9,10,11,12,14,15

; End COM port LogConfig sections

[ComPort.PosDup]
*PNP0500,*PNP0501

[ControlFlags]

[Strings]
IO="Industrial Computer Source"
PCICOM1S="Industrial Computer Source PCI-COM1S"
PCICOM1Sa="Industrial Computer Source PCI-COM-1S"
PCICOM2321S="Industrial Computer Source PCI-COM-232/1"
PCICOM2S="Industrial Computer Source PCI-COM-2S"
PCICOM2322S="Industrial Computer Source PCI-COM-232/2"
PCIICM1S="Industrial Computer Source PCI-ICM-1S"
PCIICM4222="Industrial Computer Source PCI-ICM422/2"
PCIICM4852="Industrial Computer Source PCI-ICM485/2"
PCIICM4224="Industrial Computer Source PCI-ICM422/4"
PCIICM4854="Industrial Computer Source PCI-ICM485/4"
PCICOM4224="Industrial Computer Source PCI-COM422/4"
PCICOM4854="Industrial Computer Source PCI-COM485/4"
PCIDA1216="Industrial Computer Source PCI-DA12-16"
PCIDA128="Industrial Computer Source PCI-DA12-8"
PCIDA1216V="Industrial Computer Source PCI-DA12-16V"
PCIDA128V="Industrial Computer Source PCI-DA12-8V"
PCIDIO24H="Industrial Computer Source PCI-DIO-24H"
PCIDIO24D="Industrial Computer Source PCI-DIO-24D"
PCIDIO24HC="Industrial Computer Source PCI-DIO-24H With Counter(s)"
PCIDIO24DC="Industrial Computer Source PCI-DIO-24D With Counter(s)"
PCIDIO24S="Industrial Computer Source PCI-DIO-24S"
PCIDIO48="Industrial Computer Source PCI-DIO-48"
PCIDIO48S="Industrial Computer Source PCI-DIO-48S"
PCIDIO72="Industrial Computer Source PCI-DIO-72"
PCIDIO96="Industrial Computer Source PCI-DIO-96"
PCIDIO120="Industrial Computer Source PCI-DIO-120"
PCIWDGCSM="Industrial Computer Source PCI-WDG-CSM"
PCIAI1216="Industrial Computer Source PCI-AI12-16"
PCIAI1216A="Industrial Computer Source PCI-AI12-16A"
PCIIIRO8="Industrial Computer Source PCI-IIRO-8"
PCM485="Industrial Computer Source PC CARD (PCMCIA) PCM485"
PAD128="Industrial Computer Source PC CARD (PCMCIA) PAD128"
PIOD24="Industrial Computer Source PC CARD (PCMCIA) PIOD24"
MF5PORTA="COM Port A"
MF5PORTB="COM Port B"
MF5PORTC="COM Port C"
MF5PORTD="COM Port D"

问题不在于 PCI 与 PCIe。 PCI 和 PCIe 在软件上看起来非常相似。问题是该软件正在寻找供应商 ID/Device ID 的特定列表之一,而您的新 SCSI 卡具有不同的 ID。

我不确定你为什么说 PCIe 到 PCI 桥不能解决任何问题;它可以让你插入旧的 PCI 卡,在我看来它可能会起作用。 (当然,不尝试就不能确定。)

如果要使用新卡,最好的办法是为新卡获取驱动程序,提供旧软件所需的软件接口。根据旧软件的设计,这可能可行也可能不可行。如果软件直接搜索硬件,而不通过驱动程序,则需要修改软件才能使用新硬件。

最后,您要求的解决方案是 运行 使用虚拟机管理器 (VMM) 在虚拟机 (VM) 中使用旧软件,该虚拟机管理器提供与 PCI 设备相匹配的虚拟设备您的软件正在寻找。万一 PCI 设备是现有 VMM 支持的标准设备,这可能是最简单的解决方案,不幸的是,它更有可能需要虚拟化专家编写自定义软件,并且比以前的工作量更大建议。