Format d'appel EHLLAPI
Le point d'entrée EHLLAPI (hllapi) est toujours appelé avec les quatre paramètres suivants :
- Numéro de fonction EHLLAPI (entrée)
- Tampon de données (entrée/sortie)
- Longueur du tampon (entrée/sortie)
- Position (entrée) ; Code retour (sortie)
Le prototype pour IBM® Standard EHLLAPI est :
[long hllapi (LPWORD, LPSTR, LPWORD, LPWORD);Le prototype pour IBM® Enhanced EHLLAPI est :
[long hllapi (LPINT, LPSTR, LPINT, LPINT);Chaque paramètre est transmis par référence et non par valeur. Ainsi, chaque paramètre de l'appel de fonction doit être un pointeur vers la valeur, pas la valeur elle-même. Par exemple, ce qui suit est un exemple correct d’appel de la fonction EHLLAPI Query Session Status :
#include "hapi_c.h" struct HLDQuerySessionStatus QueryData; int Func, Len, Rc; long Rc; memset(QueryData, 0, sizeof(QueryData)); // Init buffer QueryData.qsst_shortname = 'A'; // Session to query Func = HA_QUERY_SESSION_STATUS; // Function number Len = sizeof(QueryData); // Len of buffer Rc = 0; // Unused on input hllapi(&Func, (char *)&QueryData, &Len, &Rc); // Call EHLLAPI if (Rc != 0) { // Check return code // ...Error handling }Tous les paramètres de l'appel hllapi sont des pointeurs et le code retour de la fonction EHLLAPI est renvoyé dans la valeur du 4ème paramètre, et non comme la valeur de la fonction. Par exemple, ce qui suit n'est pas correct :
if (hllapi(&Func, (char *)&QueryData, &Len, &Rc) != 0) { // WRONG! // ...Error handling }Bien que la fonction hllapi soit définie pour renvoyer un type de données long pour IBM® Standard et Enhanced EHLLAPI, et un type de données void pour WinHLLAPI, sa valeur n'est pas définie et ne doit pas être utilisée.
Les deuxième à quatrième paramètres de l'appel hllapi peuvent renvoyer des informations à l'application. La description de chaque fonction EHLLAPI décrit les informations, le cas échéant, renvoyées dans ces paramètres.