mirror of
https://github.com/reactos/reactos.git
synced 2024-08-28 14:18:41 +00:00
191 lines
7.5 KiB
C
191 lines
7.5 KiB
C
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define ACPI_EVAL_INPUT_BUFFER_SIGNATURE 'BieA'
|
|
#define ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATURE 'IieA'
|
|
#define ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_SIGNATURE 'SieA'
|
|
#define ACPI_EVAL_INPUT_BUFFER_COMPLEX_SIGNATURE 'CieA'
|
|
#define ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE 'BoeA'
|
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
|
#define ACPI_EVAL_INPUT_BUFFER_SIGNATURE_EX 'AieA'
|
|
#define ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATURE_EX 'DieA'
|
|
#define ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_SIGNATURE_EX 'EieA'
|
|
#define ACPI_EVAL_INPUT_BUFFER_COMPLEX_SIGNATURE_EX 'FieA'
|
|
#define ACPI_ENUM_CHILDREN_OUTPUT_BUFFER_SIGNATURE 'GieA'
|
|
#define ACPI_ENUM_CHILDREN_INPUT_BUFFER_SIGNATURE 'HieA'
|
|
#endif
|
|
|
|
#define ACPI_METHOD_ARGUMENT_INTEGER 0x0
|
|
#define ACPI_METHOD_ARGUMENT_STRING 0x1
|
|
#define ACPI_METHOD_ARGUMENT_BUFFER 0x2
|
|
#define ACPI_METHOD_ARGUMENT_PACKAGE 0x3
|
|
#define ACPI_METHOD_ARGUMENT_PACKAGE_EX 0x4
|
|
|
|
#define ACPI_ACQUIRE_GLOBAL_LOCK_SIGNATURE 'LgaA'
|
|
#define ACPI_RELEASE_GLOBAL_LOCK_SIGNATURE 'LgrA'
|
|
|
|
#define ACPI_OBJECT_HAS_CHILDREN 0x1
|
|
|
|
#define ENUM_CHILDREN_IMMEDIATE_ONLY 0x1
|
|
#define ENUM_CHILDREN_MULTILEVEL 0x2
|
|
#define ENUM_CHILDREN_NAME_IS_FILTER 0x4
|
|
|
|
typedef struct _ACPI_EVAL_INPUT_BUFFER {
|
|
ULONG Signature;
|
|
_ANONYMOUS_UNION union {
|
|
UCHAR MethodName[4];
|
|
ULONG MethodNameAsUlong;
|
|
} DUMMYUNIONNAME;
|
|
} ACPI_EVAL_INPUT_BUFFER, *PACPI_EVAL_INPUT_BUFFER;
|
|
|
|
typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER {
|
|
ULONG Signature;
|
|
_ANONYMOUS_UNION union {
|
|
UCHAR MethodName[4];
|
|
ULONG MethodNameAsUlong;
|
|
} DUMMYUNIONNAME;
|
|
ULONG IntegerArgument;
|
|
} ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER, *PACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER;
|
|
|
|
typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING {
|
|
ULONG Signature;
|
|
_ANONYMOUS_UNION union {
|
|
UCHAR MethodName[4];
|
|
ULONG MethodNameAsUlong;
|
|
} DUMMYUNIONNAME;
|
|
ULONG StringLength;
|
|
_Field_size_bytes_(StringLength) _Null_terminated_ UCHAR String[ANYSIZE_ARRAY];
|
|
} ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING, *PACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING;
|
|
|
|
typedef struct _ACPI_METHOD_ARGUMENT {
|
|
USHORT Type;
|
|
USHORT DataLength;
|
|
_ANONYMOUS_UNION union {
|
|
ULONG Argument;
|
|
_Field_size_bytes_(DataLength) UCHAR Data[ANYSIZE_ARRAY];
|
|
} DUMMYUNIONNAME;
|
|
} ACPI_METHOD_ARGUMENT;
|
|
typedef ACPI_METHOD_ARGUMENT UNALIGNED *PACPI_METHOD_ARGUMENT;
|
|
|
|
typedef struct _ACPI_EVAL_INPUT_BUFFER_COMPLEX {
|
|
ULONG Signature;
|
|
_ANONYMOUS_UNION union {
|
|
UCHAR MethodName[4];
|
|
ULONG MethodNameAsUlong;
|
|
} DUMMYUNIONNAME;
|
|
ULONG Size;
|
|
ULONG ArgumentCount;
|
|
ACPI_METHOD_ARGUMENT Argument[ANYSIZE_ARRAY];
|
|
} ACPI_EVAL_INPUT_BUFFER_COMPLEX, *PACPI_EVAL_INPUT_BUFFER_COMPLEX;
|
|
|
|
typedef struct _ACPI_EVAL_OUTPUT_BUFFER {
|
|
ULONG Signature;
|
|
ULONG Length;
|
|
ULONG Count;
|
|
_Field_size_bytes_(Length) ACPI_METHOD_ARGUMENT Argument[ANYSIZE_ARRAY];
|
|
} ACPI_EVAL_OUTPUT_BUFFER;
|
|
typedef ACPI_EVAL_OUTPUT_BUFFER UNALIGNED *PACPI_EVAL_OUTPUT_BUFFER;
|
|
|
|
typedef struct _ACPI_MANIPULATE_GLOBAL_LOCK_BUFFER {
|
|
ULONG Signature;
|
|
PVOID LockObject;
|
|
} ACPI_MANIPULATE_GLOBAL_LOCK_BUFFER, *PACPI_MANIPULATE_GLOBAL_LOCK_BUFFER;
|
|
|
|
typedef struct _ACPI_EVAL_INPUT_BUFFER_EX {
|
|
ULONG Signature;
|
|
_Null_terminated_ CHAR MethodName[256];
|
|
} ACPI_EVAL_INPUT_BUFFER_EX, *PACPI_EVAL_INPUT_BUFFER_EX;
|
|
|
|
typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX {
|
|
ULONG Signature;
|
|
_Null_terminated_ CHAR MethodName[256];
|
|
ULONG64 IntegerArgument;
|
|
} ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX, *PACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX;
|
|
|
|
typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX {
|
|
ULONG Signature;
|
|
CHAR MethodName[256];
|
|
ULONG StringLength;
|
|
_Field_size_(StringLength) _Null_terminated_ UCHAR String[ANYSIZE_ARRAY];
|
|
} ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX, *PACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_EX;
|
|
|
|
typedef struct _ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX {
|
|
ULONG Signature;
|
|
CHAR MethodName[256];
|
|
ULONG Size;
|
|
ULONG ArgumentCount;
|
|
_Field_size_(ArgumentCount) ACPI_METHOD_ARGUMENT Argument[ANYSIZE_ARRAY];
|
|
} ACPI_EVAL_INPUT_BUFFER_COMPLEX_EX, *PACPI_EVAL_INPUT_BUFFER_COMPLEX_EX;
|
|
|
|
typedef struct _ACPI_ENUM_CHILDREN_INPUT_BUFFER {
|
|
ULONG Signature;
|
|
ULONG Flags;
|
|
ULONG NameLength;
|
|
_Field_size_bytes_(NameLength) _Null_terminated_ CHAR Name[ANYSIZE_ARRAY];
|
|
} ACPI_ENUM_CHILDREN_INPUT_BUFFER, *PACPI_ENUM_CHILDREN_INPUT_BUFFER;
|
|
|
|
typedef struct _ACPI_ENUM_CHILD {
|
|
ULONG Flags;
|
|
ULONG NameLength;
|
|
_Field_size_bytes_(NameLength) _Null_terminated_ CHAR Name[ANYSIZE_ARRAY];
|
|
} ACPI_ENUM_CHILD;
|
|
typedef ACPI_ENUM_CHILD UNALIGNED *PACPI_ENUM_CHILD;
|
|
|
|
typedef struct _ACPI_ENUM_CHILDREN_OUTPUT_BUFFER {
|
|
ULONG Signature;
|
|
ULONG NumberOfChildren;
|
|
ACPI_ENUM_CHILD Children[ANYSIZE_ARRAY];
|
|
} ACPI_ENUM_CHILDREN_OUTPUT_BUFFER;
|
|
typedef ACPI_ENUM_CHILDREN_OUTPUT_BUFFER UNALIGNED *PACPI_ENUM_CHILDREN_OUTPUT_BUFFER;
|
|
|
|
#define ACPI_METHOD_ARGUMENT_LENGTH( DataLength ) \
|
|
(FIELD_OFFSET(ACPI_METHOD_ARGUMENT, Data) + max(sizeof(ULONG), DataLength))
|
|
|
|
#define ACPI_METHOD_ARGUMENT_LENGTH_FROM_ARGUMENT( Argument ) \
|
|
(ACPI_METHOD_ARGUMENT_LENGTH(((PACPI_METHOD_ARGUMENT)Argument)->DataLength))
|
|
|
|
#define ACPI_METHOD_NEXT_ARGUMENT( Argument ) \
|
|
(PACPI_METHOD_ARGUMENT) ( (PUCHAR) Argument + \
|
|
ACPI_METHOD_ARGUMENT_LENGTH_FROM_ARGUMENT( Argument ) )
|
|
|
|
|
|
#define ACPI_METHOD_SET_ARGUMENT_INTEGER( MethodArgument, IntData ) \
|
|
{ MethodArgument->Type = ACPI_METHOD_ARGUMENT_INTEGER; \
|
|
MethodArgument->DataLength = sizeof(ULONG); \
|
|
MethodArgument->Argument = IntData; }
|
|
|
|
#define ACPI_METHOD_SET_ARGUMENT_STRING( Argument, StrData ) \
|
|
{ Argument->Type = ACPI_METHOD_ARGUMENT_STRING; \
|
|
Argument->DataLength = strlen((PCHAR)StrData) + sizeof(UCHAR); \
|
|
RtlCopyMemory(&Argument->Data[0],(PUCHAR)StrData,Argument->DataLength); }
|
|
|
|
#define ACPI_METHOD_SET_ARGUMENT_BUFFER( Argument, BuffData, BuffLength ) \
|
|
{ Argument->Type = ACPI_METHOD_ARGUMENT_BUFFER; \
|
|
Argument->DataLength = BuffLength; \
|
|
RtlCopyMemory(&Argument->Data[0],(PUCHAR)BuffData,Argument->DataLength); }
|
|
|
|
#define ACPI_ENUM_CHILD_LENGTH_FROM_CHILD( Child ) \
|
|
( (2* sizeof (ULONG)) + Child->NameLength )
|
|
|
|
#define ACPI_ENUM_CHILD_NEXT( Child ) \
|
|
(PACPI_ENUM_CHILD) ( (PUCHAR) Child + \
|
|
ACPI_ENUM_CHILD_LENGTH_FROM_CHILD( Child ) )
|
|
|
|
#define IOCTL_ACPI_ASYNC_EVAL_METHOD CTL_CODE(FILE_DEVICE_ACPI, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
#define IOCTL_ACPI_EVAL_METHOD CTL_CODE(FILE_DEVICE_ACPI, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
#define IOCTL_ACPI_ACQUIRE_GLOBAL_LOCK CTL_CODE(FILE_DEVICE_ACPI, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
#define IOCTL_ACPI_RELEASE_GLOBAL_LOCK CTL_CODE(FILE_DEVICE_ACPI, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_VISTA)
|
|
#define IOCTL_ACPI_EVAL_METHOD_EX CTL_CODE(FILE_DEVICE_ACPI, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
#define IOCTL_ACPI_ASYNC_EVAL_METHOD_EX CTL_CODE(FILE_DEVICE_ACPI, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
#define IOCTL_ACPI_ENUM_CHILDREN CTL_CODE(FILE_DEVICE_ACPI, 8, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|