Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11790
Последний выпуск: 19.06.2015

Как узнать, какие функции содержит в себе файл .dll (вопрос новичка)?

12K
17 августа 2009 года
Evg64
35 / / 15.01.2007
Я только начинаю разбираться в "кухне" dll. Насколько я понял, читая разные статьи, файлы dll содержат в себе функции, которые можно вызывать в своих программах, тем самым расширяя свои возможности в программировании. Но как узнать, какие функции содержит в себе каждый данный файл динамической библиотеки?
353
17 августа 2009 года
SergPas
527 / / 03.02.2007
Цитата: Evg64
Я только начинаю разбираться в "кухне" dll. Насколько я понял, читая разные статьи, файлы dll содержат в себе функции, которые можно вызывать в своих программах, тем самым расширяя свои возможности в программировании. Но как узнать, какие функции содержит в себе каждый данный файл динамической библиотеки?


Вопрос состоит в другом: а что Вы будете делать с этим списком? Безусловно, Вы не сможете воспользоваться ни одной недокументированной функцией из длл-ки.
В VS - утилита DUMPBIN.EXE
В Delphi - утилита TDump.exe
P.S. Не ленитесь гуглить, прежде чем задавать на форуме такие вопросы. :cool:

12K
17 августа 2009 года
Evg64
35 / / 15.01.2007
Цитата: SergPas
Вопрос состоит в другом: а что Вы будете делать с этим списком? Безусловно, Вы не сможете воспользоваться ни одной недокументированной функцией из длл-ки.
В VS - утилита DUMPBIN.EXE
В Delphi - утилита TDump.exe
P.S. Не ленитесь гуглить, прежде чем задавать на форуме такие вопросы. :cool:



Просто список - это на крайний случай. В идеале я ищу список + описание к каждой функции что она делает.
Перед тем, как писать на форум, я копался в интернете - находил статьи о том, что такое длл, для чего нужны, как создать свой длл, как экспортировать оттуда функции и тд, но самого списка функций с описанием не нашел даже к самым известным dll файлам типа user32, kernel и тд.
P.S. В конце концов ведь каждый программист когда-то узнавал, какие функции содержатся в длл файлах и что эти функции делают. Кто, как и откуда брал эту инфу?)

10
17 августа 2009 года
Lerkin
2.9K / / 25.03.2003
Цитата: Evg64

P.S. В конце концов ведь каждый программист когда-то узнавал, какие функции содержатся в длл файлах и что эти функции делают. Кто, как и откуда брал эту инфу?)


Ну, этот вопрос простителен для новичка. В DLL копаться не нужно, тем более в системных. MSDN вам в руки.

А если просто просмотреть список ф-ций в DLL (да и для много другого) можно заюзать HIEW.

31K
19 августа 2009 года
dreamer.mas
69 / / 15.11.2008
Evg64, а какая у Вас вообще цель? Создать свою DLL, просто спортивный интерес или что-то иное? Если Вы хотите использовать функции Win API, то Вам не нужно вообще заботиться о загрузке функции из DLL: за Вас всё уже сделано в виде библиотек. В этом случае, как сказал Lerkin, смотрите MSDN относительно Вашей задачи.

Если же всё-таки нужен список, есть утилита, правда шараварная: PE Explorer. Можно слить триалку на 30 дней, но, думаю, этого хватит, чтобы удовлетворить любопытство :)
12K
19 августа 2009 года
Evg64
35 / / 15.01.2007
Цитата: dreamer.mas
Evg64, а какая у Вас вообще цель?



Цель - ознакомиться с возможностями функций из одного-двух файлов длл. Получить начальное представление о то, что функции из длл "умеют". А главное, понять, как получать информацию о возможностях функций конкретного файла длл.

А вообще узнать больше о длл меня сподвигла банальная мысль о том, что знание возможностей длл файлов расширит возможности программирования)


Насчет MSDN я не совсем понял: ведь не может же там содержаться информации по всему многообразию функций из всего многообразия длл файлов? Я там смотрел, да можно было и не смотреть) Может я что-то понял не так?

11
19 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Evg64

Насчет MSDN я не совсем понял: ведь не может же там содержаться информации по всему многообразию функций из всего многообразия длл файлов? Я там смотрел, да можно было и не смотреть) Может я что-то понял не так?


Прикинь, может, особенно если учесть что объем МСДН 1.5 гига, и все ф-ции, содержащиеся в длл-ках виндов там описаны.
А вообще работают от обратного: ищут функцию для решения определенных задач, а потом смотрят что надо подключить для вызова этой ф-ции.

10
19 августа 2009 года
Lerkin
2.9K / / 25.03.2003
Цитата: Evg64
Я там смотрел, да можно было и не смотреть)


И не смотри, не трать время. dll-ку в Блокноте открываешь, и читаешь. Нормальным, русским языком написано.

P.S. Есть начинающие, которым желательно тут же стать заканчивающими...

31K
20 августа 2009 года
dreamer.mas
69 / / 15.11.2008
Evg64, мне кажется, для начала Вам пригодится это: http://ru.wikipedia.org/wiki/DLL
16
20 августа 2009 года
Zorkus
2.6K / / 04.11.2006
http://ru.wikipedia.org/wiki/Dependency_Walker
Получить можно список функций (импортируемых и экспортируемых) для DDL, или в общем случае любого PE-файла. Получить исходники этих функций (еще может и с комментариями?) нельзя. Разве что попробовать декомпилировать или дизассемблировать dll. Но автору этим заниматься не советую...
10
20 августа 2009 года
Lerkin
2.9K / / 25.03.2003
Попробую развернуто закрыть эту тему.

Итак. По задумке аффтора, стать дико навороченным программистом, можно с помощью получения списка всех функций изо всех dll, которые юзает ОС Windows. Для этого, автору страшно нужен способ получения этих функций из конкретно указанной dll. Хорошо, попробуем промоделировать ситуацию, в которой автор добыл подходящий инструментарий (а хотя бы и Dependency Walker) и приступил к реализации задуманного.
Запустив этот, без сомнения достойный viewer, он стал думать, с чего же ему начать. Очевидно, что не найдя точки отсчета, он открыл каталог system32. Про то, что основной dll фонд находится там, он уже знает, или узнал только что. Испортив свой решительный настрой тем, что кроме dll-файлов, в указанном каталоге полно каких-то папок с загадочными названиями, немеряно файлов с какими-то левыми расширениями, типа ocx, txt, log, nls и т.п., аффтор идет по пути наименьшего сопротивления. Посомневавшись немного, он сортирует список по алфавиту и открывает первый попавшийся dll файл. Это будет, к примеру, acledit.dll. По чудовищно счастливой случайности, этот файл относится непосредственно к пакету операционной системы, а не является компонентом нестандартного драйвера какого-то из многочисленных устройств в составе аппаратной конфигурации, ни библиотекой от установленных во множестве дополнительных прикладных программ, игрушек и прочего программного обеспечения, без сомнения установленного на компьютере пытливого исследователя.
Получив список функций, автор воодушевился и записал название первой функции. Это будет, допустим, функция EditAuditInfo. Сколько из этого полезной информации получил автор, сказать не представляется возможным. Сказать можно только то, что теперь он знает, что в динамической библиотеке acledit есть функция EditAuditInfo. Что она делает, и как её можно использовать, автор пока еще не знает, но это в данный момент для него не важно. Сколько новой информации!!! Чума! А вот еще в той же таблице есть какие-то дополнительные поля - ordinal, hint, entry point... Да фигня какая-нибудь, потом разберемся...
Когда рука бойца устала от переписывания названий функций, автор посмотрел на дерево зависимостей и опять погрустнел, поскольку не понял, зачем ему еще какие-то dll показывают. Пощелкав мышом по этому списку и совершенно скиснув, поскольку количество негатива от возрастающего количества вопросов начало превышать позитив от начала сбычи мечт о получении всех-всех функций, автор вышел из программы, дав себе твердую установку вернуться к каталогизации функций немного позже.
Но вспоминая, что когда он щелкнул по названию функции, программа попыталась загрузить какую-то фигню под названием MSDN - " Блин, опять эта MSDN, о которой говорили эти унылые придурки с форума. Я же был там, там ничего не сказано о том, как сделать то, что я задумал...", - аффтор полностью теряет интерес к воплощению великой идеи.
Вот так, человечество теряет еще одного талантливого набиральщика названий функций, и ущерб причиненный науке - не поддаётся осмыслению.

Как же избежать таких потерь? А достаточно изложить на хорошем форуме свой вариант постижения таинств программирования, и стоически выдержав первую волну сарказма со стороны участников, начать задавать наводящие вопросы, когда посоветуют, например, обратиться к MSDN. Попросить посоветовать доступную для понимания литературу по программированию в WinAPI, и много чего еще...
А самое главное, нужно четко понимать, ЧТО человек собрался программировать и ДЛЯ ЧЕГО.
11
20 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Lerkin
Попробую развернуто закрыть эту тему.
.......


это все надо вставить в капчу при регистрации на форуме. Наберет человек такой текст, глядишь и научиться чему нибудь, точнее разучиться рассматривать длл-ки в блокноте.

68K
25 января 2011 года
Alofger
1 / / 25.01.2011
Возможно автору темы и схожим пипл поможет русский перевод MSDN http://vsokovikov.narod.ru/New_MSDN_API/index_msdn.htm
9.0K
19 июля 2012 года
Targred
1 / / 17.10.2004
К стате мне так же интересно как узнать экспортные функции длл, так как я купил веб камеру с ИК подсветкой и хочу включать подсветку из своей программы, а не из программы производителя. Так что подскажите пожалуста как это сделать.
Спасбо
368
19 июля 2012 года
CassandraDied
763 / / 24.05.2012
Цитата: Targred
К стате мне так же интересно как узнать экспортные функции длл, так как я купил веб камеру с ИК подсветкой и хочу включать подсветку из своей программы, а не из программы производителя. Так что подскажите пожалуста как это сделать.
Спасбо


Дебажить утилиту\драйвер производителя, как же ещё. Нажимать на кнопочку вкл\выкл подсветки и дебажить. Одними именами функций не обойдёшься.

91K
01 августа 2013 года
shredder_1
1 / / 01.08.2013
Кто-нибудь может дать ссылку на MSDN, где подробно описана хоть одна функция?
В таком стиле:

 
Код:
int StringGetChar( string text, int pos)
Возвращает значение символа, расположенного в указанной позиции строки.
Параметры:
text   -   Строка.
pos   -   Позиция символа в строке. Может быть от 0 до StringLen(text)-1.

Пример:
  int char_code=StringGetChar("abcdefgh", 3);
  // символьный код 'c' = 99
Вот, например, увидел я в коде такой импорт

 
Код:
#import "shell32.dll"
   int ShellExecuteA(int a0, string a1, string a2, string a3, string a4, int a5);
#import
как человек узнал о существовании такой функции? откуда он узнал, что она делает?
323
01 августа 2013 года
UserNet2008
679 / / 03.04.2010
Цитата: shredder_1
Кто-нибудь может дать ссылку на MSDN, где подробно описана хоть одна функция?
В таком стиле:

Вот, например, увидел я в коде такой импорт

 
Код:
#import "shell32.dll"
   int ShellExecuteA(int a0, string a1, string a2, string a3, string a4, int a5);
#import
как человек узнал о существовании такой функции? откуда он узнал, что она делает?


ShellExecute

Функция импортируется из библиотеки DLL, а сама библиотеки DLL должна быть задекларирована в самой программе.

72K
28 августа 2013 года
GNDragonfly
16 / / 24.05.2012
Не знаю, чего вы такую белиберду тут развернули, на практике все довольно тривиально.
К программе Total Commander есть плагин FileInfo (v2.21).
При просмотре любого exe или dll файла он помимо описания выдает список импортируемых/экспортируемых функций (вкладка Imports / Exports).
Там указан список всех функций, которые использует exe-программа или содержатся в dll-файле.
Далее открываем MSDN - штука, которая установлена у любого уважающего себя программиста либо открываем online (на сайте Microsoft есть).
И там ищем понравившуюся функцию.
Например, можно заметить, что любое приложение больше всего функций использует из kernel32.dll и user32.dll (речь о 32- битных программах).
Смотрим например файл user32.dll, там выбираем ф-цию ScrollDC.
Открываем MSDN и читаем про нее:
Цитата:
The ScrollDC function scrolls a rectangle of bits horizontally and vertically.



Код:
BOOL ScrollDC(
  HDC hDC,          // handle to device context
  int dx,           // horizontal scroll units
  int dy,           // vertical scroll units
  CONST RECT *lprcScroll,
                    // address of structure for scrolling rectangle
  CONST RECT *lprcClip,
                    // address of structure for clipping rectangle
  HRGN hrgnUpdate,  // handle to scrolling region
  LPRECT lprcUpdate
                    // address of structure for update rectangle
);
Далее описание, что вернет и даже иногда примеры использования.
Как вариант можно ввести название функции в поисковик (гугл, яндекс и др - кому какой нравится) и там по ссылкам почитать о функции, при том иногда даже и на русском );
PS аналогов плагину FileInfo для TC не нашел, но я сильно и не искал (от силы мин 3 потратил на поиск), но думаю они есть.
PSPS Скажу честно, никогда не пользовался этой штуковиной, т.к. часто все это уже присутствует в компонентах и модулях среды программирования. И вот про них я и читаю. Но может вам и это пригодиться.
8
28 августа 2013 года
mfender
3.5K / / 15.06.2005
Каков молодец!
А какая Мысдын и программа рассказывает что там в iOS и McOS делается? Или они вообще уже ниочём?
6
28 августа 2013 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: Evg64
DLL

Цитата: mfender
iOS/McOS

Батенька, да вы упорот!
О других ОС речи не шло, а г-н тов. Lerkin очень даже замечательно развёрнуто закрыл тему. Ну и остальные тоже немало постарались, так что Vespene geyser depleted.

89K
29 августа 2013 года
marselkhugeur
3 / / 29.08.2013
Я не стнау спрашивать вас о том ,для каких целей вам нужен этот материал .Я просто хочу поддержать вас и отправить в своем сообщении вам нужную ссылочку :
support.microsoft.com/kb/87934
Здесь я специально нашел для вас нописаний функций этого файла .
98K
01 февраля
IvanPetroff
1 / / 01.02.2017
позанимаюсь некропостингом (вдруг кто из поисковика зайдёт)

Список функций из DLL AddressOfNames
http://firststeps.ru/mfc/winapi/r.php?28

не благодарите
P.S.
как же меня "радуют" русскоязычные форумы. На вполне конкретный вопрос целая страница воды "а зачем? а почему? автор - чудак. иди читай msdn.."
"знатоки", блин

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог