2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Serial enumerator driver
4 * FILE: drivers/bus/serenum/serenum.h
5 * PURPOSE: Serial enumerator driver header
7 * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org)
24 } SERENUM_DEVICE_STATE
;
26 typedef struct _COMMON_DEVICE_EXTENSION
29 SERENUM_DEVICE_STATE PnpState
;
30 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
32 typedef struct _FDO_DEVICE_EXTENSION
34 COMMON_DEVICE_EXTENSION Common
;
36 PDEVICE_OBJECT LowerDevice
;
38 IO_REMOVE_LOCK RemoveLock
;
40 UNICODE_STRING SerenumInterfaceName
;
42 PDEVICE_OBJECT AttachedPdo
;
44 } FDO_DEVICE_EXTENSION
, *PFDO_DEVICE_EXTENSION
;
46 typedef struct _PDO_DEVICE_EXTENSION
48 COMMON_DEVICE_EXTENSION Common
;
50 PDEVICE_OBJECT AttachedFdo
;
52 UNICODE_STRING DeviceDescription
; // REG_SZ
53 UNICODE_STRING DeviceId
; // REG_SZ
54 UNICODE_STRING InstanceId
; // REG_SZ
55 UNICODE_STRING HardwareIds
; // REG_MULTI_SZ
56 UNICODE_STRING CompatibleIds
; // REG_MULTI_SZ
57 } PDO_DEVICE_EXTENSION
, *PPDO_DEVICE_EXTENSION
;
59 #define SERENUM_TAG 'ereS'
62 #define FLAG_ENUMERATION_DONE 0x01
64 /************************************ detect.c */
67 SerenumDetectPnpDevice(
68 IN PDEVICE_OBJECT DeviceObject
,
69 IN PDEVICE_OBJECT LowerDevice
);
72 SerenumDetectLegacyDevice(
73 IN PDEVICE_OBJECT DeviceObject
,
74 IN PDEVICE_OBJECT LowerDevice
);
76 /************************************ fdo.c */
78 DRIVER_ADD_DEVICE SerenumAddDevice
;
82 IN PDEVICE_OBJECT DeviceObject
,
85 /************************************ misc.c */
88 SerenumInitMultiSzString(
89 OUT PUNICODE_STRING Destination
,
90 ... /* list of PCSZ */);
94 IN PDEVICE_OBJECT DeviceObject
,
98 ForwardIrpToLowerDeviceAndForget(
99 IN PDEVICE_OBJECT DeviceObject
,
103 ForwardIrpToAttachedFdoAndForget(
104 IN PDEVICE_OBJECT DeviceObject
,
109 IN PDEVICE_OBJECT DeviceObject
,
113 DuplicateUnicodeString(
115 IN PCUNICODE_STRING SourceString
,
116 OUT PUNICODE_STRING DestinationString
);
118 /************************************ pdo.c */
122 IN PDEVICE_OBJECT DeviceObject
,
125 /************************************ serenum.c */
129 IN PDRIVER_OBJECT DriverObject
,
130 IN PUNICODE_STRING RegPath
);