Bonjour,
J'ai récupéré un vieux bouquin (époque Windows 95) qui explique et commente
l'écriture d'une DLL fournissant toutes les fonctions nécessaires a une
application MIDI, (playback, enregistrement, synchro etc...).
Mon but serait de réécrire cette DLL mais en y apportant diverses modifications.
Mais avant tout je veux comprendre les principes de base et là je commence
à pédaler sérieusement dans la semoule d'autant plus que le bouquin est en angliche ce qui n'arrange pas les choses.
En gros, cette DLL gére tout ce qui a attrait au MIDI en faisant appel au fonctions multimedia low level de l'API Windows contenues dans mmsystem.dll.
Là où ça se complique c'est que le bouquin propose en fait de faire
2 DLLs identiques, sauf que l'une est en 32 bit et l'autre en 16 bit.
Lorsque l'appli MIDI (32 bit) appel une fonction de la 1ere DLL (en 32 bit),
celle ci appel la fonction correspondante dans la 2eme DLL (16 bit)
via un "thunk".
L'intérêt de tout ce bazard ?
Utiliser le Win16Mutex qui permet à du code 16 bit de s'exécuter dans un
environnement 32 bit et d'échapper à l'aspect préemptif de Windows 95.
Toujours d'aprés le livre, le pb avec le préemptif c'est que, en gros, c'est Windows qui décide quand exécuter un thread. Donc, si un timer (dans une fonction de synchro par ex) demande à une fonction callback de s'exécuter toutes les 10 milisec, avec le préemptif c'est pas gagné.
1) Est ce que ces explications sont toujours valables avec win 98, Millenium, NT, XP, ou est ce que la donne a changé depuis ?
2) Si c'est malheureusement toujours pareil quelqu'un pourrait-il m'expliquer comment "thunker" d'une DLL à une autre et qu'est ce qu'un "thunk" exactement ?
Un grand merci d'avance
Partager