INF ファイルでのリフレクターの指定
Windows 11 以降では、リフレクター (WUDFRd.sys) をカーネルモード デバイス スタックに追加するための推奨される方法は、UMDF ドライバーの INF ファイルでシステム提供の WudfRd.inf ファイルを参照することです。
Note
WudfRd.inf は Windows 11 以降にのみ含まれています。
Windows 10 以前では、リフレクター (WUDFRd.sys) を追加するには、UMDF ドライバーの INF ファイルに、INF DDInstall.Services セクションとサービス インストール セクションに AddService ディレクティブを含める必要があります。 この方法は引き続き Windows 11 以降で動作しますが、推奨されません。
どちらの方法でも、リフレクターは、ユーザーモード スタックの構成に応じて、上位フィルター、下位フィルター、またはデバイスのサービスの場合があります。
WudfRd.inf の参照 (Windows 11 以降)
この手法を使用する INF のサンプルは echoum.inx にあります。 または、次のいずれかのスニペットを使用します。
WudfRd サービスをデバイスのファンクション ドライバーとしてインストールするには
[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
WudfRd サービスを上位フィルター ドライバーとしてインストールするには
[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
WudfRd サービスを下位フィルター ドライバーとしてインストールするには
[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
AddService ディレクティブの使用 (Windows 10 以前)
次のコード例は、UMDF ファンクション ドライバーの INF ファイルがリフレクターを追加する方法を示しています。
[Skeleton_Install.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall
この例では、ドライバーは0x2 (SPSVCINST_ASSOCSERVICE) フラグ (上記の flags パラメーターに ORed) を指定して、カーネルモード デバイス スタックの関数ドライバーとしてリフレクターを割り当てます。
AddService ディレクティブは、サービスの既存の構成を上書きしないように、0x000001f8 フラグも設定します。 これらのフラグの詳細については、AddService ディレクティブの flags パラメーターを参照してください。
WUDFVhidmini サンプルから取得した次のコード例は、UMDF フィルター ドライバーの AddService ディレクティブを示しています。
[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
この場合、mshidumdf サービスはデバイス スタックの FDO に関連付けられていて、リフレクターは下位フィルターです。
service-install-section の提供
AddService ディレクティブは、次のコード例のような service-install-section を参照します。 ServiceType エントリは、1 または 0x00000001 を指定します。これは、INF が 1 つ以上のデバイスのサポートをインストールすることを示します。 StartType エントリは、ドライバーを起動するタイミングを指定します。 ErrorControl エントリは、ドライバーが提供するエラー制御のレベルを指定します。 ServiceBinary エントリは、サービスのバイナリ (リフレクタ) へのパスを指定します。
[WUDFRD_ServiceInstall]
DisplayName = "Windows Driver Frameworks - User-mode Driver Framework Reflector"
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\WUDFRd.sys