具名管道(Named Pipes)

  • 4591
  • 0

摘要:具名管道(Named Pipes)

 

具名管道 具名管道(Named Pipes)是已經被命名、單工(simplex)或者雙工(duplex)的管道,用以扮演在管道服務提供者(pipe server)與一個或者多個管道服務請求者(pipe client)之間溝通的渠道。所有具名管道的實例(instance)共享一個管道名稱,但是每一個具名管道的實例擁有自己的緩衝空間(buffer)與智慧型指標(handle),並且針對管道服務的提供者與請求者的通訊需求提供一個分離的導管。前述的運作促使多個管道服務請求者可以同時共用一個具名管道。

在資訊安全的檢查之下,任何一個程序(process)都可以存取具名管道,所以在彼此相關或者無關的程序之間通訊時,具名管道是一種簡單的通訊形式。

任何一個程序都可以扮演服務提供者或者服務請求者,於是促使同儕式計算(peer to peer)的溝通成為可能。如同本文用法,管道服務提供者意指建立具名管道的程序,而管道服務請求者意旨連接到一個具名管道實例的程序。用以初始化一個具名管道的服務提供者端(server-side)的函數是CreateNamedPipe。用以接受一個連線的服務提供者端(server-side)的函數是ConnectNamedPipe。請求服務的程序使用CreateFile或CallNamedPipe函數連接到具名管道。

針對同一台電腦上的不同程序或者橫跨網路的不同電腦上的不同程序,具名管道可以提供通訊服務。倘若服務提供者正在運作中,所有的具名管道都可以在遠端存取。倘若您僅企圖在本機端使用一個具名管道,請將NT AUTHORITY\NETWORK設為拒絕存取,或者切換到本機端的遠端程序呼叫(local RPC)。


原文網頁:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx