Gli eventi possono essere tra processi?
Domanda
Ho creato un evento in un processo e per testarlo, ho inviato l'handle dell'evento tramite una pipe a un processo completamente separato (non un thread figlio)
Quando eseguo l'evento nel primo caso, WaitForSingleObject non rileva l'evento, quindi immagino che la risposta sia no a meno che non abbia perso qualche trucco nel struttura SECURITY_ATTRIBUTES?
O forse devo usare un evento con nome e chiamare OpenEvent ()?
In questo caso non posso usare i messaggi di finestra perché sto cercando di segnalare un servizio di Windows. Potrei usare la pipa, ma ci saranno molte di queste applicazioni e vorrei trovare un "basso costo" soluzione se possibile.
Altre opzioni come i file mappati in memoria hanno un sovraccarico ancora maggiore rispetto alla pipe?
Come lo faresti?
Altri suggerimenti
Sì, funziona:
#COMPILE EXE "NamedEvent.exe"
#INCLUDE "win32api.inc"
%EVENT_ALL_ACCESS = &h0001F0003
FUNCTION PBMAIN() AS LONG
LOCAL lRet AS LONG, lError AS LONG, lEventName AS ASCIIZ * %MAX_PATH
lEventName = "TestEvent"
lRet = CreateEvent (BYVAL %NULL, %False, %False, lEventName)
lError = GetLastError ()
IF ISFALSE lRet THEN
MSGBOX "Unable to create Event, error:" + STR$(lError),,"CreateEvent error"
ELSE
IF lError = %ERROR_ALREADY_EXISTS THEN
lRet = OpenEvent(BYVAL %EVENT_ALL_ACCESS, %False, lEventName)
lError = GetLastError()
IF lRet THEN
MSGBOX "Opened existing Event, handle:" + STR$(lRet),,"OpenEvent:"
ELSE
MSGBOX "Unable to open Event, error:" + STR$(lError),,"OpenEvent error" : EXIT FUNCTION
END IF
ELSE
MSGBOX "Created new Event, handle:" + STR$(lRet),,"CreateEvent:"
END IF
END IF
END FUNCTION
In generale, ciò che ha un sovraccarico inferiore:
Tubi (presupponendo che siano specificate dimensioni ridotte)
MemMapFiles
Eventi