Hi All,
I have written a lower filter Modem Class Driver that attaches to all
the Modem Devices on a system.It behaves just like serial.sys.
It works fine with all modems,except a certain LG Phone that connects
via the Serial Port.In this case,I am unable to communicate with the
COM Port (COM1) below and get the same message : "Port Disconnected"
(C000037) in my NT Status codes whenever I try to send a Set Wait Mask
or Get Modem Status via my driver using IOCTLs.

On inspecting the device tree I noted that this phone installs as
mdmgen288 ,under the Root/Modem Class.
It also has its LowerFilters set to ROOTMODEM.
Anyone has any ideas on why this is not working?
I am stumped.I went through other google groups/the web/ddk for more
information and I am really at my wits end.
Thanks in advance
Jack

Re: Modem Device Class under Enum\Root:Unable to Communicate to COM Port by Eliyas

Eliyas
Wed Jan 12 11:20:00 CST 2005

Since your filter driver is already in the stack of LG phone, you should be
able to say who is failing the Ioctl - it's either your driver or some other
driver above in the stack. If the driver above in the stack fail this ioctl
only when you are attached below then there is something weird going on.

--
--
-Eliyas
This posting is provided "AS IS" with no warranties, and confers no rights.
http://www.microsoft.com/whdc/driver/default.mspx
http://www.microsoft.com/whdc/driver/kernel/KB-drv.mspx



"Jack Hannah" <bambi.dey@gmail.com> wrote in message
news:1105495877.338804.168330@c13g2000cwb.googlegroups.com...
> Hi All,
> I have written a lower filter Modem Class Driver that attaches to all
> the Modem Devices on a system.It behaves just like serial.sys.
> It works fine with all modems,except a certain LG Phone that connects
> via the Serial Port.In this case,I am unable to communicate with the
> COM Port (COM1) below and get the same message : "Port Disconnected"
> (C000037) in my NT Status codes whenever I try to send a Set Wait Mask
> or Get Modem Status via my driver using IOCTLs.
>
> On inspecting the device tree I noted that this phone installs as
> mdmgen288 ,under the Root/Modem Class.
> It also has its LowerFilters set to ROOTMODEM.
> Anyone has any ideas on why this is not working?
> I am stumped.I went through other google groups/the web/ddk for more
> information and I am really at my wits end.
> Thanks in advance
> Jack
>



Re: Modem Device Class under Enum\Root:Unable to Communicate to COM Port by Jack

Jack
Wed Jan 12 13:01:49 CST 2005

Hi Eliyas!
Thanks for the reply.The IOCTL is being manufactured by my Lower Filter
Driver and being sent to the Physical Device below me in the stack
("COM1")
Its not an IOCTL being passed from an upper driver.
What is more interesting is that if I use HyperTerminal to Open the
Modem instead of the port (i.e. "LG Modem" instead of "COM1") and then
try to send IOCTLs via my filter driver all works fine.
I have tested with other Phones like the LG CDMA Phones and also
traditional External Modems,and all work fine.
The way I test is :Use HyperTerminal to Open a COM Port (e.g.
COM1,COM16,etc to which a CDMA Phone or Wireless Card is attached).
Then I signal my driver (which is a lower filter for the Modem Class)
to send a SetWaitMask Request to the Physical Device below it - i.e.
the COM Port.
For All Devices it works fine except for this particular one - and the
only difference is that all the other phones/cards are a part of the
Serenum Device Class or the MF Device Class.
This troublesome phone is a part of the MODEM Class ,which should be
ok,but has its LowerFilters set to ROOTMODEM.
Then - if I change HyperTerminal to open the Actual Modem
(from the HyperTerminal List) instead of the COM Port,and then re -run
my tests,they go through fine.
I am wondering if the Device closes the port when not in use?In Any
case opening the COM Port should go through my filter driver.
hmm..
Any help appreciated.
Thanks mate,
Jack


Re: Modem Device Class under Enum\Root:Unable to Communicate to COM Port by Eliyas

Eliyas
Thu Jan 13 10:51:09 CST 2005

Is your filter above the ROOMODEM filter? May be you want to change the load
order of your filter with respect to ROOTMODEM and see it works.

--
--
-Eliyas
This posting is provided "AS IS" with no warranties, and confers no rights.
http://www.microsoft.com/whdc/driver/default.mspx
http://www.microsoft.com/whdc/driver/kernel/KB-drv.mspx



"Jack Hannah" <bambi.dey@gmail.com> wrote in message
news:1105556509.276303.183660@z14g2000cwz.googlegroups.com...
> Hi Eliyas!
> Thanks for the reply.The IOCTL is being manufactured by my Lower Filter
> Driver and being sent to the Physical Device below me in the stack
> ("COM1")
> Its not an IOCTL being passed from an upper driver.
> What is more interesting is that if I use HyperTerminal to Open the
> Modem instead of the port (i.e. "LG Modem" instead of "COM1") and then
> try to send IOCTLs via my filter driver all works fine.
> I have tested with other Phones like the LG CDMA Phones and also
> traditional External Modems,and all work fine.
> The way I test is :Use HyperTerminal to Open a COM Port (e.g.
> COM1,COM16,etc to which a CDMA Phone or Wireless Card is attached).
> Then I signal my driver (which is a lower filter for the Modem Class)
> to send a SetWaitMask Request to the Physical Device below it - i.e.
> the COM Port.
> For All Devices it works fine except for this particular one - and the
> only difference is that all the other phones/cards are a part of the
> Serenum Device Class or the MF Device Class.
> This troublesome phone is a part of the MODEM Class ,which should be
> ok,but has its LowerFilters set to ROOTMODEM.
> Then - if I change HyperTerminal to open the Actual Modem
> (from the HyperTerminal List) instead of the COM Port,and then re -run
> my tests,they go through fine.
> I am wondering if the Device closes the port when not in use?In Any
> case opening the COM Port should go through my filter driver.
> hmm..
> Any help appreciated.
> Thanks mate,
> Jack
>



Re: Modem Device Class under Enum\Root:Unable to Communicate to COM Port by Jack

Jack
Fri Jan 14 11:38:09 CST 2005

Hi Eliyas..
Once again thanks for the replies mate.
I figured out the problem- My Filter driver binds to the Modems on
Win2K Os and upwards - i.e. IoAttachDeviceToDeviceStack - to the lower
Device.
In WinNT my filter driver binds to the actual Serial Port - i.e.
IoCreateDevice - with FILE_DEVICE_SERIAL_PORT.
and IoAttachDevice.
The problems with the latter method are that I cannot bind to the
Serial Port if a device has it open - which defeats the whole purpose I
am trying to achieve - i.e. Send IOCTLs(like WAIT Mask,etc) to the
Lower COM Port when a Device has the port open.
So back to the drawing board,since it seems the problematic LG Phone
relies on the mdmgen288 - i.e. generic modem behavior.
Their Driver (from reading some user forums for LG) has been migrated
from the vxd world,and so has not kept pace with the recommended design
for CDMA Phones.I tried with a regular US Robotics Serial Port
Driver,and that worked fine too.
Thanks again friend.
Cheers
Jack