; Copyright (c) Microsoft Corporation. All rights reserved. ; ; xinputhid.INF file ; [Version] Signature="$WINDOWS NT$" Class=HIDClass ClassGuid={745a17a0-74d3-11d0-b6fe-00a0c90f57da} Provider=%ProviderName% PnpLockdown=1 DriverVer = 04/27/2026,10.0.26100.8328 ; ================= Device section ===================== [Manufacturer] %ProviderName%=Microsoft,NTamd64 [Microsoft.NTamd64] %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&02e0 %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&02fd %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b02 %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b05 %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b0c %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b13 ; Note: the below PIDs are not currently in use but have been pre-allocated by the PID team. For a variety ; of reasons we can not use a Compatability ID for the loading of this driver, and so rely on individual ; hardware IDs, however this creates complications when releasing new BlueTooth devices since we need to ; service windows and rely on user taking the windows update before their devices will be functional. ; ; So, we are solveing this issue by preallocating a block of BTC and BTLE PIDs and checking in their ; hardware IDs to the current development branch of windows so that over time, we will get support for ; these devices in more and more shipping versions, and depending on the release date of any given device ; no servicing updates may be needed to support all the desired windows version. ; ; When releasing a new device, there are a few steps that must be taken: ; ; 1) email mshpidad@microsoft.com with details about the device so that they can update internal documenattion ; with the device details since currently it will be listed as "Xbox PID Block". ; ; 2) Add stings to this inf, and dc1-controller, in the current dev branch to cause future versions of ; windows to have a device specific string rather than the current generic string, although this ; usually will not need to be serviced back unless the string is crititcally important. It is also important ; to move the VID pid from the pre-allocated blocks to the block above this comment to ensure it is known that ; the PID is now in use by a device. ; ; 3) If either the number of BTLE or BTC PIDS in this pre-allocation list drops below 3, include a request for ; more PIDs in tthe email to mshpidad@microsoft.com with the device details to ensure there is always a large ; number of xbox pids seeded within versions of windows to allow for device development. ; ; Additionaly, Note that this list is only for BT PIDs, USB PIDs, or gip PIDs for wireless only devices, ; should be allocated from mshpidad@microsoft.com as new devices are created, and inf updates are not needed to ; load the required drivers since we have a Compatability ID for USB devices, and the xbox wireless devices do ; not use a function driver, only the 2 wirless adapters do, and both of their hardware IDs have entries in WU ; to download and load the correct driver, since they are not currently inbox. ; BTLE pre-allocated PIDS %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b20 %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b21 %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b22 %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b23 %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b24 %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b25 %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b26 %Btle_Bus.DeviceDesc%=Btle_Bus, BTHLEDevice\{00001812-0000-1000-8000-00805f9b34fb}_Dev_VID&02045e_PID&0b27 ; BTC pre-allocated PIDS %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b28 %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b29 %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b2A %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b2B %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b2C %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b2D %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b2E %Bth_Bus.DeviceDesc%=Bth_Bus, BTHENUM\{00001124-0000-1000-8000-00805f9b34fb}_VID&0002045e_PID&0b2F ; From xboxgip default appears with an GIP software PID %VID_045E&PID_02D1.DeviceDesc%=GIP_Hid, HID\VID_045E&PID_02D1&IG_00 %VID_045E&PID_02DD.DeviceDesc%=GIP_Hid, HID\VID_045E&PID_02DD&IG_00 %VID_045E&PID_02E3.DeviceDesc%=GIP_Hid, HID\VID_045E&PID_02E3&IG_00 %VID_045E&PID_02EA.DeviceDesc%=GIP_Hid, HID\VID_045E&PID_02EA&IG_00 %VID_045E&PID_0B00.DeviceDesc%=GIP_Hid, HID\VID_045E&PID_0B00&IG_00 %VID_045E&PID_0B0A.DeviceDesc%=GIP_Hid, HID\VID_045E&PID_0B0A&IG_00 %VID_045E&PID_0B13.DeviceDesc%=GIP_Hid, HID\VID_045E&PID_0B13&IG_00 %GIP_Hid.DeviceDesc%=GIP_Hid, HID\VID_045E&PID_02FF&IG_00 ; Possibly scope to specific vendors, like HID\VID_045E&UP:0001_U:0005 for all MSFT HID game usage controllers ;%Managed_Hid.DeviceDesc%=Managed_Hid, HID_DEVICE_UP:0001_U:0005 ; ; Format for each DDInstall subsection/section is ; All DDInstall common overrides ; Last XInputHid reference ; XInputhid specific values referenced from above reference ; Next required subsection/section ; [Bth_Bus] Include=hidbth.inf Needs=HIDBTH_Inst.NT CopyFiles=XInput_Hid.CopyFiles AddReg=XInput_Hid.AddReg,Bth_Bus.AddReg [Btle_Bus] Include=hidbthle.inf Needs=HidBthLE.NT CopyFiles=XInput_Hid.CopyFiles AddReg=XInput_Hid.AddReg,Btle_Bus.AddReg [Btle_Bus.Wdf] Include=hidbthle.inf Needs=HidBthLE.NT.Wdf ;[Managed_Hid] ;CopyFiles=XInput_Hid.CopyFiles ;AddReg=XInput_Hid.AddReg,Managed_Hid.AddReg [GIP_Hid] CopyFiles=XInput_Hid.CopyFiles AddReg=XInput_Hid.AddReg,GIP_Hid.AddReg ; Unused for reference ;[XInput_Hid] ;CopyFiles=XInput_Hid.CopyFiles ;AddReg=XInput_Hid.AddReg [XInput_Hid.CopyFiles] xinputhid.sys ; ; XInputHid property is a bitmask, from xinputhid.h ; Please keep in sync with xinputhid.h declaration ;// ;// Device properties to mark the type of device XInputHid is on top of ;// BusDevice means we're a focused bus filter driver for the IG_ problem ;// XInputCompatibleDevice means the device can be translated to XInput ;// GenericHidDevice means a device that is a HID device ;// GipRootedDevice means a device that is originated by GIP ;// ;typedef enum ;{ ; BusDevice = 0x1, ; XInputCompatibleDevice = 0x2, ; GenericHidDevice = 0x4, ; GipRootedDevice = 0x8, ; AndroidDevice = 0x10 ;} XINPUTHID_DEVICEPROPERTY_FLAGS; ; [Bth_Bus.AddReg] HKR,,"DevicePropertyFlags", 0x00010001, 0x1 [Btle_Bus.AddReg] HKR,,"DevicePropertyFlags", 0x00010001, 0x1 [XInput_Hid.AddReg] HKR,,"DevicePropertyFlags", 0x00010001, 0xE HKR,,"ConfigFlags", 0x00010001, 1 ;[Managed_Hid.AddReg] ;HKR,,"DevicePropertyFlags", 0x00010001, 0x4 [GIP_Hid.AddReg] HKR,,"DevicePropertyFlags", 0x00010001, 0xE ; copies of XInput_Hid for each DDInstall section [Bth_Bus.HW] Include=hidbth.inf Needs=HIDBTH_Inst.NT.HW AddReg=XInput_Hid.AddRegHW [Btle_Bus.HW] Include=hidbthle.inf Needs=HidBthLE.NT.hw AddReg=XInput_Hid.AddRegHW ;[Managed_Hid.HW] ;AddReg=XInput_Hid.AddRegHW [GIP_Hid.HW] AddReg=XInput_Hid.AddRegHW ;[XInput_Hid.HW] ;AddReg=XInput_Hid.AddRegHW [XInput_Hid.AddRegHW] HKR,,"UpperFilters",0x00010008,"xinputhid" ; REG_MULTI_SZ value ; copies of XInput_Hid for each DDInstall section [Bth_Bus.Services] Include=hidbth.inf Needs=HIDBTH_Inst.NT.Services AddService=xinputhid,,XInput_HidService ; filter driver [Btle_Bus.Services] Include=hidbthle.inf Needs=HidBthLE.NT.Services AddService=xinputhid,,XInput_HidService ; filter driver ;[Managed_Hid.Services] ;AddService=xinputhid,,XInput_HidService ; filter driver [GIP_Hid.Services] AddService=xinputhid,,XInput_HidService ; filter driver AddService=,2 ; null function driver for raw PDO ;[XInput_Hid.Services] ;AddService=xinputhid,,XInput_HidService ; filter driver [XInput_HidService] DisplayName = %xinputhid.SvcDesc% ServiceType = 1 ; SERVICE_KERNEL_DRIVER StartType = 3 ; SERVICE_DEMAND_START ErrorControl = 1 ; SERVICE_ERROR_NORMAL ServiceBinary = %12%\xinputhid.sys AddReg = XInput_Hid.AddReg LoadOrderGroup = Base ;********************************************************************** ; Destination directories ;********************************************************************** [DestinationDirs] CopyFile.Sys = 12 DefaultDestDir = 12 [SourceDisksNames] 1=%Disk_Description%,, [SourceDisksFiles] xinputhid.sys = 1 ;---------------------------------------------------------------; [Strings] ProviderName = "Microsoft" Disk_Description = "XINPUT HID Filter Driver Installation Disk" xinputhid.SvcDesc = "XINPUT HID Filter Driver" Bth_Bus.DeviceDesc = "Bluetooth XINPUT compatible input device" Btle_Bus.DeviceDesc = "Bluetooth LE XINPUT compatible input device" Gip_Hid.DeviceDesc = "XINPUT compatible HID device" VID_045E&PID_02D1.DeviceDesc = "Xbox One Wireless Controller" VID_045E&PID_02DD.DeviceDesc = "Xbox One Wireless Controller" VID_045E&PID_02E3.DeviceDesc = "Xbox One Elite Wireless Controller" VID_045E&PID_02EA.DeviceDesc = "Xbox One Wireless Controller" VID_045E&PID_0B00.DeviceDesc = "Xbox One Wireless Controller" VID_045E&PID_0B0A.DeviceDesc = "Xbox Adaptive Controller" VID_045E&PID_0B13.DeviceDesc = "Xbox Wireless Controller" Managed_Hid.DeviceDesc = "Managed HID Gaming device"