На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

About Dynamic-Link Libraries



Dynamic linking allows a module to include only the information the system needs at load time or run time to locate the code for an exported DLL function. Dynamic linking differs from the more familiar static linking, in which the linker copies a library function's code into each module that calls it.

Types of Dynamic Linking

There are two methods for calling a function in a DLL:

· In load-time dynamic linking, a module makes explicit calls to exported DLL functions. This requires you to link the module with the import library for the DLL. An import library supplies the operating system with the information needed to load the DLL and locate the exported DLL functions when the application is loaded. For more information, see Load-Time Dynamic Linking.
· In run-time dynamic linking, a module uses the LoadLibrary or LoadLibraryEx function to load the DLL at run time. After the DLL is loaded, the module calls the GetProcAddress function to get the addresses of the exported DLL functions. The module calls the exported DLL functions using the function pointers returned by GetProcAddress. This eliminates the need for an import library. For more information, see Using Run-Time Dynamic Linking.



DLLs and Memory Management

Every process that loads the DLL maps it into its virtual address space. After the process loads the DLL into its virtual address, it can call the exported DLL functions.
The system maintains a reference count for each DLL. When a thread loads the DLL, its reference count is incremented by one. When the process terminates, or when the reference count goes to 0 (run-time dynamic linking only), the DLL is unloaded from the virtual address space.
Like any other function, an exported DLL function runs in the context of the thread that calls it. Therefore, the following conditions apply:

· The threads of the process that called the DLL can use handles opened by a DLL function. Similarly, handles opened by any thread of the calling process can be used in the DLL function.
· The DLL uses the stack of the calling thread and the virtual address space of the calling process.
· The DLL allocates memory from the virtual address space of the calling process.




Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

О Библиотеках Dynamic-Link



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

Типы Динамической Связи

Есть два метода для вызова функции в DLL:

В загрузке-времени динамической связи, модуль делает явными вызовами на экспортировавшее функции DLL. Это требует Вас, чтобы связывать модуль с импортной библиотекой для DLL. Импортная библиотека обеспечивает операционную систему информацией, которой нужно загружать DLL и располагать экспортируемые функции DLL когда приложение загружено. Более подробно, смотри Динамическую Связь Load-Time.
Во времени прогона динамической связи, модуль использует LoadLibrary или функцию LoadLibraryEx, чтобы загружать DLL во времени выполнения. После того, как DLL будет загружен, модуль называет функцию GetProcAddress, чтобы получать адресы экспортируемых функций DLL. Модуль называет экспортируемые функции DLL, использовавшие функциональные указатели возвращался GetProcAddress. Это устраняет потребность в импортной библиотеке. Более подробно, смотри Динамическая Связь Использования Run-Time.



DLLs И Управление Памяти

Каждый процесс, который загружает карты DLL это в свое виртуальное пространство адреса. После того, как процесс загрузит DLL в свой виртуальный адрес, он может назвать экспортируемые функции DLL.
Система поддерживается, ссылка имеет значение каждый DLL. Когда резьба загружает DLL, счет ссылки увеличен одним. Когда процесс завершает, или когда счет ссылки идет на 0 (время прогона динамическое связывая только), DLL разгружен из виртуального пространства адреса.
Подобно любой другой функции, экспортируемые функциональные прогоны DLL в контексте резьбы, который называет это. Следовательно, следующие условия прилагают:

Резьба процесса, который был назван DLL может использовать ручки открытые функцией DLL. Аналогично, ручки открытые любой резьбой вызова обрабатывают может быть использовано в функции DLL.
DLL Использует стек вызова резьбы и виртуальное пространство адреса вызова процесса.
DLL Распределяет память из виртуального пространства адреса вызова процесса.




Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz