我要使用imapi中的开发光盘刻录软件,其中的对象包括MSDiscMasterObj等等,我用CoCreateInstance()无法创建该对象的接口啊,总是返回负值,代码如下:
IDiscMaster*  pDiscMaster  =  NULL;  
 
//获取MSDiscMasterObj的CLSID  
CLSID  CLSID_MSDiscMaster  = {0x520CCA63,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E}};  
 
//获取该对象接口的IID  
IID  IID_IDiscMaster  =  {0x520CCA62,0x51A5,0x11D3,0x91,0x44,0x00,0x10,0x4B,0xA1,0x1C,0x5E}};  
 
//创建接口实例  
HRESULT  hr  =  CoCreateInstance(CLSID_MSDiscMaster,NULL,CLSCTX_ALL,  
                                                           IID_IDiscMaster,(LPVOID*)&pDiscMaster);  返回的hr不是定义好的标准值,而是负数,请问这是为什么啊?

解决方案 »

  1.   

    如果hr是0就表示成功,否则,Tools--Error Lookup,把hr的值输入Value中,点击Lookup.
      

  2.   

    哈哈,akiko(弥弥) 说得不错;补充一句:
    hr>0为警告;hr<0为错误;hr ==0表示执行成功
      

  3.   

    具体对应这个组件应该返回什么值我不知道 但是HRESULT返回的值是一个由32位拼起来的值 看它换算到10进制等于多少是没有意义的
    这个32位值高第一位表示了错误的严程度 如果你用signed int输出得到一个负值的话 那说明返回了一个错误(最高位是11111111)
      

  4.   

    哦,多谢。我试了,报错是“没有调用CoInitialize()”
    然后,我添加了一句"hr = CoInitialize(NULL);",可还是返回负值,再次lookup,得到的是错误是:“无法启动服务,原因可能是被禁用或与其相关联的设备没有启动”
    我所用到的设备就是刻录机了,已经打开了,并工作正常啊。
    还有可能是什么问题呢?
    我用的这个com没有注册,不知道是不是这个问题