Hi
Need clarity on the HIDUSBFX2 sample drivers present in WDK7 and WDK8.1 . In WDK7 HIDUSBFX2 sample , the hidusbfx2 driver is loaded as a function driver and mshidkmdf.sys is loaded as an upperfilter driver . But the same HIDUSBFX2 sample in WDK8.1 , loads hidusbfx2.sys as a Lower filter driver and mshidkmdf.sys as function driver. The description html file in both the sample says that hidusbfx2.sys should be loaded as a filter driver.
Can anyone let me know which one is correct?
Both are correct in that they both create the right ordering in the stack. Since a driver has hard coded knowledge of its role (fdo, filter, miniport, etc), the difference between versions of the sample is semantic. The later ones are more correct in that hidclass behaves like the function driver, so it is installed as such
d
Bent from my phone
From: xxxxx@gmail.commailto:xxxxx
Sent: ?8/?23/?2014 5:33 AM
To: Windows System Software Devs Interest Listmailto:xxxxx
Subject: [ntdev] fx2 sample
Hi
Need clarity on the HIDUSBFX2 sample drivers present in WDK7 and WDK8.1 . In WDK7 HIDUSBFX2 sample , the hidusbfx2 driver is loaded as a function driver and mshidkmdf.sys is loaded as an upperfilter driver . But the same HIDUSBFX2 sample in WDK8.1 , loads hidusbfx2.sys as a Lower filter driver and mshidkmdf.sys as function driver. The description html file in both the sample says that hidusbfx2.sys should be loaded as a filter driver.
Can anyone let me know which one is correct?
—
NTDEV is sponsored by OSR
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer</mailto:xxxxx></mailto:xxxxx>
Hi Doron
Thank you for the clarification.
Hi Doron
The device that i am using is a HID device . When connected , Windows loads the inbox hid driver for it and the device works fine . As a learning process , i am using hidusbfx2 driver and trying to read descriptors from the device . In HidFx2GetHidDescriptor function , instead of sending hardcoded values , i am trying to read the descriptors from the device.
I used the following code in HidFx2GetHidDescriptor function to retrieve the device descriptor . But i am getting “WdfIoTargetSendIoctlSynchronously failed with status 0xc0000010”
WDF_MEMORY_DESCRIPTOR outputDescriptor;
DeviceContext = GetDeviceContext(Device);
HID_DESCRIPTOR HidDeviceDescriptor;
WDF_MEMORY_DESCRIPTOR_INIT_BUFFER(
&outputDescriptor,
(PVOID) &HidDeviceDescriptor,
sizeof(HID_DESCRIPTOR)
);
status = WdfIoTargetSendIoctlSynchronously(
DeviceContext->hidTarget,
NULL,
IOCTL_HID_GET_DEVICE_DESCRIPTOR ,
NULL,
&outputDescriptor,
NULL,
NULL
);
if (!NT_SUCCESS(status)) {
KdPrint((“WdfIoTargetSendIoctlSynchronously failed with status 0x%x\n”, status));
}
You are replacing hidusb, the inbox hid miniport. That means you must implement the USB hid standard. No small task. IOCTL_HID_GET_DEVICE_DESCRIPTOR is an upper level ioctl that hidclass turns into for the miniport, you can’t just send it down the stack.you need to handle it in a USB way
d
Bent from my phone
From: xxxxx@gmail.commailto:xxxxx
Sent: ?8/?23/?2014 7:27 AM
To: Windows System Software Devs Interest Listmailto:xxxxx
Subject: RE:[ntdev] fx2 sample
Hi Doron
The device that i am using is a HID device . When connected , Windows loads the inbox hid driver for it and the device works fine . As a learning process , i am using hidusbfx2 driver and trying to read descriptors from the device . In HidFx2GetHidDescriptor function , instead of sending hardcoded values , i am trying to read the descriptors from the device.
I used the following code in HidFx2GetHidDescriptor function to retrieve the device descriptor . But i am getting “WdfIoTargetSendIoctlSynchronously failed with status 0xc0000010”
WDF_MEMORY_DESCRIPTOR outputDescriptor;
DeviceContext = GetDeviceContext(Device);
HID_DESCRIPTOR HidDeviceDescriptor;
WDF_MEMORY_DESCRIPTOR_INIT_BUFFER(
&outputDescriptor,
(PVOID) &HidDeviceDescriptor,
sizeof(HID_DESCRIPTOR)
);
status = WdfIoTargetSendIoctlSynchronously(
DeviceContext->hidTarget,
NULL,
IOCTL_HID_GET_DEVICE_DESCRIPTOR ,
NULL,
&outputDescriptor,
NULL,
NULL
);
if (!NT_SUCCESS(status)) {
KdPrint((“WdfIoTargetSendIoctlSynchronously failed with status 0x%x\n”, status));
}
—
NTDEV is sponsored by OSR
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer</mailto:xxxxx></mailto:xxxxx>
Hi Doron
>> You are replacing hidusb, the inbox hid miniport
If my understanding is correct , then hidusbfx2 driver stack will look like
hidclass–>mshidkmdf–>hidusbfx2–>usbhub->EHCI/OHCI
- You said the i am replacing the inbox hid miniport (ie,hidusb.sys) . If so then after installing my driver , the device manager shows
std.openHCD USB HC–>USB Root Hub–>USB Input Device–>KMDF HID minidriver for OSR FX2
If i see the properties of “USB Input Device” , i can see hidclass,hidparse and hidusb.sys drivers loaded. if hidusb driver is replaced then how it is loaded .
- I tried sending the HID_GET_COLLECTION_INFORMATION like the same way i passed IOCTL_HID_GET_DEVICE_DESCRIPTOR . This IOCTL passes successfully . Then why IOCTL_HID_GET_DEVICE_DESCRIPTOR is failing ? . Plz correct me if i am missing anything.
WDF_MEMORY_DESCRIPTOR_INIT_BUFFER(
&outputDescriptor,
(PVOID) &collectionInformation,
sizeof(HID_COLLECTION_INFORMATION)
);
status = WdfIoTargetSendIoctlSynchronously(
DeviceContext->hidTarget,
NULL,
IOCTL_HID_GET_COLLECTION_INFORMATION,
NULL,
&outputDescriptor,
NULL,
NULL
);
if (!NT_SUCCESS(status)) {
KdPrint((“WdfIoTargetSendIoctlSynchronously failed 0x%x\n”, status));
}
else
{
KdPrint((“WdfIoTargetSendIoctlSynchronously success\n”));
}
You are installing on top of the hid pdo. Your description was not clear. IOCTL_HID_GET_DEVICE_DESCRIPTOR is valid to send. I don’t remember if that one requires a file object
d
Bent from my phone
From: xxxxx@gmail.commailto:xxxxx
Sent: ?8/?23/?2014 5:56 PM
To: Windows System Software Devs Interest Listmailto:xxxxx
Subject: RE:[ntdev] fx2 sample
Hi Doron
>>> You are replacing hidusb, the inbox hid miniport
If my understanding is correct , then hidusbfx2 driver stack will look like
hidclass–>mshidkmdf–>hidusbfx2–>usbhub->EHCI/OHCI
1. You said the i am replacing the inbox hid miniport (ie,hidusb.sys) . If so then after installing my driver , the device manager shows
std.openHCD USB HC–>USB Root Hub–>USB Input Device–>KMDF HID minidriver for OSR FX2
If i see the properties of “USB Input Device” , i can see hidclass,hidparse and hidusb.sys drivers loaded. if hidusb driver is replaced then how it is loaded .
2. I tried sending the HID_GET_COLLECTION_INFORMATION like the same way i passed IOCTL_HID_GET_DEVICE_DESCRIPTOR . This IOCTL passes successfully . Then why IOCTL_HID_GET_DEVICE_DESCRIPTOR is failing ? . Plz correct me if i am missing anything.
WDF_MEMORY_DESCRIPTOR_INIT_BUFFER(
&outputDescriptor,
(PVOID) &collectionInformation,
sizeof(HID_COLLECTION_INFORMATION)
);
status = WdfIoTargetSendIoctlSynchronously(
DeviceContext->hidTarget,
NULL,
IOCTL_HID_GET_COLLECTION_INFORMATION,
NULL,
&outputDescriptor,
NULL,
NULL
);
if (!NT_SUCCESS(status)) {
KdPrint((“WdfIoTargetSendIoctlSynchronously failed 0x%x\n”, status));
}
else
{
KdPrint((“WdfIoTargetSendIoctlSynchronously success\n”));
}
—
NTDEV is sponsored by OSR
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer</mailto:xxxxx></mailto:xxxxx>
Hi Doron
While digging deep , i found one thing and wanted to confirm whether my understanding is correct. In the below mentioned link there are two types of HIDClass IOCTLs -> HID Class Driver IOCTLs and HID Minidriver IOCTLs .
http://msdn.microsoft.com/en-us/library/windows/hardware/ff538848(v=vs.85).aspx
If i use the IOCTLs mentioned under section “HID Class Driver IOCTLs” in WdfIoTargetSendIoctlSynchronously call , then the call passes successfully and am able to get the values .
But If i use the IOCTLs mentioned under section “HID Minidriver IOCTLs” in WdfIoTargetSendIoctlSynchronously call , then i get
“WdfIoTargetSendIoctlSynchronously failed with status 0xc0000010”
Can you plz clarify?
Think about the driver you sending they ioctls to. It is a hid pdo, thus the public facing “HID Class Driver IOCTLs” . HID Minidriver IOCTLs are between hidclass and the miniport, once the srrive at the miniport you do not send them (in the same form) anywhere else. You are putting yourself in a very confusing place by loading a hid miniport on a hid enumerated pdo
d
Bent from my phone
From: xxxxx@gmail.commailto:xxxxx
Sent: ?8/?26/?2014 5:33 AM
To: Windows System Software Devs Interest Listmailto:xxxxx
Subject: RE:[ntdev] fx2 sample
Hi Doron
While digging deep , i found one thing and wanted to confirm whether my understanding is correct. In the below mentioned link there are two types of HIDClass IOCTLs -> HID Class Driver IOCTLs and HID Minidriver IOCTLs .
http://msdn.microsoft.com/en-us/library/windows/hardware/ff538848(v=vs.85).aspx
If i use the IOCTLs mentioned under section “HID Class Driver IOCTLs” in WdfIoTargetSendIoctlSynchronously call , then the call passes successfully and am able to get the values .
But If i use the IOCTLs mentioned under section “HID Minidriver IOCTLs” in WdfIoTargetSendIoctlSynchronously call , then i get
“WdfIoTargetSendIoctlSynchronously failed with status 0xc0000010”
Can you plz clarify?
—
NTDEV is sponsored by OSR
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer</mailto:xxxxx></mailto:xxxxx>
Hi Doron
Thank you for the clarification . How can i load hidusbfx2 driver as a minidriver.Is it possible to do in current situation ? .In device manager i am loading my driver on “HID Compliant Device” instance.Is it correct? . And in the inf file i have changed USB\VID_0645&PID_1562 to HID\VID_0645&PID_1562 .I am using the following inf file
[Version]
Signature = “$WINDOWS NT$”
Class = HIDClass
ClassGuid = {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
Provider = %VENDOR%
LayoutFile = layout.inf
DriverVer=08/24/2014,6.1.7600.16385
CatalogFile = kmdfsamples.cat
;
; 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.
[SourceDisksFiles]
hidusbfx2.sys = 99
hidkmdf.sys = 99
[SourceDisksNames]
99 = %DISK_NAME%,“”
[DestinationDirs]
CopyFunctionDriver = 12
CopyFilterDriver = 12
[Manufacturer]
%VENDOR%=Vendor, NTx86, NTx86.6.1
; For XP and later
[Vendor.NTx86]
%hidusbfx2% = hidusbfx2.Inst, HID\VID_0645&PID_1562
%customCollection% = customCollection.Inst, HID_DEVICE_UP:FF00_U:0001
; For Win7 and later so that we can use inbox HID-KMDF mapper
[Vendor.NTx86.6.1]
%hidusbfx2% = hidusbfx2.Inst.Win7, HID\VID_0645&PID_1562
%customCollection% = customCollection.Inst, HID_DEVICE_UP:FF00_U:0001
;===============================================================
; Install section for XP thru Vista
;===============================================================
[hidusbfx2.Inst.NT]
CopyFiles = CopyFunctionDriver, CopyFilterDriver
[hidusbfx2.Inst.NT.HW]
AddReg = hidusbfx2_Parameters.AddReg
;
; hidkmdf is the function driver and hidusbfx2 is the lower filter
;
[hidusbfx2.Inst.NT.Services]
AddService = hidkmdf,0x00000002,hidkmdf_Service_Inst,
AddService = hidusbfx2, hidusbfx2_Service_Inst
[CopyFunctionDriver]
hidkmdf.sys
[hidusbfx2_Parameters.AddReg]
HKR,“LowerFilters”,0x00010000,“hidusbfx2”
[hidkmdf_Service_Inst]
DisplayName = %hidkmdf.SVCDESC%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\hidkmdf.sys
LoadOrderGroup = PNP Filter
;===============================================================
; Install section for Win7 and later
; Use the inbox mshidkmdf.sys as the shim
;===============================================================
[hidusbfx2.Inst.Win7.NT]
; Just copy the driver. No neeed to copy other system binaries.
CopyFiles = CopyFilterDriver
[hidusbfx2.Inst.Win7.NT.HW]
AddReg = hidusbfx2_Win7_Parameters.AddReg
;
; mshidkmdf is the function driver and hidusbfx2 is the lower filter
;
[hidusbfx2.Inst.Win7.NT.Services]
AddService = hidusbfx2, hidusbfx2_Service_Inst
AddService = mshidkmdf, 0x000001fa, mshidkmdf.AddService ;flag 0x2 sets this as the service for the device
[CopyFilterDriver]
hidusbfx2.sys
[mshidkmdf.AddService]
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %10%\System32\Drivers\mshidkmdf.sys
[hidusbfx2_Win7_Parameters.AddReg]
HKR,“LowerFilters”,0x00010000,“hidusbfx2”
HKR,“AllowIdleIrpInD3”,0x00010001,0x1
;===============================================================
; Service section (common to all OS versions)
;===============================================================
[hidusbfx2_Service_Inst]
DisplayName = %hidusbfx2%
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_DEMAND_START%
ErrorControl = %SERVICE_ERROR_IGNORE%
ServiceBinary = %12%\hidusbfx2.sys
;===============================================================
; Custom Collection install section
; - Only a Null service is installed.
;===============================================================
[customCollection.Inst.NT]
; NULL section
[customCollection.Inst.NT.HW]
AddReg = customCollection.Inst.AddReg.NT.HW
[customCollection.Inst.AddReg.NT.HW]
HKR,“SelectiveSuspendEnabled”,0x00000001,0x1
[customCollection.Inst.NT.Services]
AddService = ,0x00000002, ; NULL Service
;================================================================
; WDF Coinstaller installation
;===============================================================
[DestinationDirs]
hidusbfx2.Inst_CoInstaller_CopyFiles = 11
[hidusbfx2.Inst.NT.CoInstallers]
AddReg=hidusbfx2.Inst_CoInstaller_AddReg
CopyFiles=hidusbfx2.Inst_CoInstaller_CopyFiles
[hidusbfx2.Inst_CoInstaller_AddReg]
HKR,CoInstallers32,0x00010000, “WdfCoInstaller01009.dll,WdfCoInstaller”
[hidusbfx2.Inst_CoInstaller_CopyFiles]
WdfCoInstaller01009.dll,0x00000010 ;COPYFLG_NO_OVERWRITE (for win2k)
[SourceDisksFiles]
WdfCoInstaller01009.dll=99 ; make sure the number matches with SourceDisksNames
[hidusbfx2.Inst.NT.Wdf]
KmdfService = hidusbfx2, hidusbfx2_wdfsect
[hidusbfx2_wdfsect]
KmdfLibraryVersion = 1.9
;================================================================
; Strings section
;===============================================================
[Strings]
;Localizable
VENDOR = “Vendor Name”
hidusbfx2 = “KMDF HID Minidriver for OSR USB-FX2 Device”
customCollection = “HID Vendor-defined Collection for OSR USB-FX2”
DISK_NAME = “HID USB FX2 Device Sample Install Disk”
hidkmdf.SVCDESC = “Filter Driver Service for HID-KMDF Interface layer”
;Non-Localizable
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
xxxxx@gmail.com wrote:
Thank you for the clarification . How can i load hidusbfx2 driver as a minidriver.Is it possible to do in current situation ? .In device manager i am loading my driver on “HID Compliant Device” instance.Is it correct?
We can’t possibly answer this question. You are losing track of the big
picture. What is it, from a high level, that you expect this driver to
do? Every driver is a translator, translating from an interface above
to an interface below. What translations does your device need, exactly?
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
Hi Tim
The device that i am using is a HID device . When connected , Windows loads the inbox hid driver for it and the device works fine with the application that is provided by the vendor . As a learning process , i am using hidusbfx2 driver and trying to check what are all the request that is going to the device.In the device manager ,the device gets enumerated with Microsoft stack as follows
Standard OpenHCD USB Host Controller->USB Input Device->HID Compliant device
I loaded hidusbfx2 driver on “HID Compliant device” thinking that hidusbfx2 will act as a minidriver and mshidkmdf as a pass thro driver. But i am not sure whether the current stack is like mentioned in the below link
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540774(v=vs.85).aspx
xxxxx@gmail.com wrote:
The device that i am using is a HID device . When connected , Windows loads the inbox hid driver for it and the device works fine with the application that is provided by the vendor . As a learning process , i am using hidusbfx2 driver and trying to check what are all the request that is going to the device.
Aha! That’s a perfectly valid and interesting thing to do, but you’re
doing it the wrong way. If you want the device to continue to operate,
then you don’t want to REPLACE the standard driver at all. You just
want a simple non-HID filter driver that can intercept the requests and
dump them to a debugger, and you want to add your filter to the existing
device stack.
Do you want to see the HID requests it received from above, or do you
want to see the USB requests that get sent down? That will determine
whether you need an upper or a lower filter.
You might consider starting with the general\toaster\kmdf\filter
sample. That’s a very generic filter driver. After that, you have the
“simple” problem of figuring out how to install it. You don’t really
need an INF; you can copy the file in place, create the service, and use
a simple app to add yourself to the UpperFilters or LowerFilters list
for your device. You COULD use an INF, by using Include/Needs to bring
in the standard parts, and just add your filter as an additional service.
In the device manager ,the device gets enumerated with Microsoft stack as follows
Standard OpenHCD USB Host Controller->USB Input Device->HID Compliant device
I loaded hidusbfx2 driver on “HID Compliant device” thinking that hidusbfx2 will act as a minidriver and mshidkmdf as a pass thro driver.
In doing so, you have REPLACED the standard driver, so the device no
longer operates.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
If you want to see all requests going to the device, install yourself as a lower filter BELOW HIDUSB and you will then see all of the io hidusb/hidclass sends. Right now you are too high level in the stack to see that and by loading on top of hid, you are blocking the HID traffic on the PDO you loaded on.
d
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@gmail.com
Sent: Tuesday, August 26, 2014 9:50 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] fx2 sample
Hi Tim
The device that i am using is a HID device . When connected , Windows loads the inbox hid driver for it and the device works fine with the application that is provided by the vendor . As a learning process , i am using hidusbfx2 driver and trying to check what are all the request that is going to the device.In the device manager ,the device gets enumerated with Microsoft stack as follows
Standard OpenHCD USB Host Controller->USB Input Device->HID Compliant device
I loaded hidusbfx2 driver on “HID Compliant device” thinking that hidusbfx2 will act as a minidriver and mshidkmdf as a pass thro driver. But i am not sure whether the current stack is like mentioned in the below link
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540774(v=vs.85).aspx
NTDEV is sponsored by OSR
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Hi Tim and Doron
Thank you very much for sparing your time to provide a detailed explanation for my questions. All these days i was thinking that my driver sits in between hidclass and hidusb like that mentioned in hidusbfx2 sample html file .But now i realize that my driver sits on top of it . I have couple of questions still scratching my head . Can you Please help me out.
-
How to check the stack of drivers loaded (like which driver is above and which one is below) . Is there any way?
-
If i want my current driver to get loaded in between hidclass and hidusb like mentioned in
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540774(v=vs.85).aspx
what changes should i make in inf file or it is not possible or it is wrong way in current scenario. -
What difference it makes in driver stack if i use
a) HID\VID_0645&PID_1562 in inf file to load the driver
b) USB\VID_0645&PID_1562 in inf file to load the driver
bcz i find that the behavior of the driver is different in both the scenarios.
- Raw PDO - If my understanding is correct , the instance "HID Compliant Device " that i see under “USB Input Device” is the Raw PDO???
I apologize for asking many questions.
1 !devstack (your device object) will show you the stack
2 you can’t get between these two because they are bound by imports (hidclass is a DLL), they talk with irps
3 for the USB id match, call SetFilter to.make sure you pass through everything. Otherwise it is.pretty much the same
4 yes
d
Bent from my phone
From: xxxxx@gmail.commailto:xxxxx
Sent: ?8/?26/?2014 6:20 PM
To: Windows System Software Devs Interest Listmailto:xxxxx
Subject: RE:[ntdev] fx2 sample
Hi Tim and Doron
Thank you very much for sparing your time to provide a detailed explanation for my questions. All these days i was thinking that my driver sits in between hidclass and hidusb like that mentioned in hidusbfx2 sample html file .But now i realize that my driver sits on top of it . I have couple of questions still scratching my head . Can you Please help me out.
1. How to check the stack of drivers loaded (like which driver is above and which one is below) . Is there any way?
2. If i want my current driver to get loaded in between hidclass and hidusb like mentioned in
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540774(v=vs.85).aspx
what changes should i make in inf file or it is not possible or it is wrong way in current scenario.
3. What difference it makes in driver stack if i use
a) HID\VID_0645&PID_1562 in inf file to load the driver
b) USB\VID_0645&PID_1562 in inf file to load the driver
bcz i find that the behavior of the driver is different in both the scenarios.
4. Raw PDO - If my understanding is correct , the instance "HID Compliant Device " that i see under “USB Input Device” is the Raw PDO???
I apologize for asking many questions.
—
NTDEV is sponsored by OSR
Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
OSR is HIRING!! See http://www.osr.com/careers
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer</mailto:xxxxx></mailto:xxxxx>
Hi Doron
Thank you very much . Because of you and Tim’s help , now i am able to understand the HID stack . Hats off to your services for people like me . T
xxxxx@gmail.com wrote:
- What difference it makes in driver stack if i use
a) HID\VID_0645&PID_1562 in inf file to load the driver
b) USB\VID_0645&PID_1562 in inf file to load the driverbcz i find that the behavior of the driver is different in both the scenarios.
HUGE difference. The HID\ device accept generic HID requests from
above, and sends USB HID requests downward. The USB\device accepts USB
HID requests from above, and sends straight USB requests (URBs) downward.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
HI Tim
what is USB HID requests ? . I could get details regarding generic HID requests from net but not USB HID requests .
xxxxx@gmail.com wrote:
what is USB HID requests ? . I could get details regarding generic HID requests from net but not USB HID requests .
Well, I don’t think you can get in between them anyway. The driver stack is
usbhub -> hidusb -> hidclass
but the last two are a port/miniport pair.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.