È necessario il protocollo di segnalazione di Windows waitfor.exe


2

Windows ha un waitFor.exe comando disponibile per l'uso in batch e powershell (e qualsiasi altro linguaggio che possa chiamare un eseguibile), che consente di inviare o attendere un segnale su un sistema, consentendo così la sincronizzazione dell'esecuzione attraverso una rete - sebbene funzioni bene anche su un computer singolo.

È molto utilizzabile, ma a causa della mancanza di una buona documentazione è per lo più abusato inserire una pausa nei file batch usando l'opzione di timeout.

L'unica documentazione che riesco a trovare è questa: https://technet.microsoft.com/en-us/library/cc731613(v=ws.11).aspx , che fornisce un utilizzo di utilizzo molto semplice per lo specifico waitFor.exe comando in Windows - ma non offre nulla su come è effettivamente implementato, né su come garantisco che funzioni (== non è bloccato da qualche firewall) in una data rete.

Mi piacerebbe essere in grado di incorporare l'invio e la ricezione di questi segnali nel mio codice, ma non riesco a trovare nulla su come farlo - nemmeno il più semplice protocollo e formato di pacchetto sembra disponibile.

Le mie domande,

  1. Quale protocollo di rete viene utilizzato per questo? (Come menzionato da @Seth, probabilmente è RPC - ma poi, come viene implementato?)
  2. Qual è il formato del pacchetto utilizzato?
  3. Quali porte di rete sono necessarie per instradare questi segnali?

In altre parole, ho bisogno di sapere tutto il necessario per implementarlo nei miei programmi.

Grazie per il tuo tempo!


Come per gli esempi, il segnale sembra essere una semplice stringa, probabilmente è possibile inviare qualsiasi stringa. Di solito Windows si basa su chiamate RPC per tali funzioni.
Seth

Ho appena trovato @eryksun 2014 SO comment : waitfor.exe è basato su mailslots . waitfor someevent crea un mailslot chiamato \\.\mailslot\WAITFOR.EXE\someevent. Invio del segnale tramite waitfor /si someevent apre una maniglia per \\*\mailslot\WAITFOR.EXE\someevent, dove "*" ha il provider UNC che trasmette il messaggio a tutti i computer del dominio. waitfor /s %COMPUTERNAME% /si someevent specificamente opens \\[computer_name]\mailslot\WAITFOR.EXE\someevent invece di trasmettere il segnale.
fsteff
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.