windows-nt/Source/XPSP1/NT/shell/osshell/cpls/powrprof/parse.h

227 lines
7.5 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*******************************************************************************
*
* (C) COPYRIGHT MICROSOFT CORP., 1997
*
* TITLE: PARSE.H
*
* VERSION: 2.0
*
* AUTHOR: ReedB
*
* DATE: 1 Jan, 1997
*
* DESCRIPTION:
*
* Declarations and definitions for the parse helper.
*
*******************************************************************************/
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <memory.h>
#include <windows.h>
#include <regstr.h>
#include <ntpoapi.h>
#include "powrprofp.h"
#define MAX_LINES 256
#define MAX_STR 128
#define DELIMITERS ","
#define LINE_DELIMITERS "\n\r"
// The following defines determine which zero based line of the spread sheet
// a given data will appear on. These are one based line indicies which match
// the spreadsheet line numbers as long as no blank lines are included.
#define SKU_LINE 1
#define NAME_LINE 2
#define DESCRIPTION_LINE 3
#define PLATFORM_LINE 4
#define INSTALL_ON_LINE 5
#define SYSTEM_IDLE_LINE SKU_LINE + 7
#define SYSTEM_IDLE_TIMEOUT_LINE SYSTEM_IDLE_LINE + 1
#define SYSTEM_IDLE_SLEEP_ACTION_FLAGS_LINE SYSTEM_IDLE_LINE + 2
#define SYSTEM_IDLE_SENSITIVITY_LINE SYSTEM_IDLE_LINE + 8
#define MIN_SLEEP_LINE SKU_LINE + 17
#define MAX_SLEEP_LINE MIN_SLEEP_LINE + 1
#define REDUCED_LATENCY_SLEEP_LINE MIN_SLEEP_LINE + 2
#define DOZE_TIMEOUT_LINE MIN_SLEEP_LINE + 3
#define DOZE_S4_TIMEOUT_LINE MIN_SLEEP_LINE + 4
#define VIDEO_TIMEOUT_LINE SKU_LINE + 23
#define SPINDOWN_TIMEOUT_LINE VIDEO_TIMEOUT_LINE + 1
#define OPTIMIZE_FOR_POWER_LINE SKU_LINE + 26
#define FAN_THROTTLE_TOL_LINE OPTIMIZE_FOR_POWER_LINE + 1
#define FORCED_THROTTLE_LINE OPTIMIZE_FOR_POWER_LINE + 2
#define MIN_THROTTLE_LINE OPTIMIZE_FOR_POWER_LINE + 3
#define OVERTHROTTLED_LINE OPTIMIZE_FOR_POWER_LINE + 4
#define OVERTHROTTLED_SLEEP_ACTION_FLAGS_LINE OPTIMIZE_FOR_POWER_LINE + 5
#define DYNAMIC_THROTTLE_LINE OPTIMIZE_FOR_POWER_LINE + 11
#define C1_THRESHOLDS_LINE DYNAMIC_THROTTLE_LINE + 1
#define C2_THRESHOLDS_LINE C1_THRESHOLDS_LINE + 8
#define C3_THRESHOLDS_LINE C2_THRESHOLDS_LINE + 8
// Global
#define ADVANCED_LINE 64
#define LOCK_ON_SLEEP_LINE ADVANCED_LINE + 1
#define WAKE_ON_RING_LINE ADVANCED_LINE + 2
#define VIDEO_DIM_DISPLAY_LINE ADVANCED_LINE + 3
#define POWER_BUTTON_LINE ADVANCED_LINE + 5
#define POWER_BUTTON_SLEEP_ACTION_FLAGS_LINE ADVANCED_LINE + 6
#define POWER_BUTTON_SLEEP_EVENT_CODE_LINE ADVANCED_LINE + 12
#define SLEEP_BUTTON_LINE ADVANCED_LINE + 14
#define SLEEP_BUTTON_SLEEP_ACTION_FLAGS_LINE ADVANCED_LINE + 15
#define SLEEP_BUTTON_SLEEP_EVENT_CODE_LINE ADVANCED_LINE + 21
#define LID_CLOSE_LINE ADVANCED_LINE + 23
#define LID_CLOSE_SLEEP_ACTION_FLAGS_LINE ADVANCED_LINE + 24
#define LID_OPEN_WAKE_LINE ADVANCED_LINE + 30
#define BROADCAST_CAP_RES_LINE 96
#define BATMETER_ENABLE_SYSTRAY_FLAG_LINE BROADCAST_CAP_RES_LINE + 2
#define BATMETER_ENABLE_MULTI_FLAG_LINE BROADCAST_CAP_RES_LINE + 3
#define DISCHARGE_POLICY_1_LINE BROADCAST_CAP_RES_LINE + 4
#define DISCHARGE_POLICY_2_LINE BROADCAST_CAP_RES_LINE + 18
// Handy line offsets, for sleep action flags.
#define QUERY_APPS 1
#define ALLOW_UI 2
#define IGNORE_NON_RESP 3
#define IGNORE_WAKE 4
#define IGNORE_CRITICAL 5
// offsets for sleep action event codes
#define NOTIFY_USER_CODE 1
// Handy line offsets for DISCHARGE_POLICIES
#define DP_ENABLE 1
#define DP_BAT_LEVEL 2
#define DP_POWER_POLICY 3
#define DP_MIN_SLEEP_STATE 4
#define DP_TEXT_NOTIFY 6
#define DP_SOUND_NOTIFY 7
#define DP_SLEEP_ACT_FLAGS 8
// Handy line offsets for C-state thresholds
#define C_TIME_CHECK 1
#define C_PROMOTE_LIMIT 2
#define C_DEMOTE_LIMIT 3
#define C_PROMOTE_PERCENT 4
#define C_DEMOTE_PERCENT 5
#define C_ALLOW_PROMOTION 6
#define C_ALLOW_DEMOTION 7
// Memphis INF types:
#define TYPICAL 0x01
#define COMPACT 0x02
#define CUSTOM 0x04
#define PORTABLE 0x08
#define SERVER 0x10
#define NUM_INF_TYPES 5
// OS types:
#define WIN_95 1
#define WIN_NT 2
// file locations
#define MACHINE_INF_NAME "..\\winnt\\POWERSYS.INF"
#define USER_INF_NAME "..\\winnt\\POWERSFT.INF"
#define INI_NAME "POWERCFG.INI"
#define MAX_SKUS 6
#define MAX_PROFILES 16
#define MAX_LINE_SIZE 1024
#define DATA_REV 1
extern char *g_pszSrc[MAX_SKUS];
extern char *g_pszLines[MAX_SKUS][MAX_LINES];
extern char *g_pszSkuNames[MAX_SKUS];
extern char g_pszSkuDecoration[MAX_SKUS];
extern UINT g_uiPoliciesCount[MAX_SKUS];
extern PMACHINE_POWER_POLICY g_pmpp[MAX_SKUS][MAX_PROFILES];
extern PUSER_POWER_POLICY g_pupp[MAX_SKUS][MAX_PROFILES];
extern PMACHINE_PROCESSOR_POWER_POLICY g_ppmpp[MAX_SKUS][MAX_PROFILES];
extern GLOBAL_USER_POWER_POLICY g_gupp[MAX_SKUS];
extern GLOBAL_MACHINE_POWER_POLICY g_gmpp[MAX_SKUS];
// Function prototypes implemented in MAKEINI.C or MAKEINF.C:
VOID CDECL DefFatalExit(BOOLEAN, char*, ... );
// Function prototypes implemented in PARSE.C:
void StrToUpper(char*, char*);
UINT GetTokens(char*, UINT, char**, UINT, char*);
VOID GetCheckLabelToken(UINT uiLine, char *pszCheck, UINT uiSku);
UINT GetFlagToken(UINT);
UINT GetPowerStateToken(VOID);
UINT GetIntToken(char*);
VOID GetNAToken(VOID);
POWER_ACTION GetPowerActionToken(VOID);
UINT GetOSTypeToken(VOID);
UINT GetINFTypeToken(VOID);
void StrTrimTrailingBlanks(char *);
UINT GetThrottleToken(VOID);
VOID CDECL DefFatalExit(BOOLEAN bGetLastError, char *pszFormat, ... );
BOOLEAN ReadSource(void);
UINT BuildLineArray(void);
VOID GetSleepActionFlags(
UINT uiStartLine,
UINT uiFlagsAC[],
UINT uiFlagsDC[],
PUINT puiCount,
UINT sku
);
VOID GetSleepActionFlagsGlobal(
UINT uiStartLine,
PPOWER_ACTION_POLICY ppapAC,
PPOWER_ACTION_POLICY ppapDC,
UINT sku
);
VOID GetSleepActionFlagsUserPolicy(
UINT uiStartLine,
ULONG ulAcPowerPolicyOffset,
ULONG ulDcPowerPolicyOffset,
PUINT puiCount,
UINT sku
);
VOID GetSleepActionFlagsMachinePolicy(
UINT uiStartLine,
ULONG ulAcPowerPolicyOffset,
ULONG ulDcPowerPolicyOffset,
PUINT puiCount,
UINT sku
);
VOID GetCStateThresholds(
UINT uiStartLine,
UINT uiCState,
PUINT puiCount,
UINT sku
);
VOID GetDischargePolicies(
UINT uiLine,
UINT uiNum,
UINT uiIndex,
UINT sku
);
BOOLEAN GetGlobalPolicies(void);
BOOLEAN GetPolicies(void);
VOID GetPolicyInf(void);