首先要知道,netbios命令本身都是同步的,就是说,在完成命令之前,会一直调用netbios块.
而对一个NCBLISTEN命令来说,当有一个客户机建立了连接,或发生错误是,对netbios的调用才会返回.而异步时,从netbios返回的是NRC_GOODREG,这样会更有效率

解决方案 »

  1.   

    Rate 感谢lhxx...
      NCBLISTEN本身只当有一个客户机建立连接,或错误发生,该调用才会返回。当ncb_command |ASYLE(是不是这个宏?),表明该调用是异步调用,只是说该命令返回之前(function or event 是不是该命令的一部分?我想应该是的,因为function or event还用NCB块),接着执行ncb_post,or ncb_event 后的function or event,我的这种理解对不对?
     标明异步调用的宏只是一个标志,标志命令中还有function or event 的执行?
     若是这样,命令本身是同步的,所谓对命令的异步调用不可能像::PostMessage()和::SendMessage()一样?真想不通这个"异步"...
     感谢大家来告诉我真正的答案...
     
      

  2.   

    呵呵,说清楚些吧,执行一个异步命令时,从Netbios返回的值是NRC_GOODGET(0X00),但ncb_cmd_cplt字段会设为NRC_PENDING(0XFF),而且还会将NCB结构中的ncb_cmd_cplt字段设为NRC_PENDING(待决),直到命令完成为止,命令完成后ncb_cmd_cplt字段会设为命令的返回值,Netbios也会在完成后将ncb_retcode字段设为命令的返回值
      

  3.   

    lhxx:
       我还是不清楚,我是不是笨得可以...不要见怪...还要请教你:你跟我讲的是关于NetBIOS的返回值,ncb_retcode的值的改变是由什么引起的?我想知道异步命令的调用过程,比如说:一个NCB结构,ncb_command 为NCB_LISTEN 异步调用,ncb_post 为  ClientServer (),该命令的调用过程是什么样子,ncb_retcode 和ncb_cmd_cplt 的值会怎么改变?