天天看點

Windows 命名管道 + 異步I/O模型

一、管道 + 異步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幫助手冊.