Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

GetModuleFileName

Функция GetModuleFileName позволяет получить полный путь для указанного модуля.

Чтобы указать процесс, который содержит указанный модуль, прийдётся воспользоваться функцией GetModuleFileNameEx.

 

DWORD GetModuleFileName(
   HMODULE hModule,
   LPTSTR lpFilename,
   DWORD nSize
 );
 

Параметры

hModule
[на входе] Дескриптор модуля, чей путь мы хотим узнать. Если этот параметр равен NULL, GetModuleFileName возвратит путь текущего модуля.
lpFilename
[на выходе] Указатель на буфер, который будет содержать строку (завершающуюся нулём) с полным путём модуля. Если длина пути превышает размер, указанный в параметре nSize, то функция вернёт путь, но он будет обрезан до nSize символа и может не содержать в конце нулевого символа.

Windows NT/2000/XP: Путь может иметь префикс "\\?\", в зависимости от того, как был загружен модуль.

nSize
[на входе] Размер буфера lpFilename в TCHAR-ах.

Возвращаемое значение

Если функция выполнена успешно, то возвращаемое значение, это длина строки, скопированной в буфер в TCHAR-ах. Если буфер слишком мал для хранения имени модуля, то строка будет обрезана до nSize символа, а функция вернёт значение nSize.

Если при выполнении функции возникнет ошибка, то возвращаемое значение будет равно нулю.

Замечания

Если DLL загружена в два процесса, то её имя в одном процессе может отличаться от имени в другом процессе.

Для ANSI версии функции, количество TCHAR-ов, это количество байт; для Unicode версии, это количество символов.

Требования

Windows NT/2000/XP: Включена в Windows NT 3.1 и позже.
Windows 95/98/Me: Включена в Windows 95 и позже.
Unicode: Для Windows NT/2000/XP существует как Unicode, так и ANSI версии.
Заголовок: Объявлена в Winbase.h; Windows.h.
Библиотека: Kernel32.lib.

 

 





<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU Проект ReactOS