dllimport как узнать, какое приложение вызвало функцию в неуправляемой dll - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть 1 неуправляемый C ++ dll с dllexport функциями и 3 управляемым приложением C # , которые используют неуправляемые dll-функции с dllimport , все в порядкевсе работает отлично.

Мне нужно знать в C ++ dll, Как я могу получить значение, которое говорит мне, какое приложение C # вызвало его извне.

пожалуйста, посмотрите на изображение ниже:

dll image

  • сейчас, когда client.exe вызывает function1 из неуправляемой dll появляется сообщение "client.exe вызвал меня!"
  • сейчас, когда console.exe вызывает function1 из неуправляемогоdll, появляется сообщение "console.exe вызвал меня!"
  • сейчас, когда pure.exe вызывает function1 из неуправляемой dll,появляется сообщение «pure.exe позвонил мне!»

Мне нужна неуправляемая библиотека, которая сама находит ее, я не хочу отправлять ничего изC # Applicatiнапример, получить путь к файлу C # и отправить его в функцию.

Возможно ли это?если да, как я могу это сделать?

1 Ответ

0 голосов
/ 20 сентября 2018

Это должно работать:

constexpr DWORD bufsize = 32768;
WCHAR *calling_application = new WCHAR [bufsize];
DWORD nSize = GetModuleFileNameW (NULL, calling_application, bufsize);

if (nSize == 0 || nSize == bufsize)
{
    // panic, should never happen
}

// ...

delete [] calling_application;

Документация здесь:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms683197%28v=vs.85%29.aspx

...