| 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