J'ai une ISAPI développée avec Delphi, et j'essaie de modifier le fonctionnement des fonctions suivantes:
Dans une ISAPI Dll, ces trois fonctions sont les points d'entrées que IIS utilise pour charger cette ISAPI. Le problème est que nous avons constatés un problème dans la gestion des threads de notre ISAPI. Donc on essaie de trouver une solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function GetExtensionVersion( var Ver : THSE_VERSION_INFO ) : BOOL; function HttpExtensionProc( var ECB : TEXTENSION_CONTROL_BLOCK ) : DWORD function TerminateExtension( dwFlags : DWORD ) : BOOL;
Pour ma part, étant donné que ces trois fonctions sont exportées, je me suis dis qu'on pouvait faire une dérivation, et externaliser d'autres fonctions mais sous ces noms là.
En gros, cela donne ceci
Dans une unité j'ai donc défini ces trois fonctions de la manière suivante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 exports Test_GetExtensionVersion name 'GetExtensionVersion', Test_HttpExtensionProc name 'HttpExtensionProc', Test_TerminateExtension name 'TerminateExtension';
Le léger soucis se trouve au niveau de la compilation, qui me dit que pour les lignes où se trouve l'appel aux fonctions HttpExtensionProc et GetExtensionVersion ( définie par Borland ), j'ai l'erreur suivante : "Les types des paramètres VAR originaux et formels doivent être identiques"
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 unit TestOverride; interface uses ISAPI, Windows; function Test_GetExtensionVersion(var Ver: THSE_VERSION_INFO): BOOL; stdcall; function Test_HttpExtensionProc(var ECB: TEXTENSION_CONTROL_BLOCK): DWORD; stdcall; function Test_TerminateExtension(dwFlags: DWORD): BOOL; stdcall; implementation uses HTTPApp, ISAPIApp; function Test_GetExtensionVersion(var Ver: THSE_VERSION_INFO): BOOL; begin Result := GetExtensionVersion( Ver ); end; function Test_HttpExtensionProc(var ECB: TEXTENSION_CONTROL_BLOCK): DWORD; begin Result := HttpExtensionProc( ECB ); end; function Test_TerminateExtension( dwFlags: DWORD): BOOL; begin Result := TerminateExtension( dwFlags ); end; end.
Chose étrange, car lorsque je vais voir dans le source de la VCL, les éléments ont la même signature.
Quelqu'un aurait-il une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function GetExtensionVersion(var Ver: THSE_VERSION_INFO): BOOL; function HttpExtensionProc(var ECB: TEXTENSION_CONTROL_BLOCK): DWORD; function TerminateExtension(dwFlags: DWORD): BOOL;
Merci
Partager