IRP_MJ_READ returns INVALID PARAMETER (UMDF 1.11, Windows 7 32-bit)

Hi!

I’m (still) struggling with getting my Virtual Comport to work with RasDial / Unimodem. The following is the IRPs getting sent to my driver when I attempt to initiate a connection

Portmon log:

0.00125950 svchost.exe IRP_MJ_CREATE 00000041 SUCCESS Options: Open
0.00003750 svchost.exe IRP_MJ_CLEANUP 00000041 SUCCESS
0.00004980 svchost.exe IRP_MJ_DEVICE_CONTROL 00000041 * 0x80070057 IOCTL: 0x2B002C
0.00005200 svchost.exe IOCTL_SERIAL_SET_DTR 00000041 SUCCESS
0.00000050 svchost.exe IOCTL_SERIAL_SET_QUEUE_SIZE 00000041 NOT SUPPORTED
0.00005280 svchost.exe IOCTL_SERIAL_GET_PROPERTIES 00000041 SUCCESS
0.00005150 svchost.exe IOCTL_SERIAL_GET_BAUD_RATE 00000041 SUCCESS
0.00004820 svchost.exe IOCTL_SERIAL_GET_LINE_CONTROL 00000041 SUCCESS
0.00005960 svchost.exe IOCTL_SERIAL_GET_CHARS 00000041 SUCCESS
0.00004780 svchost.exe IOCTL_SERIAL_GET_HANDFLOW 00000041 SUCCESS
0.00004940 svchost.exe IOCTL_SERIAL_SET_BAUD_RATE 00000041 SUCCESS Rate: 19200
0.00003340 svchost.exe IOCTL_SERIAL_SET_DTR 00000041 SUCCESS
0.00004840 svchost.exe IOCTL_SERIAL_SET_LINE_CONTROL 00000041 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
0.00005350 svchost.exe IOCTL_SERIAL_SET_CHAR 00000041 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
0.00005340 svchost.exe IOCTL_SERIAL_SET_HANDFLOW 00000041 SUCCESS Shake:9 Replace:80 XonLimit:10 XoffLimit:10
0.00006850 svchost.exe IOCTL_SERIAL_PURGE 00000041 SUCCESS Purge: TXABORT RXABORT
0.00004300 svchost.exe IOCTL_SERIAL_CLEAR_STATS 00000041 SUCCESS
0.00004390 svchost.exe IOCTL_SERIAL_PURGE 00000041 SUCCESS Purge: RXABORT
0.00006030 svchost.exe IOCTL_SERIAL_SET_TIMEOUTS 00000041 SUCCESS RI:20 RM:0 RC:0 WM:10 WC:2000
0.00008050 svchost.exe IOCTL_SERIAL_GET_BAUD_RATE 00000041 SUCCESS
0.00011970 svchost.exe IOCTL_SERIAL_GET_COMMSTATUS 00000041 SUCCESS
0.00010340 svchost.exe IOCTL_SERIAL_GET_LINE_CONTROL 00000041 SUCCESS
0.00000090 svchost.exe IRP_MJ_READ 00000041 INVALID PARAMETER Length 1
0.00005640 svchost.exe IOCTL_SERIAL_GET_CHARS 00000041 SUCCESS
0.00004970 svchost.exe IOCTL_SERIAL_GET_HANDFLOW 00000041 SUCCESS
0.00004050 svchost.exe IOCTL_SERIAL_SET_BAUD_RATE 00000041 SUCCESS Rate: 19200
0.00003450 svchost.exe IOCTL_SERIAL_SET_DTR 00000041 SUCCESS
0.00004810 svchost.exe IOCTL_SERIAL_SET_LINE_CONTROL 00000041 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
0.00008940 svchost.exe IOCTL_SERIAL_SET_CHAR 00000041 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
0.00005210 svchost.exe IOCTL_SERIAL_SET_HANDFLOW 00000041 SUCCESS Shake:9 Replace:80 XonLimit:10 XoffLimit:10
0.00003440 svchost.exe IOCTL_SERIAL_SET_DTR 00000041 SUCCESS
0.00005550 svchost.exe IOCTL_SERIAL_SET_WAIT_MASK 00000041 SUCCESS Mask:
0.00005530 svchost.exe IOCTL_SERIAL_PURGE 00000041 SUCCESS Purge: TXABORT TXCLEAR
0.00004080 svchost.exe IOCTL_SERIAL_PURGE 00000041 SUCCESS Purge: RXABORT
0.00004930 svchost.exe IOCTL_SERIAL_PURGE 00000041 SUCCESS Purge: TXABORT RXABORT TXCLEAR RXCLEAR
0.00003890 svchost.exe IOCTL_SERIAL_GET_STATS 00000041 SUCCESS
0.00000130 svchost.exe IRP_MJ_CLEANUP 00000041 SUCCESS
0.01517000 svchost.exe IRP_MJ_CLOSE 00000041 SUCCESS

In the middle of these IOCTLS there’s a single IRP_MJ_READ that is getting rejected with INVALID PARAMETER. I’ve verified with other terminals (putty, hyperterminak et. al) that my driver is working and that IRP_MJ_READ is received and serviced correctly by my OnRead callback.
I’ve set UmdfKernelModeClientPolicy = AllowKernelModeClients so that Unimodem should be allowed to issue a IRP_MJ_READ to my driver since it is layered beneath it, but this does not seem to work. I have a nagging suspicion that what I’m trying to accomplish is not possible at all in UMDF. Could I please be proven wrong ?

Regards,

Update:

I noticed that “proper” modems like for instance my “Samsung Mobile USB modem” (Android phone) shows up in device manager just below modem.sys but the (Direct Cable Connection) modem I have on my port has RootMdm.sys on top of it (and modem.sys above it). Could this contribute to the issues I’ve been having ?

Dump UMDF log in kernel debugger using the following command and check for
error message:
!wmitrace.logdump WudfTrace

More info here:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff561391(v=vs.85).aspx

-kumar

wrote in message news:xxxxx@ntdev…

Update:

I noticed that “proper” modems like for instance my “Samsung Mobile USB
modem” (Android phone) shows up in device manager just below modem.sys but
the (Direct Cable Connection) modem I have on my port has RootMdm.sys on top
of it (and modem.sys above it). Could this contribute to the issues I’ve
been having ?