Прототип функции main() объявляется следующим образом:
DORD main(
DWORD dwInDataLng, DWORD dwOutDataLng, DWORD dwP1)
Параметры dwInDataLng и dwOutDataLng устанавливают количество данных, считываемых из буфера ввода и возвращаемых в буфер вывода. Параметр dwP1 используется для передачи кода подфункции загружаемого кода.
Параметр dwP1 передается функции GrdCodeRun() и его можно получить в загруженном коде в виде третьего параметра функции main (функции, которая первой получает управление в С-коде):
DWORD func1(dwInDataLng, dwOutDataLng)
{
// Логика работы 1:
return 101;
}
DWORD func2(dwInDataLng, dwOutDataLng)
{
// Логика работы 2:
return 102;
}
DWORD func3(dwInDataLng, dwOutDataLng)
{
// Логика работы 3:
return 103;
}
DWORD main(DWORD dwInDataLng, DWORD dwOutDataLng, DWORD dwP1) {
switch (dwP1)
{
case 0x01:
return func1(dwInDataLng, dwOutDataLng);
case 0x02:
return func2(dwInDataLng, dwOutDataLng);
case 0x03:
return func3(dwInDataLng, dwOutDataLng);
case 0x04:
// ...
default:
return -1;
}
}