Skip to content

Commit

Permalink
PtpFilter: Introduce Bluetooth Magic Trackpad 2 support (#399)
Browse files Browse the repository at this point in the history
Introduce Bluetooth support, it works fine now with some minor rough edges in the pairing routine. Pairing might take a disconnect to complete due to the state machine in Windows HID stack (it should succeed on the first try for 99% scenarios though.) Once paired, it works well with on-demand connects and disconnects.

Introduce the PTP filter driver, which will be the future home for all current driver implementation. Eventually, all drivers will be merged into the single one and others got removed. The PTP filter driver reuses Windows HID transportation stack to simplify our driver's logic, make transportation more resilient to system failure and reduces power consumption (especially helpful on laptops.) Currently the PTP filter driver supports Magic Trackpad 2 via both USB and Bluetooth mode.
  • Loading branch information
imbushuo committed Jun 1, 2021
1 parent d9068ae commit 734b084
Show file tree
Hide file tree
Showing 26 changed files with 2,819 additions and 2 deletions.
54 changes: 54 additions & 0 deletions AmtPtpDriver.sln
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,25 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AmtPtpDeviceUsbKm", "src\Am
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AmtPtpDeviceUniversalPkg", "src\AmtPtpDeviceUniversalPkg\AmtPtpDeviceUniversalPkg.vcxproj", "{7AB0A246-AA1C-433B-9E16-88956C51A565}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AmtPtpHidFilter", "src\AmtPtpHidFilter\AmtPtpHidFilter.vcxproj", "{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
ReleaseSigned|ARM = ReleaseSigned|ARM
ReleaseSigned|ARM64 = ReleaseSigned|ARM64
ReleaseSigned|x64 = ReleaseSigned|x64
ReleaseSigned|x86 = ReleaseSigned|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Debug|ARM.ActiveCfg = Debug|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Debug|ARM64.ActiveCfg = Debug|ARM64
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Debug|ARM64.Build.0 = Debug|ARM64
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Debug|ARM64.Deploy.0 = Debug|ARM64
Expand All @@ -44,6 +50,7 @@ Global
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Debug|x86.ActiveCfg = Debug|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Debug|x86.Build.0 = Debug|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Debug|x86.Deploy.0 = Debug|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Release|ARM.ActiveCfg = Release|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Release|ARM64.ActiveCfg = Release|ARM64
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Release|ARM64.Build.0 = Release|ARM64
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Release|ARM64.Deploy.0 = Release|ARM64
Expand All @@ -53,6 +60,7 @@ Global
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Release|x86.ActiveCfg = Release|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Release|x86.Build.0 = Release|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.Release|x86.Deploy.0 = Release|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.ReleaseSigned|ARM.ActiveCfg = ReleaseSigned|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.ReleaseSigned|ARM64.ActiveCfg = ReleaseSigned|ARM64
{87EFA31B-25EB-4944-A30A-300171BFFF57}.ReleaseSigned|ARM64.Build.0 = ReleaseSigned|ARM64
{87EFA31B-25EB-4944-A30A-300171BFFF57}.ReleaseSigned|ARM64.Deploy.0 = ReleaseSigned|ARM64
Expand All @@ -62,6 +70,7 @@ Global
{87EFA31B-25EB-4944-A30A-300171BFFF57}.ReleaseSigned|x86.ActiveCfg = ReleaseSigned|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.ReleaseSigned|x86.Build.0 = ReleaseSigned|Win32
{87EFA31B-25EB-4944-A30A-300171BFFF57}.ReleaseSigned|x86.Deploy.0 = ReleaseSigned|Win32
{FC08B706-5661-47FA-A840-053B06125750}.Debug|ARM.ActiveCfg = Debug|Win32
{FC08B706-5661-47FA-A840-053B06125750}.Debug|ARM64.ActiveCfg = Debug|ARM64
{FC08B706-5661-47FA-A840-053B06125750}.Debug|ARM64.Build.0 = Debug|ARM64
{FC08B706-5661-47FA-A840-053B06125750}.Debug|ARM64.Deploy.0 = Debug|ARM64
Expand All @@ -71,6 +80,7 @@ Global
{FC08B706-5661-47FA-A840-053B06125750}.Debug|x86.ActiveCfg = Debug|Win32
{FC08B706-5661-47FA-A840-053B06125750}.Debug|x86.Build.0 = Debug|Win32
{FC08B706-5661-47FA-A840-053B06125750}.Debug|x86.Deploy.0 = Debug|Win32
{FC08B706-5661-47FA-A840-053B06125750}.Release|ARM.ActiveCfg = Release|Win32
{FC08B706-5661-47FA-A840-053B06125750}.Release|ARM64.ActiveCfg = Release|ARM64
{FC08B706-5661-47FA-A840-053B06125750}.Release|ARM64.Build.0 = Release|ARM64
{FC08B706-5661-47FA-A840-053B06125750}.Release|ARM64.Deploy.0 = Release|ARM64
Expand All @@ -80,6 +90,7 @@ Global
{FC08B706-5661-47FA-A840-053B06125750}.Release|x86.ActiveCfg = Release|Win32
{FC08B706-5661-47FA-A840-053B06125750}.Release|x86.Build.0 = Release|Win32
{FC08B706-5661-47FA-A840-053B06125750}.Release|x86.Deploy.0 = Release|Win32
{FC08B706-5661-47FA-A840-053B06125750}.ReleaseSigned|ARM.ActiveCfg = ReleaseSigned|Win32
{FC08B706-5661-47FA-A840-053B06125750}.ReleaseSigned|ARM64.ActiveCfg = ReleaseSigned|ARM64
{FC08B706-5661-47FA-A840-053B06125750}.ReleaseSigned|ARM64.Build.0 = ReleaseSigned|ARM64
{FC08B706-5661-47FA-A840-053B06125750}.ReleaseSigned|ARM64.Deploy.0 = ReleaseSigned|ARM64
Expand All @@ -89,6 +100,7 @@ Global
{FC08B706-5661-47FA-A840-053B06125750}.ReleaseSigned|x86.ActiveCfg = ReleaseSigned|Win32
{FC08B706-5661-47FA-A840-053B06125750}.ReleaseSigned|x86.Build.0 = ReleaseSigned|Win32
{FC08B706-5661-47FA-A840-053B06125750}.ReleaseSigned|x86.Deploy.0 = ReleaseSigned|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Debug|ARM.ActiveCfg = Debug|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Debug|ARM64.ActiveCfg = Debug|ARM64
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Debug|ARM64.Build.0 = Debug|ARM64
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Debug|ARM64.Deploy.0 = Debug|ARM64
Expand All @@ -98,6 +110,7 @@ Global
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Debug|x86.ActiveCfg = Debug|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Debug|x86.Build.0 = Debug|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Debug|x86.Deploy.0 = Debug|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Release|ARM.ActiveCfg = Release|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Release|ARM64.ActiveCfg = Release|ARM64
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Release|ARM64.Build.0 = Release|ARM64
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Release|ARM64.Deploy.0 = Release|ARM64
Expand All @@ -107,6 +120,7 @@ Global
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Release|x86.ActiveCfg = Release|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Release|x86.Build.0 = Release|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.Release|x86.Deploy.0 = Release|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.ReleaseSigned|ARM.ActiveCfg = ReleaseSigned|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.ReleaseSigned|ARM64.ActiveCfg = ReleaseSigned|ARM64
{AB3E45E7-C524-47C1-9677-728BA2A19344}.ReleaseSigned|ARM64.Build.0 = ReleaseSigned|ARM64
{AB3E45E7-C524-47C1-9677-728BA2A19344}.ReleaseSigned|ARM64.Deploy.0 = ReleaseSigned|ARM64
Expand All @@ -116,6 +130,7 @@ Global
{AB3E45E7-C524-47C1-9677-728BA2A19344}.ReleaseSigned|x86.ActiveCfg = ReleaseSigned|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.ReleaseSigned|x86.Build.0 = ReleaseSigned|Win32
{AB3E45E7-C524-47C1-9677-728BA2A19344}.ReleaseSigned|x86.Deploy.0 = ReleaseSigned|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Debug|ARM.ActiveCfg = Debug|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Debug|ARM64.ActiveCfg = Debug|ARM64
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Debug|ARM64.Build.0 = Debug|ARM64
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Debug|ARM64.Deploy.0 = Debug|ARM64
Expand All @@ -125,6 +140,7 @@ Global
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Debug|x86.ActiveCfg = Debug|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Debug|x86.Build.0 = Debug|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Debug|x86.Deploy.0 = Debug|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Release|ARM.ActiveCfg = Release|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Release|ARM64.ActiveCfg = Release|ARM64
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Release|ARM64.Build.0 = Release|ARM64
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Release|ARM64.Deploy.0 = Release|ARM64
Expand All @@ -134,6 +150,7 @@ Global
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Release|x86.ActiveCfg = Release|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Release|x86.Build.0 = Release|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.Release|x86.Deploy.0 = Release|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.ReleaseSigned|ARM.ActiveCfg = ReleaseSigned|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.ReleaseSigned|ARM64.ActiveCfg = ReleaseSigned|ARM64
{7AB0A246-AA1C-433B-9E16-88956C51A565}.ReleaseSigned|ARM64.Build.0 = ReleaseSigned|ARM64
{7AB0A246-AA1C-433B-9E16-88956C51A565}.ReleaseSigned|ARM64.Deploy.0 = ReleaseSigned|ARM64
Expand All @@ -143,6 +160,42 @@ Global
{7AB0A246-AA1C-433B-9E16-88956C51A565}.ReleaseSigned|x86.ActiveCfg = ReleaseSigned|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.ReleaseSigned|x86.Build.0 = ReleaseSigned|Win32
{7AB0A246-AA1C-433B-9E16-88956C51A565}.ReleaseSigned|x86.Deploy.0 = ReleaseSigned|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|ARM.ActiveCfg = Debug|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|ARM.Build.0 = Debug|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|ARM.Deploy.0 = Debug|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|ARM64.ActiveCfg = Debug|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|ARM64.Build.0 = Debug|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|ARM64.Deploy.0 = Debug|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|x64.ActiveCfg = Debug|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|x64.Build.0 = Debug|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|x64.Deploy.0 = Debug|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|x86.ActiveCfg = Debug|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|x86.Build.0 = Debug|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Debug|x86.Deploy.0 = Debug|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|ARM.ActiveCfg = Release|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|ARM.Build.0 = Release|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|ARM.Deploy.0 = Release|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|ARM64.ActiveCfg = Release|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|ARM64.Build.0 = Release|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|ARM64.Deploy.0 = Release|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|x64.ActiveCfg = Release|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|x64.Build.0 = Release|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|x64.Deploy.0 = Release|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|x86.ActiveCfg = Release|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|x86.Build.0 = Release|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.Release|x86.Deploy.0 = Release|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|ARM.ActiveCfg = Release|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|ARM.Build.0 = Release|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|ARM.Deploy.0 = Release|ARM
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|ARM64.ActiveCfg = Release|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|ARM64.Build.0 = Release|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|ARM64.Deploy.0 = Release|ARM64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|x64.ActiveCfg = Release|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|x64.Build.0 = Release|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|x64.Deploy.0 = Release|x64
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|x86.ActiveCfg = Release|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|x86.Build.0 = Release|Win32
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C}.ReleaseSigned|x86.Deploy.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -152,6 +205,7 @@ Global
{FC08B706-5661-47FA-A840-053B06125750} = {2557B86E-6ED8-495A-B9A5-BF80CD5C4DAC}
{AB3E45E7-C524-47C1-9677-728BA2A19344} = {2557B86E-6ED8-495A-B9A5-BF80CD5C4DAC}
{7AB0A246-AA1C-433B-9E16-88956C51A565} = {2557B86E-6ED8-495A-B9A5-BF80CD5C4DAC}
{EE63C42B-F401-4F55-ADBB-14C16BD3B18C} = {2557B86E-6ED8-495A-B9A5-BF80CD5C4DAC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E8D62F4C-ADCF-4882-AA6B-CA7D97CB284B}
Expand Down
11 changes: 10 additions & 1 deletion src/AmtPtpDeviceSpiKm/Device.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ AmtPtpDeviceSpiKmCreateDevice(

if (!NT_SUCCESS(Status)) {
TraceEvents(
TRACE_LEVEL_INFORMATION,
TRACE_LEVEL_ERROR,
TRACE_DRIVER,
"%!FUNC! WdfLookasideListCreate failed with %!STATUS!",
Status
Expand All @@ -108,6 +108,15 @@ AmtPtpDeviceSpiKmCreateDevice(
TimerAttributes.ParentObject = Device;
TimerAttributes.ExecutionLevel = WdfExecutionLevelPassive;
Status = WdfTimerCreate(&TimerConfig, &TimerAttributes, &pDeviceContext->PowerOnRecoveryTimer);
if (!NT_SUCCESS(Status)) {
TraceEvents(
TRACE_LEVEL_ERROR,
TRACE_DRIVER,
"%!FUNC! WdfTimerCreate failed with %!STATUS!",
Status
);
goto exit;
}

//
// Retrieve IO target.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -295,4 +295,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>
97 changes: 97 additions & 0 deletions src/AmtPtpHidFilter/AmtPtpHidFilter.inf
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
;
; AmtPtpHidFilter.inf
;

[Version]
Signature="$WINDOWS NT$"
Class = HIDClass
ClassGuid = {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
Provider=%ManufacturerName%
CatalogFile=AmtPtpHidFilter.cat
DriverVer= ; TODO: set DriverVer in stampinf property pages
PnpLockdown=1

[DestinationDirs]
DefaultDestDir = 13

[ControlFlags]
; We don't want our device to be installable via the non-PnP hardware dialogs
ExcludeFromSelect = *

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

[SourceDisksFiles]
AmtPtpHidFilter.sys = 1,,

;*****************************************
; Install Section
;*****************************************

[Manufacturer]
%ManufacturerName%=Standard,NT$ARCH$.10.0

[Standard.NT$ARCH$.10.0]
; The fact is, you can't filter HIDUSB or friends directly, because they load the export driver called
; HIDCLASS which overrides their IO Major Function pointers. Therefore we still implement our own HID miniport
; transport, but in fact reusing the underlying HID transport (either Bluetooth or USB).
; Some high-level patches involved to modify the underlying driver IO handlers.
%AmtPtpHidFilter.DeviceDesc%=AmtPtpHidFilter_MiniPortDevice, HID\VID_05AC&PID_0265&REV_0855&MI_01&Col01
%AmtPtpHidFilter.DeviceDesc%=AmtPtpHidFilter_MiniPortDevice, HID\{00001124-0000-1000-8000-00805f9b34fb}_VID&0001004c_PID&0265&Col01
; To avoid confusions to OS, disable any other collections.
%AmtPtpHidFilter.NullDeviceDesc%=AmtPtpHidFilter_NullDevice, HID\VID_05AC&PID_0265&REV_0855&MI_01&Col02
%AmtPtpHidFilter.NullDeviceDesc%=AmtPtpHidFilter_NullDevice, HID\VID_05AC&PID_0265&REV_0855&MI_01&Col03
%AmtPtpHidFilter.NullDeviceDesc%=AmtPtpHidFilter_NullDevice, HID\{00001124-0000-1000-8000-00805f9b34fb}_VID&0001004c_PID&0265&Col02

[FilterDriver_Payload]
AmtPtpHidFilter.sys

[AmtPtpHidFilter_MiniPortDevice.NT]
CopyFiles=FilterDriver_Payload

[AmtPtpHidFilter_NullDevice]
; Nothing!

[AmtPtpHidFilter_NullDevice.Services]
AddService = ,2 ; no value for the service name

;-------------- Service installation
[AmtPtpHidFilter_MiniPortDevice.NT.Services]
AddService = AmtPtpHidFilter,, AmtPtpHidFilter_Service_Inst
AddService = mshidkmdf, %SPSVCINST_ASSOCSERVICE%, mshidkmdf_Service_Inst

[AmtPtpHidFilter_MiniPortDevice.NT.HW]
AddReg=AmtPtpHidFilter_AddReg

[AmtPtpHidFilter_AddReg]
HKR,,FriendlyName,,%AmtPtpHidFilter.DeviceDesc%
HKR,,"LowerFilters",0x00010008,"AmtPtpHidFilter"

[AmtPtpHidFilter_MiniPortDevice.NT.Wdf]
KmdfService = AmtPtpHidFilter, AmtPtpHidFilter_wdfsect

; -------------- Microsoft HID KMDF driver install sections
[mshidkmdf_Service_Inst]
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\System32\Drivers\mshidkmdf.sys

; -------------- AmtPtpHidFilter driver install sections
[AmtPtpHidFilter_Service_Inst]
DisplayName = %AmtPtpHidFilter.SVCDESC%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %13%\AmtPtpHidFilter.sys

[AmtPtpHidFilter_wdfsect]
KmdfLibraryVersion = $KMDFVERSION$

[Strings]
SPSVCINST_ASSOCSERVICE= 0x00000002
ManufacturerName = "Bingxing Wang"
DiskName = "AmtPtpHidFilter Installation Disk"
AmtPtpHidFilter.DeviceDesc = "Apple Touch Pad HID Filter Device"
AmtPtpHidFilter.NullDeviceDesc = "Apple Multi-touch Device"
AmtPtpHidFilter.SVCDESC = "Apple Touch Pad HID Filter Service"
Loading

0 comments on commit 734b084

Please sign in to comment.