- •Командные файлы
- •Теоретические сведения
- •1. Выполнение командных файлов
- •2. Командные файлы с заменяемыми параметрами
- •3. Комментарии в командном файле
- •4. Сообщения при выполнении командного файла
- •5. Приостановка выполнения командного файла
- •6. Переходы в командном файле
- •7. Проверка условий в командном файле
- •8. Циклическое выполнение команд в командном файле
- •9. Сдвиг параметров при обработке командного файла
- •10. Установка значения переменной окружения
- •11. Операции перенаправления
- •12. Некоторые команды выполняемые Windows
- •Вопросы к защите лабораторной работы
- •Лабораторная работа № 2 Определение ресурсов компьютера
- •Теоретические сведения
- •Возвращаемое значение
- •Определение типа процессора и ос
- •If (isTscSupport) // Определение поддержки счётчика tsc
- •ReturnValuesПри удачном выполнении возвращает ненулевое значение. RemarksПроцессорная маска – это битовый вектор, в котором каждый бит представляет процессоры, на которых разрешён запуск процесса.
- •Определение мыши
- •Определение типа клавиатуры
- •ParametersnTypeFlagТип запрашиваемой информации
- •Информация о физической памяти
- •Информация о видеокарте
- •Информация о накопителях
- •Замечание
- •Варианты заданий
- •Вопросы к защите лабораторной работы
- •Лабораторная работа № 3 Главная загрузочная запись mbr
- •Теоретические сведения
- •Алгоритм именования дисков
- •Функции api для чтения информации с диска
- •Требования к программе:
- •Варианты заданий
- •Вопросы к защите
- •Лабораторная работа №4 Применение функций Windows api для поиска и работы с файлами и каталогами
- •Теоретические сведения
- •Варианты заданий к лабораторной работе №4
- •Лабораторная работа №5
- •Варианты заданий
- •Вопросы к защите
- •Лабораторная работа №6
- •Теоретические сведения
- •Задания к лабораторной работе
- •Вопросы для защиты лабораторной работы
Требования к программе:
Необходимо определить список всех логических дисков в системе.
Необходимо учесть наличие нескольких жестких дисков на компьютере.
Имена логических дисков должны совпадать с именами дисков в системе.
Для каждого логического диска определить: тип файловой системы, начало диска, его размер.
Варианты заданий
Определить активные разделы жесткого диска.
Вывести неиспользуемые разделы в каждой MBR.
Определить количество MBR в системе.
Для каждого логического диска вывести его серийный номер (из ВООТ-сектора).
Для каждого логического диска определить размер сектора (из ВООТ-сектора).
Для каждого логического диска определить размер кластера (из ВООТ-сектора).
Для каждого расширенного раздела вывести его относительный номер сектора.
Для каждого расширенного раздела вывести его размер.
Подсчитать количество используемых разделов в каждой MBR.
Для логических дисков с файловой системой FATвывести размер FAT.
Для логических дисков с файловой системой FATвывести метку тома.
Для логических дисков с файловой системой NTFSвывести размер записи MFT.
Для каждого расширенного раздела вывести его абсолютный номер сектора.
Для активных разделов вывести CHS-адрес начала раздела.
Для активных разделов вывести CHS-адрес конца раздела.
Вопросы к защите
Назначение MBR, его структура и расположение на диске
Расширенный раздел. Назначение, расположение на диске
Структура партиции Partition Table
Алгоритм именования дисков
Просмотр MBR нескольких жестких дисков
Лабораторная работа №4 Применение функций Windows api для поиска и работы с файлами и каталогами
Цель работы: Получить практические навыки в использований функций Win32 API для работы с файлами и каталогами
Теоретические сведения
Наиболее часто используемые функции Win32 API для работы с файлами и каталогами:
Поиск первого из файлов, удовлетворяющих маске
HANDLE FindFirstFile (LPCTSTR lpFileName,LPWIN32_FIND_DATA lpFindData)
Первый параметр – маска файлов с полным путем. Маска может включать * (любое количество символов)и ? (один любой символ).
Например: ?ф*.* - все файлы со второй буквой ф.
С:\*.*
Второй параметр – адрес структуры, в которой будет информация о найденном файле.
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[MAX_PATH];
TCHAR cAlternateFileName[14];
}
Наиболее часто встречающиеся атрибуты файлов:
FILE_ATTRIBUTE_DIRECTORY 16 (0x10)
FILE_ATTRIBUTE_HIDDEN 2(0x2)
FILE_ATTRIBUTE_READONLY 1 (0x1)
FILE_ATTRIBUTE_SYSTEM 4 (0x4)
Структура содержит 3 временных штампа – дата создания, последнего использования и редактирования. Структура FILETIME может быть конвертирована функцией FileTimeToSystemTime для удобного вывода на экран или программной работы с датой или временем.
Последнее поле – альтернативное имя файла – имя в формате 8.3.
Если функция завершается успешно, возвращаемое значение является описателем (хэндлом) поиска , используемым в последующем вызове FindNextFile или FindClose, и lpFindData параметр содержит информацию о первом найденном файле или каталоге.
Если функция завершается с ошибкой, или не удается найти файлы из строки поиска, возвращаемое значение равно INVALID_HANDLE_VALUE . Чтобы получить расширенные сведения об ошибке, вызовите GetLastError функция.
Если функция завершается неудачей, потому что нет соответствующих файлов , функция GetLastError возвращает ERROR_FILE_NOT_FOUND.
Продолжение поиска файлов FindNextFile
BOOL FindNextFile(HANDLE hFindFile,LPWIN32_FIND_DATA lpFindData);
Возвращает ненулевое значение, если успешно.
Завершение поиска (освобождение описателя поиска)
BOOL FindClose(HANDLE hFindFile);
В отличие от остальных функций, которые освобождают хэндл с помощью CloseHandle.
Пример поиска файлов в заданной директории:
LPWIN32_FIND_DATA ffd;
LARGE_INTEGER filesize;
hFind = FindFirstFile(szDir, &ffd);
if (hFind !=INVALID_HANDLE_VALUE)
{ do{
if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{ _tprintf(TEXT(" %s <DIR>\n"), ffd.cFileName);
}
else
{ filesize.LowPart = ffd.nFileSizeLow;
filesize.HighPart = ffd.nFileSizeHigh;
_tprintf(TEXT(" %s %ld bytes\n"), ffd.cFileName, filesize.QuadPart);
}
}
while (FindNextFile(hFind, &ffd) != 0);
FindClose (hFind);
Копирование файла
BOOL CopyFile (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, BOOL bFail);
Копирует существующий файл, заданный первым параметром, в файл, заданный вторым параметром. Если bFail =TRUE и новый файл существует, функция завершается с ошибкой. Если этот параметр равен FALSE и новый файл существует, то функция перезаписывает его и завершается успешно.
При нормальном завершении функция возвращает ненулевое значение, иначе – ноль.
Удаление файла
BOOL DeleteFile (LPCSTR lpFileName);
Удаляет файл, заданный в параметре. При успешном выполнении возвращает TRUE
Перемещение или переименование файла
BOOL MoveFile (LPCSTR lpExistingFileName, LPCSTR lpNewFileName);
Перемещает/переименовывает существующий файл lpExistingFileName
При успешном выполнении возвращает TRUE.
