DeviceIoControl

Eric Pouech eric.pouech at wanadoo.fr
Thu Apr 4 12:41:52 CST 2002


Laurent Pinchart a écrit :
> >the control on "device" handles is done when the high word of the
> >control code is non 0.
> >
> >as of today (but it's a bit hacky) handles to "device" and VxD:s are
> You're refering to both VxDs and WDM (.sys) drivers, right ?
just VxDs

> How does the server find the correct low word of the client ID ? The
> driver I want to implement has a device type of 0xef00 (value passed to
> IoCreateDevice). I added a field to the VxD table with id set to 0xef00.
> Does wine, when I call CreateFile( "\\\\.\\MyDevice", ... ), check that
> table and set the client ID low word to the proper value ?
this is poorly supported at the moment. only a few of the proper \\.\
syntax is handled (see files/file.c for the details)

> 
> >If the 0x20000 bit is set, it's in fact a handle a device. Driver A:
> >through Z: are mapped to 0 to 25 values (in the low word)
> >
> >Otherwise, it's a handle to the old DOS named devices (with their old
> >IDs too)
> >
> I think we should handler those cases in a new device handler (which
> would just test if the device is a CDROM for now).
all of this needs to be revisited, but this is not a simple task

> >So, back to DeviceIoControl when the high word of the io control code is
> >0. We expect device handle in that case (but don't test the 0x20000 bit for
> >error reporting), and then try to check if the device (from it's driver
> >letter) is a CDROM, and if so apply the io control on it. Support of io
> >
> >control on other types of device (hard disks, storage...) isn't done at the moment.
> >
> You mean when the high word is not 0, right ?
yes

> I'll add a check for the 0x10000 and 0x20000 bits, and will dispatch the
> call to either a VxD or a device handler. Is that ok ?Can I use the same
> VxD list as for (HIWORD(dwIoControlCode) == 0 ) ?
I don't follow you, you only need the VxD list when the hiword is 0
A+



More information about the wine-devel mailing list