Windows ドライバーの sys ファイルを system32\drivers ディレクトリの外に置くことは合法ですか? driver.sys ファイルへの絶対パスを使用して、ドライバーが CreateService を介して「手動で」構成されている場合は可能であるようです。ただし、InstallHinfSection を使用してドライバーをインストールするために INF ファイルが使用され、ドライバーの場所が system32\drivers 以外の場合、InstallHinfSection はエラーで失敗します。
!!! dvi: ドライバ パスがシステム ルートにありません !!! inf: {インストール Inf セクション [DefaultInstall.NT.Services] exit(0xe0000217)} !!! inf: エラー 0xe0000217: この INF のサービス インストール セクションが無効です。inf: {インストール Inf セクション [DefaultInstall.NT]} ServiceBinary = %1%\MyDriverdrv.sys の場合。ServiceBinary = %12%\MyDriverdrv.sys の場合に成功します。system32\ドライバー
INf ファイル:
;
; INF file to install MyDriver registry filter driver
;
[Version]
signature = "$Windows NT$"
Provider = %MyDriverInc%
CatalogFile =
; Distribution Media information
;
[SourceDisksNames]
1 = %MyDriverdrv.MediaDesc%
[SourceDisksFiles]
MyDriverdrv.sys = 1
[DestinationDirs]
DefaultDestDir = 12
MyDriver.DriverFiles = 12
[DefaultInstall.NT]
CopyFiles = MyDriver.DriverFiles
[DefaultUninstall.NT]
DelFiles = MyDriver.DriverFiles
[MyDriver.DriverFiles]
MyDriverdrv.sys
[DefaultInstall.NT.Services]
AddService = %ServiceName%, , MyDriverdrv_Service_Inst
[DefaultUninstall.NT.Services]
AddService = %ServiceName%, 0x200
[MyDriverdrv_Service_Inst]
DisplayName = %MyDriverdrv.SvcDesc%
ServiceType = 1; SERVICE_KERNEL_DRIVER
StartType = 3; SERVICE_DEMAND_START
ErrorControl = 1; SERVICE_ERROR_NORMAL
ServiceBinary = %1%\MyDriverdrv.sys
[Strings]
MyDriverInc = "MyDriver, Inc"
ServiceName = "MyDriverdrv"
MyDriverdrv.SvcDesc = "MyDriver Trace Kernel Mode Driver"
MyDriverdrv.MediaDesc = "MyDriver Trace Kernel Mode Driver"
INF ファイルは現在、ドライバーをインストールするための公式の方法であるため、ドライバー ファイルをローカルに保持する方法がわかりません。
ありがとう!