Condividi tramite


Specifica del riflettore in un file INF

A partire da Windows 11, il modo consigliato per aggiungere il riflettore (WUDFRd.sys) allo stack di dispositivi in modalità kernel consiste nel fare riferimento al file WudfRd.inf fornito dal sistema nel file INF di un driver UMDF.

Nota

WudfRd.inf è incluso solo con Windows 11 e versioni successive.

In Windows 10 e versioni precedenti, per aggiungere il riflettore (WUDFRd.sys), il file INF di un driver UMDF deve includere una direttiva AddService in una sezione INF DDInstall.Services e una sezione service-install-. Anche se questo metodo funziona ancora su Windows 11 e versioni successive, non è consigliabile.

In entrambi i metodi, il riflettore può essere un filtro superiore, un filtro inferiore o il servizio per il dispositivo, a seconda della configurazione dello stack in modalità utente.

Riferimento a WudfRd.inf (Windows 11 e versioni successive)

È possibile trovare un codice INF di esempio che usa questa tecnica in echoum.inx. In alternativa, usare uno dei frammenti di codice seguenti.

Per installare il servizio WudfRd come driver di funzione per il dispositivo:

[DDInstall]
Include=WUDFRD.inf
Needs=WUDFRD.NT
; also include any existing DDInstall directives

[DDInstall.HW]
Include=WUDFRD.inf
Needs=WUDFRD.NT.HW
; also include any existing DDInstall.HW directives

[DDInstall.Services]
Include=WUDFRD.inf
Needs=WUDFRD.NT.Services
; also include any existing any DDInstall.Services directives

Per installare il servizio WudfRd come driver di filtro superiore:

[DDInstall] 
Include=WUDFRD.inf
Needs=WUDFRD_UpperFilter.NT
; also include any existing DDInstall directives

[DDInstall.HW]
Include=WUDFRD.inf
Needs=WUDFRD_UpperFilter.NT.HW
; also include any existing DDInstall.HW directives

[DDInstall.Services]
Include=WUDFRD.inf
Needs=WUDFRD_UpperFilter.NT.Services
; also include any existing any DDInstall.Services directives

[DDInstall.Filters]
Include=WUDFRD.inf
Needs=WUDFRD_UpperFilter.NT.Filters

Per installare il servizio WudfRd come driver di filtro inferiore:

[DDInstall] 
Include=WUDFRD.inf
Needs=WUDFRD_LowerFilter.NT
; also include any existing DDInstall directives

[DDInstall.HW]
Include=WUDFRD.inf
Needs=WUDFRD_LowerFilter.NT.HW
; also include any existing DDInstall.HW directives

[DDInstall.Services]
Include=WUDFRD.inf
Needs=WUDFRD_LowerFilter.NT.Services
; also include any existing any DDInstall.Services directives

[DDInstall.Filters]
Include=WUDFRD.inf
Needs=WUDFRD_LowerFilter.NT.Filters

Uso di una direttiva AddService (Windows 10 e versioni precedenti)

Nell'esempio di codice seguente viene illustrato come il file INF per un driver di funzione UMDF potrebbe aggiungere il riflettore.

[Skeleton_Install.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall

In questo esempio, il driver specifica il flag 0x2 (SPSVCINST_ASSOCSERVICE) (ORed nel parametro flags precedente) per assegnare il riflettore come driver di funzione nello stack di dispositivi in modalità kernel.

La direttiva AddService imposta anche i flag 0x000001f8 per impedire la sovrascrittura di qualsiasi configurazione preesistente per il servizio. Per altre informazioni su questi flag, vedere il parametro flags della direttiva AddService.

L'esempio di codice seguente, tratto dall'esempio WUDFVhidmini, mostra una direttiva AddService per un driver di filtro UMDF.

[hidumdf.win8.NT.Services]
AddService=WUDFRd,0x000001f8,WUDFRD_ServiceInstall  
AddService=mshidumdf, 0x000001fa, mshidumdf.AddService

[WudfVhidmini_AddReg]
HKR,,"LowerFilters",0x00010008,"WUDFRd" ; FLG_ADDREG_TYPE_MULTI_SZ | FLG_ADDREG_APPEND

In questo caso, il servizio mshidumdf è associato all'fdO per lo stack di dispositivi e il riflettore è un filtro inferiore.

Specifica di una sezione service-install-section

La direttiva AddService fa riferimento a una sezione service-install-section simile all'esempio di codice seguente. La voce ServiceType specifica 1 o 0x00000001, che indica che in INF viene installato il supporto per uno o più dispositivi. La voce StartType specifica quando avviare il driver. La voce ErrorControl specifica il livello di controllo degli errori fornito dal driver. La voce ServiceBinary specifica il percorso del file binario (il riflettore) per il servizio.

[WUDFRD_ServiceInstall]
DisplayName = "Windows Driver Frameworks - User-mode Driver Framework Reflector"
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\WUDFRd.sys