Описание экспорта

   
На этом шаге мы рассмотрим правила описания экспортируемых подпрограмм.

   
Подразделы описания экспортируемых имен exports могут многократно встречаться в любом месте описательной части программы или
динамически связываемой библиотеки (DLL). Каждая запись в предложении exports задает идентификатор экспортируемой процедуры или функции.
При этом необходимо следить, чтобы эта процедура или функция была описана до указания ее имени в подразделе exports. Кроме того, описание экспортируемой процедуры или
функции должно содержать директиву export (без буквы "s" в конце!). В качестве экспортируемых имен могут выступать уточненные идентификаторы.

   
В подразделах описаний exports перечисляются все процедуры и функции, которые экспортируются данной программой или динамически связываемой библиотекой. Заметим, что хотя программа
может содержать предложение exports, однако на практике это встречается достаточно редко. Как правило, оно указывается в DLL. Предложения exports допускаются только во внешнем разделе
описаний программы или DLL. В разделе описаний процедуры, функции и модуля они использоваться не могут.

   
Описание подраздела экспортируемых имен начинается с зарезервированного слова exports, за которым следует список записей экспорта, разделенных запятыми. Одна запись экспорта в простейшем случае
представляет собой просто экспортируемый идентификатор.

   
Каждая запись экспорта может включать в себя стандартную директиву index, за которой следует целочисленное значение в диапазоне от 1 до 32767. Число, указанное в index, ставит в соответствие экспспортируемой процедуре или функции специальное порядковое значение.
Если в записи экспорта описание index отсутствует, то порядковое значение присваивается автоматически.

   
Запись экспорта также может содержать стандартную директиву name, за которой следует строковая константа. Эта константа задает процедуре или функции имя, с которым она будет экспортироваться.
Если описание name отсутствует, то процедура или функция экспортирует со своим идентификатором.

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

   
Пример:

exports			
    Subroutine1  index  1,	
    Subroutine2  index  2  name 'SUB2' ,
    Subroutine3  index  3  resident;

   
На следующем шаге мы рассмотрим описание поточно-локальных переменных.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий