Low-level coding

Saulius Krasuckas saulius2 at ar.fi.lt
Mon Sep 11 03:43:50 CDT 2006


* On Sun, 10 Sep 2006, Aaron Slunt wrote:
> I was interested in starting to play with wine and maybe even build a 
> few functions for it...but then I realized that it's low-level coding, 
> something I'm not familiar with (higher level is more of my expertise). 
> Correct me if I'm wrong, I could be looking at the wrong files :S.

You are welcome! :)
Can you refer to exact file names your were looking at?

> Does anyone have any good places to go to to learn about low-level 
> coding, and afterwards coding for wine specifically?

For me Wine embraces libs for quite wide spectra of functions and not so 
few ioctls:

  $ grep -rI "ioctl[^a-zA-Z0-9]*(" dlls/ | wc -l
  276

  $ grep -rIc "ioctl[^a-zA-Z0-9]*(" dlls/ | grep -v :0
  dlls/avicap32/avicap32_main.c:4
  dlls/dinput/joystick_linux.c:10
  dlls/dinput/joystick_linuxinput.c:7
  dlls/dinput/effect_linuxinput.c:2
  dlls/iphlpapi/ifenum.c:9
  dlls/kernel/comm.c:4
  dlls/kernel/sync.c:1
  dlls/kernel/oldconfig.c:1
  dlls/ntdll/cdrom.c:57
  dlls/ntdll/directory.c:7
  dlls/ntdll/file.c:1
  dlls/ntdll/serial.c:10
  dlls/ntdll/tape.c:11
  dlls/qcap/v4l.c:17
  dlls/winedos/int13.c:1
  dlls/winedos/ppdev.c:8
  dlls/winmm/joystick/joystick.c:4
  dlls/winmm/wineaudioio/audio.c:6
  dlls/winmm/wineoss/audio.c:61
  dlls/winmm/wineoss/dscapture.c:11
  dlls/winmm/wineoss/dsrender.c:15
  dlls/winmm/wineoss/midi.c:5
  dlls/winmm/wineoss/mixer.c:17
  dlls/winmm/wineoss/mmaux.c:3
  dlls/wnaspi32/aspi.c:2
  dlls/ws2_32/socket.c:2

As for me, low level coding is writing a device driver for linux kernel 
:-] and using it from the Wine code.  

But there is also a bunch of hardware platform specific issues also, like 
advanced signal handling which may be needed for example to make remote 
process operations work [1] or to implement ntoskrnl and make safedisc 
work [2].

All that stuff needs knowledge of glibc programming at least, I guess.  
So maybe you should read recent libc.pdf if you are interested into this 
area?

Also, some guys are working on DCOM/OLE stuff [3] which seems to be quite 
low level for me sometimes (wire-protocol compatibility).

Going further (upper?) most of Wine code tries to use WinAPI, which I 
doubt should be considered as low-level.  To get into basic Wine coding it 
may be usefull to review Janitorial Projects [4] and maybe to hang on one 
of it? :)

Without naming exact Wine component or functionality you are interested in 
I doubt someone will answer you more specifically :-P


[1] http://wiki.winehq.org/RemoteProcessOperations
[2] http://wiki.winehq.org/VitaliyMargolen
[3] http://wiki.winehq.org/RobShearman
[4] http://wiki.winehq.org/JanitorialProjects



More information about the wine-devel mailing list