Оператор exports
Процедура или функция экспортируется DLL, когда она указыва- ется в операторе exports библиотеки.
оператор exports ¦ ---------- ----------------- ---- L-->¦ exports +-->¦ список экспорта+----------->¦ ; +-------> L---------- L----------------- L----
----------------- список экспорта --T->¦ запись экcпорта+-----------> ¦ L----------------- ^ ¦ ---- ¦ L------->¦ ; +---------- L----
оператор exports ¦ ---------------- L--->¦ идентификатор +--T------------------------------------ L---------------- ¦ -------- ------------------ ^ ¦ L-->¦ index +->¦ целая константа +-- ¦ L-------- L------------------ ¦ ---------------------------------------------------------------- L-T-------------------------------------T----------------------> ¦ ------- ---------------------- ^¦ ----------- ^ L>¦ name +-->¦ строковая константа +--L->¦ resident +--- L------- L---------------------- L-----------
Оператор exports может встречаться в любом месте описатель- ной части программы или библиотеки и любое число раз. Каждая за- пись в операторе exports задает идентификатор экспортируемой про- цедуры или функции. Однако, эта процедура или функция должна опи- сываться до оператора exports, и ее описание должно содержать ди- рективу export. Перед идентификатором в операторе exports вы мо- жете указать идентификатор модуля с точкой; это называется пол- ностью уточненным идентификатором.
Запись экспорта может также включать в себя оператор index, который состоит из ключевого слова index, за которым следует це- лочисленное значение в диапазоне от 1 до 32767. Когда задается оператор index, для экспортируемой процедуры или функции должно использоваться специальное порядковое значение. Если в записи экспорта оператор index отсутствует, то порядковое значение прис- ваивается автоматически.
Запись может содержать оператор name, состоящий из ключевого слова name, за которым следует строковая константа. При наличии оператора name экспортируемая процедура или функция должна экс- портироваться с помощью задаваемого строковой константой имени. Если оператор name в записи экспорта отсутствует, то процедура или функция экспортируется по ее идентификатору (символы которого преобразуются в верхний регистр).
Наконец, запись экспорта может включать в себя ключевое сло- во resident. При задании ключевого слова resident информация об экспорте остается в памяти, пока DLL загружена. Параметр resident существенно уменьшает время поиска подпрограммы в DLL по имени.
Программа может содержать оператор exports, но это встреча- ется редко, так как Windows не позволяет прикладным программам экспортировать функции, используемые другие прикладными програм- мами.