Статус нашего сайта: |
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♦ указатель на имя создаваемого или открываемого файла; ♦ флаги, которые сообщают, какие действия разрешено производить с файлом (читать, записывать или то и другое); ♦ флаги, которые показывают, могут ли несколько процессов открывать файл одновременно; ♦ указатель на дескриптор безопасности, который показывает, кто имеет доступ к файлу; ♦ флаги, которые показывают, что делать, когда файл существует и когда не существует; ♦ флаги, связанные с атрибутами архивации, компрессии и т. д. ♦ описатель файла, атрибуты которого нужно клонировать для нового файла. Следующие шесть функций 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 для работы с каталогами
Windows ХР имеет более сложный механизм защиты, чем UNIX. Когда пользователь входит в систему, его процесс получает маркер доступа от операцион ной системы. Маркер доступа содержит идентификатор безопасности (Security ID, SID), список групп, к которым принадлежит пользователь, имеющиеся привилегии и некоторую другую информацию. Маркер доступа концентрирует всю информацию о защите в одном легко доступном месте. Все процессы, созданные этим процессом, наследуют этот же маркер доступа. |