
- •Введение
- •Лабораторная работа № 1. Создание программы определения характеристик центрального процессора.
- •Определение параметров процессора на аппаратном уровне.
- •Лабораторная работа № 2.
- •Конфигурация персонального компьютера
- •Cmos-память и конфигурация компьютера
- •32H Текущее столетие
- •Использование bios для определения конфигурации
- •Лабораторная работа 3. Тестирование оптических накопителей.
- •Использование I/o Control Codes.
- •Использование Windows Management Instrumentation (wmi).
- •Порты контроллера накопителей на гибких дисках
- •Порт 3f2h.
- •Порт 3f4h.
- •Команды управления накопителями
- •Перечень команд контpоллеpа нгмд
- •Структура байтов состояния
- •Формат дорожки
- •Отличия контроллера для ат-подобных пэвм
- •Порт 3f7h.
- •Лабораторная работа № 5. Диагностика контроллера накопителей на жестких дисках.
- •Контроллер жестких дисков для хт-подобных пэвм
- •Порты ввода-вывода
- •Порт 320h.
- •Порт 321h.
- •Порт 322h.
- •Порт 323h.
- •Общий формат команды и терминология
- •Описание команд Проверка готовности накопителя (класс 0, опкод 0).
- •Рекалибровать (класс 0, опкод 1).
- •Запрос состояния (класс 0, опкод 3).
- •Форматирование накопителя (класс 0, опкод 4).
- •Проверка секторов (класс 0, опкод 5).
- •Форматирование дорожки (класс 0, опкод 6).
- •Форматирование дефектной дорожки (класс 0, опкод 7).
- •Чтение секторов (класс 0, опкод 8).
- •Запись секторов (класс 0, опкод 0Ah).(*)
- •Поиск цилиндра по номеру (класс 0, опкод 0Ch).(*)
- •Чтение внутреннего озу контроллера (класс 0, опкод 0Eh).(*)
- •Запись внутреннего озу контроллера (класс 0, опкод 0Fh).(*)
- •Диагностика внутреннего озу контроллера (класс 7,опкод 0).(*)
- •Тест устройства (класс 7, опкод 3).
- •Расширенный тест контроллера (класс 0, опкод 4).
- •Считывание без контроля (класс 7, опкод 5).
- •Запись без контроля (класс 7, опкод 6).
- •Разметка диска
- •Контроллер жестких дисков для ат-подобных пэвм
- •Описание портов ввода-вывода Порт 1f0h
- •Порт 1f1h.
- •Система команд
- •Лабораторная работа №6. Программное тестирование портов для работы с клавиатурой
- •Аппаратное прерывание клавиатуры
- •Средства bios для работы с клавиатурой
- •Чтение символа с ожиданием
- •Проверка буфера на наличие в нем символов
- •Получение состояния переключающих клавиш
- •Установка временных характеристик клавиатуры
- •Запись символов в буфер клавиатуры
- •Чтение символа с ожиданием для 101-клавишной клавиатуры
- •Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры
- •Получение состояния переключающих клавиш для 101-клавишной клавиатуры
- •Лабораторная работа № 7. Тестирование и контроль оперативной памяти.
- •Алгоритм определения объёма оперативной памяти.
- •Сущность тестирования памяти.
- •Алгоритм диагностирования памяти в тесте Memtest86.
- •Лабораторная работа № 8. Программирование принтера. Цель работы: изучение методов программирования принтера.
- •Средства ms-dos для работы с принтером
- •Программирование режимов принтера
- •Установка атрибутов/цветов символов.
- •Сдвиг экрана и страницы.
- •Вертикальный сдвиг текстового экрана.
- •Сдвиг текстового экрана горизонтально.
- •Переключение между текстовыми страницами.
- •Сдвиг между страницами текста.
- •Использование wmi.
- •Аналогичным образом могут использоваться свойства и других классов.
Использование I/o Control Codes.
I/O control codes (далее IOCTL) используются для связи пользовательских приложений с драйверами устройств либо для связи драйверов и стэка устройства. Поьзовательские приложения посылают IOCTL драйверу при поможи вызова функции DeviceIoControl, которая подробно описана в Platform SDK. Вызов DeviceIoControl говорит I/O Manager’у создать IRP_MJ_DEVICE_CONTROL-запрос и послать его драйверу верхнего уровня. В свою очередь драйвер верхнего уровня может послать IOCTLs к драйверам более низкого уровня при поможи создания и посылки сообщений IRP_MJ_DEVICE_CONTROL или IRP_MJ_INTERNAL_DEVICE_CONTROL. Драйвер обрабатывает запрос в процедурах DispatchDeviceControl и DispatchInternalDeviceControl. Следует заметить, что пользовательские приложения не могут посылать IRP_MJ_INTERNAL_DEVICE_CONTROL запросы к драйверам напрямую.
Для получение информации об приводе компакт дисков могут использоваться запросы следующих групп: IOCTL_DISK_*, IOCTL_STORAGE_*, IOCTL_CDROM_*, IOCTL_DVD_*. Выбор сообщения будет обусловлен тем уровнем на котором будет использоваться устройство, т.е. если под ним будет пониматься устройство хранения данных то это будет запрос группы IOCTL_STORAGE_*, если это будет дисковое устройство хранения информации, то используется функция IOCTL_CDROM_* и т.д. Так в частности на последнем уровне (IOCTL_CDROM_*) возможно управление процессом воспроизведения звукового сигнала с компакт диска.
Использование Windows Management Instrumentation (wmi).
Windows Management Instrumentation (далее WMI) – это масштабируемая система управления инфраструктурой которая использует единый, стандартизированный, расширяемый, объектно-ориентированный интерфейс. WMI предоставляет программисту взаимодействовать с системой управления информацией и прилежащими WMI API.
При выборе данной технологии, для получения информации о CD-ROM приводе используется класс Win32_CDROMDrive. Следует учитывать что имя устройства может не совпадать с буквой логического диска ассоциированной с ним..
Ниже описан синтаксис данного класса в соответствии с Managed Object Format (MOF) и включающим все наследуемые свойства.
class Win32_CDROMDrive : CIM_CDROMDrive
{
uint16 Availability;
uint16 Capabilities[];
string CapabilityDescriptions[];
string Caption;
string CompressionMethod;
uint32 ConfigManagerErrorCode;
boolean ConfigManagerUserConfig;
string CreationClassName;
uint64 DefaultBlockSize;
string Description;
string DeviceID;
string Drive;
boolean DriveIntegrity;
boolean ErrorCleared;
string ErrorDescription;
string ErrorMethodology;
uint16 FileSystemFlags;
uint32 FileSystemFlagsEx;
string Id;
datetime InstallDate;
uint32 LastErrorCode;
string Manufacturer;
uint64 MaxBlockSize;
uint32 MaximumComponentLength;
uint64 MaxMediaSize;
boolean MediaLoaded;
string MediaType;
string MfrAssignedRevisionLevel;
uint64 MinBlockSize;
string Name;
boolean NeedsCleaning;
uint32 NumberOfMediaSupported;
string PNPDeviceID;
uint16 PowerManagementCapabilities[];
boolean PowerManagementSupported;
string RevisionLevel;
uint32 SCSIBus;
uint16 SCSILogicalUnit;
uint16 SCSIPort;
uint16 SCSITargetId;
uint64 Size;
string Status;
uint16 StatusInfo;
string SystemCreationClassName;
string SystemName;
real64 TransferRate;
string VolumeName;
string VolumeSerialNumber;
};
Рассмотрим свойства предоставляемые данным классом более подробно:
Availability – доступность и статус устройства.
Capabilities – массив с возможностями устройству. На пример устройство может поддерживать случайный доступ (флаг 3), оно может быть извлекаемым (флаг 7), и т.д.
CapabilityDescriptions – массив с более с более детальной информацией о Capabilities.
Caption –короткое описание объекта(одной строкой).
CompressionMethod – Алгоритм или инструмент используемый устройством для поддержания компрессии. Здесь может находиться слово "Unknown" если метод неизвестен либо неподерживается.
ConfigManagerErrorCode – Код ошибки в Windows Configuration Manager.
ConfigManagerUserConfig – если TRUE, то к устройству применены пользовательские настройки.
DefaultBlockSize – значение размера блоков по умолчанию
Description – описание объекта.
DeviceID – Уникальный идентификатор CD_ROM.
Drive – Буква диска CD-ROM. На пример: "d:\"
DriveIntegrity – Если TRUE, файлы могут быть бехошибачно прочитаны с устройства CD. Это добивается при помощи двойного чтения блока данных с диска и их сравнением.
ErrorCleared – Если TRUE, то значение LastErrorCode очищено(пусто).
ErrorDescription – Подробная информация об ошибке хранящейся в LastErrorCode, и информация об действиях по её устранению.
ErrorMethodology – Тип обнаруженной ошибки и вид корректировки под поддерживаемый устройством.
FileSystemFlags – Данный свойство устарело и сохранено лишь для совместимости. На его мессе используется свойство FileSystemFlagsEx.
FileSystemFlagsEx – Файловая система ассоциированная с CD-ROM в Windows.
Id –уникальная буква идентифицирующая устройство CD-ROM. Пример: "d:\"
InstallDate – Дата и время установки устройства.
LastErrorCode – Код последней ошиби вызванной устройством.
Manufacturer – Производитель Пример:"PLEXTOR".
MaxBlockSize – Максимальный размер блока(в байтах) поддерживаемый устройством.
MaximumComponentLength – Максимальнгая длина имени файла поддерживаемая устройством.
MaxMediaSize – Максимальный размер(в килобайтах) данных поддерживаемый данным устройством.
MediaLoaded – Если TRUE, в устройстве есть компакт диск.
MediaType – тип используемых данных либо тип доступа к ним устройством. В данном случае это значение всегда равно "CD-ROM".
MfrAssignedRevisionLevel – В Windows XP and Windows Server 2003: Версия firmware назначенная производителем.
MinBlockSize – Минимальный размер блока(в байтах) для дисков используемых данным приводом.
Name – Имя объекта.
NeedsCleaning – Если TRUE, диск в устройстве нуждается в очистке.
PNPDeviceID – Идентификатор устройства в Windows Plug and Play. Пример: "*PNP030b".
PowerManagementSupported – Если TRUE, устройство поддерживает управление питанием.
RevisionLevel – Версия firmware.
SCSIBus – номер SCSI-шины с установленным диском.
Size – Объем диска в устройстве.
Status – Текущий статус устройства. ("OK", "Degraded", "Pred Fail", "Error", "Starting", "Stopping", и "Service").
StatusInfo – Статус логического устройства.
TransferRate – скорость передачи устройства CD-ROM. Ели значение равно -1, указывает на невозможность получения скорости, либо об отсутствии диске в устройства.
VolumeName – Имя томя в устройстве.
VolumeSerialNumber – Серийный номер диска в устройстве. Пример: A8C3-D032
Варианты лабораторных работ:
№ Варианта |
Задание |
1 |
Определение Availability |
2 |
Описание объекта (Description) |
3 |
Определение буквы диска |
4 |
Определить уникальный идентификатор CD_ROM |
5 |
Определить версию Firmware |
6 |
Проверка поддержки PowerManagementSupported |
7 |
Проверка StatusInfo |
8 |
Опредение VolumeName |
9 |
Определение VolumeSerialNumber |
0 |
Определение PNPDeviceID |
Лабораторная работа № 4.
Программное тестирование контроллера накопителей на гибких дисках
Цель работы: изучение методов диагностирования контроллера накопителей на гибких дисках.
Основные сведения о контроллере
Управление гибкими дисками в PC-подобных ПЭВМ осуществляется микросхемой 8272А фирмы Intel, выполняющей функции контроллера гибких дисков (Floppy Disk Controller, FDC). Как известно, информация на дискете хранится на дорожках, дорожки разбиты на сектора. В зависимости от типа дисковода число дорожек на одной стороне дискеты может быть равно 40 или 80, число секторов на дорожке колеблется от 8 до 26. Кроме того существуют дисководы, имеющие одну головку чтения/записи (при этом вторая сторона дискеты не используется). Контроллер управляет дисководами для дискет диаметром 5.25 и 3.5 дюйма, поддерживает запись на дискету методами ЧМ и МЧМ, программируемую длину секторов (128, 256, 512 или 1024 байта), мультисекторные и мультидорожечные операции обмена с дисками, операции поиска. Одновременно к одному контроллеру может быть подключено до четырех дисководов любого из поддерживаемых типов. Обмен с диском может осуществляться как с использованием ПДП, так и без него. В последнем случае используются 2 метода: опрос состояния контроллера через регистры или использование аппаратных прерывания контроллера. FDC генерирует аппаратные прерывания уровня 6 (IRQ6), связанные с вектором прерываний 0Eh. Управление контроллером и накопителями осуществляется через 3 порта ввода-вывода.