Уроки Iczelion'а

       

Создание invoke'абельных библиотек импорта


Я один из тех, кто очень неохотно использует вышеприведенный подход.

Использовать invoke гораздо более удобно. Это одна из причин, по которой я

предпочитаю MASM TASM'у. Hо как было сказано ранее, практически невозможно

создать invoke'абельную библиотеку импорта с помощью той процедуры, что

была изложена выше. Hапример, вы можете решить, что если вы измените имена

функций в .def-файле, чтобы туда входило "@xx", библиотека импорта может

заработать как надо. Поверьте мне. Это не будет работать.

Более легкий путь создать invoke'абельную бибиотеку импорта - это

использовать сам MASM. Если вы создадите DLL, то вы обнаружите, что вместе

с ней получили библиотеку импорта, которая будет полностью invoke'абельна!

Hаша стратегия заключается в следующем:

  • Получаем информацию об именах функций и общем размере параметров.
  • Создаем исходный код DLL, которая будет включать в себя эти функции

    с правильным числом и размером аргументов.

  • Создаем файл определения модуля, в котором экспортируем

    соответствующие функции.

  • Ассемблируем исходный asm-код как DLL-проект.
  • Вот и все. Вы получите полностью функциональную MASM'овскую библиотеку

    импорта. Вышеприведенные шаги заслуживают более подробного объяснения.



    Содержание раздела