2

ファイル操作をログに記録し、特定のファイル操作をブロックする目的で、Windows 7 で MTP デバイス用のフィルター ドライバーを作成しようとしています。Windows で MTP を処理するドライバーは、WpdMtpDr.dll という名前の UMDF ドライバーであることがわかりました。この(UMDF 関数ドライバーの上のサンプル UMDF フィルター ドライバー) に従ってWpdMtpDr.dll、関数ドライバーとして扱った UMDF フィルター ドライバーを作成しました。また、これを参考にして、ドライバーが上部フィルターとしてインストールされているか、下部フィルターとしてインストールされているかを判断しました。dpinst.exe を使用してドライバーをインストールしました。以下は私のINFファイルです。

インストールにエラーはありませんでしたが、MTP デバイス (Samsung Galaxy S3) を接続すると、フィルター ドライバーがドライバー リストになく (デバイス マネージャーで確認)、DllMain が呼び出されませんでした。

下部フィルターと上部フィルターを切り替えようとしましたが、どちらも役に立ちませんでした。

私は何を間違っていますか?

;
; umdffilter.inf
;

[Version]
Signature="$Windows NT$"
Class=WPD
ClassGuid={EEC5AD98-8080-425f-922A-DABF3DE3F69A}
Provider=%ManufacturerName%
CatalogFile=umdffilter.cat
DriverVer=01/02/2013,18.8.52.851`

[Manufacturer]
%ManufacturerName%=Standard,NTamd64

[Standard.NTamd64]
%DeviceName%=MyDevice_Install, usb\vid_04e8&pid_6860

[SourceDisksFiles]
umdffilter.dll=1
WudfUpdate_01011.dll=1
WdfCoInstaller01011.dll=1
WinUsbCoinstaller2.dll=1

[SourceDisksNames]
1 = %DiskName%

; =================== UMDF Filter Driver ==================================

[MyDevice_Install.NT]
CopyFiles=UMDriverCopy
Include=wpdmtp.inf, WINUSB.INF          ; Import sections from wpdmtp.inf and WINUSB.INF
Needs=WPD.MTP, WINUSB.NT                ; Run the CopyFiles & AddReg directives for wpdmtp.inf and WINUSB.INF

[MyDevice_Install.NT.hw]
Include = wpdmtp.inf
Needs   = WPD.MTP.Registration
AddReg  = MyDevice_AddReg

[MyDevice_Install.NT.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall  ; flag 0x2 sets this as the service for the device
AddService=WinUsb,0x000001f8,WinUsb_ServiceInstall  ; this service is installed because its a filter.

[MyDevice_Install.NT.CoInstallers]
CopyFiles=CoInstallers_CopyFiles
AddReg=CoInstallers_AddReg

[MyDevice_Install.NT.Wdf]
Include = wpdmtp.inf
Needs = WPD.MTP.Wdf
KmdfService=WINUSB, WinUsb_Install
UmdfService=umdffilter,umdffilter_Install
UmdfServiceOrder=umdffilter,WpdMtpDriver    ; upper filter

[WinUsb_Install]
KmdfLibraryVersion=1.11

[WpdMtpDriver_Install]
UmdfLibraryVersion=1.11.0 

[umdffilter_Install]
UmdfLibraryVersion=1.11.0 
ServiceBinary=%12%\UMDF\umdffilter.dll
DriverCLSID={8cec927c-219a-4777-baea-8626d6a0ce50}

[MyDevice_AddReg]
HKR,,"LowerFilters",0x00010008,"WinUsb" ; FLG_ADDREG_TYPE_MULTI_SZ | FLG_ADDREG_APPEND

[WUDFRD_ServiceInstall]
DisplayName = %WudfRdDisplayName%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\WUDFRd.sys
LoadOrderGroup = Base

[WinUsb_ServiceInstall]
DisplayName     = %WinUsb_SvcDesc%
ServiceType     = 1
StartType       = 3
ErrorControl    = 1
ServiceBinary   = %12%\WinUSB.sys

[CoInstallers_CopyFiles]
WdfCoInstaller01011.dll
WudfUpdate_01011.dll
WinUsbCoinstaller2.dll

[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WudfUpdate_01011.dll", "WinUsbCoinstaller2.dll", "WdfCoInstaller01011.dll,WdfCoInstaller"

[DestinationDirs]
UMDriverCopy=12,UMDF        ; copy to drivers\umdf
CoInstallers_CopyFiles=11   ; copy to system32

[UMDriverCopy]
umdffilter.dll

; =================== Generic ==================================

[Strings]
ManufacturerName="Me"
ClassName="Samples" ; TODO: edit ClassName
DiskName = "umdffilter Installation Disk"
WinUsb_SvcDesc="WinUSB Driver"
WudfRdDisplayName="Windows Driver Foundation - User-mode Driver Framework Reflector"
DeviceName="umdffilter Device"`
4

1 に答える 1