Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
33_Metodicheskie_ukazania_po_laboratornym_rabot...doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
706.56 Кб
Скачать

Лабораторная работа 3. Тестирование оптических накопителей.

Цель работы: изучить методы и написать программу определения характеристик CD-привода.

Для программирования привода оптических дисков может применяться несколько способов. Причем выбор в основном обусловлен той операционной системой, на которой предполагается использование написанной программы и соответственно, тем уровнем абстракции по отношению к устройству и соответственно возможностями программы. То есть, например, при использовании операционной системы MSDOS достигается наименьший уровень абстракции, но вместе с тем возникает и сложность написания программы. Однако написание программ на таком низком уровне (с использование низкоуровневых языков программирования), не является столь необходимым в настоящее время. К тому же оно подразумевает углубленное знание аппаратной части ПК. При написании программ для операционных систем линейки Windows, достигается наиболее высокий уровень абстракции, а вместе увеличивается скорость и качество полученной программы. Для работы с приводами компакт дисков в эти операционные системы есть встроенные технологии(так же называемые интерфейсами), облегчающие написание программ. Рассмотрим каждую из этих технологий более подробно.

ASPI

Для использования интерфейса ASPI в проекте, для начала, нужно определиться, с типом используемых Библиотек, т.е. будут они динамические или статические. При динамической компиляции достаточно загрузить библиотеку Wnaspi32.dll (расположена в системной папке Windows), и получить указатели на используемые функции ASPI:

// объявляем указатели на функции ASPI

DWORD (*pfnGetASPI32SupportInfo) (void);

DWORD (*pfnSendASPI32Command) (LPSRB);

DWORD (*pfnGetASPI32Buffer) (PASPI32BUFF);

DWORD (*pfnFreeASPI32Buffer) (PASPI32BUFF);

BOOL (*pfnTranslateASPI32Address) (PDWORD, PDWORD);

// загружаем динамическую библиотеку wnaspi32.dll

HINSTANCE hInstAspi = LoadLibrary ("wnaspi32");

// получаем указатели на функции библиотеки

(FARPROC) pfnGetASPI32SupportInfo = GetProcAddress (hInstAspi, "GetASPI32SupportInfo");

(FARPROC) pfnSendASPI32Command = GetProcAddress (hInstAspi, "SendASPI32Command");

(FARPROC) pfnGetASPI32Buffer = GetProcAddress (hInstAspi, "GetASPI32Buffer");

(FARPROC) pfnFreeASPI32Buffer = GetProcAddress (hInstAspi, "FreeASPI32Buffer");

(FARPROC) pfnTranslateASPI32Address = GetProcAddress (hInstAspi, "TranslateASPI32Adress");

Таким образом мы динамически загрузили библиотеку и получили указателя на функции ASPI для дальнейшего использования в программе. Если Вы предпочитаете статическую компиляцию, то Вам понадобятся файлы определений (Wnaspi32.h и Scsidefs.h), а также библиотека Wnaspi32.lib для правильной компановки проекта. Файлы определений стоит добавить в начало файла проекта, а библиотеку присоединить к проекту одним из следующих способов:

1. Выбрать в главном меню оболочки Visual C++ следующий путь: Project\Settings\Link. Добавить название библиотеки в соответсвующее текстовое окно. Нажать кнопку OK.

2. Открыть для редактирования файл stdafx.h и добавить перед #endif строку #pragma comment (lib, "wnaspi32.lib"):

. . .

#pragma comment (lib, "wnaspi32.lib");

#endif

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]