—4 — данный вариант программы не скопирован предварительно на жесткий диск;
—5 — ошибка доступа к жесткому диску (программа не может прочитать собственный файл или не может записать в него новое значение константы Key);
— 6 — исчерпан лимит стационарных копий;
— 7 — данная программа уже представляет собой стационарный вариант программы, т.е. константа Key в ней уже определена.
Любое неотрицательное значение результата свидетельствует об успешном создании стационарной копии и равно количеству еще не использованных установок программы на жесткий диск.
В ходе установки программа контролирует ключевую дискету, затем определяет характерные признаки данного ПК и заносит эти признаки в константу Key. Поскольку защищается только тот экземпляр программы, в котором вызвана функция SetOnHD, программист должен предусмотреть соответствующий вариант запуска программы. Например, он может проанализировать ключи команды запуска с целью проверки специального ключа создания стационарного варианта или предусмотреть соответствующую опцию в диалоговом меню, создаваемом программой в ходе работы.
Функция RemoveFromHD осуществляет обратные действия: уничтожает текущую стационарную копию и соответствующим образом увеличивает запас неизрасходованных установок программы. Она возвращает одно из следующих значений:
— 1 — в привод ГД не вставлена дискета;
— 2 — в привод вставлена дискета неэталонного типа (емкостью не 360 Кбайт или нет скрытого сектора);
—3 — дискета защищена от записи или при записи на нее возникла ошибка;
—4 — данный вариант программы не скопирован предварительно на жесткий диск;
—5 — ошибка доступа к жесткому диску (программа не может прочитать собственный файл или не может записать в него новое значение константы Key).
Любое неотрицательное значение свидетельствует об успешном удалении стационарной копии и равно количеству еще не использованных установок программы на жесткий диск.
7.4.2. Тестовая программа
Следующая программа иллюстрирует некоторые приемы работы с модулем F_Prot. Программа анализирует ключи запуска: если используется ключ /SET, осуществляется установка программы на жесткий диск, если ключ /REMOVE, уничтожается стационарная копия программы, если этих ключей нет в команде запуска, программа осуществляет контроль легальности копии. Ключевая дискета должна быть предварительно подготовлена с помощью программы Diskette (см. прил.ПЮ.1).