INOS code
Assume registered function on INOS that has no asynchronous execution part. It just returns a value than can be received by the PC code.
uint32 CMyModule::eGetValue()
{
return 69;
}
PC code
Let's have a look at different use cases from PC code point of view, how to call the previously mentioned INOS function.
Correct usage
- Preferred solution 1: Use CallProcedureExSync
double dResult = 0.0;
cout << "Value is: " << dResult << endl;
} else {
}
- Preferred solution 2: Call the procedure by getting the return value:
double dResult = 0.0;
int32 iTicketOrError =
CallProcedureEx(
"TargetName",
"PathToProcedure.GetValue()", &dResult);
cout << "Value is: " << dResult << endl;
} else {
}
- Another possiblity: Use the 'old-style' CallProcedure:
double dResult = 0.0;
uint32 uError =
CallProcedure(
"TargetName",
"PathToProcedure.GetValue()", &dResult);
cout << "Value is: " << dResult << endl;
} else {
}
Strange (but valid) usage
- Calling the function but ignore the returned value (which is 69 in this example)
int32 iTicketOrError =
CallProcedureEx(
"TargetName",
"PathToProcedure.GetValue()");
} else {
}
Forbidden/invalid usage
- It's not possible to get the result of a synchronously executed procedure after the call to CallProcedureEx. Therefore, in the following use case, the second call to CallProcedureExResult will for sure return an error (mainly because iTicketOrError is not a (valid) ticket):
int32 iTicketOrError =
CallProcedureEx(
"TargetName",
"PathToProcedure.GetValue()");
double dResult;
} else {
}