Bonsoir,

Je manipule avec les fonctions API de Windev la DLL Bass et je rencontre un soucis avec une fonction particulière de cette DLL.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
HSYNC BASS_ChannelSetSync(
    DWORD handle,
    DWORD type,
    QWORD param,
    SYNCPROC *proc,
    void *user
);
(http://www.un4seen.com/doc/#bass/BAS...elSetSync.html)


Cette fonction appel une procédure callback de cette forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
void CALLBACK SyncProc(
    HSYNC handle,
    DWORD channel,
    DWORD data,
    void *user
);
(http://www.un4seen.com/doc/#bass/SYNCPROC.html)


J'ai donc créé une procédure SyncProc comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
PROCEDURE SyncProc(Handle_Stream, Channel, Data, User)
Et je tente d'appeler la fonction BASS_ChannelSetSync comme ceci :

API("bass", "BASS_ChannelSetSync", Handle_Stream_FX_P2, OUBinaire(BASS_SYNC_ONETIME, BASS_SYNC_POS), 10000, &SyncProc, 0)

Mais plantage direct de l'application avec le message d'erreur suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
Erreur à la ligne 1 du traitement Clic sur Bouton4.
Vous avez appelé la fonction API.
La fonction 'BASS_ChannelSetSync' de la DLL bass a provoqué une erreur d'exécution.
 
----- Informations techniques -----
 
Projet : media
 
Appel WL :
Traitement de 'Clic sur Bouton4' (Player.Bouton4), ligne 1, thread 0
Fonction 'API', syntaxe 0
 
Que s'est-il passé ?
La fonction 'BASS_ChannelSetSync' de la DLL bass a provoqué une erreur d'exécution.
 
Code erreur : 2805
Niveau : erreur fatale (EL_FATAL)
 
Dump de l'erreur du module 'WD160VM.DLL' (16.0.150.6).
Identifiant des informations détaillées (.err) : 2805
Informations de débogage :
 
Détails techniques :
 
Module : WD160VM.DLL
Version du module : 16.0.150.6
VI : 01F160057k
Adresse de base : 25E60000
Erreur système : Access violation (GPF)
EIP = 25EDBC14
OS : Windows 2008 R2 Service Pack 1(6.1.7601)
Registres :
 
  EIP = 25EDBC14    EBP = 0018F10C
  EAX = 00000000    EBX = 00000000
  ECX = 0018EDE0    EDX = 0000027D
  ESI = ABCDABCD    EDI = 0018F144
 
Pile des appels :
 
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25EC3CC0 : Execution() + 98132 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25EC3CC0 : Execution() + 94673 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	2600E250 : TermLibrary() + 358848 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 413280 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F4D060 : TermDLL() + 8144 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25EB46D0 : pQueryProxy() + 176 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25EB46D0 : pQueryProxy() + 176 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25EB46D0 : pQueryProxy() + 176 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 420864 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 420800 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 419216 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 419264 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 419056 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 419280 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 419440 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 419920 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 420288 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 419360 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 420304 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 526736 bytes
[WD160VM.DLL (25E60000), 16.0.150.6, 01F160057k]	25F67870 : InfoVersionWeb() + 529472 bytes
 
Fonction (0,90)
Informations supplémentaires :
EIT_PILEWL :
Clic sur Bouton4 (Player.Bouton4), ligne 1
EIT_DATEHEURE : 15/12/2013 00:10:26
 
Assistance
 
- Vérifiez les paramètres passés
- Vérifiez que le type des paramètres passés correspond bien à ceux attendus
- Vérifiez que les valeurs nulles sont bien tolérées par la fonction appelée
- Vérifiez les appels précédents à d'autres fonctions de cette DLL (ils ont pu la mettre dans un état instable)
- Si le problème persiste, contactez le fournisseur de la DLL où se trouve la fonction.
Je dois mal m'y prendre pour appeler la callback non ?

Merci d'avance