Операционная система Microsoft Windows 3.1 для программиста -том 3


Листинг 4.1. Файл isshare/isshare.cpp - часть 2


// Если блокирование прошло успешно, // разблокируем и удаляем временный файл else { regs.x.bx = hfTempFile; regs.h.ah = 0x5c; regs.h.al = 1; // код операции разблокирования regs.x.cx = 0; regs.x.dx = 0; regs.x.si = 0; regs.x.di = 1; intdos(&regs, &regs); rc = 1; }

// Закрываем временный файл _lclose(hfTempFile);

// Удаляем временный файл OpenFile(szBuf, &ofs, OF_DELETE);

return rc; }

Функция WinMain проверяет, загружена ли утилита share.exe, вызывая функцию ShareLoaded, определенную в приложении.

Эта функция может вернуть 0, 1 или -1. Если функция вернула 0, share.exe не загружена. Если функция вернула -1, произошла ошибка при создании временного файла. И, наконец, если функция ShareLoaded вернула 1, share.exe загружена.

Для создания временного файла используется функции GetTempFileName и _lcreat. Первая из этих двух функций получает имя временного файла, вторая - создает и открывает временный файл.

Для выполнения блокировки приложение вызывает функцию MS-DOS, пользуясь известной вам функцией intdos.

Если утилита share.exe установлена и блокировка файла выполнена успешно, функция ShareLoaded разблокирует файл, вызывая функцию MS-DOS с кодом 0x5c еще раз, но с другим значением регистра AL.

В любом случае перед возвратом из функции временный файл закрывается функцией _lclose и затем удаляется функцией OpenFile.

Файл определения модуля для приложения ISSHARE приведен в листинге 4.2.




Начало  Назад  Вперед