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)
20 } SERENUM_DEVICE_STATE
;
22 typedef struct _COMMON_DEVICE_EXTENSION
25 SERENUM_DEVICE_STATE PnpState
;
26 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
28 typedef struct _FDO_DEVICE_EXTENSION
30 COMMON_DEVICE_EXTENSION Common
;
32 PDEVICE_OBJECT LowerDevice
;
34 IO_REMOVE_LOCK RemoveLock
;
36 UNICODE_STRING SerenumInterfaceName
;
38 PDEVICE_OBJECT AttachedPdo
;
40 } FDO_DEVICE_EXTENSION
, *PFDO_DEVICE_EXTENSION
;
42 typedef struct _PDO_DEVICE_EXTENSION
44 COMMON_DEVICE_EXTENSION Common
;
46 PDEVICE_OBJECT AttachedFdo
;
48 UNICODE_STRING DeviceDescription
; // REG_SZ
49 UNICODE_STRING DeviceId
; // REG_SZ
50 UNICODE_STRING InstanceId
; // REG_SZ
51 UNICODE_STRING HardwareIds
; // REG_MULTI_SZ
52 UNICODE_STRING CompatibleIds
; // REG_MULTI_SZ
53 } PDO_DEVICE_EXTENSION
, *PPDO_DEVICE_EXTENSION
;
55 #define SERENUM_TAG 'ereS'
58 #define FLAG_ENUMERATION_DONE 0x01
60 /************************************ detect.c */
63 SerenumDetectPnpDevice(
64 IN PDEVICE_OBJECT DeviceObject
,
65 IN PDEVICE_OBJECT LowerDevice
);
68 SerenumDetectLegacyDevice(
69 IN PDEVICE_OBJECT DeviceObject
,
70 IN PDEVICE_OBJECT LowerDevice
);
72 /************************************ fdo.c */
74 DRIVER_ADD_DEVICE SerenumAddDevice
;
78 IN PDEVICE_OBJECT DeviceObject
,
81 /************************************ misc.c */
84 SerenumInitMultiSzString(
85 OUT PUNICODE_STRING Destination
,
86 ... /* list of PCSZ */);
90 IN PDEVICE_OBJECT DeviceObject
,
94 ForwardIrpToLowerDeviceAndForget(
95 IN PDEVICE_OBJECT DeviceObject
,
99 ForwardIrpToAttachedFdoAndForget(
100 IN PDEVICE_OBJECT DeviceObject
,
105 IN PDEVICE_OBJECT DeviceObject
,
109 DuplicateUnicodeString(
111 IN PCUNICODE_STRING SourceString
,
112 OUT PUNICODE_STRING DestinationString
);
114 /************************************ pdo.c */
118 IN PDEVICE_OBJECT DeviceObject
,
121 /************************************ serenum.c */
125 IN PDRIVER_OBJECT DriverObject
,
126 IN PUNICODE_STRING RegPath
);