1  HRESULT hr;
2  IOmgPcPlayerPtr pIOmgPcPlayer = NULL;
3  hr = pIOmgPcPlayer.CreateInstance(__uuidof(OpcWAVPlayer));
4  if (FAILED(hr)) {
5    MessageBox("IOmgPcPlayer CreateInstance Failed.");
6    return;
7  }
   我现在用的接口是IOmgPcPlayer,组建名称为OpcWAVPlayer,现在问题是执行到3步的时候还没有看到什么错误返回信息呢,就异常退出了?请问我出现错误的原因是什么我能用什么方法解决?提示错误:是内存没有申请空间,请大侠帮我分析一下,谢谢了!!!

解决方案 »

  1.   

    请参考如下代码,CoCreateInstance 的使用:
    CComPtr<IMMFPicker> aMMFPicker;
    //TODO
    USES_CONVERSION;
    CLSID clsid;
    HRESULT hr = CLSIDFromProgID( A2W(sProgID) , &clsid );
    if(FAILED(hr))
    {
    CString sMsg;
    sMsg.Format("Error: CLSIDFromProgID[%s]", sProgID);
    AfxMessageBox(sMsg);//
    return false;
    }

    hr = CoCreateInstance (clsid, 0, CLSCTX_INPROC_SERVER, IID_IMMFPicker, (void**)&aMMFPicker);
    if (SUCCEEDED(hr))
    {
    BSTR bstrReturn;
    aMMFPicker->Picker(_bstr_t(sEntity), _bstr_t(sInitParams), &bstrReturn);
    //Use the bstrReturn here:
    sReturn = BSTR2CString(bstrReturn);
    //Free bstrReturn:
    SysFreeString(bstrReturn);

    return true;
    }
    else
    {
    AfxMessageBox("Error: CoCreateInstance");
    return false;
    }
    }catch( _com_error e )
    {
    AfxMessageBox( e.ErrorMessage() );
    return S_FALSE;
    }catch( CException *e )
    {
    e->ReportError();
    e->Delete();
    return S_FALSE;
    }