Du kannst schauen, ob der
COM Port frei (du ihn also öffnen kannst) ,
dann wäre die
DLL nicht geladen (wenn sie auf den Port zugreift)
Du könntest dir in der EXE selber ein globales "Flag" setzen, wenn dort die
DLL geladen wird und das prüfen.
CreateMutex
Oder du müsstest eben die anderen Prozesse durchgehen, dir da die DLLs auflisten und nachsehn
EnumProcesses OpenProcess
EnumProcessModules GetModuleFileNameEx
[add]
Du könntest auch die TreiberDLL umgenennen,
eine eigene
DLL mit den selben öffentlichen Schnittstellen erstellen, welche den Zugriff zur eigentlichen
DLL durchreicht.
Und während die Anwendung nicht auf die
DLL zugreift, könntest du in deiner
DLL oder via
IPC zur LoggerEXE die Grenzwerte abfragen/prüfen.
Oder in der NeuenDLL der LogggerEXE mitteilen, wann sie starten kann oder sich beenden soll.
-> wird das Programm gestartet, läd deine
DLL (eigentlich die TreiberDLL), dann dem Logger sagen "aufhören" und deine TreiberDLL freigeben, damit das Programm drauf zugreifen kann.
-> wird das Programm wieder beendet (deine
DLL entladen), dann "hey Logger, du kannst wieder"
-> und ansonsten einfach nur alle Funktionsaufrufe/Callbacks zwischen TreiberDLL und Programm durchreichen/weiterleiten