Ausgabeevent

Top  Previous  Next

Bei jeder Ausgabe auf das Protokollfenster kann Moskito eine Eventroutine aufrufen. Dabei werden nicht ganze Zeilen gesammelt, sondern es wird jede vom Anwender angestoßene Ausgabe übergeben. Die actionProcedure darf die Ausgabe manipulieren, kann sogar die eigentliche Ausgabe unterdrücken. Ein Verlängern des Textes ist momentan problematisch, da die Länge des Puffers nicht angepasst werden kann.

#define EVENT_ART_PRINTF            1

int DLLENTRY IOregisterEvent(int art, void *proc, void *userdata, int doRegister);

art (int)                                                          [IN]

Muss in diesem Fall den Wert EVENT_ART_PRINTF (1) haben.

proc (void *)                                                 [IN]

Diese Prozedur wird bei Eintritt des Events aufgerufen. Der Typ void* ist nur ein Stellvertreter. Die Prozedur muss als

int DLLENTRY event_printf(char *text, int *len, void *data);

deklariert sein.

userdata (void *)                                          [IN]

Dieser Wert wird uninterpretiert an die ActionProcedure übergeben.

doRegister (int)                                           [IN]

Wird hier FALSE (0) übergeben, so wird die vorher registrierte Routine entfernt. Die betroffene Routine wird anhand von Procedureadresse und Parameter userdata identifiziert.

Wird hier TRUE (!=0) übergeben, so wird die Routine mit in die Liste der Events aufgenommen.

 

Parameter der ActionProcedure

text (char *)                                                  [IN]

Zeiger auf den Text. Der Inhalt des Puffers kann beliebig verändert werden. Die Länge kann nicht vergrößert werden.

len (int *)                                              [IN/OUT]

Die Länge des Textes kann verkleinert werden, auch auf 0. Der Text ist normalerweise mit einem NULL-Zeichen abgeschlossen, sodass auf den Wert len beim Lesen des Textes nicht geachtet werden muss.

data (void *)                                                 [IN]

Der Wert wurde beim Registrieren als userdata übergeben.

Ergebnis

(int)                                                           [OUT]

1        Keine Ausgabe in das Kommandofenster vornehmen.

2        Keine Ausgabe und keine weiteren Action-Routinen ausführen.

0   Nächste ActionRoutine ausführen, als letztes die Ausgabe ins Protokollfenster vornehmen.

Deklaration

#include "ausgabe.h"

 

int DLLENTRY IOregisterEvent (

     PIOPIPES    pipes,

     int            art,

     void *         proc,

     void *         userdata,

     int            doRegister

};