Компьютерные книги
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 64

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — БВХ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interfeysusbpraktikaispolzovaniya2004.djvu
Предыдущая << 1 .. 58 59 60 61 62 63 < 64 > 65 66 67 68 69 70 .. 168 >> Следующая

6. Получив эти идентификаторы, система пытается найти и загрузить
драйверы устройств.
7. Найдя драйвер для устройства, система загружает его в память, вызывая
его DriverEntry. Потом вызывается AddDevice, где создается FDO для
устройства. Если устройств, управляемых этим драйвером, несколько, то
AddDevice будет вызвана для каждого устройства. Если в реестре
зарегистрированы дополнительные фильтры, то они также загружаются в
память. Затем система посылает на FDO запрос irp_mn_start_device. Кроме
того, при необходимости AddDevice осуществляет создание символьного имени
устройства (см. разд. 9.2).
8. Потом посылают на FDO запрос irp_mn_query_device_relations. Если
устройство само является шиной или держит на себе другие устройства,
которыми само не управляет, то для устройств на нем повторяется вся
последовательность действий, начиная с пункта 5.
184
Часть III. Практика программирования
функция AddDevice, вызываемая для каждого FDO, вызывает IoCreateDevice И
IoAttachDeviceToDeviceStack, обеспечивая построение стека устройств
(device stack). Стек устройств обеспечивает прохождение запросов от
пользовательских программ до нижнего (аппаратного) уровня драйверов (рис.
9.2).
Объект фильтра (FiDO)
Объект "функциональное устройство"
(FDO)
Объект фильтра (FiDO)
Объект фильтра (FiDO)
Объект "физическое устройство" (PDO)
Высокоуровневый драйвер фильтра
Функциональный
драйвер
Низкоуровневый драйвер фильтра
Драйвер фильтра шины
Драйвер шины
Рис. 9.2. Стек устройств
9.2. Символьные имена устройств
Создавая объект "устройство", драйвер может присвоить ему имя. Тогда он
помещается в пространство имен диспетчера объектов. Драйвер может
позволить определить имя устройства явно или позволить сгенерировать его
автоматически. По соглашению имена объектов помещаются в каталог
пространства имен \Device, недоступный приложениям через Windows API.
Чтобы сделать объект устройства доступным для приложений, драйвер должен
создать в каталоге \?? (до Windows NT4 этот каталог назывался \DosDevice,
а в Windows ХР называется \GLOBAL??) символьную ссылку на имя этого
объекта в каталоге \Device (рис. 9.3). Эта ссылка называется символьным
именем устройства или DOS-именем. Унаследованные драйверы и драйверы
логических устройств обычно создают ссылку с общеизвестными
Гпава 9. Введение в WDM
185
именами (например, F: для устройства чтения компакт-диска \Device\ CDRomO
или СОМ1 для последовательного порта \Device\Sera10) Устройства,
создаваемые динамически при работе системы Plug and Play, создают имена,
используя GU1D, гарантируя глобальную уникальность имени. Получение PnP-
имен и работу с ними мы будем обсужагь в главе 10.
% WinObj - Systems Internals: http://www.sysinternals.com
File View Help
Ш
(c)
iCurrently selected: I,GtQBAL??
Name
Type
SymLiri к
I ArcName Al JX SymboliLlink \DosDevii.cs\COM I
U NLS SymbolicLink \Device\HarddiskVuluri "e 1
_j Driver J . / f.OMl SymbolicLink \Device\5erialO
j Device i Windows COM2 SymbolicLink \Device\Seriall
DM3 SymbolicLink \Device\ltmodemO
_J sessions i_] RPC Control I EiaselMamedObjects JRomO
SymbolicLink \Deviee\CdRomO
jRoml SymbolicLink \Device\CdRomi
: j TernelObjects A u' SymbolicLink
\Device\HarddiskVoiume2
_ i GLOBAL?? A DISPLAY 1 SymbolicLink \Device\VideoO
_J FileSystem ISPLAY2 SymbolicLink \Device\ Video 1
>_J '"rbjectTypes ISPLAY3 SymbolicLink \Device\Video2
r_J security A L'ISPLAY4 SymbolicLink \Device\Video3
' I Callback j i "mConfig SymbolicLink
\Device\DmControl\DmCo< -
1 | knownDlls A Dmlnfo SymbolicLink
\Device\DmConferol\DmInfo
13
Рис. 9.3. Символьные имена Windows ХР
Несколько символьных имен может указывать на одно и гоже устройство,
однако обратное не верно. Одно имя может ссылаться только на одно
устройство. Так, например, последовательный порт \Device\SerialO может
иметь имена С0М1 и МуСОМ.
Хотя прикладные программы не могут использовать внутренние имена, они
могут получать, добавлять и удалять символьные имена для внутренних имен
устройств. Эти операции выполняются с помощью функций QueryDosDevi.ee И
DefileDosDevice, Которые ОПИСаНЫ В главе 16.
Листинг 9.1 демонстрирует получение списка, добавление и удаление
символьных имен.
: Листинг 9.1. Работа с DOS-именами устройств
unit. Unitl;
interface
186
Часть III. Практика программирования
jses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls; type
TForml = class(TForm)
StatusBar: TStatusBar;
IbNameList: TListBox;
Panell: TPanel;
Labell: TLabel;
Label2: TLabel;
NTDeviceName: TEdit;
DOSDeviceName: TEdit; btnGetName: TButton; btnAddName: TButton;
btnDelName: TButton; btnGetList: TButton;
procedure btnGetNameClick(Sender: TObject); procedure
btnAddNameClick(Sender: TObject); procedure btnDelNameClick(Sender:
TObject); procedure btnGetListClick(Sender: TObject); procedure
IbNameListDblClick(Sender: TObject); private public end;
Предыдущая << 1 .. 58 59 60 61 62 63 < 64 > 65 66 67 68 69 70 .. 168 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Завалишин Д. "Интернетско-русский разговорник" (Web-программирование)

Заенцев И.В. "Нейронные сети: основные модели" (Web-программирование)

Владимиров А.А. "Wi-фу: «боевые» приемы взлома и защиты беспроводных сетей" (Web-программирование)

Вьейра Р. "SQL Server 2000. Программирование в 2 ч." (Web-программирование)

Веллинг Л.Т. "Разработка web приложений с помощью php и mysql" (Web-программирование)
Авторские права © 2013 ComputersBooks. Все права защищены.

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed