NDIS 6 LWF的一个INF文件中的两个二进制文件

时间:2014-09-03 04:16:20

标签: ndis

在以前的NDIS 5.1中,我们设法制作了一个安装了32或64位sys文件二进制文件的inf文件,具体取决于安装它的操作系统。

我们现在尝试使用NDIS 6 LWF INF文件,并且不知道我们如何复制[Install.Services]部分,因此操作系统将自动选择要拾取的二进制文件,32或者64位的。

这基本上将我们带到了以下INF文件部分:

[Install.Services]
; You may also want to add the SPSVCINST_STARTSERVICE flag, like this:
;     AddService=NdisLwf,0x800,NdisLwf_Service_Inst ; SPSVCINST_STARTSERVICE
AddService=Daihinia,,Daihinia_Service_Inst

[Daihinia_Service_Inst]
DisplayName     = %Daihinia_Desc%
ServiceType     = 1 ;SERVICE_KERNEL_DRIVER
; Typically you will want your filter driver to start with SERVICE_SYSTEM_START.
; If it is an Optional filter, you may also use 3;SERVICE_DEMAND_START.
StartType       = 1 ;SERVICE_SYSTEM_START
ErrorControl    = 1 ;SERVICE_ERROR_NORMAL
ServiceBinary   = %12%\daihinia6-32.sys
LoadOrderGroup  = NDIS
Description     = %Daihinia_Desc%
AddReg          = Common.Params.reg, NdisImPlatformBindingOptions.reg

在[Daihinia_Service_Inst]中,我们在上面的例子中有32位二进制文​​件。

任何有关如何修改它们的见解,因为[Install.Services]部分没有明确地在INF中的任何地方引用,所以我们不能在那里做一个分叉?

1 个答案:

答案 0 :(得分:1)

我们通常不鼓励驱动程序根据CPU架构使用不同的名称。所有内置驱动程序在x86,ia64,amd64,arm等上都具有相同的名称。因此,解决问题的一种简单方法是在所有平台上发布名为“daihinia.sys”的文件。

但是如果你真的想拥有不同的文件名,那么你有两个高级选项:

  1. 在所有平台上使用相同的INF,但使用每个架构的INF部分装饰Manufacturer section;或
  2. 在每个架构上发送不同的INF。唯一的区别是ServiceBinary的名称。 The stampinf tool可以通过从一个INX模板生成每个特定于体系结构的INF来帮助您避免代码重复。
  3. 第一个选项的示例:

    [Manufacturer]
    %Msft%=MSFT,NTx86,NTamd64
    
    [MSFT.NTx86]
    %NdisLwf_Desc%=Install32, MS_NdisLwf
    
    [MSFT.NTamd64]
    %NdisLwf_Desc%=Install64, MS_NdisLwf
    
    [Install32.Services]
    AddService=MyService,,Service32
    
    [Install64.Services]
    AddService=MyService,,Service64
    
    [Service32]
    ServiceBinary=%12%\MyImage32.sys
    . . . other options . . .
    
    [Service64]
    ServiceBinary=%12%\MyImage64.sys
    . . . other options . . .