Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.381


Таненбаум Э.- Архитектура компьютера. стр.381

♦ указатель на имя создаваемого или открываемого файла;

♦ флаги, которые сообщают, какие действия разрешено производить с файлом (читать, записывать или то и другое);

♦ флаги, которые показывают, могут ли несколько процессов открывать файл одновременно;

♦ указатель на дескриптор безопасности, который показывает, кто имеет доступ к файлу;

♦ флаги, которые показывают, что делать, когда файл существует и когда не существует;

♦ флаги, связанные с атрибутами архивации, компрессии и т. д.

♦ описатель файла, атрибуты которого нужно клонировать для нового файла.

Следующие шесть функций API похожи на соответствующие функции UNIX. Последние две позволяют блокировать или разблокировать область файла, чтобы гарантировать процессам исключение доступа к одной и той же области.

Использовав эти функции API, можно написать процедуру копирования файла, аналогичную процедуре из листинга 6.3. Такая процедура (без кода проверки ошибок) представлена в листинге 6.4. На практике программу для копирования файла писать не нужно, поскольку существует функция CopyFile, которая делает примерно то же самое и реализована в виде библиотечной процедуры.

Листинг 6.4. Фрагмент программы для копирования файла с помощью функции API системы Windows ХР. Этот фрагмент написан на языке С, поскольку в языке Java нельзя показать необходимые нам низкоуровневые системные вызовы

/* Открытие файлов для ввода и вывода. */

inhandle = CreateFileC'data". GENERIC_READ, О, NULL,

OPENJXISTING, 0, NULL); outhandle = CreateFileC'newF, GENERICJJRITE, 0, NULL, CREATE_ALWAYS,

FILE_ATTRIBUTE_N0RMAL, NULL);

/* Копирование файла. */ do {

s = ReadFileCinhandle, buffer, BUF_SIZE, &count, NULL); if (s > 0 && count > 0) WriteFile(outhandle, buffer, count, &ocnt, NULL); } while (s > 0 && count > 0);

/* Закрытие файлов. */ CloseHandle(inhandle); CloseHandle(outhandle);

Windows ХР поддерживает иерархическую файловую систему, напоминающую файловую систему UNIX. Однако в качестве разделителя здесь используется не прямой, а обратный слеш (заимствовано из MS-DOS). Здесь тоже существует понятие текущего каталога, а пути могут быть абсолютными и относительными. Однако между Windows ХР и UNIX есть одно существенное различие. UNIX позволяет монтировать в одно дерево файловые системы с разных дисков и машин, скрывая таким образом от программ структуру диска. Windows ХР такой возможности не имеет, поэтому абсолютные имена файлов должны начинаться с буквы диска (например, C:\windows\system\foo.dll). В то же время, возможность монтирования файловых систем в стиле UNIX реализована в Windows 2000.

Основные функции для работы с каталогами перечислены в табл. 6.8 (также вместе с эквивалентами из UNIX).

Таблица 6.8. Основные функции \Мп32 АР1 для работы с каталогами

Функция API

Функция UNIX

Значение

CreateDi recti ry

mkdir

Создание нового каталога

RemoveDi rectory

rmdir

Удаление пустого каталога

FindFirstFile

opendir

Начало чтения элементов каталога

FindNextFile

readdir

Чтение следующего элемента каталога

MoveFile

 

Перемещение файла из одного каталога в другой

SetCurrentDirectory

chdir

Смена текущего каталога

Windows ХР имеет более сложный механизм защиты, чем UNIX. Когда пользователь входит в систему, его процесс получает маркер доступа от операцион ной системы. Маркер доступа содержит идентификатор безопасности (Security ID, SID), список групп, к которым принадлежит пользователь, имеющиеся привилегии и некоторую другую информацию. Маркер доступа концентрирует всю информацию о защите в одном легко доступном месте. Все процессы, созданные этим процессом, наследуют этот же маркер доступа.


⇐ Предыдущая страница| |Следующая страница ⇒

.