最近要寫一個串口程序,因此對windows的IO方式進行了簡單的複習。簡要的來講windows 的IO方式分爲兩種:同步和異步。而咱們要說的重疊IO是屬於異步IO方式的。如今windows 支持的系統對象包括文件,管道,串口,網絡等。接下來咱們先用管道來描述重疊IO的操做流程。 windows
重疊IO只要是依賴OVERLAPPED這個結構體: 網絡
重疊IO 有名管道流程: app
(1)建立有名管道 CreateNamedPipeA(pipeName, PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED, 異步
PIPE_TYPE_BYTE|PIPE_READMODE_BYTE,
1,
0,
0,
1000,
NULL
);打開模式必須指定FILE_FLAG_OVERLAPPED spa
(2)建立事件CreateEvent(NULL, TRUE, FALSE, NULL);把事件句柄賦值到OVERLAPPED中的事件。 對象
(3)鏈接管道ConnectNamedPipe(hPipe, &olp) ; 事件
(4)這是不斷輪詢的狀態 ip
等待 WaitForSingleObject(hPipe, 1000) //可設置異步和同步 同步
等待結束以後獲取結果GetOverlappedResult(hPipe, &olp, &len, TRUE) it
(5)讀取管道 ReadFile(hPipe, buffer, bufferLen, NULL, &olp);