分类: WINDOWS
2009-08-28 11:22:34
一、管道 + 异步I/O 本地通讯模型
1、客户端操作
发送请求
(1) 互斥上锁 CreateMutex, WaitForSingleObject
(2) 打开命名管道 OpenNamedPipe
(3) 等待管道是否可用 WaitNamedPipe
(4) 创建管道写事件 CreateEvent
(5) 往管道异步写数据 WriteFile
(6) 创建管道读事件 CreateEvent
(7) 从管道读取数据 ReadFile
(8) 关闭管道 CloseHandle(hPipe)
(9) 互斥解锁 CloseHandle(hMutex) / ReleaseMutex(hMutex)
2、服务段操作
(0) 创建命名管道 CreateNamedPipe
(1) 创建管道连接事件 CreateEvent
(2) 连接命名管道 ConnectNamedPipe 由管道连接事件判断是否有客户端连接到来
(3) 创建管道读事件 CreateEvent
(4) 从管道读取数据 ReadFile
(5) 创建管道写事件 CreateEvent
(6) 往管道写数据 WriteFile
(7) 刷新写缓冲数据 FlushFileBuffers
(8) 断开管道连接 DisconnectNamedPipe
二、附录
1、互斥加锁
打开互斥锁:OpenMutex(MUTEX_ALL_ACCESS, FALSE, name)
创建互斥锁:CreateMutex(NULL, TRUE, name);
互斥上锁 :WaitForSingleObject(mutex, INFINITE);
互斥解锁 :CloseHandle(hMutex)
释放互斥锁:ReleaseMutex
2、管道操作
创建命名管道 :CreateNamedPipe
等待管道是否可用: WaitNamedPipe
管道写操作 : WriteFile
管道读操作 : ReadFile
命名管道连接 :ConnectNamedPipe
命名管道断开连接:DisconnectNamedPipe
命名管道关闭 : CloseHandle
3、事件操作
创建事件:CreateEvent
等待事件:WaitForSingleObject
设置事件: SetEvent
重置事件:ResetEvent
关闭事件:CloseHandle
具体内容可以参考MSDN帮助手册.