I am developing a driver for usb to serial , when I plug in the device into PC, In device management ,It appear a com port for communication.
It runs fine in Hyper Terminal and normal Read/Write . But I block in Dail up to Internet with this driver.
So I intercept the request of the “usbser.sys” which is provided by Microsoft by contrast .
I added the upper filter driver and lower filter driver to usbser. and use the driver to dial up to internet .Here are the logs ,and “LowFlter :” section is the log from lower filter driver.otherwise from upper filter driver.
When I sending “ATDT*99#” command , the Modem driver reply me the “CONNECT” and raise the DCD , that means Modem will switch command mode to data mode . and PC will communicate with the PPP module.
what I am puzzled is that after “CONNECT” phase ,there is a read 3114 bytes Request . and It was complete by usbser driver but sending down to the lower driver .
what data in this request ? (This Request was Reuse several times . same data ?)
This is the phase “verifying username and password” of PC dial up to Internet ,Does it means that data in request is the username and password ?
Should my driver implement any communication protocol ?( Besides I start a continuous reader in BulkIN and InterruptIN pipes In my new usb2serial driver,I didn’t catch any data In this phase.)
LOG :
IRP_MJ_CREATE
IRP_MJ_CLEANUP
IOCTL_MODEM_CHECK_FOR_MODEM
IOCTL_SERIAL_SET_DTR
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_INTERNAL_CANCEL_WAIT_WAKE
IOCTL_SERIAL_GET_PROPERTIES
IOCTL_SERIAL_GET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_SET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_DTR
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_CHARS
IOCTL_SERIAL_SET_HANDFLOW
IOCTL_SERIAL_PURGE (03)
IOCTL_SERIAL_CLEAR_STATS
IOCTL_SERIAL_PURGE (02)
IOCTL_SERIAL_SET_TIMEOUTS(RI=20,WC= 2000,WM=10)
IOCTL_SERIAL_GET_COMMSTATUS
IOCTL_SERIAL_GET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_SET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_DTR
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_CHARS
IOCTL_SERIAL_SET_HANDFLOW
IOCTL_SERIAL_SET_DTR
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_MODEMSTATUS
Write 3 bytes (AT.)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x05 ,out = 0x00)
Read : .OK…
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
Write 7 Bytes (ATE0V1.)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x05 ,out = 0x00)
Read : .OK…
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
Write 3 bytes (AT.)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x05 ,out = 0x00)
Read : .OK…
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
Write 7 Bytes (ATS0=0.)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x05 ,out = 0x00)
Read : .OK…
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
Write 3 bytes (AT.)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x05 ,out = 0x00)
Read : .OK…
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
IOCTL_SERIAL_SET_WAIT_MASK (0x10)
IOCTL_SERIAL_WAIT_ON_MASK (0x00)
IOCTL_SERIAL_CLEAR_STATS
IOCTL_SERIAL_GET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_SET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_DTR
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_CHARS
IOCTL_SERIAL_SET_HANDFLOW
IOCTL_SERIAL_SET_DTR
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_MODEMSTATUS
Write 3 bytes (AT.)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x05 ,out = 0x00)
Read : .OK…
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
Write 7 Bytes (ATE0V1.)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x05 ,out = 0x00)
Read : .OK…
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
Write 3 bytes (AT.)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x05 ,out = 0x00)
Read : .OK…
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
Write 9 Bytes (ATDT*99#)
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x0a ,out = 0x00)
Read : CONNECT
IOCTL_SERIAL_GET_COMMSTATUS(in = 0x00 ,out = 0x00)
Interrupt IN (Raise DCD)
IOCTL_SERIAL_GET_MODEMSTATUS (0x00)
IOCTL_SERIAL_GET_MODEMSTATUS (0x90)
IOCTL_SERIAL_SET_WAIT_MASK(0x00)
IOCTL_SERIAL_SET_WAIT_MASK(0x30)
IOCTL_SERIAL_WAIT_ON_MASK (0x00)
IOCTL_SERIAL_SET_WAIT_MASK(0x00)
IOCTL_SERIAL_WAIT_ON_MASK (0x00)
IOCTL_SERIAL_SET_WAIT_MASK(0x30)
IOCTL_SERIAL_GET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_GET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_CHARS
IOCTL_SERIAL_GET_HANDFLOW
IOCTL_SERIAL_GET_STATS
IOCTL_SERIAL_SET_QUEUE_SIZE(1514,1514)
IOCTL_SERIAL_PURGE(0xE)
IOCTL_SERIAL_GET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_GET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_BAUD_RATE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_DTR
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_LINE_CONTROL
LowFlter : URB_FUNCTION_CLASS_INTERFACE
LowFlter : URB_FUNCTION_CLASS_INTERFACE
IOCTL_SERIAL_SET_QUEUE_SIZE(4096,4096)
IOCTL_SERIAL_SET_TIMEOUTS(RI=-1,RC=0,RM=0,WC=4000,WM=4)
IOCTL_SERIAL_GET_CHARS(Eof=0,err=0,break=0,event=0,x0n=17,xoff=19)
IOCTL_SERIAL_SET_CHARS(Eof=0,err=0,break=0,event=126,x0n=17,xoff=19)
IOCTL_SERIAL_SET_WAIT_MASK(0x4b2)
IOCTL_SERIAL_WAIT_ON_MASK (0x000)
Read 3114 Bytes (IRP:0x88F2CE48)
Read Complete 3114 Bytes(IRP:0x88F2CE48)
Write 53 Bytes
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
Complete IOCTL_SERIAL_WAIT_ON_MASK with 0x407
IOCTL_SERIAL_WAIT_ON_MASK(0x407)
Read 3114 Bytes (IRP:0x88F2CE48)
Read Complete 3114 Bytes(IRP:0x88F2CE48)
Write 43 Bytes
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
Complete IOCTL_SERIAL_WAIT_ON_MASK with 0x403
IOCTL_SERIAL_WAIT_ON_MASK(0x403)
Read 3113 Bytes (IRP:0x88F2CE48)
Read Complete 3113 Bytes(IRP:0x88F2CE48)
Write 47 Bytes
LowFlter : URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER
Complete IOCTL_SERIAL_WAIT_ON_MASK with 0x407
IOCTL_SERIAL_WAIT_ON_MASK(0x407)
Read 3113 Bytes (IRP:0x88F2CE48)
Read Complete 3113 Bytes(IRP:0x88F2CE48)