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.com)
17 #elif defined(_MSC_VER)
20 #define DPRINT1 DbgPrint("(%s:%d) ", __FILE__, __LINE__), DbgPrint
21 #define CHECKPOINT1 DbgPrint("(%s:%d)\n", __FILE__, __LINE__)
22 #define DPRINT DPRINT1
23 #define CHECKPOINT CHECKPOINT1
25 #error Unknown compiler!
28 #define TAG(A, B, C, D) (ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
37 } SERENUM_DEVICE_STATE
;
39 typedef struct _COMMON_DEVICE_EXTENSION
42 SERENUM_DEVICE_STATE PnpState
;
43 } COMMON_DEVICE_EXTENSION
, *PCOMMON_DEVICE_EXTENSION
;
45 typedef struct _FDO_DEVICE_EXTENSION
47 COMMON_DEVICE_EXTENSION Common
;
49 PDEVICE_OBJECT LowerDevice
;
51 IO_REMOVE_LOCK RemoveLock
;
53 UNICODE_STRING SerenumInterfaceName
;
55 PDEVICE_OBJECT AttachedPdo
;
57 } FDO_DEVICE_EXTENSION
, *PFDO_DEVICE_EXTENSION
;
59 typedef struct _PDO_DEVICE_EXTENSION
61 COMMON_DEVICE_EXTENSION Common
;
63 PDEVICE_OBJECT AttachedFdo
;
65 UNICODE_STRING DeviceDescription
; // REG_SZ
66 UNICODE_STRING DeviceId
; // REG_SZ
67 UNICODE_STRING InstanceId
; // REG_SZ
68 UNICODE_STRING HardwareIds
; // REG_MULTI_SZ
69 UNICODE_STRING CompatibleIds
; // REG_MULTI_SZ
70 } PDO_DEVICE_EXTENSION
, *PPDO_DEVICE_EXTENSION
;
72 #define SERENUM_TAG TAG('S', 'e', 'r', 'e')
75 #define FLAG_ENUMERATION_DONE 0x01
77 /************************************ detect.c */
80 SerenumDetectPnpDevice(
81 IN PDEVICE_OBJECT DeviceObject
,
82 IN PDEVICE_OBJECT LowerDevice
);
85 SerenumDetectLegacyDevice(
86 IN PDEVICE_OBJECT DeviceObject
,
87 IN PDEVICE_OBJECT LowerDevice
);
89 /************************************ fdo.c */
93 IN PDRIVER_OBJECT DriverObject
,
94 IN PDEVICE_OBJECT Pdo
);
98 IN PDEVICE_OBJECT DeviceObject
,
101 /************************************ misc.c */
104 SerenumInitMultiSzString(
105 OUT PUNICODE_STRING Destination
,
106 ... /* list of PCSZ */);
110 IN PDEVICE_OBJECT DeviceObject
,
114 ForwardIrpToLowerDeviceAndForget(
115 IN PDEVICE_OBJECT DeviceObject
,
119 ForwardIrpToAttachedFdoAndForget(
120 IN PDEVICE_OBJECT DeviceObject
,
125 IN PDEVICE_OBJECT DeviceObject
,
128 /************************************ pdo.c */
132 IN PDEVICE_OBJECT DeviceObject
,
135 /************************************ serenum.c */
139 IN PDRIVER_OBJECT DriverObject
,
140 IN PUNICODE_STRING RegPath
);