- batclass.h : Introduce pragma once, apply a consistent formatting, apply appropriate conditionals, add some missing definitions and group related ones.
- winnt.h : Update JOBOBJECTINFOCLASS, BATTERY_REPORTING_SCALE and POWER_INFORMATION_LEVEL, introduce _ANONYMOUS_UNION in SYSTEM_LOGICAL_PROCESSOR_INFORMATION, and apply a consistent formatting for the rest.

svn path=/branches/header-work/; revision=47239
This commit is contained in:
Amine Khaldi 2010-05-16 12:23:45 +00:00
parent 077ed6cb51
commit 615d59ca2e
2 changed files with 417 additions and 304 deletions

View file

@ -20,49 +20,38 @@
* *
*/ */
#ifndef __BATCLASS_H #pragma once
#define __BATCLASS_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#if defined(_BATTERYCLASS_)
#define BCLASSAPI
#else
#define BCLASSAPI DECLSPEC_IMPORT
#endif
/* Battery device GUIDs */ /* Battery device GUIDs */
DEFINE_GUID(GUID_DEVICE_BATTERY, DEFINE_GUID(GUID_DEVICE_BATTERY,
0x72631e54L, 0x78A4, 0x11d0, 0xbc, 0xf7, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a); 0x72631e54L, 0x78A4, 0x11d0, 0xbc, 0xf7, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a);
#if (NTDDI_VERSION >= NTDDI_WINXP)
DEFINE_GUID(BATTERY_STATUS_WMI_GUID, DEFINE_GUID(BATTERY_STATUS_WMI_GUID,
0xfc4670d1, 0xebbf, 0x416e, 0x87, 0xce, 0x37, 0x4a, 0x4e, 0xbc, 0x11, 0x1a); 0xfc4670d1, 0xebbf, 0x416e, 0x87, 0xce, 0x37, 0x4a, 0x4e, 0xbc, 0x11, 0x1a);
DEFINE_GUID(BATTERY_RUNTIME_WMI_GUID, DEFINE_GUID(BATTERY_RUNTIME_WMI_GUID,
0x535a3767, 0x1ac2, 0x49bc, 0xa0, 0x77, 0x3f, 0x7a, 0x02, 0xe4, 0x0a, 0xec); 0x535a3767, 0x1ac2, 0x49bc, 0xa0, 0x77, 0x3f, 0x7a, 0x02, 0xe4, 0x0a, 0xec);
DEFINE_GUID(BATTERY_TEMPERATURE_WMI_GUID, DEFINE_GUID(BATTERY_TEMPERATURE_WMI_GUID,
0x1a52a14d, 0xadce, 0x4a44, 0x9a, 0x3e, 0xc8, 0xd8, 0xf1, 0x5f, 0xf2, 0xc2); 0x1a52a14d, 0xadce, 0x4a44, 0x9a, 0x3e, 0xc8, 0xd8, 0xf1, 0x5f, 0xf2, 0xc2);
DEFINE_GUID(BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID, DEFINE_GUID(BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID,
0x40b40565, 0x96f7, 0x4435, 0x86, 0x94, 0x97, 0xe0, 0xe4, 0x39, 0x59, 0x05); 0x40b40565, 0x96f7, 0x4435, 0x86, 0x94, 0x97, 0xe0, 0xe4, 0x39, 0x59, 0x05);
DEFINE_GUID(BATTERY_CYCLE_COUNT_WMI_GUID, DEFINE_GUID(BATTERY_CYCLE_COUNT_WMI_GUID,
0xef98db24, 0x0014, 0x4c25, 0xa5, 0x0b, 0xc7, 0x24, 0xae, 0x5c, 0xd3, 0x71); 0xef98db24, 0x0014, 0x4c25, 0xa5, 0x0b, 0xc7, 0x24, 0xae, 0x5c, 0xd3, 0x71);
DEFINE_GUID(BATTERY_STATIC_DATA_WMI_GUID, DEFINE_GUID(BATTERY_STATIC_DATA_WMI_GUID,
0x05e1e463, 0xe4e2, 0x4ea9, 0x80, 0xcb, 0x9b, 0xd4, 0xb3, 0xca, 0x06, 0x55); 0x05e1e463, 0xe4e2, 0x4ea9, 0x80, 0xcb, 0x9b, 0xd4, 0xb3, 0xca, 0x06, 0x55);
DEFINE_GUID(BATTERY_STATUS_CHANGE_WMI_GUID, DEFINE_GUID(BATTERY_STATUS_CHANGE_WMI_GUID,
0xcddfa0c3, 0x7c5b, 0x4e43, 0xa0, 0x34, 0x05, 0x9f, 0xa5, 0xb8, 0x43, 0x64); 0xcddfa0c3, 0x7c5b, 0x4e43, 0xa0, 0x34, 0x05, 0x9f, 0xa5, 0xb8, 0x43, 0x64);
DEFINE_GUID(BATTERY_TAG_CHANGE_WMI_GUID, DEFINE_GUID(BATTERY_TAG_CHANGE_WMI_GUID,
0x5e1f6e19, 0x8786, 0x4d23, 0x94, 0xfc, 0x9e, 0x74, 0x6b, 0xd5, 0xd8, 0x88); 0x5e1f6e19, 0x8786, 0x4d23, 0x94, 0xfc, 0x9e, 0x74, 0x6b, 0xd5, 0xd8, 0x88);
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
#ifndef _BATCLASS_
#define _BATCLASS_
/* BATTERY_INFORMATION.Capabilities constants */ /* BATTERY_INFORMATION.Capabilities constants */
#define BATTERY_SET_CHARGE_SUPPORTED 0x00000001 #define BATTERY_SET_CHARGE_SUPPORTED 0x00000001
@ -72,30 +61,13 @@ DEFINE_GUID(BATTERY_TAG_CHANGE_WMI_GUID,
#define BATTERY_CAPACITY_RELATIVE 0x40000000 #define BATTERY_CAPACITY_RELATIVE 0x40000000
#define BATTERY_SYSTEM_BATTERY 0x80000000 #define BATTERY_SYSTEM_BATTERY 0x80000000
typedef struct _BATTERY_INFORMATION { /* BATTERY_INFORMATION.Capacity constants */
ULONG Capabilities; #define BATTERY_UNKNOWN_CAPACITY 0xFFFFFFFF
UCHAR Technology;
UCHAR Reserved[3];
UCHAR Chemistry[4];
ULONG DesignedCapacity;
ULONG FullChargedCapacity;
ULONG DefaultAlert1;
ULONG DefaultAlert2;
ULONG CriticalBias;
ULONG CycleCount;
} BATTERY_INFORMATION, *PBATTERY_INFORMATION;
typedef struct _BATTERY_MANUFACTURE_DATE { /* BatteryEstimatedTime constant */
UCHAR Day; #define BATTERY_UNKNOWN_TIME 0x80000000
UCHAR Month;
USHORT Year;
} BATTERY_MANUFACTURE_DATE, *PBATTERY_MANUFACTURE_DATE;
typedef struct _BATTERY_NOTIFY { #define MAX_BATTERY_STRING_SIZE 128
ULONG PowerState;
ULONG LowCapacity;
ULONG HighCapacity;
} BATTERY_NOTIFY, *PBATTERY_NOTIFY;
/* BATTERY_STATUS.PowerState flags */ /* BATTERY_STATUS.PowerState flags */
#define BATTERY_POWER_ON_LINE 0x00000001 #define BATTERY_POWER_ON_LINE 0x00000001
@ -109,15 +81,17 @@ typedef struct _BATTERY_NOTIFY {
/* BATTERY_STATUS.Rate constant */ /* BATTERY_STATUS.Rate constant */
#define BATTERY_UNKNOWN_RATE 0x80000000 #define BATTERY_UNKNOWN_RATE 0x80000000
typedef struct _BATTERY_STATUS { #define IOCTL_BATTERY_QUERY_TAG \
ULONG PowerState; CTL_CODE(FILE_DEVICE_BATTERY, 0x10, METHOD_BUFFERED, FILE_READ_ACCESS)
ULONG Capacity; #define IOCTL_BATTERY_QUERY_INFORMATION \
ULONG Voltage; CTL_CODE(FILE_DEVICE_BATTERY, 0x11, METHOD_BUFFERED, FILE_READ_ACCESS)
LONG Rate; #define IOCTL_BATTERY_SET_INFORMATION \
} BATTERY_STATUS, *PBATTERY_STATUS; CTL_CODE(FILE_DEVICE_BATTERY, 0x12, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_BATTERY_QUERY_STATUS \
CTL_CODE(FILE_DEVICE_BATTERY, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS)
/* BATTERY_INFORMATION.Capacity constants */ /* NTSTATUS possibly returned by BCLASS_QUERY_STATUS */
#define BATTERY_UNKNOWN_CAPACITY 0xFFFFFFFF #define BATTERY_TAG_INVALID 0
typedef enum _BATTERY_QUERY_INFORMATION_LEVEL { typedef enum _BATTERY_QUERY_INFORMATION_LEVEL {
BatteryInformation = 0, BatteryInformation = 0,
@ -131,137 +105,216 @@ typedef enum _BATTERY_QUERY_INFORMATION_LEVEL {
BatterySerialNumber BatterySerialNumber
} BATTERY_QUERY_INFORMATION_LEVEL; } BATTERY_QUERY_INFORMATION_LEVEL;
/* BatteryEstimatedTime constant */
#define BATTERY_UNKNOWN_TIME 0x80000000
/* NTSTATUS possibly returned by BCLASS_QUERY_STATUS */
#define BATTERY_TAG_INVALID 0
typedef struct _BATTERY_QUERY_INFORMATION { typedef struct _BATTERY_QUERY_INFORMATION {
ULONG BatteryTag; ULONG BatteryTag;
BATTERY_QUERY_INFORMATION_LEVEL InformationLevel; BATTERY_QUERY_INFORMATION_LEVEL InformationLevel;
LONG AtRate; LONG AtRate;
} BATTERY_QUERY_INFORMATION, *PBATTERY_QUERY_INFORMATION; } BATTERY_QUERY_INFORMATION, *PBATTERY_QUERY_INFORMATION;
typedef struct _BATTERY_INFORMATION {
ULONG Capabilities;
UCHAR Technology;
UCHAR Reserved[3];
UCHAR Chemistry[4];
ULONG DesignedCapacity;
ULONG FullChargedCapacity;
ULONG DefaultAlert1;
ULONG DefaultAlert2;
ULONG CriticalBias;
ULONG CycleCount;
} BATTERY_INFORMATION, *PBATTERY_INFORMATION;
typedef struct _BATTERY_MANUFACTURE_DATE {
UCHAR Day;
UCHAR Month;
USHORT Year;
} BATTERY_MANUFACTURE_DATE, *PBATTERY_MANUFACTURE_DATE;
typedef enum _BATTERY_SET_INFORMATION_LEVEL { typedef enum _BATTERY_SET_INFORMATION_LEVEL {
BatteryCriticalBias = 0, BatteryCriticalBias = 0,
BatteryCharge, BatteryCharge,
BatteryDischarge BatteryDischarge
} BATTERY_SET_INFORMATION_LEVEL; } BATTERY_SET_INFORMATION_LEVEL;
#define MAX_BATTERY_STRING_SIZE 128
typedef struct _BATTERY_SET_INFORMATION { typedef struct _BATTERY_SET_INFORMATION {
ULONG BatteryTag; ULONG BatteryTag;
BATTERY_SET_INFORMATION_LEVEL InformationLevel; BATTERY_SET_INFORMATION_LEVEL InformationLevel;
UCHAR Buffer[1]; UCHAR Buffer[1];
} BATTERY_SET_INFORMATION, *PBATTERY_SET_INFORMATION; } BATTERY_SET_INFORMATION, *PBATTERY_SET_INFORMATION;
typedef struct _BATTERY_WAIT_STATUS { typedef struct _BATTERY_WAIT_STATUS {
ULONG BatteryTag; ULONG BatteryTag;
ULONG Timeout; ULONG Timeout;
ULONG PowerState; ULONG PowerState;
ULONG LowCapacity; ULONG LowCapacity;
ULONG HighCapacity; ULONG HighCapacity;
} BATTERY_WAIT_STATUS, *PBATTERY_WAIT_STATUS; } BATTERY_WAIT_STATUS, *PBATTERY_WAIT_STATUS;
typedef struct _BATTERY_STATUS {
ULONG PowerState;
ULONG Capacity;
ULONG Voltage;
LONG Rate;
} BATTERY_STATUS, *PBATTERY_STATUS;
#define IOCTL_BATTERY_QUERY_TAG \ #ifndef _WINDOWS_H
CTL_CODE(FILE_DEVICE_BATTERY, 0x10, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_BATTERY_QUERY_INFORMATION \
CTL_CODE(FILE_DEVICE_BATTERY, 0x11, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_BATTERY_SET_INFORMATION \
CTL_CODE(FILE_DEVICE_BATTERY, 0x12, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_BATTERY_QUERY_STATUS \
CTL_CODE(FILE_DEVICE_BATTERY, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS)
typedef NTSTATUS
(NTAPI *BCLASS_DISABLE_STATUS_NOTIFY)(
IN PVOID Context);
typedef NTSTATUS
(NTAPI *BCLASS_QUERY_INFORMATION)(
IN PVOID Context,
IN ULONG BatteryTag,
IN BATTERY_QUERY_INFORMATION_LEVEL Level,
IN LONG AtRate OPTIONAL,
OUT PVOID Buffer,
IN ULONG BufferLength,
OUT PULONG ReturnedLength);
typedef NTSTATUS
(NTAPI *BCLASS_QUERY_STATUS)(
IN PVOID Context,
IN ULONG BatteryTag,
OUT PBATTERY_STATUS BatteryStatus);
typedef NTSTATUS
(NTAPI *BCLASS_QUERY_TAG)(
IN PVOID Context,
OUT PULONG BatteryTag);
typedef NTSTATUS
(NTAPI *BCLASS_SET_INFORMATION)(
IN PVOID Context,
IN ULONG BatteryTag,
IN BATTERY_SET_INFORMATION_LEVEL Level,
IN PVOID Buffer OPTIONAL);
typedef NTSTATUS
(NTAPI *BCLASS_SET_STATUS_NOTIFY)(
IN PVOID Context,
IN ULONG BatteryTag,
IN PBATTERY_NOTIFY BatteryNotify);
typedef struct _BATTERY_MINIPORT_INFO {
USHORT MajorVersion;
USHORT MinorVersion;
PVOID Context;
BCLASS_QUERY_TAG QueryTag;
BCLASS_QUERY_INFORMATION QueryInformation;
BCLASS_SET_INFORMATION SetInformation;
BCLASS_QUERY_STATUS QueryStatus;
BCLASS_SET_STATUS_NOTIFY SetStatusNotify;
BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify;
PDEVICE_OBJECT Pdo;
PUNICODE_STRING DeviceName;
} BATTERY_MINIPORT_INFO, *PBATTERY_MINIPORT_INFO;
/* BATTERY_MINIPORT_INFO.XxxVersion */ /* BATTERY_MINIPORT_INFO.XxxVersion */
#define BATTERY_CLASS_MAJOR_VERSION 0x0001 #define BATTERY_CLASS_MAJOR_VERSION 0x0001
#define BATTERY_CLASS_MINOR_VERSION 0x0000 #define BATTERY_CLASS_MINOR_VERSION 0x0000
typedef NTSTATUS
(NTAPI BCLASS_QUERY_TAG_CALLBACK)(
IN PVOID Context,
OUT PULONG BatteryTag);
typedef BCLASS_QUERY_TAG_CALLBACK *PBCLASS_QUERY_TAG_CALLBACK;
typedef NTSTATUS
(NTAPI BCLASS_QUERY_INFORMATION_CALLBACK)(
IN PVOID Context,
IN ULONG BatteryTag,
IN BATTERY_QUERY_INFORMATION_LEVEL Level,
IN LONG AtRate,
OUT PVOID Buffer,
IN ULONG BufferLength,
OUT PULONG ReturnedLength);
typedef BCLASS_QUERY_INFORMATION_CALLBACK *PBCLASS_QUERY_INFORMATION_CALLBACK;
typedef NTSTATUS
(NTAPI BCLASS_QUERY_STATUS_CALLBACK)(
IN PVOID Context,
IN ULONG BatteryTag,
OUT PBATTERY_STATUS BatteryStatus);
typedef BCLASS_QUERY_STATUS_CALLBACK *PBCLASS_QUERY_STATUS_CALLBACK;
typedef struct _BATTERY_NOTIFY {
ULONG PowerState;
ULONG LowCapacity;
ULONG HighCapacity;
} BATTERY_NOTIFY, *PBATTERY_NOTIFY;
typedef NTSTATUS
(NTAPI BCLASS_SET_STATUS_NOTIFY_CALLBACK)(
IN PVOID Context,
IN ULONG BatteryTag,
IN PBATTERY_NOTIFY BatteryNotify);
typedef BCLASS_SET_STATUS_NOTIFY_CALLBACK *PBCLASS_SET_STATUS_NOTIFY_CALLBACK;
typedef NTSTATUS
(NTAPI BCLASS_SET_INFORMATION_CALLBACK)(
IN PVOID Context,
IN ULONG BatteryTag,
IN BATTERY_SET_INFORMATION_LEVEL Level,
IN PVOID Buffer OPTIONAL);
typedef BCLASS_SET_INFORMATION_CALLBACK *PBCLASS_SET_INFORMATION_CALLBACK;
typedef NTSTATUS
(NTAPI BCLASS_DISABLE_STATUS_NOTIFY_CALLBACK)(
IN PVOID Context);
typedef BCLASS_DISABLE_STATUS_NOTIFY_CALLBACK *PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK;
typedef PBCLASS_QUERY_TAG_CALLBACK BCLASS_QUERY_TAG;
typedef PBCLASS_QUERY_INFORMATION_CALLBACK BCLASS_QUERY_INFORMATION;
typedef PBCLASS_QUERY_STATUS_CALLBACK BCLASS_QUERY_STATUS;
typedef PBCLASS_SET_STATUS_NOTIFY_CALLBACK BCLASS_SET_STATUS_NOTIFY;
typedef PBCLASS_SET_INFORMATION_CALLBACK BCLASS_SET_INFORMATION;
typedef PBCLASS_DISABLE_STATUS_NOTIFY_CALLBACK BCLASS_DISABLE_STATUS_NOTIFY;
typedef struct _BATTERY_MINIPORT_INFO {
USHORT MajorVersion;
USHORT MinorVersion;
PVOID Context;
BCLASS_QUERY_TAG QueryTag;
BCLASS_QUERY_INFORMATION QueryInformation;
BCLASS_SET_INFORMATION SetInformation;
BCLASS_QUERY_STATUS QueryStatus;
BCLASS_SET_STATUS_NOTIFY SetStatusNotify;
BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify;
PDEVICE_OBJECT Pdo;
PUNICODE_STRING DeviceName;
} BATTERY_MINIPORT_INFO, *PBATTERY_MINIPORT_INFO;
#if (NTDDI_VERSION >= NTDDI_WINXP)
typedef struct _BATTERY_WMI_STATUS {
ULONG Tag;
ULONG RemainingCapacity;
LONG ChargeRate;
LONG DischargeRate;
ULONG Voltage;
BOOLEAN PowerOnline;
BOOLEAN Charging;
BOOLEAN Discharging;
BOOLEAN Critical;
} BATTERY_WMI_STATUS, *PBATTERY_WMI_STATUS;
typedef struct _BATTERY_WMI_RUNTIME {
ULONG Tag;
ULONG EstimatedRuntime;
} BATTERY_WMI_RUNTIME, *PBATTERY_WMI_RUNTIME;
typedef struct _BATTERY_WMI_TEMPERATURE {
ULONG Tag;
ULONG Temperature;
} BATTERY_WMI_TEMPERATURE, *PBATTERY_WMI_TEMPERATURE;
typedef struct _BATTERY_WMI_FULL_CHARGED_CAPACITY {
ULONG Tag;
ULONG FullChargedCapacity;
} BATTERY_WMI_FULL_CHARGED_CAPACITY, *PBATTERY_WMI_FULL_CHARGED_CAPACITY;
typedef struct _BATTERY_WMI_CYCLE_COUNT {
ULONG Tag;
ULONG CycleCount;
} BATTERY_WMI_CYCLE_COUNT, *PBATTERY_WMI_CYCLE_COUNT;
typedef struct _BATTERY_WMI_STATIC_DATA {
ULONG Tag;
WCHAR ManufactureDate[25];
BATTERY_REPORTING_SCALE Granularity [4];
ULONG Capabilities;
UCHAR Technology;
ULONG Chemistry;
ULONG DesignedCapacity;
ULONG DefaultAlert1;
ULONG DefaultAlert2;
ULONG CriticalBias;
WCHAR Strings[1];
} BATTERY_WMI_STATIC_DATA, *PBATTERY_WMI_STATIC_DATA;
typedef struct _BATTERY_WMI_STATUS_CHANGE {
ULONG Tag;
BOOLEAN PowerOnline;
BOOLEAN Charging;
BOOLEAN Discharging;
BOOLEAN Critical;
} BATTERY_WMI_STATUS_CHANGE, *PBATTERY_WMI_STATUS_CHANGE;
typedef struct _BATTERY_TAG_CHANGE {
ULONG Tag;
} BATTERY_TAG_CHANGE, *PBATTERY_TAG_CHANGE;
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
#if defined(_BATTERYCLASS_)
#define BCLASSAPI
#else
#define BCLASSAPI DECLSPEC_IMPORT
#endif
BCLASSAPI BCLASSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
BatteryClassInitializeDevice( BatteryClassInitializeDevice(
IN PBATTERY_MINIPORT_INFO MiniportInfo, IN PBATTERY_MINIPORT_INFO MiniportInfo,
IN PVOID *ClassData); IN PVOID *ClassData);
BCLASSAPI BCLASSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
BatteryClassIoctl( BatteryClassIoctl(
IN PVOID ClassData, IN PVOID ClassData,
IN PIRP Irp); IN OUT PIRP Irp);
BCLASSAPI
NTSTATUS
NTAPI
BatteryClassQueryWmiDataBlock(
IN PVOID ClassData,
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN ULONG GuidIndex,
IN OUT PULONG InstanceLengthArray,
IN ULONG OutBufferSize,
OUT PUCHAR Buffer);
BCLASSAPI BCLASSAPI
NTSTATUS NTSTATUS
@ -269,24 +322,42 @@ NTAPI
BatteryClassStatusNotify( BatteryClassStatusNotify(
IN PVOID ClassData); IN PVOID ClassData);
#if (NTDDI_VERSION >= NTDDI_WINXP)
BCLASSAPI
NTSTATUS
NTAPI
BatteryClassQueryWmiDataBlock(
IN PVOID ClassData,
IN OUT PDEVICE_OBJECT DeviceObject,
IN OUT PIRP Irp,
IN ULONG GuidIndex,
OUT PULONG InstanceLengthArray,
IN ULONG OutBufferSize,
OUT PUCHAR Buffer OPTIONAL);
BCLASSAPI BCLASSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
BatteryClassSystemControl( BatteryClassSystemControl(
IN PVOID ClassData, IN PVOID ClassData,
IN PVOID WmiLibContext, /* PWMILIB_CONTEXT */ IN PVOID WmiLibContext, /* PWMILIB_CONTEXT */
IN PDEVICE_OBJECT DeviceObject, IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp, IN OUT PIRP Irp,
OUT PVOID Disposition); /* PSYSCTL_IRP_DISPOSITION */ OUT PVOID Disposition); /* PSYSCTL_IRP_DISPOSITION */
#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
BCLASSAPI BCLASSAPI
NTSTATUS NTSTATUS
NTAPI NTAPI
BatteryClassUnload( BatteryClassUnload(
IN PVOID ClassData); IN PVOID ClassData);
#endif /* _WINDOWS_H */
#endif /* _BATCLASS_ */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* __BATCLASS_H */

View file

@ -3211,19 +3211,21 @@ typedef struct _QUOTA_LIMITS {
} QUOTA_LIMITS,*PQUOTA_LIMITS; } QUOTA_LIMITS,*PQUOTA_LIMITS;
typedef struct _IO_COUNTERS { typedef struct _IO_COUNTERS {
ULONGLONG ReadOperationCount; ULONGLONG ReadOperationCount;
ULONGLONG WriteOperationCount; ULONGLONG WriteOperationCount;
ULONGLONG OtherOperationCount; ULONGLONG OtherOperationCount;
ULONGLONG ReadTransferCount; ULONGLONG ReadTransferCount;
ULONGLONG WriteTransferCount; ULONGLONG WriteTransferCount;
ULONGLONG OtherTransferCount; ULONGLONG OtherTransferCount;
} IO_COUNTERS, *PIO_COUNTERS; } IO_COUNTERS, *PIO_COUNTERS;
typedef struct _FILE_NOTIFY_INFORMATION { typedef struct _FILE_NOTIFY_INFORMATION {
DWORD NextEntryOffset; DWORD NextEntryOffset;
DWORD Action; DWORD Action;
DWORD FileNameLength; DWORD FileNameLength;
WCHAR FileName[1]; WCHAR FileName[1];
} FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION; } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
typedef struct _TAPE_ERASE { typedef struct _TAPE_ERASE {
DWORD Type; DWORD Type;
BOOLEAN Immediate; BOOLEAN Immediate;
@ -3283,15 +3285,17 @@ typedef struct _TAPE_CREATE_PARTITION {
DWORD Count; DWORD Count;
DWORD Size; DWORD Size;
} TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION; } TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION;
typedef struct _MEMORY_BASIC_INFORMATION { typedef struct _MEMORY_BASIC_INFORMATION {
PVOID BaseAddress; PVOID BaseAddress;
PVOID AllocationBase; PVOID AllocationBase;
DWORD AllocationProtect; DWORD AllocationProtect;
SIZE_T RegionSize; SIZE_T RegionSize;
DWORD State; DWORD State;
DWORD Protect; DWORD Protect;
DWORD Type; DWORD Type;
} MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION; } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
typedef struct _MESSAGE_RESOURCE_ENTRY { typedef struct _MESSAGE_RESOURCE_ENTRY {
WORD Length; WORD Length;
WORD Flags; WORD Flags;
@ -4285,13 +4289,13 @@ typedef struct _NT_TIB64 {
} NT_TIB64,*PNT_TIB64; } NT_TIB64,*PNT_TIB64;
typedef struct _REPARSE_GUID_DATA_BUFFER { typedef struct _REPARSE_GUID_DATA_BUFFER {
DWORD ReparseTag; DWORD ReparseTag;
WORD ReparseDataLength; WORD ReparseDataLength;
WORD Reserved; WORD Reserved;
GUID ReparseGuid; GUID ReparseGuid;
struct { struct {
BYTE DataBuffer[1]; BYTE DataBuffer[1];
} GenericReparseBuffer; } GenericReparseBuffer;
} REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER; } REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
typedef struct _REPARSE_POINT_INFORMATION { typedef struct _REPARSE_POINT_INFORMATION {
@ -4300,9 +4304,9 @@ typedef struct _REPARSE_POINT_INFORMATION {
} REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION; } REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;
typedef union _FILE_SEGMENT_ELEMENT { typedef union _FILE_SEGMENT_ELEMENT {
PVOID64 Buffer; PVOID64 Buffer;
ULONGLONG Alignment; ULONGLONG Alignment;
}FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT; } FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
/* JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants */ /* JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants */
#define JOB_OBJECT_LIMIT_WORKINGSET 0x0001 #define JOB_OBJECT_LIMIT_WORKINGSET 0x0001
@ -4357,17 +4361,18 @@ typedef union _FILE_SEGMENT_ELEMENT {
#define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31) #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31)
typedef enum _JOBOBJECTINFOCLASS { typedef enum _JOBOBJECTINFOCLASS {
JobObjectBasicAccountingInformation = 1, JobObjectBasicAccountingInformation = 1,
JobObjectBasicLimitInformation, JobObjectBasicLimitInformation,
JobObjectBasicProcessIdList, JobObjectBasicProcessIdList,
JobObjectBasicUIRestrictions, JobObjectBasicUIRestrictions,
JobObjectSecurityLimitInformation, JobObjectSecurityLimitInformation,
JobObjectEndOfJobTimeInformation, JobObjectEndOfJobTimeInformation,
JobObjectAssociateCompletionPortInformation, JobObjectAssociateCompletionPortInformation,
JobObjectBasicAndIoAccountingInformation, JobObjectBasicAndIoAccountingInformation,
JobObjectExtendedLimitInformation, JobObjectExtendedLimitInformation,
JobObjectJobSetInformation, JobObjectJobSetInformation,
MaxJobObjectInfoClass JobObjectGroupInformation,
MaxJobObjectInfoClass
} JOBOBJECTINFOCLASS; } JOBOBJECTINFOCLASS;
typedef struct _JOB_SET_ARRAY { typedef struct _JOB_SET_ARRAY {
@ -4377,70 +4382,71 @@ typedef struct _JOB_SET_ARRAY {
} JOB_SET_ARRAY, *PJOB_SET_ARRAY; } JOB_SET_ARRAY, *PJOB_SET_ARRAY;
typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {
LARGE_INTEGER TotalUserTime; LARGE_INTEGER TotalUserTime;
LARGE_INTEGER TotalKernelTime; LARGE_INTEGER TotalKernelTime;
LARGE_INTEGER ThisPeriodTotalUserTime; LARGE_INTEGER ThisPeriodTotalUserTime;
LARGE_INTEGER ThisPeriodTotalKernelTime; LARGE_INTEGER ThisPeriodTotalKernelTime;
DWORD TotalPageFaultCount; DWORD TotalPageFaultCount;
DWORD TotalProcesses; DWORD TotalProcesses;
DWORD ActiveProcesses; DWORD ActiveProcesses;
DWORD TotalTerminatedProcesses; DWORD TotalTerminatedProcesses;
} JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION { typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION {
LARGE_INTEGER PerProcessUserTimeLimit; LARGE_INTEGER PerProcessUserTimeLimit;
LARGE_INTEGER PerJobUserTimeLimit; LARGE_INTEGER PerJobUserTimeLimit;
DWORD LimitFlags; DWORD LimitFlags;
SIZE_T MinimumWorkingSetSize; SIZE_T MinimumWorkingSetSize;
SIZE_T MaximumWorkingSetSize; SIZE_T MaximumWorkingSetSize;
DWORD ActiveProcessLimit; DWORD ActiveProcessLimit;
ULONG_PTR Affinity; ULONG_PTR Affinity;
DWORD PriorityClass; DWORD PriorityClass;
DWORD SchedulingClass; DWORD SchedulingClass;
} JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION; } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION;
typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST {
DWORD NumberOfAssignedProcesses; DWORD NumberOfAssignedProcesses;
DWORD NumberOfProcessIdsInList; DWORD NumberOfProcessIdsInList;
ULONG_PTR ProcessIdList[1]; ULONG_PTR ProcessIdList[1];
} JOBOBJECT_BASIC_PROCESS_ID_LIST, *PJOBOBJECT_BASIC_PROCESS_ID_LIST; } JOBOBJECT_BASIC_PROCESS_ID_LIST, *PJOBOBJECT_BASIC_PROCESS_ID_LIST;
typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS {
DWORD UIRestrictionsClass; DWORD UIRestrictionsClass;
} JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS; } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS;
typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION { typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION {
DWORD SecurityLimitFlags; DWORD SecurityLimitFlags;
HANDLE JobToken; HANDLE JobToken;
PTOKEN_GROUPS SidsToDisable; PTOKEN_GROUPS SidsToDisable;
PTOKEN_PRIVILEGES PrivilegesToDelete; PTOKEN_PRIVILEGES PrivilegesToDelete;
PTOKEN_GROUPS RestrictedSids; PTOKEN_GROUPS RestrictedSids;
} JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION; } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION;
typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION { typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION {
DWORD EndOfJobTimeAction; DWORD EndOfJobTimeAction;
} JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION;
typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT { typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT {
PVOID CompletionKey; PVOID CompletionKey;
HANDLE CompletionPort; HANDLE CompletionPort;
} JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;
typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION {
JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo;
IO_COUNTERS IoInfo; IO_COUNTERS IoInfo;
} JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION { typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
IO_COUNTERS IoInfo; IO_COUNTERS IoInfo;
SIZE_T ProcessMemoryLimit; SIZE_T ProcessMemoryLimit;
SIZE_T JobMemoryLimit; SIZE_T JobMemoryLimit;
SIZE_T PeakProcessMemoryUsed; SIZE_T PeakProcessMemoryUsed;
SIZE_T PeakJobMemoryUsed; SIZE_T PeakJobMemoryUsed;
} JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION;
typedef struct _JOBOBJECT_JOBSET_INFORMATION { typedef struct _JOBOBJECT_JOBSET_INFORMATION {
DWORD MemberLevel; DWORD MemberLevel;
} JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION; } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION;
/* Fixme: Making these defines conditional on WINVER will break ddk includes */ /* Fixme: Making these defines conditional on WINVER will break ddk includes */
@ -4452,46 +4458,49 @@ typedef struct _JOBOBJECT_JOBSET_INFORMATION {
#define ES_CONTINUOUS 0x80000000 #define ES_CONTINUOUS 0x80000000
typedef enum _LATENCY_TIME { typedef enum _LATENCY_TIME {
LT_DONT_CARE, LT_DONT_CARE,
LT_LOWEST_LATENCY LT_LOWEST_LATENCY
} LATENCY_TIME, *PLATENCY_TIME; } LATENCY_TIME, *PLATENCY_TIME;
typedef enum _SYSTEM_POWER_STATE { typedef enum _SYSTEM_POWER_STATE {
PowerSystemUnspecified, PowerSystemUnspecified = 0,
PowerSystemWorking, PowerSystemWorking,
PowerSystemSleeping1, PowerSystemSleeping1,
PowerSystemSleeping2, PowerSystemSleeping2,
PowerSystemSleeping3, PowerSystemSleeping3,
PowerSystemHibernate, PowerSystemHibernate,
PowerSystemShutdown, PowerSystemShutdown,
PowerSystemMaximum PowerSystemMaximum
} SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE; } SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE;
#define POWER_SYSTEM_MAXIMUM PowerSystemMaximum #define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
typedef enum { typedef enum {
PowerActionNone, PowerActionNone = 0,
PowerActionReserved, PowerActionReserved,
PowerActionSleep, PowerActionSleep,
PowerActionHibernate, PowerActionHibernate,
PowerActionShutdown, PowerActionShutdown,
PowerActionShutdownReset, PowerActionShutdownReset,
PowerActionShutdownOff, PowerActionShutdownOff,
PowerActionWarmEject PowerActionWarmEject
} POWER_ACTION, *PPOWER_ACTION; } POWER_ACTION, *PPOWER_ACTION;
typedef enum _DEVICE_POWER_STATE { typedef enum _DEVICE_POWER_STATE {
PowerDeviceUnspecified, PowerDeviceUnspecified = 0,
PowerDeviceD0, PowerDeviceD0,
PowerDeviceD1, PowerDeviceD1,
PowerDeviceD2, PowerDeviceD2,
PowerDeviceD3, PowerDeviceD3,
PowerDeviceMaximum PowerDeviceMaximum
} DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE;
#if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_)
typedef struct { typedef struct {
DWORD Granularity; DWORD Granularity;
DWORD Capacity; DWORD Capacity;
} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE; } BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
#endif
typedef struct _POWER_ACTION_POLICY { typedef struct _POWER_ACTION_POLICY {
POWER_ACTION Action; POWER_ACTION Action;
@ -4620,30 +4629,61 @@ typedef struct _PROCESSOR_POWER_INFORMATION {
} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION; } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
typedef DWORD EXECUTION_STATE; typedef DWORD EXECUTION_STATE;
typedef enum _POWER_INFORMATION_LEVEL { typedef enum _POWER_INFORMATION_LEVEL {
SystemPowerPolicyAc, SystemPowerPolicyAc,
SystemPowerPolicyDc, SystemPowerPolicyDc,
VerifySystemPolicyAc, VerifySystemPolicyAc,
VerifySystemPolicyDc, VerifySystemPolicyDc,
SystemPowerCapabilities, SystemPowerCapabilities,
SystemBatteryState, SystemBatteryState,
SystemPowerStateHandler, SystemPowerStateHandler,
ProcessorStateHandler, ProcessorStateHandler,
SystemPowerPolicyCurrent, SystemPowerPolicyCurrent,
AdministratorPowerPolicy, AdministratorPowerPolicy,
SystemReserveHiberFile, SystemReserveHiberFile,
ProcessorInformation, ProcessorInformation,
SystemPowerInformation, SystemPowerInformation,
ProcessorStateHandler2, ProcessorStateHandler2,
LastWakeTime, LastWakeTime,
LastSleepTime, LastSleepTime,
SystemExecutionState, SystemExecutionState,
SystemPowerStateNotifyHandler, SystemPowerStateNotifyHandler,
ProcessorPowerPolicyAc, ProcessorPowerPolicyAc,
ProcessorPowerPolicyDc, ProcessorPowerPolicyDc,
VerifyProcessorPowerPolicyAc, VerifyProcessorPowerPolicyAc,
VerifyProcessorPowerPolicyDc, VerifyProcessorPowerPolicyDc,
ProcessorPowerPolicyCurrent ProcessorPowerPolicyCurrent,
SystemPowerStateLogging,
SystemPowerLoggingEntry,
SetPowerSettingValue,
NotifyUserPowerSetting,
PowerInformationLevelUnused0,
PowerInformationLevelUnused1,
SystemVideoState,
TraceApplicationPowerMessage,
TraceApplicationPowerMessageEnd,
ProcessorPerfStates,
ProcessorIdleStates,
ProcessorCap,
SystemWakeSource,
SystemHiberFileInformation,
TraceServicePowerMessage,
ProcessorLoad,
PowerShutdownNotification,
MonitorCapabilities,
SessionPowerInit,
SessionDisplayState,
PowerRequestCreate,
PowerRequestAction,
GetPowerRequestList,
ProcessorInformationEx,
NotifyUserModeLegacyPowerEvent,
GroupPark,
ProcessorIdleDomains,
WakeTimerList,
SystemHiberFileSize,
PowerInformationLevelMaximum
} POWER_INFORMATION_LEVEL; } POWER_INFORMATION_LEVEL;
#if 1 /* (WIN32_WINNT >= 0x0500) */ #if 1 /* (WIN32_WINNT >= 0x0500) */
@ -4833,42 +4873,44 @@ RtlMultipleFreeHeap (
); );
typedef enum _PROCESSOR_CACHE_TYPE { typedef enum _PROCESSOR_CACHE_TYPE {
CacheUnified, CacheUnified,
CacheInstruction, CacheInstruction,
CacheData, CacheData,
CacheTrace CacheTrace
} PROCESSOR_CACHE_TYPE; } PROCESSOR_CACHE_TYPE;
typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP {
RelationProcessorCore, RelationProcessorCore,
RelationNumaNode, RelationNumaNode,
RelationCache, RelationCache,
RelationProcessorPackage RelationProcessorPackage,
RelationGroup,
RelationAll = 0xffff
} LOGICAL_PROCESSOR_RELATIONSHIP; } LOGICAL_PROCESSOR_RELATIONSHIP;
#define CACHE_FULLY_ASSOCIATIVE 0xFF #define CACHE_FULLY_ASSOCIATIVE 0xFF
typedef struct _CACHE_DESCRIPTOR { typedef struct _CACHE_DESCRIPTOR {
BYTE Level; BYTE Level;
BYTE Associativity; BYTE Associativity;
WORD LineSize; WORD LineSize;
DWORD Size; DWORD Size;
PROCESSOR_CACHE_TYPE Type; PROCESSOR_CACHE_TYPE Type;
} CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR; } CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR;
typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION {
ULONG_PTR ProcessorMask; ULONG_PTR ProcessorMask;
LOGICAL_PROCESSOR_RELATIONSHIP Relationship; LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
union { _ANONYMOUS_UNION union {
struct { struct {
BYTE Flags; BYTE Flags;
} ProcessorCore; } ProcessorCore;
struct { struct {
DWORD NodeNumber; DWORD NodeNumber;
} NumaNode; } NumaNode;
CACHE_DESCRIPTOR Cache; CACHE_DESCRIPTOR Cache;
ULONGLONG Reserved[2]; ULONGLONG Reserved[2];
}; } DUMMYUNIONNAME;
} SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; } SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
NTSYSAPI NTSYSAPI