CreateIoCompletionPort() 函数

 1 /* *********************
 2  * CreateIoCompletionPort() 函数有两个功能:
 3  * 1、创建一个完成端口;
 4  * 2、将一个设备与一个存在的完成端口进行绑定,在网络编程中这个设备就是一个SOCKET。
 5  * ********************* */
 6 
 7 // 1、创建一个完成端口的固定写法:
 8 HANDLE hCompletion = ::CreateIoCompletionPort(
 9     INVALID_HANDLE_VALUE, NULL, NULL, 0);
10 
11 // 2、将一个有效的设备(这里只以SOCKET 为例)句柄与有效的完成端口绑定
12 // 这时有一个参数非常重要,就是第三个参数,这个参数就类似创建线程时的线程参数。
13 // 可以说完全是一样的,不过这个参数会被函数 
14 // ::GetQueuedCompletionStatus() 通过参数原样带回。
15 // 不过这里说的是写网络时,至于其他设备,暂时不了解。
16 // 为了完全,我们应该在堆内存中申请空间并传送过去。
17 char *chCompletionKey = new char[1024];
18 SOCKET sockConn = WSAAccept(sockListen, NULL, NULL, NULL, 0);
19 ::CreateIoCompletionPort((HANDLE)sockConn, hCompletion, 
20     (ULONG_PRT)chCompletionKey, 0);

 

posted on 2016-08-17 18:44  独孤酷酷  阅读(2419)  评论(0编辑  收藏  举报