3.61 DM_SendEvent

Die Ausführung einer dem externen Ereignis zugeordneten Regel wird durch die Anwendung über die Funktion DM_SendEvent vorgemerkt. Vorgemerkt bedeutet, dass die Regel nicht sofort ausgeführt wird, sondern das externe Ereignis in eine Queue eingetragen wird und entsprechend den Mechanismen für Dialogereignisse weiterverarbeitet wird.

Dieses Ereignis wird dann vom IDM über die normale Ereignisverarbeitungslogik abgearbeitet und führt zur Bearbeitung einer Regel im Schema on <object> extevent <no.>.

DM_Boolean DML_default DM_EXPORT DM_SendEvent
(
  DM_ID       objectID,
  DM_Value   *eventData,
  DM_UInt     argc,
  DM_Value   *argv,
  DM_Options  options
)

Parameter

-> DM_ID objectID

Dies ist der Identifikator des Objekts, an das dieses externe Ereignis geschickt werden soll.

-> DM_Value *eventData

Dieser Parameter ist das externe Ereignis, das ausgelöst werden soll.

-> DM_Int argc

In diesem Parameter wird die Anzahl der Parameter (bis zu 16) übergeben.

-> DM_Value *argv

Mit Hilfe dieses Parameters werden die Argumente (bis zu 16) angegeben, die beim Regelaufruf vom IDM mit übergeben werden sollen. Dieser Vektor muss dabei die in dem Parameter argc angegebene Länge haben.

-> DM_Options options

Als Option können bei dieser Funktion folgende Werte angegeben werden:

Option

Bedeutung

DMF_DontTrace

Diese Option bedeutet, dass der Funktionsaufruf nicht mitprotokolliert werden soll, falls die Anwendung mit der Trace-Option gestartet worden ist.

DMF_Synchronous

Diese Option kann gesetzt werden, wenn sichergestellt ist, dass die Funktion DM_SendEvent synchron zum Prozess aufgerufen wird. Dann kann die Funktion intern effizienter arbeiten. Synchron ist z.B. dann nicht der Fall, wenn aus einem Signal-Handler diese Funktion aufgerufen wird.

DMF_NoCriticalSection

Diese Option verhindert unter Microsoft Windows die Benutzung einer Critical Section.

Rückgabewert

DM_TRUE

Externes Ereignis konnte in die Queue gestellt werden.

DM_FALSE

Externes Ereignis konnte nicht in die Queue gestellt werden.

Anmerkung zu Microsoft Windows

Die Funktion DM_SendEvent verwendet ab IDM-Version A.05.01.a eine Critical Section um sicherzustellen, dass sie vollständig abgearbeitet ist, bevor diese Funktion oder die Funktion DM_QueueExtEvent das nächste Mal aufgerufen wird. Wird eine der beiden Funktionen in einer Situation aufgerufen, in der eine Critical Section nicht zulässig ist, dann kann die Verwendung der Critical Section durch die Option DMF_NoCriticalSection unterbunden werden.

Achtung

Ein Thread, der eine der beiden Funktionen ausführt darf nicht abgebrochen werden.

Siehe auch

C-Funktionen DM_QueueExtEvent, DM_SendMethod

Kapitel „Externe Ereignisse“ und eingebaute Funktion sendevent() im Handbuch „Regelsprache“

Ressource message