Subject: Re: You have to start somewhere....
From: "Sachin Khadilkar" <>
Date: Tue, 8 Jun 1999 17:18:43 -0700

Good Job Dean,

You atleast made a head start.

Well here is my contribution :

There is a utility provided by Vireo software called VxDView to see what all
VxD's on a Windows95/98 box.
It is a utility provided by them as a compliment to their software which
lets one write VxD's in C/C++.
There is also a couple of other utilities there, like Monitor etc. Maybe we
can use the VxDview sometime in future to see if our VxD is loaded properly.

FYI, i got VxDView to actually work in Linux using Wine.
here is the url :

Also there is a VxDMon utilitility at

Now i have some questions :

1) How did u print the info in the file unimodem.txt ? i mean just running
ur winsand with my own VxD does not produce so much info.

2) Also the VxDmon utility at sysinternals uses the CreateFile API to
actually load the VxD it uses to monitor other VxD's, i still dont know how.

3) on my linux box, i dont get a VendorId for my LU 56k PCI modem using cat
/proc/pci  how do people do that?

- Sachin

----- Original Message -----
From: Dean Beeler <>
To: <>
Sent: Monday, June 07, 1999 10:32 PM
Subject: You have to start somewhere....

>     Sorry about posting a binary to the discussion group, but
> considering the response, I figured everyone would want to see the
> starting point for my LinModem project.  Right now no actual execution
> of the VxD happens.  I am trying to make sure everything is in place
> before I attempt anything like that.
>     Right now it will list the exports and objects present in the VxD
> for debugging information.  I have included unimodem.vxd for an example
> but if you have other VxDs you want to toy with just specify them on the
> command line.  I wouldn't be too surprised if this current version
> compiled with even a DOS C compiler (no VxDs > 640K, of course).
> Presently there is more commenting and stubs than real source code.
>     Someone said something to the effect that VxDs run in Ring 0 which
> is why they won't work in Linux.  This may be true, and we will
> certainly find out how much freedom is needed once we start trying to
> initialize the VxDs using kernel level threads.  Kernel level threads
> are also what Wine uses to run its Windows executables as well.  But
> I've been thinking... ok... how hard is it to control these DSPs in
> hardware anyway?   Besides sheer CPU power, all you are doing is simply
> IRQ requests, I/O accesses and Co-processor use.  The free reign of
> memory featured by Ring 0 wouldn't be a concern... I don't think.  Mind
> you, I've never taken on an emulation project either so I'm sure I'm in
> for some surprises anyway.
>     Finally, if someone could tell me about the driver configuration for
> these seemingly popular Lucent WinModems so I could get some idea how
> uniform the whole VxD/WinModem is between developers.
>     Feel free to modify the code and give me the changes.  Next on the
> agenda is to bring up the DDB points including the API entry point.
> Once there, I'll make sure the VxD is in memory correctly and try
> threading to it.
> Dean