Мне нужно вызвать функцию hllapi pcshll32.dll, используя delphi. Это работает с личными сообщениями IBM. Как я могу изменить код ниже Delphi? Спасибо !!!
Точка входа EHLLAPI (hllapi) всегда вызывается со следующими четырьмя параметрами:
- Номер функции EHLLAPI (вход)
- Буфер данных (ввод / вывод)
- Длина буфера (вход / выход)
- Положение в пространстве представления (вход); Код возврата (выход)
Прототип для IBM Standard EHLLAPI:
[длинный хлапи (LPWORD, LPSTR, LPWORD, LPWORD);
Прототип для IBM Enhanced EHLLAPI:
[длинный хлапи (LPINT, LPSTR, LPINT, LPINT);
Каждый параметр передается по ссылке, а не по значению. Таким образом, каждый параметр вызова функции должен быть указателем на значение, а не на само значение. Например, ниже приведен правильный пример вызова функции состояния сеанса запроса EHLLAPI:
#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
}
Все параметры в вызове hllapi являются указателями, и код возврата функции EHLLAPI возвращается в значении 4-го параметра, а не в качестве значения функции.