Watch out for [out] IDL notation.

You'll need to pass addres of placeholder types.

BSTR bname = NULL;

// from CString

bname = cstringname.AllocSysString();

psecuredptr->Login( bname );


NOTE: for a return value

BSTR bname = NULL;

psomeCOMptr->GetBstrval( &bname );

CString name = bname;


Like wise of long's
long lval;
psomeBinCOMCall->GetLong( &lval );


This '&' (address of operator) means a location
in memory to place the result.

Try it.