CreateThreadpoolIo 函数小记

 

函数原型如下:

PTP_IO WINAPI CreateThreadpoolIo(
  _In_         HANDLE fl,
  _In_         PTP_WIN32_IO_CALLBACK pfnio,
  _Inout_opt_  PVOID pv,
  _In_opt_     PTP_CALLBACK_ENVIRON pcbe
);

第一个参数表示要绑定到线程池内部IO完成端口的设备;有两点要注意。

第一点 还记得创建完成端口的函数么,它有两个功能,一是创建一个新的完成端口,二是将一个设备绑定到一个完成端口上面,而此函数并没有完成第二个功能,即,它并没有将第一个参数(即设备句柄)绑定到线程池内部IO完成端口上,它只是说,如果要将设备绑定到线程池内部的IO完成端口,就得以这样的形式来创建一个“对象”,这个“对象”里面包含着要绑定到线程池内部IO完成端口的设备;只有调用了下面的StartThreadpoolIo()函数后,才是将“对象”中的设备绑定到线程池内部IO完成端口上
第二点 还记得完成端口可以绑定多个设备么,所以,如果要将多个设备(多个异步SOCKET)绑定到线程池内部IO完成端口上面,就要多次调用这个函数来创建这种“对象”,“对象”中包含一个要绑定到线程池内部IO完成端口的设备

posted @ 2014-03-11 18:23  莫压枯枯地  阅读(1333)  评论(0编辑  收藏  举报