From: Doron Holan [MSFT] on 17 Nov 2009 13:39 yes, you could write a KMDF bus driver that enumerated a PDO on which you loaded a HID stack (you can use the KMDF HID sample in the latest WDK to see how this would work). in this case the PDO would not be raw because you would be loading hidclass on top of it d -- This posting is provided "AS IS" with no warranties, and confers no rights. "gti4ever" <gti4ever(a)discussions.microsoft.com> wrote in message news:8F10B932-3508-4F25-8BAF-0338F8EE2DC5(a)microsoft.com... > Thanks Doron, I found the problem in my code, it works ok now. > > If you don't mind, I'd like to ask you a design question. The driver that > I > was experimenting with is actually a virtual HID minidriver, that is why I > need a raw PDO to send test data to it. > > I am just wondering, is it possible to create a regular UMDF + KMDF hybrid > driver and use that KMDF driver to enumerate a raw PDO as a HID > minidriver? > Can this be done? I just want to get your opinion before I start implement > it. > > Thanks. > > G. > > > > > > "Doron Holan [MSFT]" wrote: > >> look at the setup logs and see what went wrong. how did you try to >> install >> the FDO? with devcon or through the device manager UI? >> >> d >> >> -- >> >> This posting is provided "AS IS" with no warranties, and confers no >> rights. >> >> >
From: gti4ever on 18 Nov 2009 13:14 Hi Doron, I thought the problem went away but it turned out it only worked for Win 7. Under XP, I am still getting the "cannot find the hardware device (0x41)" error. I used Devcon for the installation since it is a virtual driver. Here is part of the log file that related to the raw PDO: #I124 Doing copy-only install of "{E7F5CFF5-E2C2-4A85-BE17-1951F347E07F}\TESTDEVICE\1&2D595CA7&26&01". #-166 Device install function: DIF_REGISTER_COINSTALLERS. #I056 Coinstallers registered. #-166 Device install function: DIF_INSTALLINTERFACES. #-011 Installing section [testDevice1.Inst.NT.Interfaces] from "c:\windows\inf\oem37.inf". #I054 Interfaces installed. #-166 Device install function: DIF_INSTALLDEVICE. #I123 Doing full install of "{E7F5CFF5-E2C2-4A85-BE17-1951F347E07F}\TESTDEVICE\1&2D595CA7&26&01". #I163 Device not started: Device has problem: 0x29: CM_PROB_LEGACY_SERVICE_NO_DEVICES. #I121 Device install of "{E7F5CFF5-E2C2-4A85-BE17-1951F347E07F}\TESTDEVICE\1&2D595CA7&26&01" finished successfully. Is there a limitation on XP that prevent this from working? Thanks. G. "Doron Holan [MSFT]" wrote: > look at the setup logs and see what went wrong. how did you try to install > the FDO? with devcon or through the device manager UI? > > d > > --
From: Abhishek R [MSFT] on 19 Nov 2009 02:17 Could you post your INF file? "gti4ever" <gti4ever(a)discussions.microsoft.com> wrote in message news:8DACB208-1FA8-41CB-A15F-5303BCC12F88(a)microsoft.com... > Hi Doron, > > I thought the problem went away but it turned out it only worked for Win > 7. > Under XP, I am still getting the "cannot find the hardware device (0x41)" > error. > > I used Devcon for the installation since it is a virtual driver. Here is > part of the log file that related to the raw PDO: > > #I124 Doing copy-only install of > "{E7F5CFF5-E2C2-4A85-BE17-1951F347E07F}\TESTDEVICE\1&2D595CA7&26&01". > #-166 Device install function: DIF_REGISTER_COINSTALLERS. > #I056 Coinstallers registered. > #-166 Device install function: DIF_INSTALLINTERFACES. > #-011 Installing section [testDevice1.Inst.NT.Interfaces] from > "c:\windows\inf\oem37.inf". > #I054 Interfaces installed. > #-166 Device install function: DIF_INSTALLDEVICE. > #I123 Doing full install of > "{E7F5CFF5-E2C2-4A85-BE17-1951F347E07F}\TESTDEVICE\1&2D595CA7&26&01". > #I163 Device not started: Device has problem: 0x29: > CM_PROB_LEGACY_SERVICE_NO_DEVICES. > #I121 Device install of > "{E7F5CFF5-E2C2-4A85-BE17-1951F347E07F}\TESTDEVICE\1&2D595CA7&26&01" > finished > successfully. > > Is there a limitation on XP that prevent this from working? > > Thanks. > > G. > > > "Doron Holan [MSFT]" wrote: > >> look at the setup logs and see what went wrong. how did you try to >> install >> the FDO? with devcon or through the device manager UI? >> >> d >> >> -- >
From: gti4ever on 19 Nov 2009 16:20 Abhishek, Here is the INF file. It is basically a combination of WDK virtual HID mini driver and UMDF filter driver INF files. [Version] Signature="$WINDOWS NT$" Class=HIDClass ClassGuid={745a17a0-74d3-11d0-b6fe-00a0c90f57da} Provider=%VENDOR% CatalogFile=test.cat LayoutFile=Layout.inf DriverVer=09/21/2009,6.1.7600.16385 ; ; Layout.inf (etc.) list all files shipped with the operating system so the ; source description sections are only needed if other files are needed. ; ; In order to use IHV drivers, the SourceDisksNames section must list the ; disk(s) containing the drivers and the SourceDisksFiles section must list ; which disk number each file to be copied is found on. ; Disk number 99 is used to avoid a conflict with the disk numbers defined ; in layout.inf ; ; Files used in a driver installation need to be digitally signed otherwise ; installation may fail. See documentation elsewhere in the DDK regarding ; driver signing. [SourceDisksNames.x86] 99 = %DISK_NAME%,,,\i386 [SourceDisksNames.amd64] 99 = %DISK_NAME%,,,\amd64 [SourceDisksFiles] KMDFTest.sys = 99 hidkmdf.sys = 99 WdfCoInstaller01009.dll = 99 [DestinationDirs] CopyFilesSYS = 12 ; should it be 10 to take care of 98 stuff?????? CopyFilesDLL = 11 ; CopyFunctionDriver = 12 ; [Manufacturer] %VENDOR%=Vendor,NTx86,NTia64,NTAMD64,NTAMD64.6.1,NTx86.6.1 ; For XP and later [Vendor.NTx86] %test% = test.Inst, {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE %testDevice% = testDevice.Inst, HID\testVirtualDevice %testDevice1% = testDevice1.Inst, {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice [Vendor.NTx86.6.1] %test% = test.Inst.Win7, {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE %testDevice% = testDevice.Inst, HID\testVirtualDevice %testDevice1% = testDevice1.Inst, {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice [Vendor.NTia64] %test% = test.Inst, {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE %testDevice% = testDevice.Inst, HID\testVirtualDevice %testDevice1% = testDevice1.Inst, {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice [Vendor.NTAMD64] %test% = test.Inst, {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE %testDevice% = testDevice.Inst, HID\testVirtualDevice %testDevice1% = testDevice1.Inst, {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice [Vendor.NTAMD64.6.1] %test% = test.Inst.Win7, {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE %testDevice% = testDevice.Inst, HID\testVirtualDevice %testDevice1% = testDevice1.Inst, {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice [ControlFlags] ExcludeFromSelect = {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice ;-------------------------------------------- ;Windows 7 only ; ;------------------------------------------------- ;[test.Inst.Win7] [test.Inst.Win7.NT] CopyFiles = CopyFilesSYS, CopyFilesDLL [test.Inst.Win7.NT.HW] AddReg = test_Win7_Parameters.AddReg [test.Inst.Win7.NT.Services] AddService = test,0x00000002,test_Service_Inst [test_Win7_Parameters.AddReg] HKR,,"UpperFilters",0x00010000,"mshidkmdf" ;=============================================================== ; test install section till Windows Vista ;=============================================================== ;[test.Inst] [test.Inst.NT] CopyFiles = CopyFilesSYS, CopyFilesDLL,CopyFunctionDriver [test.Inst.NT.HW] AddReg = test_Parameters.AddReg [test.Inst.NT.Services] AddService = test,0x00000002,test_Service_Inst, AddService = hidkmdf,, HidShim_Service_Inst [CopyFunctionDriver] hidkmdf.sys [test_Parameters.AddReg] HKR,,"UpperFilters",0x00010000,"hidkmdf" ; -------------- devlower Driver install section [HidShim_Service_Inst] DisplayName = %HIDSHIM.SVCDESC% ServiceType = 1 ; SERVICE_KERNEL_DRIVER StartType = 3 ; SERVICE_DEMAND_START ErrorControl = 1 ; SERVICE_ERROR_NORMAL ServiceBinary = %12%\hidkmdf.sys LoadOrderGroup = PNP Filter ;--------------------------------------------------- ;Common section ;---------------------------------------------------- [CopyFilesSYS] KMDFTest.sys [CopyFilesDLL] WdfCoInstaller01009.dll [test_Service_Inst] DisplayName = %test% ServiceType = %SERVICE_KERNEL_DRIVER% StartType = %SERVICE_DEMAND_START% ErrorControl = %SERVICE_ERROR_IGNORE% ServiceBinary = %12%\KMDFTest.sys ;=============================================================== ; testDevice install section ; - Only a Null service is installed. ;=============================================================== [testDevice.Inst] [testDevice.Inst.NT] [testDevice.Inst.NT.Services] AddService = ,0x00000002, ; NULL Service ;=============================================================== ; testDevice install section ; - Only a Null service is installed. ;=============================================================== ;[testDevice1.Inst] [testDevice1.Inst.NT] CopyFiles = UMDriverCopy [testDevice1.Inst.NT.hw] AddReg=testDevice1_AddReg [testDevice1.Inst.NT.CoInstallers] AddReg=CoInstaller_AddReg CopyFiles=CoInstaller_CopyFiles [testDevice1.Inst.NT.Services] AddService = WUDFRd,,WUDFRD_ServiceInstall [testDevice1.Inst.NT.Wdf] UmdfService="UMDFTest", UMDFTest_Install UmdfServiceOrder=UMDFTest [UMDriverCopy] UMDFTest.dll [testDevice1_AddReg] HKR,,"UpperFilters",0x00010008,"WUDFRd" ; FLG_ADDREG_TYPE_MULTI_SZ | FLG_ADDREG_APPEND [WUDFRD_ServiceInstall] DisplayName = %WudfRdDisplayName% ServiceType = 1 StartType = 3 ErrorControl = 1 ServiceBinary = %12%\WUDFRd.sys LoadOrderGroup = Base [UMDFTest_Install] UmdfLibraryVersion=1.9.0 DriverCLSID = "{6247DF9B-6C7B-4aee-9935-DB7CA478BCDD}" ServiceBinary = "%12%\UMDF\UMDFTest.dll" [DestinationDirs] UMDriverCopy=12,UMDF ; copy to drivers\umdf [SourceDisksFiles] WdfCoInstaller01009.dll = 99 WudfUpdate_01009.dll = 99 UMDFTest.dll = 99 [CoInstaller_CopyFiles] WdfCoInstaller01009.dll WudfUpdate_01009.dll [CoInstaller_AddReg] HKR,,CoInstallers32,0x00010000,"WudfUpdate_01009.dll" ;================================================================ ;--- WDF Coinstaller installation ------ ; [DestinationDirs] test.Inst_CoInstaller_CopyFiles = 11 [test.Inst.NT.CoInstallers] AddReg=test.Inst_CoInstaller_AddReg CopyFiles=test.Inst_CoInstaller_CopyFiles [test.Inst_CoInstaller_AddReg] HKR,,CoInstallers32,0x00010000, "wdfcoinstaller01009.dll,WdfCoInstaller" [test.Inst_CoInstaller_CopyFiles] wdfcoinstaller01009.dll [SourceDisksFiles] wdfcoinstaller01009.dll=99 ; make sure the number matches with SourceDisksNames [test.Inst.NT.Wdf] KmdfService = test, test_wdfsect [test_wdfsect] KmdfLibraryVersion = 1.9 [Strings] ; *******Localizable Strings******* VENDOR = "Microsoft" test = "test virtual HID device" testDevice = "test Virtual HID Device" testDevice1 = "test Virtual HID Device raw PDO" DISK_NAME = "test HID Device Install Disk" HIDSHIM.SVCDESC= "Service for HID-KMDF Shim layer" WudfRdDisplayName="Windows Driver Foundation - User-mode Driver Framework Reflector" ; *******Non Localizable Strings******* SERVICE_BOOT_START = 0x0 SERVICE_SYSTEM_START = 0x1 SERVICE_AUTO_START = 0x2 SERVICE_DEMAND_START = 0x3 SERVICE_DISABLED = 0x4 SERVICE_KERNEL_DRIVER = 0x1 SERVICE_ERROR_IGNORE = 0x0 SERVICE_ERROR_NORMAL = 0x1 SERVICE_ERROR_SEVERE = 0x2 SERVICE_ERROR_CRITICAL = 0x3 REG_EXPAND_SZ = 0x00020000 REG_DWORD = 0x00010001 REG_MULTI_SZ = 0x00010000 REG_BINARY = 0x00000001 REG_SZ = 0x00000000
From: Abhishek R [MSFT] on 20 Nov 2009 13:52 Try installing specifying your UMDF driver as the function driver for the device. I.e. specify the 0x2 flag in the following AddService directive. > [testDevice1.Inst.NT.Services] > AddService = WUDFRd,,WUDFRD_ServiceInstall "gti4ever" <gti4ever(a)discussions.microsoft.com> wrote in message news:7F7520CF-767E-4FD1-9BBF-996CFDE4BC41(a)microsoft.com... > Abhishek, > > Here is the INF file. It is basically a combination of WDK virtual HID > mini > driver and UMDF filter driver INF files. > > > [Version] > Signature="$WINDOWS NT$" > Class=HIDClass > ClassGuid={745a17a0-74d3-11d0-b6fe-00a0c90f57da} > Provider=%VENDOR% > CatalogFile=test.cat > LayoutFile=Layout.inf > DriverVer=09/21/2009,6.1.7600.16385 > > ; > ; Layout.inf (etc.) list all files shipped with the operating system so > the > ; source description sections are only needed if other files are needed. > ; > ; In order to use IHV drivers, the SourceDisksNames section must list > the > ; disk(s) containing the drivers and the SourceDisksFiles section must > list > ; which disk number each file to be copied is found on. > ; Disk number 99 is used to avoid a conflict with the disk numbers > defined > ; in layout.inf > ; > ; Files used in a driver installation need to be digitally signed > otherwise > ; installation may fail. See documentation elsewhere in the DDK > regarding > ; driver signing. > > [SourceDisksNames.x86] > 99 = %DISK_NAME%,,,\i386 > > [SourceDisksNames.amd64] > 99 = %DISK_NAME%,,,\amd64 > > [SourceDisksFiles] > KMDFTest.sys = 99 > hidkmdf.sys = 99 > WdfCoInstaller01009.dll = 99 > > [DestinationDirs] > CopyFilesSYS = 12 ; should it be 10 to take care of 98 stuff?????? > CopyFilesDLL = 11 ; > CopyFunctionDriver = 12 ; > > [Manufacturer] > %VENDOR%=Vendor,NTx86,NTia64,NTAMD64,NTAMD64.6.1,NTx86.6.1 > > ; For XP and later > [Vendor.NTx86] > %test% = test.Inst, {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE > %testDevice% = testDevice.Inst, HID\testVirtualDevice > %testDevice1% = testDevice1.Inst, > {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice > > [Vendor.NTx86.6.1] > %test% = test.Inst.Win7, > {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE > %testDevice% = testDevice.Inst, HID\testVirtualDevice > %testDevice1% = testDevice1.Inst, > {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice > > [Vendor.NTia64] > %test% = test.Inst, {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE > %testDevice% = testDevice.Inst, HID\testVirtualDevice > %testDevice1% = testDevice1.Inst, > {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice > > [Vendor.NTAMD64] > %test% = test.Inst, {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE > %testDevice% = testDevice.Inst, HID\testVirtualDevice > %testDevice1% = testDevice1.Inst, > {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice > > [Vendor.NTAMD64.6.1] > %test% = test.Inst.Win7, > {7D6DE072-9104-464f-BEF9-5730D4E631E2}\HID_DEVICE > %testDevice% = testDevice.Inst, HID\testVirtualDevice > %testDevice1% = testDevice1.Inst, > {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice > > [ControlFlags] > ExcludeFromSelect = {E7F5CFF5-E2C2-4a85-BE17-1951F347E07F}\testDevice > > ;-------------------------------------------- > ;Windows 7 only > ; > ;------------------------------------------------- > ;[test.Inst.Win7] > > [test.Inst.Win7.NT] > CopyFiles = CopyFilesSYS, CopyFilesDLL > > [test.Inst.Win7.NT.HW] > AddReg = test_Win7_Parameters.AddReg > > [test.Inst.Win7.NT.Services] > AddService = test,0x00000002,test_Service_Inst > > [test_Win7_Parameters.AddReg] > HKR,,"UpperFilters",0x00010000,"mshidkmdf" > > ;=============================================================== > ; test install section till Windows Vista > ;=============================================================== > > ;[test.Inst] > > [test.Inst.NT] > CopyFiles = CopyFilesSYS, CopyFilesDLL,CopyFunctionDriver > > [test.Inst.NT.HW] > AddReg = test_Parameters.AddReg > > [test.Inst.NT.Services] > AddService = test,0x00000002,test_Service_Inst, > AddService = hidkmdf,, HidShim_Service_Inst > > [CopyFunctionDriver] > hidkmdf.sys > > [test_Parameters.AddReg] > HKR,,"UpperFilters",0x00010000,"hidkmdf" > > ; -------------- devlower Driver install section > [HidShim_Service_Inst] > DisplayName = %HIDSHIM.SVCDESC% > ServiceType = 1 ; SERVICE_KERNEL_DRIVER > StartType = 3 ; SERVICE_DEMAND_START > ErrorControl = 1 ; SERVICE_ERROR_NORMAL > ServiceBinary = %12%\hidkmdf.sys > LoadOrderGroup = PNP Filter > > > > > ;--------------------------------------------------- > ;Common section > ;---------------------------------------------------- > [CopyFilesSYS] > KMDFTest.sys > > [CopyFilesDLL] > WdfCoInstaller01009.dll > > > [test_Service_Inst] > DisplayName = %test% > ServiceType = %SERVICE_KERNEL_DRIVER% > StartType = %SERVICE_DEMAND_START% > ErrorControl = %SERVICE_ERROR_IGNORE% > ServiceBinary = %12%\KMDFTest.sys > > > ;=============================================================== > ; testDevice install section > ; - Only a Null service is installed. > ;=============================================================== > [testDevice.Inst] > > [testDevice.Inst.NT] > > [testDevice.Inst.NT.Services] > AddService = ,0x00000002, ; NULL Service > > ;=============================================================== > ; testDevice install section > ; - Only a Null service is installed. > ;=============================================================== > ;[testDevice1.Inst] > > [testDevice1.Inst.NT] > CopyFiles = UMDriverCopy > > [testDevice1.Inst.NT.hw] > AddReg=testDevice1_AddReg > > [testDevice1.Inst.NT.CoInstallers] > AddReg=CoInstaller_AddReg > CopyFiles=CoInstaller_CopyFiles > > [testDevice1.Inst.NT.Services] > AddService = WUDFRd,,WUDFRD_ServiceInstall > > [testDevice1.Inst.NT.Wdf] > UmdfService="UMDFTest", UMDFTest_Install > UmdfServiceOrder=UMDFTest > > [UMDriverCopy] > UMDFTest.dll > > [testDevice1_AddReg] > HKR,,"UpperFilters",0x00010008,"WUDFRd" ; FLG_ADDREG_TYPE_MULTI_SZ | > FLG_ADDREG_APPEND > > [WUDFRD_ServiceInstall] > DisplayName = %WudfRdDisplayName% > ServiceType = 1 > StartType = 3 > ErrorControl = 1 > ServiceBinary = %12%\WUDFRd.sys > LoadOrderGroup = Base > > [UMDFTest_Install] > UmdfLibraryVersion=1.9.0 > DriverCLSID = "{6247DF9B-6C7B-4aee-9935-DB7CA478BCDD}" > ServiceBinary = "%12%\UMDF\UMDFTest.dll" > > [DestinationDirs] > UMDriverCopy=12,UMDF ; copy to drivers\umdf > > [SourceDisksFiles] > WdfCoInstaller01009.dll = 99 > WudfUpdate_01009.dll = 99 > UMDFTest.dll = 99 > > [CoInstaller_CopyFiles] > WdfCoInstaller01009.dll > WudfUpdate_01009.dll > > [CoInstaller_AddReg] > HKR,,CoInstallers32,0x00010000,"WudfUpdate_01009.dll" > > ;================================================================ > ;--- WDF Coinstaller installation ------ > ; > [DestinationDirs] > test.Inst_CoInstaller_CopyFiles = 11 > > [test.Inst.NT.CoInstallers] > AddReg=test.Inst_CoInstaller_AddReg > CopyFiles=test.Inst_CoInstaller_CopyFiles > > [test.Inst_CoInstaller_AddReg] > HKR,,CoInstallers32,0x00010000, "wdfcoinstaller01009.dll,WdfCoInstaller" > > [test.Inst_CoInstaller_CopyFiles] > wdfcoinstaller01009.dll > > [SourceDisksFiles] > wdfcoinstaller01009.dll=99 ; make sure the number matches with > SourceDisksNames > > [test.Inst.NT.Wdf] > KmdfService = test, test_wdfsect > > [test_wdfsect] > KmdfLibraryVersion = 1.9 > > > > [Strings] > ; *******Localizable Strings******* > VENDOR = "Microsoft" > test = "test virtual HID device" > testDevice = "test Virtual HID Device" > testDevice1 = "test Virtual HID Device raw PDO" > DISK_NAME = "test HID Device Install Disk" > HIDSHIM.SVCDESC= "Service for HID-KMDF Shim layer" > WudfRdDisplayName="Windows Driver Foundation - User-mode Driver Framework > Reflector" > > ; *******Non Localizable Strings******* > > SERVICE_BOOT_START = 0x0 > SERVICE_SYSTEM_START = 0x1 > SERVICE_AUTO_START = 0x2 > SERVICE_DEMAND_START = 0x3 > SERVICE_DISABLED = 0x4 > > SERVICE_KERNEL_DRIVER = 0x1 > SERVICE_ERROR_IGNORE = 0x0 > SERVICE_ERROR_NORMAL = 0x1 > SERVICE_ERROR_SEVERE = 0x2 > SERVICE_ERROR_CRITICAL = 0x3 > > REG_EXPAND_SZ = 0x00020000 > REG_DWORD = 0x00010001 > REG_MULTI_SZ = 0x00010000 > REG_BINARY = 0x00000001 > REG_SZ = 0x00000000 > > >
First
|
Prev
|
Pages: 1 2 Prev: Sending setup packet to USB control endpoint Next: WDF Wait Lock Usage |