完成端口
来源:互联网 发布:什么是软件系统 编辑:程序博客网 时间:2024/06/05 03:14
CreateIoCompletionPort:
CreateIoCompletionPort函数关联一个已打开的文件实例和新建的或已存在的I/0完成端口,或者创建一个未关联任何文件的I/O完成端口。
该函数两个明显作用:
1. 用于创建一个完成端口对象。
2. 将一个句柄同完成端口关联到一起,创建一个I/O完成端口对象,用它面向任意数量的套接字句柄,管理多个I/O请求。
即该函数的两个明显作用是:即可以用该函数创建一个完成端口对象(该IO对象可以在创建时不关联任何对象),又可以用该函数将一个已经创建的对象关联到完成端口上。
MSDN解释:
The CreateIoCompletionPort function can associate an instance of an opened file with a newly created or an existing input/output (I/O) completion port; or it can create an I/O completion port without associating it with a file.
- FileHandle
- Handle to a file opened for overlapped I/O completion. You must specify the FILE_FLAG_OVERLAPPED flag when using theCreateFile function to obtain the handle.
If FileHandle specifies INVALID_HANDLE_VALUE, CreateIoCompletionPort creates an I/O completion port without associating it with a file. In this case, theExistingCompletionPort parameter must be NULL, and theCompletionKey parameter is ignored.
- CompletionKey
lpCompletionKey 也被叫成“每句柄数据”, 它与句对应,一個句柄一个结构体。
lpOverlapped 也叫 "每IO数据",也就是每次 IO 用一個
lpCompletionKey 保存一些连接相关的数据,lpOverlapped 保存操作相关的数据。
比如一個 socket 连接,它上面可能有N个异步的 WSARecv 或 WSASend....
指定一个句柄唯一(PER_HANDLE)数据,它将与FILEHANDLE套接字句柄关联在一起,应用程序可以在此存储任意类型的信息,通常是一个指针。CompletionKey通常用来描述与套接字相关的信息,所以它为句柄唯一(per_handle)数据。
PER_IO_DATA和PER_HANDLE_DATA
typedef struct _PER_HANDLE_DATA
{
SOCKET sock;
sockaddr_in si;
}PER_HANDLE_DATA,*PPER_HANDLE_DATA;
typedef struct _PER_IO_DATA
{
OVERLAPPED overlapped;
WSABUF wsabuf;
char buffer[BUFFER_SIZE];
int operationType;
}PER_IO_DATA,*PPER_IO_DATA;
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口 完成端口 完成端口 还是完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 完成端口
- 相关推荐
- HDU 汉诺塔 1207 2064 2077 1995
- DWR 调用函数异常
- (JAVA)IO流
- Eclipse 设置字体
- 完成端口
- Python自学2:Python函数定义
- ui5 清除controll的cache
- dos下运行junit、运行依赖jar文件的class
- 遇到数据问题时快来试试吧
- IOS分辨率大全
- PLSQL Developer配置,出现“ORA-12154: TNS:无法解析指定的连接标识符”
- C语言 找出水仙花数
- IE9在FCKeditor编辑器插入图片时,弹出窗口后没反映,提示调用的对象无效