我正在使用Microsoft WMI连接到第三方硬件API的WMI名称空间。 所有的初始化工作正常。我启动并运行COM,并且我连接到WMI名称空间。但是当我调用IWbemClassObject :: Next来枚举类成员时,作为字符串的成员将返回VT_NULL类型。下一个函数如下所示:
HRESULT Next(
[in] LONG lFlags,
[out] BSTR *pstrName,
[out] VARIANT *pVal,
[out, optional] CIMTYPE *pvtType,
[out, optional] LONG *plFlavor
);
http://msdn.microsoft.com/en-us/library/aa391453(v=vs.85).aspx
VARIANT是一种“变量变量”类型,它几乎可以容纳任何内置的C ++类型。它的类型枚举器说VT_NULL,但在我看来,类成员应该是BSTR类型。那么,是什么给出的?这是否意味着我必须使用WQL查询类型?
我的目标是创建,修改和删除类及其成员的实例。 WMI命名空间是自定义硬件的专有命名空间。
答案 0 :(得分:2)
您是否阅读了pVal
参数的评论?
该方法在此调用VariantInit
VARIANT
,所以来电者应该确保 之前VARIANT
不活跃 致电。
你读过这些评论吗?
如果属性的基础类型 是对象路径,日期或时间,或 另一种特殊类型,然后是 返回的类型不够用 信息。来电者必须检查 指定的CIMTYPE 财产,并确定是否 property是一个对象引用,date 或时间,或其他特殊类型。
通过pvtType
参数获取CIMTYPE,其中评论明确提到VT_NULL
可能性:
这可能是这个的价值 属性可以是VT_NULL VARIANT