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

  • Question

  • 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 ?

    I've 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 ?

    <xmp style="font-size:13px;line-height:normal;background-color:#f5f5ff;">
    </xmp>

    Regards,

    Aj

    Tuesday, October 29, 2013 6:20 PM