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

To: Damion Wilson <dwilson,AT,ibl,DOT,bm>
Subject: Re[2]: CIPE-Win32, device driver for WIN98
From: Dmitry Basko <dbasko,AT,rainbow,DOT,by>
Date: Fri, 13 Jun 2003 17:57:04 +0300
Cc: cipe-l,AT,inka,DOT,de
In-reply-to: <200306131112.28356.dwilson@ibl.bm>
Organization: Rainbow Technologies
References: <7322473687.20030613164836@rainbow.by><200306131112.28356.dwilson@ibl.bm>
Reply-to: Dmitry Basko <dbasko,AT,rainbow,DOT,by>

Hello Damion,
DW> If you do the port, please preserve the interface to the FIFO device.
Do you mean this way: pending IRP_MJ_READ, copy packet's data when it
comes (if it was not already kept in to the QUEUE (AdapterTransmit)
and send it back to the service in order to encrypt it and send
through the transport network as UDP; when service wants to simulate
an incoming network packet from virtual adapter (service receives UDP,
decrypt it, adds MACs) it sends the data (WriteFile) to drv;
IRP_MJ_WRITE handler informs NDIS about new packet, like it came
from "real wire"? If I really start to do it, be sure I will keep the
interface to the FIFO device as it is, I like this simple and clear
solution very much! Especially dummy ARP reply :-)
You have done really excellent job, Damion..

Friday, June 13, 2003, 5:12:28 PM, you wrote:

DW> Right on just about everything. 
DW> I knew when I wrote the driver that it "should" be portable to Win9x. It 
just
DW> wasn't high enough on the list of priorities to get going on it. Then 
DW> Microsoft finally made it clear that the NT kernel was the way forward...

DW> There is probably more porting work in the service, especially as there 
are 
DW> suspected  timing issues with packet handling in usermode (polling 
behaviour) 
DW> on Win9x.

DW> The NDIS miniport part is reasonably straightforward, however the driver 
DW> supports two device types at the same time, the other being the TAP 
device.
DW> This behaviour is NOT WDM kosher.

DW> If you do the port, please preserve the interface to the FIFO device.

DW> DKW

DW> On Friday 13 June 2003 10:48 am, Dmitry Basko wrote:
>> 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.

DW> --
DW> Message sent by the cipe-l,AT,inka,DOT,de mailing list.
DW> Unsubscribe: mail majordomo,AT,inka,DOT,de, "unsubscribe cipe-l" in body
DW> Other commands available with "help" in body to the same address.
DW> CIPE info and list archive: 
<URL:http://sites.inka.de/~bigred/devel/cipe.html>

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


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