配置寄存器地址不完整的电脑卡

如果多功能 16 位电脑卡设备具有每个函数的配置寄存器,但在属性内存中不包含指向所有寄存器集的指针, (不支持LONGLINK_MFC元组) ,则此类设备的供应商可以使用系统提供的多功能总线驱动程序 (mf.sys) 但必须提供自定义 INF 文件和对各个函数的支持。

基于 NT 的平台上此类设备的供应商可以为多功能设备使用系统提供的函数驱动程序。

设备的自定义 INF 必须将 mf.sys 指定为设备的函数驱动程序。 然后,系统提供的 mf.sys 驱动程序将枚举设备的功能。

有关使用系统提供的 mf.sys 驱动程序的详细信息,请参阅使用 System-Supplied 多功能总线 驱动程序。

此类设备的供应商必须提供以下内容:

  • 多功能设备的自定义 INF 文件。 (供应商提供的)

    供应商必须提供一个多功能 INF 文件,该文件将 mf.sys 指定为多功能总线驱动程序,指定类“MultiFunction” (devguid.h) 中定义的关联 GUID,并提供缺少的配置寄存器地址 (es) 。 请参阅本节后面的详细信息。

  • 适用于设备每个功能的 PnP 函数驱动程序。 (供应商提供的)

    由于多功能总线驱动程序处理多功能语义,因此函数驱动程序可以是将函数打包为单个设备时使用的相同驱动程序。

  • 设备的每个功能的 INF 文件。 (供应商提供的)

    INF 文件可以是将函数打包为单个设备时使用的相同文件。 INF 文件不需要任何特殊的多功能语义。

此类多功能设备的自定义 INF 必须至少包含一个 INF DDInstall.LogConfigOverride 节。 override 节必须包含每个函数的 MfCardConfig 条目,用于标识每组配置寄存器的位置。

INF 必须重申设备指定的所有资源要求,因为如果 INF 中存在替代配置,则 PnP 管理器不使用设备中的任何设备资源要求。

使用 INF LogConfig 指令中所述的语法指定 MfCardConfig 条目。

例如,对于包含调制解调器和网络适配器的多功能电脑卡设备的自定义 INF,请考虑以下摘录:

;...
 
[DDInstall.LogConfigOverride]
LogConfig = DDInstall.Override0
 
[DDInstall.Override0]
IOConfig     =    3F8-3FF                  ; Com1
IOConfig     =    10@100-FFFF%FFF0         ; NIC I/O
IRQConfig    =    3,4,5,7,9,10,11          ; IRQ
MemConfig    =    2000@0-FFFFFFFF%FFFFE000 ; Memory Descriptor 0
MemConfig    =    1000@0-FFFFFFFF%FFFFF000 ; Memory Descriptor 1
MfCardConfig =    1000:47:0(A)
MfCardConfig =    1080:47:1
;...

该示例显示了两个 MfCardConfig 条目,一个条目用于设备的每个功能。 第一个 MfCardConfig 条目包含以下信息:

1000 (ConfigRegBase)
指定在偏移0x1000卡的属性内存中存在一组配置寄存器。 在此示例中,这些寄存器中的信息描述了卡上的调制解调器功能。

47 (ConfigOptions)
指定总线驱动程序在 ConfigRegBase 偏移量 (0x1000) 编程到配置选项寄存器中的十六进制值。

0 (IoConfigIndex)
指定此函数的 I/O 资源列在本部分的第一个 IOConfig 条目中。 索引为零表示第一个条目,在此示例中为“IOConfig = 3F8-3FF”。

()
指示总线驱动程序为此功能启用音频启用,这是调制解调器的典型功能。

第二个 MfCardConfig 条目包含有关设备 (网络适配器上的第二个函数的信息,在此示例中) 。 此项指定偏移0x1080处有第二组配置寄存器。 总线驱动程序会将 0x47 的 ConfigOptions 值写入此函数的配置选项寄存器。 ioConfigIndex 值 1 指示总线驱动程序使用本节中的第二个 IOConfig 条目, (IOConfig = 10@100-FFFF%FFF0) 对此函数的 I/O 基数和限制寄存器进行编程。

包括多个 DDInstall重写 INF 中的 N 节以指定多个非顺序 I/O 端口范围的选择。

如果设备使用的内存窗口不基于零,则 DDInstall替代N 节 () 还必须包含 PcCardConfig 条目。 如果替代节同时具有 MfCardConfig 条目和 PcCardConfig 条目,则 PCMCIA 总线驱动程序将忽略 PcCardConfig 条目中的 ConfigIndex 值,并仅使用 MemoryCardBaseN 信息。 有关 PcCardConfig 条目的详细信息,请参阅支持具有不完整配置寄存器的电脑卡。