我刚接触完成端口这个模型,我想问下各位大侠,GetQueuedCompletionStatus这个函数是不是一旦有网络消息就会被激活?还是需要用WSASend和WSARecv这两个函数来激活?

解决方案 »

  1.   

    你先要投递WSASend或WSARecv的请求,操作系统会处理你投递的请求,当系统完成你的请求后
    会把通知放到这个完成端口对应的通知队列里面,你的工作现场就可以不断的调用GetQueuedCompletionStatus来获取通知队列里面的通知
      

  2.   

    需要用WSASend和WSARecv这两个函数来激活,你不投递请求,它就不予反应。
      

  3.   

    1 WSASend,WSARecv,AcceptEx的第一参数socket上创建了完成端口,
    2 或是WriteFile,ReadFile的第一参数文件句柄上创建成了完成端口,get函数就会在有事件发生时返回。
      

  4.   

    你投递了WSASend,那么send结束以后会激活
    投递了WSARecv,那么有数据过来以后会激活