Hi,
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. Does anyone have any good places to go to to learn about low-level coding, and afterwards coding for wine specifically?
Thanks.
--- Aaron Slunt tonglebeak@gmail.com wrote:
Hi,
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.
Look at a few of the main DLLs (eg. kernel), the loader and wineserver code is complex. COM DLLs (eg. directx) are undecipherable unless you know COM.
Does anyone have any good places to go to to learn about low-level coding, and afterwards coding for wine specifically?
There's some useful coding hints for wine at www.wine-wiki.org. The developer's cheatsheet, and the wine dev guide are also helpful.
You learn the most by doing it :-).
Thanks.
Good luck Damjan
-- Tired of being hammered by spyware, or want to browse the internet in a whole new way? Download Firefox and enjoy a much better internet experience. http://getfirefox.com/
__________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
* 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
Saulius Krasuckas wrote:
- 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
Thanks all for the replies. I took note to the JanitorialProjects page, and found the DllCanUnloadNow project.
I wrote a patch for the dinput.c one, to start with getting familiar with wine's code, and it compiles fine, but I have no way (at least know of a way) of testing if the implementation actually works or not. It looks like it should, and it compiles, but I don't know for sure how to test it out...I've skimmed through the wiki, but I need some human help as well :(
And I guess I really meant "lower-level" coding, C looks scary as I'm not familiar with it and it looks more complex than other languages like Java, but the same syntax makes it a lot easier :O
Thanks for the support, makes things much easier :)
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,
What do you mean by low-level?
Correct me if I'm wrong, I could be looking at the wrong files :S.
Are you looking at assembly files? Those have .S extension. Methinks you should focus on the C sources first, which have .c extension.
Cheers, Kuba
On Monday 11 September 2006 12:12, Frank Richter wrote:
On 11.09.2006 15:24, Kuba Ober wrote:
Correct me if I'm wrong, I could be looking at the wrong files :S.
Are you looking at assembly files? Those have .S extension. Methinks you should focus on the C sources first, which have .c extension.
":S" might've been an emoticon here.
Thought about that, a quick google for :S didn't show up anything interesting.
Cheers, Kuba
On Monday 11 September 2006 22:58, Kuba Ober wrote:
On Monday 11 September 2006 12:12, Frank Richter wrote:
[...]
":S" might've been an emoticon here.
Thought about that, a quick google for :S didn't show up anything interesting.
According to [1], it's a "contratidcory remark" smiley.
Cheers,
Kai
[1] David Sanderson, "Smileys" , O'Reilly, 1993
Hi,Slunt Hmm as my thought you'd better read something about windows kernel technology. If you got difficult in assembly , which I thought the very low-level coding you refered to , to have a look at books about assembly maybe the best choice. But I still think windows kernel technology should be most important. Cheers! ------------------ hendric 2006-09-13
------------------------------------------------------------- 发件人:Aaron Slunt 发送日期:2006-09-11 08:01:07 收件人:wine-devel@winehq.org 抄送: 主题:Low-level coding
Hi,
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. Does anyone have any good places to go to to learn about low-level coding, and afterwards coding for wine specifically?
Thanks.