Hola mordaz.
Sería bueno poder saber el error que estas recibiendo, pero de todos modos y por si te sirve de guía, te agrego un ejemplo muy básico que usa parámetros
BSTR y
LONG:
Código:
void demo(BSTR in, BSTR*out, LONG* flag){
*flag = 123;
wsprintf(String(*out).c_str(), "%s %s %d", String(in).c_str(),
"modificado", *flag);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
BSTR BSTRIn = L"Mensaje de prueba";
BSTR BSTROut = NULL;
LONG LONGOut = 0;
demo(BSTRIn, &BSTROut, &LONGOut);
MessageBox(0, String(BSTROut).c_str(), "", MB_OK);
}
A fin de simplificar la presentación, ambos parámetros regresan como un único resultado en el segundo parámetro.
Saludos