- Send the SCM reply packet with the final status after completing the requested...
[reactos.git] / reactos / drivers / bus / acpi / ospm / include / acpisys.h
1 /*
2 * PROJECT: ReactOS ACPI bus driver
3 * FILE: acpi/ospm/include/acpisys.h
4 * PURPOSE: ACPI bus driver definitions
5 */
6 #define ACPI_DEBUG
7
8 typedef ACPI_STATUS (*ACPI_DRIVER_FUNCTION)(VOID);
9
10
11 typedef enum
12 {
13 dsStopped,
14 dsStarted,
15 dsPaused,
16 dsRemoved,
17 dsSurpriseRemoved
18 } ACPI_DEVICE_STATE;
19
20
21 typedef struct _COMMON_DEVICE_EXTENSION
22 {
23 // Pointer to device object, this device extension is associated with
24 PDEVICE_OBJECT DeviceObject;
25 // Wether this device extension is for an FDO or PDO
26 BOOLEAN IsFDO;
27 // Wether the device is removed
28 BOOLEAN Removed;
29 // Current device power state for the device
30 DEVICE_POWER_STATE DevicePowerState;
31 // Lower device object
32 PDEVICE_OBJECT Ldo;
33 } COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
34
35
36 /* Physical Device Object device extension for a child device */
37 typedef struct _PDO_DEVICE_EXTENSION
38 {
39 // Common device data
40 COMMON_DEVICE_EXTENSION Common;
41 // Device ID
42 UNICODE_STRING DeviceID;
43 // Instance ID
44 UNICODE_STRING InstanceID;
45 // Hardware IDs
46 UNICODE_STRING HardwareIDs;
47 // Textual description of device
48 UNICODE_STRING DeviceDescription;
49 // Resource list
50 PCM_RESOURCE_LIST ResourceList;
51 ULONG ResourceListSize;
52 // Requirement list
53 PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirementsList;
54 ULONG ResourceRequirementsListSize;
55 } PDO_DEVICE_EXTENSION, *PPDO_DEVICE_EXTENSION;
56
57
58 typedef struct _FDO_DEVICE_EXTENSION
59 {
60 // Common device data
61 COMMON_DEVICE_EXTENSION Common;
62 // Physical Device Object
63 PDEVICE_OBJECT Pdo;
64 // Current state of the driver
65 ACPI_DEVICE_STATE State;
66 // Supported system states
67 BOOLEAN SystemStates[ACPI_S_STATE_COUNT];
68 // Namespace device list
69 LIST_ENTRY DeviceListHead;
70 // Number of devices in device list
71 ULONG DeviceListCount;
72 // Lock for namespace device list
73 KSPIN_LOCK DeviceListLock;
74 } FDO_DEVICE_EXTENSION, *PFDO_DEVICE_EXTENSION;
75
76
77 typedef struct _ACPI_DEVICE
78 {
79 // Entry on device list
80 LIST_ENTRY DeviceListEntry;
81 // Bus manager handle
82 BM_HANDLE BmHandle;
83 // Physical Device Object
84 PDEVICE_OBJECT Pdo;
85 // Initialization function
86 ACPI_DRIVER_FUNCTION Initialize;
87 // Cleanup function
88 ACPI_DRIVER_FUNCTION Terminate;
89 } ACPI_DEVICE, *PACPI_DEVICE;
90
91
92 /* acpienum.c */
93
94 NTSTATUS
95 ACPIEnumerateDevices(
96 PFDO_DEVICE_EXTENSION DeviceExtension);
97
98
99 /* fdo.c */
100
101 NTSTATUS
102 NTAPI
103 FdoPnpControl(
104 PDEVICE_OBJECT DeviceObject,
105 PIRP Irp);
106
107 NTSTATUS
108 NTAPI
109 FdoPowerControl(
110 PDEVICE_OBJECT DeviceObject,
111 PIRP Irp);
112
113 /* pdo.c */
114
115 NTSTATUS
116 NTAPI
117 PdoPnpControl(
118 PDEVICE_OBJECT DeviceObject,
119 PIRP Irp);
120
121 NTSTATUS
122 NTAPI
123 PdoPowerControl(
124 PDEVICE_OBJECT DeviceObject,
125 PIRP Irp);
126
127 /* EOF */