在WMRM sdk 中的接口,RMGetLicense的使用中,调用方法时,总是返回“无效的参数”,
同类似的代码用VB写的一切正常。
代码如下:#include <atlbase.h>
#include <msnetobj.h>
#include <comutil.h>
int main(int argc, char* argv[])
{
::CoInitialize(NULL);
CComPtr<IRMGetLicense> p;
p.CoCreateInstance( __uuidof(RMGetLicense) );
if ( p.p != NULL )
{
try
{
BSTR bs;
HRESULT hr = p->GetDRMVersion( &bs ); }
catch ( ... ) {
p = NULL;
}
}
}有谁知道吗?分不够再加,在线等。

解决方案 »

  1.   

    注明一下:
    对象可以创建成功,但调用
    p->GetDRMVersion( &bs );方法时出错。
      

  2.   

    could somebody can help me???
      

  3.   

    BSTR bs;
    HRESULT hr = p->GetDRMVersion( &bs );
    从提示看是参数错了。如果参数类型正确的话(是BSTR),VB不用管字符内存分配的,试试你自已分配内存,再传进去。
    BSTR bs=SysAllocStringLen(NULL, 512);
      

  4.   

    谢谢先。
    首先你说的方法我早就尝试过的,没有办法。
    感觉这似乎跟语言有冲突,
    我已经试过VB,和C#,
    类似的代码均没有问题。