source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/ddk/acpiioct.h@ 1194

Last change on this file since 1194 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 7.3 KB
Line 
1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#define ACPI_EVAL_INPUT_BUFFER_SIGNATURE 'BieA'
8#define ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATURE 'IieA'
9#define ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_SIGNATURE 'SieA'
10#define ACPI_EVAL_INPUT_BUFFER_COMPLEX_SIGNATURE 'CieA'
11#define ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE 'BoeA'
12#if (NTDDI_VERSION >= NTDDI_VISTA)
13#define ACPI_EVAL_INPUT_BUFFER_SIGNATURE_EX 'AieA'
14#define ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATURE_EX 'DieA'
15#define ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_SIGNATURE_EX 'EieA'
16#define ACPI_EVAL_INPUT_BUFFER_COMPLEX_SIGNATURE_EX 'FieA'
17#define ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE 'GieA'
18#define ACPI_ENUM_CHILDREN_INPUT_BUFFER_SIGNATURE 'HieA'
19#endif
20
21#define ACPI_METHOD_ARGUMENT_INTEGER 0x0
22#define ACPI_METHOD_ARGUMENT_STRING 0x1
23#define ACPI_METHOD_ARGUMENT_BUFFER 0x2
24#define ACPI_METHOD_ARGUMENT_PACKAGE 0x3
25#define ACPI_METHOD_ARGUMENT_PACKAGE_EX 0x4
26
27#define ACPI_ACQUIRE_GLOBAL_LOCK_SIGNATURE 'LgaA'
28#define ACPI_RELEASE_GLOBAL_LOCK_SIGNATURE 'LgrA'
29
30#define ACPI_OBJECT_HAS_CHILDREN 0x1
31
32#define ENUM_CHILDREN_IMMEDIATE_ONLY 0x1
33#define ENUM_CHILDREN_MULTILEVEL 0x2
34#define ENUM_CHILDREN_NAME_IS_FILTER 0x4
35
36typedef struct _ACPI_EVAL_INPUT_BUFFER {
37 ULONG Signature;
38 _ANONYMOUS_UNION union {
39 UCHAR MethodName[4];
40 ULONG MethodNameAsUlong;
41 } DUMMYUNIONNAME;
42} ACPI_EVAL_INPUT_BUFFER, *PACPI_EVAL_INPUT_BUFFER;
43
44typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER {
45 ULONG Signature;
46 _ANONYMOUS_UNION union {
47 UCHAR MethodName[4];
48 ULONG MethodNameAsUlong;
49 } DUMMYUNIONNAME;
50 ULONG IntegerArgument;
51} ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER, *PACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER;
52
53typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING {
54 ULONG Signature;
55 _ANONYMOUS_UNION union {
56 UCHAR MethodName[4];
57 ULONG MethodNameAsUlong;
58 } DUMMYUNIONNAME;
59 ULONG StringLength;
60 UCHAR String[ANYSIZE_ARRAY];
61} ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING, *PACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING;
62
63typedef struct _ACPI_METHOD_ARGUMENT {
64 USHORT Type;
65 USHORT DataLength;
66 _ANONYMOUS_UNION union {
67 ULONG Argument;
68 UCHAR Data[ANYSIZE_ARRAY];
69 } DUMMYUNIONNAME;
70} ACPI_METHOD_ARGUMENT;
71typedef ACPI_METHOD_ARGUMENT UNALIGNED *PACPI_METHOD_ARGUMENT;
72
73typedef struct _ACPI_EVAL_INPUT_BUFFER_COMPLEX {
74 ULONG Signature;
75 _ANONYMOUS_UNION union {
76 UCHAR MethodName[4];
77 ULONG MethodNameAsUlong;
78 } DUMMYUNIONNAME;
79 ULONG Size;
80 ULONG ArgumentCount;
81 ACPI_METHOD_ARGUMENT Argument[ANYSIZE_ARRAY];
82} ACPI_EVAL_INPUT_BUFFER_COMPLEX, *PACPI_EVAL_INPUT_BUFFER_COMPLEX;
83
84typedef struct _ACPI_EVAL_OUTPUT_BUFFER {
85 ULONG Signature;
86 ULONG Length;
87 ULONG Count;
88 ACPI_METHOD_ARGUMENT Argument[ANYSIZE_ARRAY];
89} ACPI_EVAL_OUTPUT_BUFFER;
90typedef ACPI_EVAL_OUTPUT_BUFFER UNALIGNED *PACPI_EVAL_OUTPUT_BUFFER;
91
92typedef struct _ACPI_MANIPULATE_GLOBAL_LOCK_BUFFER {
93 ULONG Signature;
94 PVOID LockObject;
95} ACPI_MANIPULATE_GLOBAL_LOCK_BUFFER, *PACPI_MANIPULATE_GLOBAL_LOCK_BUFFER;
96
97typedef struct _ACPI_EVAL_INPUT_BUFFER_EX {
98 ULONG Signature;
99 CHAR MethodName[256];
100} ACPI_EVAL_INPUT_BUFFER_EX, *PACPI_EVAL_INPUT_BUFFER_EX;
101
102typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX {
103 ULONG Signature;
104 CHAR MethodName[256];
105 ULONG64 IntegerArgument;
106} ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX, *PACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX;
107
108typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX {
109 ULONG Signature;
110 CHAR MethodName[256];
111 ULONG StringLength;
112 UCHAR String[ANYSIZE_ARRAY];
113} ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX, *PACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX;
114
115typedef struct _ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX {
116 ULONG Signature;
117 CHAR MethodName[256];
118 ULONG Size;
119 ULONG ArgumentCount;
120 ACPI_METHOD_ARGUMENT Argument[ANYSIZE_ARRAY];
121} ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX, *PACPI_EVAL_INPUT_BUFFER_COMPLEX_EX;
122
123typedef struct _ACPI_ENUM_CHILDREN_INPUT_BUFFER {
124 ULONG Signature;
125 ULONG Flags;
126 ULONG NameLength;
127 CHAR Name[ANYSIZE_ARRAY];
128} ACPI_ENUM_CHILDREN_INPUT_BUFFER, *PACPI_ENUM_CHILDREN_INPUT_BUFFER;
129
130typedef struct _ACPI_ENUM_CHILD {
131 ULONG Flags;
132 ULONG NameLength;
133 CHAR Name[ANYSIZE_ARRAY];
134} ACPI_ENUM_CHILD;
135typedef ACPI_ENUM_CHILD UNALIGNED *PACPI_ENUM_CHILD;
136
137typedef struct _ACPI_ENUM_CHILDREN_OUTPUT_BUFFER {
138 ULONG Signature;
139 ULONG NumberOfChildren;
140 ACPI_ENUM_CHILD Children[ANYSIZE_ARRAY];
141} ACPI_ENUM_CHILDREN_OUTPUT_BUFFER;
142typedef ACPI_ENUM_CHILDREN_OUTPUT_BUFFER UNALIGNED *PACPI_ENUM_CHILDREN_OUTPUT_BUFFER;
143
144#define ACPI_METHOD_ARGUMENT_LENGTH( DataLength ) \
145 (FIELD_OFFSET(ACPI_METHOD_ARGUMENT, Data) + max(sizeof(ULONG), DataLength))
146
147#define ACPI_METHOD_ARGUMENT_LENGTH_FROM_ARGUMENT( Argument ) \
148 (ACPI_METHOD_ARGUMENT_LENGTH(((PACPI_METHOD_ARGUMENT)Argument)->DataLength))
149
150#define ACPI_METHOD_NEXT_ARGUMENT( Argument ) \
151 (PACPI_METHOD_ARGUMENT) ( (PUCHAR) Argument + \
152 ACPI_METHOD_ARGUMENT_LENGTH_FROM_ARGUMENT( Argument ) )
153
154
155#define ACPI_METHOD_SET_ARGUMENT_INTEGER( MethodArgument, IntData ) \
156 { MethodArgument->Type = ACPI_METHOD_ARGUMENT_INTEGER; \
157 MethodArgument->DataLength = sizeof(ULONG); \
158 MethodArgument->Argument = IntData; }
159
160#define ACPI_METHOD_SET_ARGUMENT_STRING( Argument, StrData ) \
161 { Argument->Type = ACPI_METHOD_ARGUMENT_STRING; \
162 Argument->DataLength = strlen((PCHAR)StrData) + sizeof(UCHAR); \
163 RtlCopyMemory(&Argument->Data[0],(PUCHAR)StrData,Argument->DataLength); }
164
165#define ACPI_METHOD_SET_ARGUMENT_BUFFER( Argument, BuffData, BuffLength ) \
166 { Argument->Type = ACPI_METHOD_ARGUMENT_BUFFER; \
167 Argument->DataLength = BuffLength; \
168 RtlCopyMemory(&Argument->Data[0],(PUCHAR)BuffData,Argument->DataLength); }
169
170#define ACPI_ENUM_CHILD_LENGTH_FROM_CHILD( Child ) \
171 ( (2* sizeof (ULONG)) + Child->NameLength )
172
173#define ACPI_ENUM_CHILD_NEXT( Child ) \
174 (PACPI_ENUM_CHILD) ( (PUCHAR) Child + \
175 ACPI_ENUM_CHILD_LENGTH_FROM_CHILD( Child ) )
176
177#define IOCTL_ACPI_ASYNC_EVAL_METHOD CTL_CODE(FILE_DEVICE_ACPI, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
178#define IOCTL_ACPI_EVAL_METHOD CTL_CODE(FILE_DEVICE_ACPI, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
179#define IOCTL_ACPI_ACQUIRE_GLOBAL_LOCK CTL_CODE(FILE_DEVICE_ACPI, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
180#define IOCTL_ACPI_RELEASE_GLOBAL_LOCK CTL_CODE(FILE_DEVICE_ACPI, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
181
182#if (NTDDI_VERSION >= NTDDI_VISTA)
183#define IOCTL_ACPI_EVAL_METHOD_EX CTL_CODE(FILE_DEVICE_ACPI, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
184#define IOCTL_ACPI_ASYNC_EVAL_METHOD_EX CTL_CODE(FILE_DEVICE_ACPI, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
185#define IOCTL_ACPI_ENUM_CHILDREN CTL_CODE(FILE_DEVICE_ACPI, 8, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
186#endif
187
188#ifdef __cplusplus
189}
190#endif
Note: See TracBrowser for help on using the repository browser.