2016-03-19 21 views
0

Visual Studio 2015 and WDK 10 kullanarak NDIS filtre sürücüleri geliştiriyorum. Bir gereksinim, INF dosyasında (compression ve ms_medium_converter_128) farklı FilterClass kullanarak sürücüleri derlemektir. Farklı FilterClass dışında neredeyse hemen hemen aynı INF dosyalarını korumak istemiyorum.Sürücü INF dosyasındaki değişkenler nasıl kullanılır?

Soruma ilişkin soru: INF dosyasında bir değişken veya makro kullanmanın herhangi bir yolu var mı? Bu nedenle, Visual Studio'da farklı yapılandırmaları kullanarak gerçek derlenmiş INF içeriğini denetleyebilirim. Efekt:

Daha sonra VS'de %MACRO_OR_VAR_FILTER_CLASS%'u denetleyebilirim. Sonunda

, benim bütün INF dosya eklemek: Böyle bir özellik "dil" Inf içinde olduğunu sanmıyorum

;------------------------------------------------------------------------- 
; NPF.INF -- Npcap NDIS 6.x LightWeight Filter Driver 
; 
; Copyright (c) 2015, Insecure.Com LLC. All rights reserved. 
;------------------------------------------------------------------------ 
[version] 
Signature  = "$Windows NT$" 
Class   = NetService 
ClassGUID  = {4D36E974-E325-11CE-BFC1-08002BE10318} 
CatalogFile  = %NPF_DriverName%.cat 
Provider  = %Insecure% 
DriverVer=05/15/2015,14.48.38.905 


[Manufacturer] 
%Insecure%=Insecure,NTx86,NTia64,NTamd64 

[Insecure.NTx86] 
%NPF_Desc%=Install, INSECURE_NPF 

[Insecure.NTia64] 
%NPF_Desc%=Install, INSECURE_NPF 

[Insecure.NTamd64] 
%NPF_Desc%=Install, INSECURE_NPF 

;------------------------------------------------------------------------- 
; Installation Section 
;------------------------------------------------------------------------- 
[Install] 
AddReg=Inst_Ndi 
Characteristics=0x40000 
NetCfgInstanceId="{7daf2ac8-e9f6-4765-a842-f1f5d2501340}" 
Copyfiles = npf.copyfiles.sys 

[SourceDisksNames] 
1=%NPF_Desc%,"",, 

[SourceDisksFiles] 
npf.sys=1 

[DestinationDirs] 
DefaultDestDir=12 
npf.copyfiles.sys=12 

[npf.copyfiles.sys] 
%NPF_DriverName%.sys,,,2 


;------------------------------------------------------------------------- 
; Ndi installation support 
;------------------------------------------------------------------------- 
[Inst_Ndi] 
HKR, Ndi,Service,,%NPF_DriverName% 
HKR, Ndi,CoServices,0x00010000,%NPF_DriverName% 
HKR, Ndi,HelpText,,%NPF_HelpText% 
HKR, Ndi,FilterClass,, ms_medium_converter_128 


; For a Monitoring filter, use this: 
;  HKR, Ndi,FilterType,0x00010001, 1 ; Monitoring filter 
; For a Modifying filter, use this: 
;  HKR, Ndi,FilterType,0x00010001, 2 ; Modifying filter 
HKR, Ndi,FilterType,0x00010001,2 


HKR, Ndi\Interfaces,UpperRange, , noupper 
HKR, Ndi\Interfaces,LowerRange, , "ndis5,ndis4" 


; TODO: Ensure that the list of media types below is correct. Typically, 
; filters include "ethernet". Filters may also include "ppip" to include 
; native WWAN stacks, but you must be prepared to handle the packet framing. 
; Possible values are listed on MSDN, but common values include: 
;  ethernet, wan, ppip, wlan 
HKR, Ndi\Interfaces, FilterMediaTypes,,"ethernet, fddi, wan, ppip, wlan, bluetooth, ndis5, vwifi, flpp4, flpp6, vchannel, nolower" 


; For a Mandatory filter, use this: 
;  HKR, Ndi,FilterRunType,0x00010001, 1 ; Mandatory filter 
; For an Optional filter, use this: 
;  HKR, Ndi,FilterRunType,0x00010001, 2 ; Optional filter 
HKR, Ndi,FilterRunType,0x00010001, 2 ; Optional filter 


; By default, Mandatory filters unbind all protocols when they are 
; installed/uninstalled, while Optional filters merely pause the stack. If you 
; would like to override this behavior, you can include these options. These 
; options only take effect with 6.30 filters on Windows "8" or later. 
; To prevent a full unbind, and merely pause/restart protocols: 
;  HKR, Ndi,UnbindOnAttach,0x00010001, 0 ; Do not unbind during FilterAttach 
;  HKR, Ndi,UnbindOnDetach,0x00010001, 0 ; Do not unbind during FilterDetach 
; To force a full unbind/bind (which includes pause/restart, of course): 
;  HKR, Ndi,UnbindOnAttach,0x00010001, 1 ; Unbind during FilterAttach 
;  HKR, Ndi,UnbindOnDetach,0x00010001, 1 ; Unbind during FilterDetach 
; 

;------------------------------------------------------------------------- 
; Service installation support 
;------------------------------------------------------------------------- 
[Install.Services] 
AddService=%NPF_DriverName%,,NPF_Service_Inst 

[NPF_Service_Inst] 
DisplayName  = %NPF_Desc% 
ServiceType  = 1 ;SERVICE_KERNEL_DRIVER 
StartType  = 3 ;SERVICE_DEMAND_START 
ErrorControl = 1 ;SERVICE_ERROR_NORMAL 
ServiceBinary = %12%\%NPF_DriverName%.sys 
LoadOrderGroup = NDIS 
Description  = %NPF_Desc% 
AddReg   = Common.Params.reg, NdisImPlatformBindingOptions.reg 

[Install.Remove.Services] 
DelService=%NPF_DriverName%,0x200 ; SPSVCINST_STOPSERVICE 

[Common.Params.reg] 

[NdisImPlatformBindingOptions.reg] 
; By default, when an LBFO team or Bridge is created, all filters will be 
; unbound from the underlying members and bound to the TNic(s). This keyword 
; allows a component to opt out of the default behavior 
; To prevent binding this filter to the TNic(s): 
; HKR, Parameters, NdisImPlatformBindingOptions,0x00010001,1 ; Do not bind to TNic 
; To prevent unbinding this filter from underlying members: 
; HKR, Parameters, NdisImPlatformBindingOptions,0x00010001,2 ; Do not unbind from Members 
; To prevent both binding to TNic and unbinding from members: 
; HKR, Parameters, NdisImPlatformBindingOptions,0x00010001,3 ; Do not bind to TNic or unbind from Members 
HKR, Parameters, NdisImPlatformBindingOptions,0x00010001,0 ; Subscribe to default behavior 

[Strings] 
NPF_DriverName = "npf" 
Insecure = "Nmap Project" 
NPF_Desc = "Npcap Packet Driver (NPCAP)" 
NPF_HelpText = "A NDIS 6 filter driver & WFP callout driver to support packet capturing and sending under Windows 7, 8 & 10" 

cevap

1

. Ancak, hedef derlemenizi VS yapı makrolarını kabul edebilen basit bir ön-yapı betiği kullanarak kolayca başarabilirsiniz. Böyle bir betik, inf dosyasınıza istenen değerleri enjekte edebilir - ($SolutionDir), ($ProjectDir) gibi VS makrolarını kullanarak komut dosyasından inf dosyasına erişebilirsiniz. Komut dosyası, VS çözümüne entegre edilebilir, böylece yazdıktan sonra ek çaba sarf etmeden çalışır. Biz NetKVM yaptıklarını

enter image description here

+0

tam olarak nasıl bunu yapmak için? Sadece bash betiğini biliyorum, ama bir betik betiğinin VS yapı parametrelerini nasıl kabul edeceğine dair hiçbir fikrim yok. – hsluoyz

+0

Ve '' istenen değerleri inf dosyasına '' nasıl enjekte edilir? – hsluoyz

+0

ancak INF dosyam nasıl güncellenir? INF dosyasını kendim halletmem ve '' FilterClass'' seçeneğini bulup, değerlerini elle değiştirmem gerekiyor mu? – hsluoyz

İlgili konular