PE Conversion

Zebediah Figura (she/her) zfigura at
Wed Aug 18 10:23:15 CDT 2021

Besides wined3d and winejoystick, I've also looked into what would be 
required for a few others on that list:

* The story with wineqtdecoder (mostly from private communication with 
Dean Greer and Gijs Vermeulen) is that we want to first get libgstreamer 
to build nicely on Mac, and then remove wineqtdecoder entirely. Dean and 
Gijs are working on the first part.

* avicap32 could be converted trivially, but that said, it's my long 
term plan to do some research into kernel streaming first, and see if 
avicap32 and qcap can be implemented on top of that architecture.

* capi2032 and ctapi32 are weird cases of third-party DLLs that were (at 
the time) considered too hard to get working properly, essentially 
because they need to interact with the hardware at too low a level. In 
this respect they're like wpcap. However, unlike wpcap, I think it's 
likely possible to get at least native ctapi32 (which actually isn't 
called that) to work. It had been my vague plan, when I somehow got the 
free time, to try to acquire the necessary hardware and test the Windows 
driver. I'm not sure about capi2032 yet; I didn't get far enough into 
research to tell whether it's possible to use the native version.

* I did briefly look at shell32, but didn't get as far as writing code, 
only research. If someone else does get to it first, here are my initial 

   - The xdg and trash parts can be done almost entirely with win32 
APIs. The one thing I think that's awkward is detecting whether we're on 
a Mac, since IIRC we don't have __APPLE__. Not sure what to do with that.

   - symlink() should be replaced with kernel32/ntdll symlinks. This is 
blocked on Erich's patch set getting upstream, though, which could take 
quite a while. We could probably use a temporary Unix library for this part.

   - shfldr_fs.c and shfldr_unixfs.c need to be merged. In some sense 
this is "unixfs should go away", except that unixfs is kind of the 
default and so fs is missing some features which will need to be ported. 
There are a lot of subtle differences here. Obviously we still want a 
Unix root folder in the UI, but this should be hooked up to "\??\unix" 
or something.

More information about the wine-devel mailing list