Dmitry Basko <dbasko,AT,rainbow,DOT,by>|
Re: CIPE-Win32, device driver for WIN98|
Damion Wilson <dwilson,AT,ibl,DOT,bm>|
Fri, 13 Jun 2003 11:12:28 -0300|
Right on just about everything.
I knew when I wrote the driver that it "should" be portable to Win9x. It just
wasn't high enough on the list of priorities to get going on it. Then
Microsoft finally made it clear that the NT kernel was the way forward...
There is probably more porting work in the service, especially as there are
suspected timing issues with packet handling in usermode (polling behaviour)
The NDIS miniport part is reasonably straightforward, however the driver
supports two device types at the same time, the other being the TAP device.
This behaviour is NOT WDM kosher.
If you do the port, please preserve the interface to the FIFO device.
On Friday 13 June 2003 10:48 am, Dmitry Basko wrote:
> I am currently thinking about possibility to change CIPE-WIN32 driver
> model as a first step of porting the driver on WIN98. At present this
> driver is NT layered one (as I understand), I am interesting in
> possibility to convert it to WDM (VXD excluded from the beginning)..
> According Microsoft's specification about difference of NDIS miniport
> implementations for WIn98 and WIN2 I see that current
> driver does not use any incompatible functions. The common idea how it
> works is very clear also. But I have several questions and would like
> to hear opinion of other members of this mailing list..
> 1. In case of WDM who will be a PDO for our FDO? I mean, what PDO's
> pointer I will get in AddDevice? I made a small investigation (WIN2K) about
> behaivior of the current implementation of CIPE. The driver creates two
> device objects: one is created by NDIS, second one is created in the
> CreateTapDevice . The NDIS owned device object is attached to PDO,
> created PnP manager during enumeration of "root" bus (I would say that
> it looks like WDM !?!?, although at the beginning of the letter I
> intentionally called it NT layered model). It manages 28 IRP types
> (full range of IRP_MJ_XXX) and has next attributes: DO_DIRECT_IO,
> DO_POWER_PAGABLE. (Note, that second device object does not have this
> attribute, does not attached any PDO and has only DO_DIRECT_IO is
> present. This means, that Power Manager calls the driver at IRQL
> DISPATCH_LEVEL)(I understand this situation in the following way: we
> hooked DISPATCH TABLE of NDIS owned DO, so does it mean that every
> time when PowerManager calls NDIS owned DO, it calls IRP at IRQL
> PASSIVE_LEVEL, and every time when it calls second DO it calls it at
> IRQL DISPATCH_LEVEL?). In this case this place must be corrected
> during porting - WDM for WIN98 has always to be called by Power
> Manager at IRQL PASSIVE_LEVEL.
> 2. Our virtual adapter is not a real physical device on the bus, which
> can be enumerated by real bus driver. It seems inf file has to be
> changed in order to declare that our device is a "software" enumerated
> adapter, and than PnP manager should enumerate our driver itself
> through its pseudo "root" bus driver (not clear, will it be enough
> that we declare that our driver belongs NET class?)So, this part has
> to be checked additionally.
> DDK98 says: To create and test an NDIS miniport driver, refer to the
> Windows╝ 2000 DDK documentation. A miniport driver created in this
> manner is binary compatible and will run on both the Windows 2000 and
> Windows╝ 98 operating systems. Also, I have read that WIN98 supports
> May be someone has any additional points about porting the driver on
> WIN98? Any suggestions, comments are very appreciated.