Перемещение указателя файла.




При обращении к CreateFile система создает объект, управляющий операциями, связанными с созданным файлом. Этот объект содержит указатель файла – 64-разрядное значение, указывающее начальную позицию, с которой будет выполняться следующая операция чтения или записи. Сначала указатель файла устанавливается равным 0, т.е. чтение или запись будут осуществляться с нулевой позиции. При выполнении операций ввода-вывода указатель файла сдвигается на соответствующее количество байт.

Если требуется доступ к файлу с произвольной позиции, изменить значение указателя файла можно с помощью функции SetFilePointerEx:

BOOL SetFilePointerEx(

HANDLE hFile;

LARGE_INTEGER liDistanceToMove;

PLARGE_INTEGER pliNewFilePointer;

DWORD dwMoveMethod);

Параметр hFile – это описатель файла.

Параметр liDistanceToMove задает количество байт, на которое необходимо передвинуть указатель файла. Может иметь отрицательное значение для перемещения к началу файла.

Последний параметр dwMoveMethod определяет, как трактовать параметр liDistanceToMove. Возможные значенеия:

FILE_BEGIN – указатель файла устанавливается равным значению параметра liDistanceToMove.

FILE_CURRENT – указатель файла увеличивается на liDistanceToMove.

FILE_END – указатель файла устанавливается равным сумме логического размера файла и значения параметра liDistanceToMove.

Параметр pliNewFilePointer указывает на структуру LARGE_INTEGER, в которую функция SetFilePointerEx записывает новое значение указателя файла. Если не предполагается использовать новое значение указателя, то можно передать NULL.

 

Реализация ввода-вывода.

Независимо от типа устройства ввод-вывод выполняется с помощью одних и тех же функций ReadFile и WriteFile.

BOOL ReadFile(

HANDLE hFile;

LPVOID lpBuffer;

DWORD nNumberOfBytesToRead;

LPDWORD lpNumberOfBytes;

LPOVERLAPPED lpOverlapped);

 

BOOL WriteFile(

HANDLE hFile;

LPCVOID lpBuffer;

DWORD nNumberOfBytesToWrite;

LPDWORD lpNumberOfBytes;

LPOVERLAPPED lpOverlapped);

Параметр hFile – это описатель устройства, к которому осуществляется доступ.

Параметр lpBuffer указывает на буфер, куда будут считываться или записываться данные.

Параметры nNumberOfBytesToRead и nNumberOfBytesToWrite указывают, сколько байт считать с устройства или записать на него.

Параметр lpNumberOfBytes – это адрес значения типа DWORD, в которое функция записывает число байтов, записанных или считанных с устройства.

Параметр lpOverlapped при выполнении синхронного ввода-вывода должен быть равен NULL.

При успешном завершении функции ReadFile и WriteFile возвращают TRUE.

 

Порядок выполнения работы

Часть 1

1. Просмотреть через командную строку список всех доступных компьютеров в локальной сети.

2. Просмотреть через командную строку список всех доступных ресурсов сервера.

3. Подключить указанный преподавателем ресурс сервера тремя способами.

4. Просмотреть через командную строку список всех подключенных к данному компьютеру ресурсов.

6. Отключить все подключенные ранее ресурсы.

7. Создать в папке D:\TEMP\ папку с именем DISK№Компьютера, например, DISK1 или DISK12.

8. Открыть общий доступ к этой папке.

9. Для пользователей определенной группы запретить все виды доступа (на чтение, на запись и др.).

10. Добавить в список разрешений одного пользователя. Определить ему права

полного доступа.

 

Часть 2

1. Выяснить, установлена ли служба редиректора Client for Microsoft Networks на вашем компьютере (Control Panel/ Network Connections/ Local Area Connection).

2. Разработать локальное консольное приложение, выполняющее создание файла на локальном компьютере и запись в него данных.

 

Создание консольного приложения:

Создать новый проект (последовательно выбрав в меню Файл пункты Создать и Проект).

В области типов проектов Visual C++ выбрать группу Win32 и щелкнуть элемент Консольное приложение Win32.

3. Разработать централизованное сетевоеконсольное приложение, использующее API-функции ввода-вывода (CreateFile, ReadFile, и т.д.)и UNC-именадля работы с файлом по сети через редиректор Windows.

Реализовать следующие операции по работе с файлом:

1. Создание файла.

2. Запись информации в файл.

3. Чтение информации из файла, начиная с определенной позиции.

4. Вывод прочитанной информации на экран.

Оформить отчет по лабораторной работе, включив в него листинг программы и ответы на контрольные вопросы.

 

 

Контрольные вопросы

Часть 1

1. Что такое общий ресурс? Приведите примеры.

2. Какие способы подключения удалённых ресурсов вам известны?

3. Как создать общий ресурс?

4. Как просмотреть список удалённых ресурсов узла?

5. Какие права доступа можно присвоить общей папке?

6. Кто может предоставить папку в общее пользование?

7. Пользователю и группам, в которые он входит, присвоены различные права доступа к общей папке. Какие фактические права доступа получит пользователь?

8. Папка Work расположена на компьютере Comp1. Она выделена в общее пользование. Пользователь User1 не имеет прав доступа (No Access) к этой папке. Сможет ли он получить доступ к содержимому папки, зарегистрировавшись с Comp1? Почему?

Часть 2

1.Какие компьютерные сети появились раньше локальные или глобальные? Какое событие послужило стимулом к созданию первых локальных сетей?

2. Каковы основные тенденции развития современных компьютерных и телекоммуникационных сетей?

3. Дайте определение компьютерной сети? Из каких компонентов она состоит? Каково основное назначение компьютерной сети?

4.Что такое интерфейс? Физический интерфейс? Логический интерфейс?

5.Какие виды сетевого ПО вы знаете?

6.Что такое сетевая ОС? Какие сетевые средства она включает? В каком случае ОС называется одноранговой? Что такое выделенный сервер? К какому типу можно отнести ОС, установленную на вашем компьютере?

7. Какие типы приложений вы знаете? Чем они отличаются? К какому типу приложений относятся разработанные в лабораторной работе программы?

8.Какую функцию выполняет редиректор в операционной системе Windows? Какой протокол используется редиректором Windows для доступа к удаленным файлам?

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: