Windowsは waitFor.exe これはシステム上でシグナルを送信または待機することを可能にし、それによってネットワーク上で実行の同期を可能にします。シングルコンピューター
非常に便利ですが、良いドキュメントがないため、タイムアウトオプションを使用してバッチファイルに一時停止を挿入することはほとんどの場合悪用されています。
私が見つけることができる唯一のドキュメンテーションはこれです: https://technet.microsoft.com/ja-jp/library/cc731613(v=ws.11).aspx これは、特定のものに対する非常に基本的な使用法 waitFor.exe Windowsでのコマンド - しかし、それが実際にどのように実装されているのか、またどのようにしてそれが与えられたネットワークで動作することを保証するのか(==ファイアウォールによってブロックされない)
これらの信号の送受信を自分のコードに埋め込むことができるようにしたいのですが、その方法については何も見つけることができません - 最も基本的なプロトコルやパケットフォーマットでさえ利用できないようです。
私の質問
- これにはどのネットワークプロトコルが使用されますか? (@Sethが述べたように、それはおそらくRPCです - しかし、それでは、それはどのように実装されていますか?)
- 使用されているパケットフォーマットは何ですか?
- これらの信号をルーティングするためにどのネットワークポートが必要ですか?
言い換えれば、私は自分のプログラムでこれを実装するために必要なすべてを知る必要があります。
御時間ありがとうございます!
例によると、シグナルは単純な文字列のようですが、おそらく任意の文字列を送信できます。通常Windowsはそのような機能のためのRPC呼び出しに依存しています。
—
Seth
@eryksunが見つかりました 2014 SOコメント :waitfor.exeはに基づいています メールスロット 。
—
fsteff
waitfor someevent
という名前のメールスロットを作成します。 \\.\mailslot\WAITFOR.EXE\someevent
。経由でシグナルを送信する waitfor /si someevent
のハンドルを開く \\*\mailslot\WAITFOR.EXE\someevent
"*"を指定すると、UNCプロバイダはドメイン上のすべてのコンピュータにメッセージをブロードキャストします。 waitfor /s %COMPUTERNAME% /si someevent
具体的に opens \\[computer_name]\mailslot\WAITFOR.EXE\someevent
信号を放送する代わりに。