Если DLL выгружается каждый раз, то, вероятно, ей потребуется какое-то постоянное хранилище между каждым разом, когда она загружается.Если вызывающее приложение не предоставляет эту информацию, то сама DLL должна будет выполнить это.
Одной из возможностей может быть использование именованной совместно используемой памяти .Если он не существует, создайте его, а затем используйте его в качестве «флага», чтобы знать, что он вызывается снова в том же исполнении.Когда процесс завершится, он будет уничтожен.Это, конечно, имеет последствия для безопасности, которые необходимо учитывать.Другой процесс может потенциально создать эту разделяемую память, чтобы заставить вашу DLL «думать», что она снова вызывается во время того же запуска, когда это был фактически первый вызов.