From d8a6ad0f818ae10be7c78121af40d560f808d325 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 13 Mar 2010 20:24:46 +0000 Subject: [PATCH] [DDK] - Add acpiioct.h and wmilib.h - Dedicated to sir_richard ;) svn path=/branches/header-work/; revision=46183 --- include/ddk/acpiioct.h | 190 +++++++++++++++++++++++++++++++++++++++++ include/ddk/wmilib.h | 126 +++++++++++++++++++++++++++ 2 files changed, 316 insertions(+) create mode 100644 include/ddk/acpiioct.h create mode 100644 include/ddk/wmilib.h diff --git a/include/ddk/acpiioct.h b/include/ddk/acpiioct.h new file mode 100644 index 00000000000..a51cc3dd4b4 --- /dev/null +++ b/include/ddk/acpiioct.h @@ -0,0 +1,190 @@ +#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; + 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; + 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; + union { + UCHAR MethodName[4]; + ULONG MethodNameAsUlong; + } DUMMYUNIONNAME; + ULONG StringLength; + 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; + union { + ULONG Argument; + 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; + 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; + 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; + CHAR MethodName[256]; +} ACPI_EVAL_INPUT_BUFFER_EX, *PACPI_EVAL_INPUT_BUFFER_EX; + +typedef struct _ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_EX { + ULONG Signature; + 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; + 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; + 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; + CHAR Name[ANYSIZE_ARRAY]; +} ACPI_ENUM_CHILDREN_INPUT_BUFFER, *PACPI_ENUM_CHILDREN_INPUT_BUFFER; + +typedef struct _ACPI_ENUM_CHILD { + ULONG Flags; + ULONG NameLength; + 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((PUCHAR)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 diff --git a/include/ddk/wmilib.h b/include/ddk/wmilib.h new file mode 100644 index 00000000000..18d63aded76 --- /dev/null +++ b/include/ddk/wmilib.h @@ -0,0 +1,126 @@ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum _WMIENABLEDISABLECONTROL { + WmiEventControl, + WmiDataBlockControl +} WMIENABLEDISABLECONTROL, *PWMIENABLEDISABLECONTROL; + +typedef enum _SYSCTL_IRP_DISPOSITION { + IrpProcessed, + IrpNotCompleted, + IrpNotWmi, + IrpForward +} SYSCTL_IRP_DISPOSITION, *PSYSCTL_IRP_DISPOSITION; + +typedef struct _WMIGUIDREGINFO { + LPCGUID Guid; + ULONG InstanceCount; + ULONG Flags; +} WMIGUIDREGINFO, *PWMIGUIDREGINFO; + +typedef struct _WMILIB_CONTEXT { + ULONG GuidCount; + PWMIGUIDREGINFO GuidList; + PWMI_QUERY_REGINFO QueryWmiRegInfo; + PWMI_QUERY_DATABLOCK QueryWmiDataBlock; + PWMI_SET_DATABLOCK SetWmiDataBlock; + PWMI_SET_DATAITEM SetWmiDataItem; + PWMI_EXECUTE_METHOD ExecuteWmiMethod; + PWMI_FUNCTION_CONTROL WmiFunctionControl; +} WMILIB_CONTEXT, *PWMILIB_CONTEXT; + +typedef NTSTATUS +(NTAPI *PWMI_QUERY_REGINFO) ( + IN OUT PDEVICE_OBJECT DeviceObject, + IN OUT PULONG RegFlags, + IN OUT PUNICODE_STRING InstanceName, + OUT PUNICODE_STRING *RegistryPath OPTIONAL, + IN OUT PUNICODE_STRING MofResourceName, + OUT PDEVICE_OBJECT *Pdo OPTIONAL); + +typedef NTSTATUS +(NTAPI *PWMI_QUERY_DATABLOCK) ( + IN OUT PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp, + IN ULONG GuidIndex, + IN ULONG InstanceIndex, + IN ULONG InstanceCount, + OUT PULONG InstanceLengthArray OPTIONAL, + IN ULONG BufferAvail, + OUT PUCHAR Buffer OPTIONAL); + +typedef NTSTATUS +(NTAPI *PWMI_SET_DATABLOCK) ( + IN OUT PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp, + IN ULONG GuidIndex, + IN ULONG InstanceIndex, + IN ULONG BufferSize, + IN PUCHAR Buffer); + +typedef NTSTATUS +(NTAPI *PWMI_SET_DATAITEM) ( + IN OUT PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp, + IN ULONG GuidIndex, + IN ULONG InstanceIndex, + IN ULONG DataItemId, + IN ULONG BufferSize, + IN PUCHAR Buffer); + +typedef NTSTATUS +(NTAPI *PWMI_EXECUTE_METHOD) ( + IN OUT PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp, + IN ULONG GuidIndex, + IN ULONG InstanceIndex, + IN ULONG MethodId, + IN ULONG InBufferSize, + IN ULONG OutBufferSize, + IN OUT PUCHAR Buffer); + +typedef NTSTATUS +(NTAPI *PWMI_FUNCTION_CONTROL) ( + IN OUT PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp, + IN ULONG GuidIndex, + IN WMIENABLEDISABLECONTROL Function, + IN BOOLEAN Enable); + +#if (NTDDI_VERSION >= NTDDI_WIN2K) + +NTSTATUS +NTAPI +WmiCompleteRequest( + IN PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp, + IN NTSTATUS Status, + IN ULONG BufferUsed, + IN CCHAR PriorityBoost); + +NTSTATUS +NTAPI +WmiSystemControl( + IN PWMILIB_CONTEXT WmiLibInfo, + IN PDEVICE_OBJECT DeviceObject, + IN OUT PIRP Irp, + OUT PSYSCTL_IRP_DISPOSITION IrpDisposition); + +NTSTATUS +NTAPI +WmiFireEvent( + IN PDEVICE_OBJECT DeviceObject, + IN LPCGUID Guid, + IN ULONG InstanceIndex, + IN ULONG EventDataSize, + IN PVOID EventData); + +#endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */ + +#ifdef __cplusplus +} +#endif