Win Api 有名管道通信--扫雷辅助(四)
生活随笔
收集整理的這篇文章主要介紹了
Win Api 有名管道通信--扫雷辅助(四)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
有名管道的使用
同linux 下一樣 通過(guò)有名管道 實(shí)現(xiàn)非父子進(jìn)程(資源繼承)關(guān)系的 進(jìn)程間通信(Inter Process Communicate)
無(wú)名管道是通過(guò)內(nèi)核進(jìn)行內(nèi)存共享 , 而有名管道是通過(guò)文件系統(tǒng)進(jìn)行的
核心代碼
m_hPipe = CreateNamedPipe(lpPipeName, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, \PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 0, 0, 1000, NULL);API 用于創(chuàng)建一個(gè)有名管道 , 并且返回它的句柄
if (ReadFile(m_hPipe, buffer, sizeof(buffer), &ReadNum, NULL) == FALSE)API 用于讀取管道 , 放在線程中輪詢吧
CSting m_cmd; // 這里比較重要的一點(diǎn) WriteFile(m_hPipe, m_cmd.GetString(), m_cmd.GetAllocLength()*2, &writeNum, NULL);API 用于寫管道, 第二個(gè),就是字符串指針, 第三個(gè)參數(shù)就是 寫入字符數(shù)
這里有一點(diǎn) 很坑的事情, 由于管道是以字節(jié)為單位傳遞的數(shù)據(jù) ,
然而 使用 unicode 之后, 一個(gè)字符是兩個(gè)字節(jié) , 所以這個(gè)寫入字節(jié)數(shù) 需要設(shè)置為
這樣才能完整的把自己的書籍傳遞過(guò)去 , 否則的話,會(huì)數(shù)據(jù)不完整
而導(dǎo)致在管道中滯留,
總結(jié)
以上是生活随笔為你收集整理的Win Api 有名管道通信--扫雷辅助(四)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 创建线程时候多参数传递方法及参数改变问题
- 下一篇: 常见排序算法详解 (收藏!)