AnonymousPipeServerStream クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
同期と非同期の読み書き操作をサポートする匿名パイプに関連するストリームを公開します。
public ref class AnonymousPipeServerStream sealed : System::IO::Pipes::PipeStream
public sealed class AnonymousPipeServerStream : System.IO.Pipes.PipeStream
type AnonymousPipeServerStream = class
inherit PipeStream
Public NotInheritable Class AnonymousPipeServerStream
Inherits PipeStream
- 継承
- 継承
例
次の例では、匿名パイプを使用して、親プロセスから子プロセスに文字列を送信します。 この例では、 の値PipeDirection.OutをAnonymousPipeServerStream持つオブジェクトを親プロセスにPipeDirection作成します。また、 の値PipeDirection.Inを持AnonymousPipeClientStreamつ子プロセスに オブジェクトをPipeDirection作成します。 次に、親プロセスはユーザー指定の文字列を子プロセスに送信します。 文字列がコンソールに表示されます。
この例は、 クラスを使用するサーバー プロセス用 AnonymousPipeServerStream です。 パイプ クライアントとサーバーの両方のコードを含むコード例全体については、「 方法: ローカルプロセス間通信に匿名パイプを使用する」を参照してください。
//<snippet01>
#using <System.dll>
#using <System.Core.dll>
using namespace System;
using namespace System::IO;
using namespace System::IO::Pipes;
using namespace System::Diagnostics;
ref class PipeServer
{
public:
static void Main()
{
Process^ pipeClient = gcnew Process();
pipeClient->StartInfo->FileName = "pipeClient.exe";
AnonymousPipeServerStream^ pipeServer =
gcnew AnonymousPipeServerStream(PipeDirection::Out,
HandleInheritability::Inheritable);
Console::WriteLine("[SERVER] Current TransmissionMode: {0}.",
pipeServer->TransmissionMode);
// Pass the client process a handle to the server.
pipeClient->StartInfo->Arguments =
pipeServer->GetClientHandleAsString();
pipeClient->StartInfo->UseShellExecute = false;
pipeClient->Start();
pipeServer->DisposeLocalCopyOfClientHandle();
try
{
// Read user input and send that to the client process.
StreamWriter^ sw = gcnew StreamWriter(pipeServer);
sw->AutoFlush = true;
// Send a 'sync message' and wait for client to receive it.
sw->WriteLine("SYNC");
pipeServer->WaitForPipeDrain();
// Send the console input to the client process.
Console::Write("[SERVER] Enter text: ");
sw->WriteLine(Console::ReadLine());
sw->Close();
}
// Catch the IOException that is raised if the pipe is broken
// or disconnected.
catch (IOException^ e)
{
Console::WriteLine("[SERVER] Error: {0}", e->Message);
}
pipeServer->Close();
pipeClient->WaitForExit();
pipeClient->Close();
Console::WriteLine("[SERVER] Client quit. Server terminating.");
}
};
int main()
{
PipeServer::Main();
}
//</snippet01>
//<snippet01>
using System;
using System.IO;
using System.IO.Pipes;
using System.Diagnostics;
class PipeServer
{
static void Main()
{
Process pipeClient = new Process();
pipeClient.StartInfo.FileName = "pipeClient.exe";
using (AnonymousPipeServerStream pipeServer =
new AnonymousPipeServerStream(PipeDirection.Out,
HandleInheritability.Inheritable))
{
Console.WriteLine("[SERVER] Current TransmissionMode: {0}.",
pipeServer.TransmissionMode);
// Pass the client process a handle to the server.
pipeClient.StartInfo.Arguments =
pipeServer.GetClientHandleAsString();
pipeClient.StartInfo.UseShellExecute = false;
pipeClient.Start();
pipeServer.DisposeLocalCopyOfClientHandle();
try
{
// Read user input and send that to the client process.
using (StreamWriter sw = new StreamWriter(pipeServer))
{
sw.AutoFlush = true;
// Send a 'sync message' and wait for client to receive it.
sw.WriteLine("SYNC");
pipeServer.WaitForPipeDrain();
// Send the console input to the client process.
Console.Write("[SERVER] Enter text: ");
sw.WriteLine(Console.ReadLine());
}
}
// Catch the IOException that is raised if the pipe is broken
// or disconnected.
catch (IOException e)
{
Console.WriteLine("[SERVER] Error: {0}", e.Message);
}
}
pipeClient.WaitForExit();
pipeClient.Close();
Console.WriteLine("[SERVER] Client quit. Server terminating.");
}
}
//</snippet01>
'<snippet01>
Imports System.IO
Imports System.IO.Pipes
Imports System.Diagnostics
Class PipeServer
Shared Sub Main()
Dim pipeClient As New Process()
pipeClient.StartInfo.FileName = "pipeClient.exe"
Using pipeServer As New AnonymousPipeServerStream(PipeDirection.Out, _
HandleInheritability.Inheritable)
Console.WriteLine("[SERVER] Current TransmissionMode: {0}.",
pipeServer.TransmissionMode)
' Pass the client process a handle to the server.
pipeClient.StartInfo.Arguments = pipeServer.GetClientHandleAsString()
pipeClient.StartInfo.UseShellExecute = false
pipeClient.Start()
pipeServer.DisposeLocalCopyOfClientHandle()
Try
' Read user input and send that to the client process.
Using sw As New StreamWriter(pipeServer)
sw.AutoFlush = true
' Send a 'sync message' and wait for client to receive it.
sw.WriteLine("SYNC")
pipeServer.WaitForPipeDrain()
' Send the console input to the client process.
Console.Write("[SERVER] Enter text: ")
sw.WriteLine(Console.ReadLine())
End Using
Catch e As IOException
' Catch the IOException that is raised if the pipe is broken
' or disconnected.
Console.WriteLine("[SERVER] Error: {0}", e.Message)
End Try
End Using
pipeClient.WaitForExit()
pipeClient.Close()
Console.WriteLine("[SERVER] Client quit. Server terminating.")
End Sub
End Class
'</snippet01>
注釈
匿名パイプは、子プロセスと親プロセス間の安全で安全なプロセス間通信を提供するのに役立ちます。 AnonymousPipeServerStreamクラスを使用すると、親プロセスは子プロセスから情報を送受信できます。
匿名パイプは、通常、親プロセスと子プロセスの間でデータを転送する名前のない一方向パイプです。 匿名パイプは常にローカルです。ネットワーク経由では使用できません。 PipeDirection匿名パイプは一方向として定義されているため、 のInOut値はサポートされていません。
匿名パイプは読み取りモードを PipeTransmissionMode.Message サポートしていません。
匿名パイプのクライアント側は、 メソッドを呼び出してサーバー側から提供されるパイプ ハンドルから作成する GetClientHandleAsString 必要があります。 この文字列は、クライアント プロセスの作成時にパラメーターとして渡されます。 その後、クライアント プロセスから、 パラメーターとしてpipeHandleAsString
コンストラクターにAnonymousPipeClientStream渡されます。
オブジェクトは AnonymousPipeServerStream 、クライアントが終了したときに通知を受け取るために、 メソッドを DisposeLocalCopyOfClientHandle 使用してクライアント ハンドルを破棄する必要があります。
コンストラクター
AnonymousPipeServerStream() |
AnonymousPipeServerStream クラスの新しいインスタンスを初期化します。 |
AnonymousPipeServerStream(PipeDirection) |
パイプの方向を指定して AnonymousPipeServerStream クラスの新しいインスタンスを初期化します。 |
AnonymousPipeServerStream(PipeDirection, HandleInheritability) |
パイプの方向と継承性のモードを指定して、AnonymousPipeServerStream クラスの新しいインスタンスを初期化します。 |
AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) |
パイプの方向、継承性のモード、バッファー サイズを指定して、AnonymousPipeServerStream クラスの新しいインスタンスを初期化します。 |
AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) |
パイプの方向、継承性のモード、バッファー サイズ、パイプのセキュリティを指定して、AnonymousPipeServerStream クラスの新しいインスタンスを初期化します。 |
AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) |
指定したパイプ ハンドルから AnonymousPipeServerStream クラスの新しいインスタンスを初期化します。 |
プロパティ
CanRead |
現在のストリームが読み取り操作をサポートしているかどうかを示す値を取得します。 (継承元 PipeStream) |
CanSeek |
現在のストリームがシーク操作をサポートしているかどうかを示す値を取得します。 (継承元 PipeStream) |
CanTimeout |
現在のストリームがタイムアウトできるかどうかを決定する値を取得します。 (継承元 Stream) |
CanWrite |
現在のストリームが書き込み操作をサポートしているかどうかを示す値を取得します。 (継承元 PipeStream) |
ClientSafePipeHandle |
現在 AnonymousPipeServerStream オブジェクトに接続されている AnonymousPipeClientStream オブジェクトのセーフ ハンドルを取得します。 |
InBufferSize |
パイプの着信バッファーのサイズ (バイト単位) を取得します。 (継承元 PipeStream) |
IsAsync |
PipeStream オブジェクトが非同期的に開かれたか、同期的に開かれたかを示す値を取得します。 (継承元 PipeStream) |
IsConnected |
PipeStream オブジェクトが接続されているかどうかを示す値を取得または設定します。 (継承元 PipeStream) |
IsHandleExposed |
PipeStream オブジェクトのハンドルが公開されているかどうかを示す値を取得します。 (継承元 PipeStream) |
IsMessageComplete |
最後に実行された読み取り操作から返されたメッセージに他のデータが存在するかどうかを示す値を取得します。 (継承元 PipeStream) |
Length |
ストリーム長 (バイト単位) を取得します。 (継承元 PipeStream) |
OutBufferSize |
パイプの発信バッファーのサイズ (バイト単位) を取得します。 (継承元 PipeStream) |
Position |
現在のストリームの現在位置を取得または設定します。 (継承元 PipeStream) |
ReadMode |
AnonymousPipeServerStream オブジェクトの読み取りモードを設定します。 匿名パイプでは、送信モードを Byte にする必要があります。 |
ReadTimeout |
ストリームがタイムアウト前に読み取りを試みる期間を決定する値 (ミリ秒単位) を取得または設定します。 (継承元 Stream) |
SafePipeHandle |
現在の PipeStream オブジェクトによってカプセル化されるパイプのローカルの終端のセーフ ハンドルを取得します。 (継承元 PipeStream) |
TransmissionMode |
現在のパイプでサポートされるパイプ送信モードを取得します。 |
WriteTimeout |
ストリームがタイムアウト前に書き込みを試行する期間を決定する値 (ミリ秒単位) を取得または設定します。 (継承元 Stream) |
メソッド
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
非同期の読み込み動作を開始します。 (継承元 PipeStream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
非同期の書き込み操作を開始します。 (継承元 PipeStream) |
CheckPipePropertyOperations() |
パイプがプロパティの取得または設定に対して適切な状態にあることを確認します。 (継承元 PipeStream) |
CheckReadOperations() |
パイプが読み取り操作に対して接続状態にあることを確認します。 (継承元 PipeStream) |
CheckWriteOperations() |
パイプが書き込み操作に対して接続状態にあることを確認します。 (継承元 PipeStream) |
Close() |
現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 このメソッドを呼び出す代わりに、ストリームが適切に破棄されていることを確認します。 (継承元 Stream) |
CopyTo(Stream) |
現在のストリームからバイトを読み取り、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。 (継承元 Stream) |
CopyTo(Stream, Int32) |
指定されたバッファー サイズを使用して、現在のストリームからバイトを読み取り、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。 (継承元 Stream) |
CopyToAsync(Stream) |
現在のストリームからすべてのバイトを非同期に読み取り、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。 (継承元 Stream) |
CopyToAsync(Stream, CancellationToken) |
指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたキャンセル トークンを使用して、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。 (継承元 Stream) |
CopyToAsync(Stream, Int32) |
指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。 (継承元 Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたバッファー サイズとキャンセル トークンを使用して、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。 (継承元 Stream) |
CreateObjRef(Type) |
リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (継承元 MarshalByRefObject) |
CreateWaitHandle() |
古い.
古い.
古い.
WaitHandle オブジェクトを割り当てます。 (継承元 Stream) |
Dispose() |
Stream によって使用されているすべてのリソースを解放します。 (継承元 Stream) |
Dispose(Boolean) |
PipeStream クラスによって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。 (継承元 PipeStream) |
DisposeAsync() |
Stream によって使用されているアンマネージ リソースを非同期に解放します。 (継承元 Stream) |
DisposeLocalCopyOfClientHandle() |
AnonymousPipeClientStream オブジェクトのハンドルのローカル コピーを閉じます。 |
EndRead(IAsyncResult) |
非同期読み込み要求の保留状態を終了します。 (継承元 PipeStream) |
EndWrite(IAsyncResult) |
保留中の非同期書き込み要求を終了します。 (継承元 PipeStream) |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
Finalize() |
AnonymousPipeServerStream インスタンスがガベージ コレクションによって回収される前に、アンマネージ リソースを解放し、その他のクリーンアップ操作を実行します。 |
Flush() |
現在のストリームに対応するバッファーをクリアし、バッファー内のすべてのデータを、基になるデバイスに書き込みます。 (継承元 PipeStream) |
FlushAsync() |
ストリームに対応するすべてのバッファーを非同期にクリアし、バッファー内のデータを基になるデバイスに書き込みます。 (継承元 Stream) |
FlushAsync(CancellationToken) |
現在のストリームに対するバッファーを非同期にクリアし、バッファー内のすべてのデータを基になるデバイスに書き込みます。 (継承元 PipeStream) |
GetAccessControl() |
現在の PipeStream オブジェクトが示すパイプのアクセス制御リスト (ACL) エントリをカプセル化する PipeSecurity オブジェクトを取得します。 (継承元 PipeStream) |
GetClientHandleAsString() |
接続されている AnonymousPipeClientStream オブジェクトのハンドルを文字列として取得します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetLifetimeService() |
古い.
対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
InitializeHandle(SafePipeHandle, Boolean, Boolean) |
指定した PipeStream オブジェクトから、SafePipeHandle オブジェクトを初期化します。 (継承元 PipeStream) |
InitializeLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
ObjectInvariant() |
古い.
Contract のサポートを提供します。 (継承元 Stream) |
Read(Byte[], Int32, Int32) |
ストリームからバイトのブロックを読み取り、指定した長さの指定した位置を開始位置として、指定したバッファーにデータを書き込みます。 (継承元 PipeStream) |
Read(Span<Byte>) |
現在のストリームからバイト シーケンスを読み取り、バイト配列に書き込んで、読み取ったバイト数だけストリーム内の位置を進めます。 (継承元 PipeStream) |
ReadAsync(Byte[], Int32, Int32) |
現在のストリームからバイト シーケンスを非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進めます。 (継承元 Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
現在のストリームからバイト シーケンスを、指定したバイト数の指定した位置を開始位置としてバイト配列に非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。 (継承元 PipeStream) |
ReadAsync(Memory<Byte>, CancellationToken) |
現在のストリームからバイト シーケンスを非同期に読み取り、バイト メモリの範囲に書き込んで、読み取ったバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。 (継承元 PipeStream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
現在のストリームから少なくともバイト数を読み取り、ストリーム内の位置を読み取ったバイト数だけ進めます。 (継承元 Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
現在のストリームから少なくとも最小バイト数を非同期に読み取り、読み取ったバイト数だけストリーム内の位置を進め、キャンセル要求を監視します。 (継承元 Stream) |
ReadByte() |
パイプからバイトを読み取ります。 (継承元 PipeStream) |
ReadExactly(Byte[], Int32, Int32) |
現在のストリームからバイト数を読み取 |
ReadExactly(Span<Byte>) |
現在のストリームからバイトを読み取り、 が塗りつぶされるまでストリーム内の位置を |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
現在のストリームからバイト数を非同期に読み取 |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
現在のストリームからバイトを非同期に読み取り、 が満たされるまでストリーム内の位置を |
Seek(Int64, SeekOrigin) |
現在のストリームの現在位置を、指定した値に設定します。 (継承元 PipeStream) |
SetAccessControl(PipeSecurity) |
PipeSecurity オブジェクトで指定されたアクセス制御リスト (ACL) エントリを、現在の PipeStream オブジェクトで指定されたパイプに適用します。 (継承元 PipeStream) |
SetLength(Int64) |
現在のストリーム長を指定した値に設定します。 (継承元 PipeStream) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
WaitForPipeDrain() |
パイプのもう一方の終端が、送信されたすべてのバイトを読み取るまで待機します。 (継承元 PipeStream) |
Write(Byte[], Int32, Int32) |
バッファーのデータを使用して、現在のストリームにバイトのブロックを書き込みます。 (継承元 PipeStream) |
Write(ReadOnlySpan<Byte>) |
現在のストリームにバイト シーケンスを書き込み、書き込んだバイト数だけストリーム内の現在位置を進めます。 (継承元 PipeStream) |
WriteAsync(Byte[], Int32, Int32) |
現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進めます。 (継承元 Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
指定した位置を開始位置としてバイト配列から指定したバイト数を非同期に書き込み、書き込んだバイト数だけこのストリーム内の現在の位置を進め、キャンセル要求を監視します。 (継承元 PipeStream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
現在のストリームにバイト シーケンスを非同期に書き込み、書き込んだバイト数だけストリーム内の現在位置を進め、キャンセル要求を監視します。 (継承元 PipeStream) |
WriteByte(Byte) |
現在のストリームにバイトを書き込みます。 (継承元 PipeStream) |
拡張メソッド
CopyToAsync(Stream, PipeWriter, CancellationToken) |
キャンセル トークンを使用して、Stream からバイトを非同期で読み取り、指定した PipeWriter に書き込みます。 |
GetAccessControl(PipeStream) |
パイプ ストリームのセキュリティ情報を返します。 |
SetAccessControl(PipeStream, PipeSecurity) |
既存のパイプ ストリームのセキュリティ属性を変更します。 |
ConfigureAwait(IAsyncDisposable, Boolean) |
非同期の破棄可能から返されるタスク上での待機がどのように実行されるかを構成します。 |
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示