最近要写一个串口程序,因此对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);