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)
23 } SERENUM_DEVICE_STATE
;
25 typedef struct _COMMON_DEVICE_EXTENSION
28 SERENUM_DEVICE_STATE PnpState
;
29 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
31 typedef struct _FDO_DEVICE_EXTENSION
33 COMMON_DEVICE_EXTENSION Common
;
35 PDEVICE_OBJECT LowerDevice
;
37 IO_REMOVE_LOCK RemoveLock
;
39 UNICODE_STRING SerenumInterfaceName
;
41 PDEVICE_OBJECT AttachedPdo
;
43 } FDO_DEVICE_EXTENSION
, *PFDO_DEVICE_EXTENSION
;
45 typedef struct _PDO_DEVICE_EXTENSION
47 COMMON_DEVICE_EXTENSION Common
;
49 PDEVICE_OBJECT AttachedFdo
;
51 UNICODE_STRING DeviceDescription
; // REG_SZ
52 UNICODE_STRING DeviceId
; // REG_SZ
53 UNICODE_STRING InstanceId
; // REG_SZ
54 UNICODE_STRING HardwareIds
; // REG_MULTI_SZ
55 UNICODE_STRING CompatibleIds
; // REG_MULTI_SZ
56 } PDO_DEVICE_EXTENSION
, *PPDO_DEVICE_EXTENSION
;
58 #define SERENUM_TAG 'ereS'
61 #define FLAG_ENUMERATION_DONE 0x01
63 /************************************ detect.c */
66 SerenumDetectPnpDevice(
67 IN PDEVICE_OBJECT DeviceObject
,
68 IN PDEVICE_OBJECT LowerDevice
);
71 SerenumDetectLegacyDevice(
72 IN PDEVICE_OBJECT DeviceObject
,
73 IN PDEVICE_OBJECT LowerDevice
);
75 /************************************ fdo.c */
77 DRIVER_ADD_DEVICE SerenumAddDevice
;
81 IN PDEVICE_OBJECT DeviceObject
,
84 /************************************ misc.c */
87 SerenumInitMultiSzString(
88 OUT PUNICODE_STRING Destination
,
89 ... /* list of PCSZ */);
93 IN PDEVICE_OBJECT DeviceObject
,
97 ForwardIrpToLowerDeviceAndForget(
98 IN PDEVICE_OBJECT DeviceObject
,
102 ForwardIrpToAttachedFdoAndForget(
103 IN PDEVICE_OBJECT DeviceObject
,
108 IN PDEVICE_OBJECT DeviceObject
,
112 DuplicateUnicodeString(
114 IN PCUNICODE_STRING SourceString
,
115 OUT PUNICODE_STRING DestinationString
);
117 /************************************ pdo.c */
121 IN PDEVICE_OBJECT DeviceObject
,
124 /************************************ serenum.c */
128 IN PDRIVER_OBJECT DriverObject
,
129 IN PUNICODE_STRING RegPath
);
131 #endif /* _SERENUM_PCH_ */