I've got problem with passing parameters to DLL.
I need to pass something like char** (just like parameters table in regular c++), but after some tries I've given up.
I'm sure that this is not correct way:
In StartServiceA:System::Call '*(t R3) i.R2'
System::Call '*(i R2) i.R1'
System::Call 'advapi32::StartServiceA(i r5, i $R4, i $R1) i.r6 ? e'
System::Free $R1
System::Free $R2
Pop $0 ; error code
$R1 should be a pointer to table of pointers to null-terminated strings.
$R4 should contain number of strings.
How can I make structure like this and how can I count $R4 value (assuming I have only regular string with spaces in $R7)?
And another question. Option '? e' pops an error code to stack. Is the order of 'Pop' and 'Free' important (in other words: does '::Call*(...)' and '? e' use the same stack)?
Thanks,