KMDF Fakemodem not working



I'm trying to develop my first device driver but have some problems getting
started. I downloaded the Vista WinDDK from MSDN and have built all the
sources using both the Vista x86 Free and Windows 2000 x86 Free build
environment.

It took a while to understand the differences, but I understand now that
there are two FakeModem samples in the DDK: the WDM version and the KMDF
version.

I successfully compiled both versions without changing any source code:
* I built the WDM version with the Windows 2000 x86 Free build environment
* I built the KMDF version with the Vista x86 Free build environment

I succeeded to install the WDM version on a Win 2003 Server x86 using the
Add New Hardware wizard. I had to disable a real modem driver, put the device
id in the INF file and was able to install the fakemodem driver. After that,
the device answered to my HyperTerminal queries and was also found OK using
the modem diagnostics from the control panel.

I also tried to install the KMDF version on a Windows Vista computer Add New
Hardware wizard. The PC doesn't have any physical com ports, but I expected
that this would not be a problem, since the KMDF version of fakemodem is
"controllerless". This is different from the WDM version, which requires real
hardware to run on. However, I never got past the last screen from the setup:
"Choose COM ports...". Since I don't have any, I can't choose one, and the
installer fails.

Here my first questions:
* Why do I need to choose a COM port? The driver is supposed to be
"controllerless", isn't it?
* Should I be using a different tool than the Add New Hardware wizard to
install the driver? I have seen the command line tool devcon.exe, and have
read something about installing a driver at the root of the driver tree
instead of on a bus (or a com port maybe? I have no clue)... should I be
using this tool? Which command should I use? I never found the correct
command line options for it to work.
* Is there a way to install a fake COM port that the fake modem can connect
to? Maybe a derivative from the serial driver? Has anybody tried that? Or
maybe a derivative from the echo sample?
* Would the toaster sample be of any help here? For example, should I try to
install the toaster sample and add a virtual COM port? Or have it enumerate a
matching device so that my modem would get installed? How should I do that
exactly?

Also, I have tried to install the fake modem driver on a virtual PC image
running Windows Vista x86. Advantage: the virtual PC adds two virtual COM
ports that I can use. And indeed, I can install the fake modem and choose the
two COM ports. I have two modems listed then, the install runs correctly, but
none of them are working:
* The modem diagnostics from the control panel show:
09-22-2007 18:25:56.366 - File: C:\Windows\system32\tapisrv.dll, Version
6.0.6000
09-22-2007 18:25:56.366 - File: C:\Windows\system32\unimdm.tsp, Version
6.0.6000
09-22-2007 18:25:56.366 - File: C:\Windows\system32\unimdmat.dll, Version
6.0.6000
09-22-2007 18:25:56.366 - File: C:\Windows\system32\uniplat.dll, Version
6.0.6000
09-22-2007 18:25:56.366 - File: C:\Windows\system32\drivers\modem.sys,
Version 6.0.6000
09-22-2007 18:25:56.366 - File: C:\Windows\system32\modemui.dll, Version
6.0.6000
09-22-2007 18:25:56.366 - File: C:\Windows\system32\mdminst.dll, Version
6.0.6000
09-22-2007 18:25:56.366 - Modem type: FakeModem DDK Sample controllerless
driver
09-22-2007 18:25:56.366 - Modem inf path: mdmfake.inf
09-22-2007 18:25:56.366 - Modem inf section: ModemX
09-22-2007 18:25:56.366 - Matching hardware ID:
{b85b7c50-6a01-11d2-b841-00c04fad5171}\fakemodem
09-22-2007 18:25:56.366 - Opening the modem device failed with error 00000001

* Also, when I use Hyperterminal to open the com port, hyperterm works fine,
but I don't get any responses on ATA etc., whereas I did when I installed the
WDM variant on Windows 2003.

I have tried several Virtual PC options:
* COM port not connected - nothing happens, as described above
* COM port connected to phyical port - I get an error because the physical
machine doesn't have any physical com ports
* COM port connected to a file on the host OS - this works fine, and I see
the commands I send to the COM port using Hyperterm or the modem diagnostics.
I would have expected the fakemodem driver to pick up these commands and
react on them (instead of passing them through to the physical COM port),
however it didn't.

* Can anyone explain this behaviour? How can I get the KMDF fakemodem to
work on the Virtual PC or the PC without any COM ports?

Regards, Beat
.



Relevant Pages

  • Re: How to create symlink
    ... I m using ubuntu 6.06. ... The Modem i have following problems. ... This page describes how to install the driver for the Intel 536EP internal ...
    (Ubuntu)
  • Re: Clustered printing issue
    ... tcp/ip port. ... accessible unless you install the printer driver. ... printers restored via the print migrator tool. ...
    (microsoft.public.windows.server.clustering)
  • Re: KMDF Fakemodem not working
    ... I'm using the `Windows Vista and Windows Server Longhorn x86 Checked Build ... install the fakemodem with devcon: ... INf in the sample should tell you how to use devcon to install the driver. ... Why do I need to choose a COM port? ...
    (microsoft.public.development.device.drivers)
  • [opensuse] PCTEL 2304WT v.92 MDC Modem on Dell Laptop
    ... bought used by its current clueless owner) I've ... It was given to me to "fix" the modem under W2K, ... I tried for a while to figure out how to install a good driver, ... failed to find a modem driver. ...
    (SuSE)
  • Re: [opensuse] PCTEL 2304WT v.92 MDC Modem on Dell Laptop
    ... bought used by its current clueless owner) I've ... causing the modem to be driverless. ... I tried the driver on the M$ updates ... tried one or two of those without success, so proceeded to install 10.0 ...
    (SuSE)

Loading