none
WMI 异步访问 RRS feed

  • 问题

  • 我根据MSDN中的这个WMI异步访问的例子,做了一个应用
    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/wmisdk/wmi/example__getting_wmi_data_from_the_local_computer_asynchronously.htm


    但是遇到的问题是,在异步访问时,实现的IWbemObjectSink 子对象的SetStatus方法能被系统回调,且能获得WBEM_STATUS_COMPLETE。但是Indicate方法则始终不会被调用,请问Indicate方法在什么时候调用或是还要有其他的处理。
    • 已移动 Sheng Jiang 蒋晟Moderator 2009年3月16日 17:42 WMI问题 (从 Visual C++ 移动到 Windows Vista 开发相关讨论)
    • 已移动 孟宪会Moderator 2009年5月19日 9:37 ([Loc]From:Windows Vista 开发相关讨论)
    2009年3月16日 9:03

答案

全部回复

  • 楼主,你好

    请你参考下面的文章试试,应该对你有帮助,特别留意”Remarks“部分。



    IWbemObjectSink::Indicate Method


    Microsoft Online Community Support
    2009年3月18日 8:11


  • 最近较忙,没有回复Sorry!

    多次调试后,发现是我没有在执行完异步查询后调用CancelAsyncCall,所以Querysink 始终都没有被执行,按msdn的内容调用CancelAsyncCall
    后,执行正常。对此有点不太明白,为什么一定要调用CancelAsyncCall后,sink对象才会被触发,如果是这样的话,与semiSynch方式实在是差别不大,
    而且msdn中还不建议使用异步方式。谁能讲讲这是为啥要这样调用么
    2009年5月21日 1:53