• Вызов управляемого кода из неуправляемого
    +1
    При написании статьи никто и не претендовал на диссертацию! Это просто отправная точка одного из подходов (о чем и сказано в начале), и зачастую именно простейших примеров и не хватает людям, которые только начали разбираться
  • Вызов управляемого кода из неуправляемого
    –2
    В данном примере явно нигде. Но это всего лишь пример, а не рабочее приложение. При освобождении ссылку на управляемый объект также освобождаем:
    CppService::~CppService()
    {
    GCHandle handle = GCHandle::FromIntPtr(IntPtr(m_impl));
    handle.Free();
    }
  • Windows hook: просто о сложном
    0
    Вы абсолютно правы!
  • Windows hook: просто о сложном
    0
    Microsoft Detours немного отдельная тема. Я хотел показать сам процесс, Detours по сути это все скрывает. Более того коммерческая версия (и работа с архитектурой x64) стоят 10K $, поэтому интерес к этой библиотеке у меня поугас :)
  • Windows hook: просто о сложном
    0
    Да, именно цель статьи и была показать что установка хука не такое уж сложное дело, попытаться дать направление куда мыслить тем кто только начал интересоваться указанной темой.

    Про многопоточность вы абсолютно правы. Указанный пример не рассчитан на нее. Вообще умение установить описанный вами хук достаточно нетривиальное.
  • Windows hook: просто о сложном
    0
    Это один из способов, посмотрите на Fiddler :)
  • Windows hook: просто о сложном
    0
    К сожалению, указанным в статье способом доступ к такой функции получить нельзя. Можно дизассемблировать dll, понять где находится код нужной вам функции и заменить его своим.