Указание типов устройств
Каждый объект устройства имеет тип устройства, который хранится в элементе DeviceTypeструктуры DEVICE_OBJECT . Тип устройства представляет тип базового оборудования для драйвера.
Каждый драйвер режима ядра, создающий объект устройства, должен указывать соответствующее значение типа устройства при вызове IoCreateDevice. Подпрограмма IoCreateDevice использует указанный тип устройства для инициализации элемента DeviceTypeструктуры DEVICE_OBJECT .
Система определяет следующие значения типов устройств, перечисленные в алфавитном порядке:
#define FILE_DEVICE_8042_PORT 0x00000027
#define FILE_DEVICE_ACPI 0x00000032
#define FILE_DEVICE_BATTERY 0x00000029
#define FILE_DEVICE_BEEP 0x00000001
#define FILE_DEVICE_BUS_EXTENDER 0x0000002a
#define FILE_DEVICE_CD_ROM 0x00000002
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
#define FILE_DEVICE_CHANGER 0x00000030
#define FILE_DEVICE_CONTROLLER 0x00000004
#define FILE_DEVICE_DATALINK 0x00000005
#define FILE_DEVICE_DFS 0x00000006
#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
#define FILE_DEVICE_DFS_VOLUME 0x00000036
#define FILE_DEVICE_DISK 0x00000007
#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
#define FILE_DEVICE_DVD 0x00000033
#define FILE_DEVICE_FILE_SYSTEM 0x00000009
#define FILE_DEVICE_FIPS 0x0000003a
#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
#define FILE_DEVICE_INPORT_PORT 0x0000000a
#define FILE_DEVICE_KEYBOARD 0x0000000b
#define FILE_DEVICE_KS 0x0000002f
#define FILE_DEVICE_KSEC 0x00000039
#define FILE_DEVICE_MAILSLOT 0x0000000c
#define FILE_DEVICE_MASS_STORAGE 0x0000002d
#define FILE_DEVICE_MIDI_IN 0x0000000d
#define FILE_DEVICE_MIDI_OUT 0x0000000e
#define FILE_DEVICE_MODEM 0x0000002b
#define FILE_DEVICE_MOUSE 0x0000000f
#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
#define FILE_DEVICE_NAMED_PIPE 0x00000011
#define FILE_DEVICE_NETWORK 0x00000012
#define FILE_DEVICE_NETWORK_BROWSER 0x00000013
#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
#define FILE_DEVICE_NULL 0x00000015
#define FILE_DEVICE_PARALLEL_PORT 0x00000016
#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
#define FILE_DEVICE_PRINTER 0x00000018
#define FILE_DEVICE_SCANNER 0x00000019
#define FILE_DEVICE_SCREEN 0x0000001c
#define FILE_DEVICE_SERENUM 0x00000037
#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
#define FILE_DEVICE_SERIAL_PORT 0x0000001b
#define FILE_DEVICE_SMARTCARD 0x00000031
#define FILE_DEVICE_SMB 0x0000002e
#define FILE_DEVICE_SOUND 0x0000001d
#define FILE_DEVICE_STREAMS 0x0000001e
#define FILE_DEVICE_TAPE 0x0000001f
#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
#define FILE_DEVICE_TERMSRV 0x00000038
#define FILE_DEVICE_TRANSPORT 0x00000021
#define FILE_DEVICE_UNKNOWN 0x00000022
#define FILE_DEVICE_VDM 0x0000002c
#define FILE_DEVICE_VIDEO 0x00000023
#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
#define FILE_DEVICE_WAVE_IN 0x00000025
#define FILE_DEVICE_WAVE_OUT 0x00000026
Эти константы определены в ntddk.h и Wdm.h. Проверьте эти файлы, чтобы узнать, определены ли дополнительные типы устройств.
Спецификация FILE_DEVICE_DISK охватывает разделы диска и любой объект, который отображается как диск.
Промежуточные драйверы обычно указывают типы устройств, которые представляют базовое устройство. Например, предоставляемый системой отказоустойчивый драйвер диска ftdisk создает объекты устройств типа FILE_DEVICE_DISK; он не определяет новые типы устройств для зеркало наборов, чередуемых наборов и наборов томов, которыми он управляет.
значения FILE_DEVICE_XXX в диапазоне от 0 до 32767 зарезервированы для корпорации Майкрософт. Все модули записи драйверов должны использовать эти системные константы для устройств, принадлежащих к системным типам устройств.
Если тип оборудования не соответствует ни одному из определенных типов, укажите значение FILE_DEVICE_UNKNOWN или значение в диапазоне от 32768 до 65535.