用javascript调用atl编写的com组件,out型的variant如何返回不了字符串呢

用javascript调用atl编写的com组件,out型的variant怎么返回不了字符串呢?
在idl文件里面是如下定义:
[id(3),   helpstring( "method   test4 ")]   HRESULT   test4([out]   VARIANT*   pStr);

在cpp文件里面如下定义:
STDMETHODIMP   Cobjctrl::test4(VARIANT   *pStr)
{
//   TODO:   Add   your   implementation   code   here
pStr-> vt=VT_BSTR;      
pStr-> bstrVal=SysAllocString(L "在那遥远的地方 ");      
return   S_OK;
}

在jsp文件如下调用:
var   abc   =   new   ActiveXObject( "Test2.objctrl.1 ");
var   fdsfsd   =   "123 ";
iPort   =   abc   .test4(fdsfsd);
alert(fdsfsd);


却发现fdsfsd变量仍然是123?但在组件的test4里面是可以获取到fdsfsd   变量的值的。

已经尝试过BSTR,也不行。小弟是菜鸟,望各位大侠指导。

------解决方案--------------------
com实现代码
STDMETHODIMP CTest::TestBStr(BSTR *pStr)
{
CComBSTR temp = *pStr;
if(temp == "OK ")
{
*pStr = CComBSTR( "FALSE ");
}else
{
*pStr = CComBSTR( "Fool ");
}
// TODO: Add your implementation code here

return S_OK;
}