Does usbser register a GUID_DEVINTERFACE_COMPORT device interface?
I am using RegisterDeviceNotification & SetupDiEnumDeviceInterfaces and I
seem to be able to pick up all comports except an Arduino UNO device (which
uses usbser and happens to be the one I am interested in).
“Daniel Newton” wrote in message news:xxxxx@ntdev… > Does usbser register a GUID_DEVINTERFACE_COMPORT device interface? > > I am using RegisterDeviceNotification & SetupDiEnumDeviceInterfaces and I > seem to be able to pick up all comports except an Arduino UNO device > (which > uses usbser and happens to be the one I am interested in). > > Cheers, > Dan
Usbser.sys from WinXP SP3 does not call IoRegisterDeviceInterface or IoSetDeviceInterfaceState (from what depends.exe shows). So its devinterface should be registered thru the INF file.
> “Daniel Newton” wrote in message news:xxxxx@ntdev. > … > > Does usbser register a GUID_DEVINTERFACE_COMPORT device interface? >> >> I am using RegisterDeviceNotification & SetupDiEnumDeviceInterfaces and I >> seem to be able to pick up all comports except an Arduino UNO device >> (which >> uses usbser and happens to be the one I am interested in). >> >> Cheers, >> Dan >> > > Usbser.sys from WinXP SP3 does not call IoRegisterDeviceInterface or > IoSetDeviceInterfaceState > (from what depends.exe shows). So its devinterface should be registered > thru the INF file. > > Regards, > --pa > > Ah, good find.
According to the docs the AddInterface inf directive wont work if the driver does not call IoSetDeviceInterfaceState however.
I guess this means I have to enumerate and detect usbser.sys device arrival a different way.
usbser doesn’t expose a full implemenation of a COM port
device interface, it only supports enough to make a modem
work.
My recollection was that it was based on your device’s setup class: if the device node was a modem, you got GUID_DEVINTERFACE_MODEM; if it were a COM port, you got GUID_DEVINTERFACE_COMPORT.
(In my driver I emulated this by calling WdfDeviceAllocAndQueryProperty with DevicePropertyClassGuid.)
The solution I went with is provide an alternate INF file which sets
up serenum.sys
as an upper filter to usbser.sys. Then I was able to use
GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR
for both RegisterDeviceNotification and SetupDiXXX functions.
On Thu, Feb 3, 2011 at 9:26 AM, wrote:
> usbser doesn’t expose a full implemenation of a COM port device interface, > it only supports enough to make a modem work. > > d > > — > NTDEV is sponsored by OSR > > 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 >