| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/shared/ |
Upload File : |
/*++
Copyright (c) Microsoft Corporation. All Rights Reserved.
Module Name:
emi.h
Abstract:
This header defines the standard IOCTL interface to an energy meter device.
--*/
#if !defined(_EMI_)
#define _EMI_
#ifdef _MSC_VER
#pragma once
#endif // _MSC_VER
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
//
// Energy Metering Device Interface
// {45BD8344-7ED6-49cf-A440-C276C933B053}
//
DEFINE_GUID(GUID_DEVICE_ENERGY_METER,
0x45bd8344, 0x7ed6, 0x49cf, 0xa4, 0x40, 0xc2, 0x76, 0xc9, 0x33, 0xb0, 0x53);
#define IOCTL_EMI_GET_VERSION CTL_CODE(FILE_DEVICE_UNKNOWN, 0, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_EMI_GET_METADATA_SIZE CTL_CODE(FILE_DEVICE_UNKNOWN, 1, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_EMI_GET_METADATA CTL_CODE(FILE_DEVICE_UNKNOWN, 2, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_EMI_GET_MEASUREMENT CTL_CODE(FILE_DEVICE_UNKNOWN, 3, METHOD_BUFFERED, FILE_READ_ACCESS)
//
// The maximum length for a name parameter including the null terminator.
//
#define EMI_NAME_MAX 16
#define EMI_VERSION_V1 1
#define EMI_VERSION_V2 2
typedef enum
{
EmiMeasurementUnitPicowattHours
} EMI_MEASUREMENT_UNIT;
typedef struct
{
USHORT EmiVersion;
} EMI_VERSION;
typedef struct
{
ULONG MetadataSize;
} EMI_METADATA_SIZE;
typedef struct
{
ULONGLONG AbsoluteEnergy;
ULONGLONG AbsoluteTime;
} EMI_CHANNEL_MEASUREMENT_DATA;
//
// V1 Interface Definition
//
typedef struct
{
EMI_MEASUREMENT_UNIT MeasurementUnit;
WCHAR HardwareOEM[EMI_NAME_MAX];
WCHAR HardwareModel[EMI_NAME_MAX];
USHORT HardwareRevision;
USHORT MeteredHardwareNameSize;
WCHAR MeteredHardwareName[ANYSIZE_ARRAY];
} EMI_METADATA_V1;
typedef EMI_CHANNEL_MEASUREMENT_DATA EMI_MEASUREMENT_DATA_V1;
//
// Backwards Compatability Typedefs
//
typedef EMI_METADATA_V1 EMI_METADATA;
typedef EMI_MEASUREMENT_DATA_V1 EMI_MEASUREMENT_DATA;
//
// V2 Interface Definition
//
typedef struct
{
EMI_MEASUREMENT_UNIT MeasurementUnit;
USHORT ChannelNameSize;
WCHAR ChannelName[ANYSIZE_ARRAY];
} EMI_CHANNEL_V2;
typedef struct
{
WCHAR HardwareOEM[EMI_NAME_MAX];
WCHAR HardwareModel[EMI_NAME_MAX];
USHORT HardwareRevision;
USHORT ChannelCount;
EMI_CHANNEL_V2 Channels[ANYSIZE_ARRAY];
} EMI_METADATA_V2;
typedef struct
{
EMI_CHANNEL_MEASUREMENT_DATA ChannelData[ANYSIZE_ARRAY];
} EMI_MEASUREMENT_DATA_V2;
#define EMI_CHANNEL_V2_LENGTH(_ChannelNameSize) \
(FIELD_OFFSET(EMI_CHANNEL_V2, ChannelName) + (_ChannelNameSize))
#define EMI_CHANNEL_V2_NEXT_CHANNEL(_Channel) \
((EMI_CHANNEL_V2*)((PUCHAR)(_Channel) + \
EMI_CHANNEL_V2_LENGTH((_Channel)->ChannelNameSize)))
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
#pragma endregion
#endif // (NTDDI_VERSION >= NTDDI_WINBLUE)
#endif // !defined(_EMI_)