<< | Thread Index | >> ]    [ << | Date Index | >> ]

To: cipe-l,AT,inka,DOT,de
Subject: CIPE-Win32, device driver for WIN98
From: Dmitry Basko <dbasko,AT,rainbow,DOT,by>
Date: Fri, 13 Jun 2003 16:48:36 +0300
Organization: Rainbow Technologies
Reply-to: Dmitry Basko <dbasko,AT,rainbow,DOT,by>

Hello,
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 function
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
NDIS5.

May be someone has any additional points about porting the driver on
WIN98? Any suggestions, comments are very appreciated.

-- 
Best regards,
Dmitry Basko                          dbasko,AT,rainbow,DOT,by


<< | Thread Index | >> ]    [ << | Date Index | >> ]