Not sure what you mean by being left out in the cold…if you want
somebody to dial out over your com port, you need to expose a modem.
Let’s get you going with straight up com ports though.
In the serial.inf that it generates, how does the system know to make
it a com port?
The class in the INF is the first step. The class contains both COM and
LPT ports. You must also specify the COM subtype (which is a value
named “PortSubClass” in the registry) so that the ports class installer
knows you are a com port and gives you a COMX name. To do this, you
must also copy this section
[ComPort.AddReg]
HKR,PortSubClass,1,01
Into your INF and wire in the call to the ComPort.AddReg in the right
section (this was taken from %windir%\inf\msports.inf, you can look
there for its usage). That is the only thing that the installer needs.
After that, everything else depends on the driver. You must create the
symbolic link, create the device interface and write the correct value
to the SERIALCOMM key (see SerialDoExternalNaming for the all the
details).
d
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Greg Coleson
Sent: Monday, May 07, 2007 1:19 PM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] advice on driver implementation
I have a piece of PCI hardware that I wrote a driver for in KMDF. It
works
great, install, .inf, functionality, etc. The piece of PCI hardware
also
has a DSP on it that supports 4 fax modems and 1 data modem. I want
this
driver also to appear as a Com port or a modem. If a Com port is easier
then I want it to appear as a Com port, I don’t really care.
I started with the fakemodem because my hardware does not appear as a
PCI
modem. I want it to have a modem or Com port interface so an
application
like PC Anywhere can use it. Any help would be appreciated in helping
me
understand what I am missing.
When I create the child device PDO I assign a hardware and device ID for
my
fake modem ports.
status = WdfPdoInitAssignDeviceID(pDeviceInit, &deviceId);
status = WdfPdoInitAddHardwareID(pDeviceInit, &deviceId);
I have the same ID in my .INF and the installer finds it and the install
proceeds fine copying files, etc. I get error code one and traced that
to:
#E262 Controlling Service: Failed to open service “Modem”. Error 1060:
The
specified service does not exist as an installed service.
#E275 Error while installing services. Error 1060: The specified service
does not exist as an installed service.
#E122 Device install failed. Error 1060: The specified service does not
exist as an installed service.
So I would love to forget this modem interface and try something easier
like
a Com port interface. I am trying to do this now by following the
serial
example in the kmdf. In the serial.inf that it generates, how does the
system know to make it a com port?
From :
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
In the .inf?
This is a very frustrating experience. Any help would be appreciated.
The
guys from MS seem to have left me out in the cold.
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer