You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
7.5 KiB
195 lines
7.5 KiB
/*++
|
|
|
|
Copyright (c) 1991 - 2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
### ### #### ##### ## ##
|
|
## # ### ## ## ## ## ##
|
|
### ## ## ## ## ## ## ##
|
|
### ## ## ## ## ## #######
|
|
### ####### ## ## ## ## ##
|
|
# ## ## ## ## ## ## ## ## ##
|
|
### ## ## #### ##### ## ## ##
|
|
|
|
Abstract:
|
|
|
|
This header contains all definitions necessary
|
|
for user mode and kernel mode components to
|
|
communicate with the server availability driver stack.
|
|
|
|
Author:
|
|
|
|
Wesley Witt (wesw) 1-Oct-2001
|
|
|
|
Environment:
|
|
|
|
Kernel mode and user mode both.
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
|
|
#ifndef _SAIO_
|
|
#define _SAIO_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//
|
|
// Current inteface version
|
|
//
|
|
|
|
#define SA_INTERFACE_VERSION 0x00000004
|
|
|
|
//
|
|
// Device name strings
|
|
//
|
|
|
|
#define SA_DEVICE_DISPLAY_NAME_STRING L"\\Device\\ServerAvailabilityLocalDisplay"
|
|
#define SA_DEVICE_KEYPAD_NAME_STRING L"\\Device\\ServerAvailabilityKeypad"
|
|
#define SA_DEVICE_NVRAM_NAME_STRING L"\\Device\\ServerAvailabilityNvram"
|
|
#define SA_DEVICE_WATCHDOG_NAME_STRING L"\\Device\\ServerAvailabilityWatchdog"
|
|
|
|
//
|
|
// Device types
|
|
//
|
|
|
|
#define SA_DEVICE_UNKNOWN (0)
|
|
#define SA_DEVICE_DISPLAY (1)
|
|
#define SA_DEVICE_KEYPAD (2)
|
|
#define SA_DEVICE_NVRAM (3)
|
|
#define SA_DEVICE_WATCHDOG (4)
|
|
|
|
//
|
|
// All IOCTL codes & definitions
|
|
//
|
|
|
|
#define FILE_DEVICE_SERVER_AVAILABILITY ((ULONG) 'A')
|
|
#define IOCTL_SERVERAVAILABILITY_BASE 0x800
|
|
|
|
#define SA_IOCTL(FUNC_CODE) CTL_CODE(FILE_DEVICE_SERVER_AVAILABILITY, FUNC_CODE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
|
|
|
|
#define FUNC_SA_GET_VERSION (IOCTL_SERVERAVAILABILITY_BASE+0)
|
|
#define FUNC_SA_GET_CAPABILITIES (IOCTL_SERVERAVAILABILITY_BASE+1)
|
|
|
|
#define FUNC_SAWD_DISABLE (IOCTL_SERVERAVAILABILITY_BASE+2)
|
|
#define FUNC_SAWD_QUERY_EXPIRE_BEHAVIOR (IOCTL_SERVERAVAILABILITY_BASE+3)
|
|
#define FUNC_SAWD_SET_EXPIRE_BEHAVIOR (IOCTL_SERVERAVAILABILITY_BASE+4)
|
|
#define FUNC_SAWD_PING (IOCTL_SERVERAVAILABILITY_BASE+5)
|
|
#define FUNC_SAWD_QUERY_TIMER (IOCTL_SERVERAVAILABILITY_BASE+6)
|
|
#define FUNC_SAWD_SET_TIMER (IOCTL_SERVERAVAILABILITY_BASE+7)
|
|
#define FUNC_SAWD_DELAY_BOOT (IOCTL_SERVERAVAILABILITY_BASE+8)
|
|
|
|
#define FUNC_NVRAM_WRITE_BOOT_COUNTER (IOCTL_SERVERAVAILABILITY_BASE+9)
|
|
#define FUNC_NVRAM_READ_BOOT_COUNTER (IOCTL_SERVERAVAILABILITY_BASE+10)
|
|
|
|
#define FUNC_SADISPLAY_LOCK (IOCTL_SERVERAVAILABILITY_BASE+12)
|
|
#define FUNC_SADISPLAY_UNLOCK (IOCTL_SERVERAVAILABILITY_BASE+13)
|
|
#define FUNC_SADISPLAY_BUSY_MESSAGE (IOCTL_SERVERAVAILABILITY_BASE+14)
|
|
#define FUNC_SADISPLAY_SHUTDOWN_MESSAGE (IOCTL_SERVERAVAILABILITY_BASE+15)
|
|
#define FUNC_SADISPLAY_CHANGE_LANGUAGE (IOCTL_SERVERAVAILABILITY_BASE+16)
|
|
#define FUNC_DISPLAY_STORE_BITMAP (IOCTL_SERVERAVAILABILITY_BASE+17)
|
|
|
|
#define FUNC_SA_LAST (IOCTL_SERVERAVAILABILITY_BASE+31)
|
|
|
|
#define IOCTL_SA_GET_VERSION SA_IOCTL(FUNC_SA_GET_VERSION)
|
|
#define IOCTL_SA_GET_CAPABILITIES SA_IOCTL(FUNC_SA_GET_CAPABILITIES)
|
|
|
|
#define IOCTL_SAWD_DISABLE SA_IOCTL(FUNC_SAWD_DISABLE)
|
|
#define IOCTL_SAWD_QUERY_EXPIRE_BEHAVIOR SA_IOCTL(FUNC_SAWD_QUERY_EXPIRE_BEHAVIOR)
|
|
#define IOCTL_SAWD_SET_EXPIRE_BEHAVIOR SA_IOCTL(FUNC_SAWD_SET_EXPIRE_BEHAVIOR)
|
|
#define IOCTL_SAWD_PING SA_IOCTL(FUNC_SAWD_PING)
|
|
#define IOCTL_SAWD_QUERY_TIMER SA_IOCTL(FUNC_SAWD_QUERY_TIMER)
|
|
#define IOCTL_SAWD_SET_TIMER SA_IOCTL(FUNC_SAWD_SET_TIMER)
|
|
|
|
#define IOCTL_NVRAM_WRITE_BOOT_COUNTER SA_IOCTL(FUNC_NVRAM_WRITE_BOOT_COUNTER)
|
|
#define IOCTL_NVRAM_READ_BOOT_COUNTER SA_IOCTL(FUNC_NVRAM_READ_BOOT_COUNTER)
|
|
|
|
#define IOCTL_SADISPLAY_LOCK SA_IOCTL(FUNC_SADISPLAY_LOCK)
|
|
#define IOCTL_SADISPLAY_UNLOCK SA_IOCTL(FUNC_SADISPLAY_UNLOCK)
|
|
#define IOCTL_SADISPLAY_BUSY_MESSAGE SA_IOCTL(FUNC_SADISPLAY_BUSY_MESSAGE)
|
|
#define IOCTL_SADISPLAY_SHUTDOWN_MESSAGE SA_IOCTL(FUNC_SADISPLAY_SHUTDOWN_MESSAGE)
|
|
#define IOCTL_SADISPLAY_CHANGE_LANGUAGE SA_IOCTL(FUNC_SADISPLAY_CHANGE_LANGUAGE)
|
|
#define IOCTL_FUNC_DISPLAY_STORE_BITMAP SA_IOCTL(FUNC_DISPLAY_STORE_BITMAP)
|
|
|
|
|
|
//
|
|
// Structure defintions for IOCTL interfaces
|
|
//
|
|
|
|
#define SA_DISPLAY_TYPE_LED 0x0001
|
|
#define SA_DISPLAY_TYPE_CHARACTER_LCD 0x0002
|
|
#define SA_DISPLAY_TYPE_BIT_MAPPED_LCD 0x0004
|
|
|
|
#define SA_DISPLAY_CHAR_ASCII 0x0001
|
|
#define SA_DISPLAY_CHAR_UNICODE 0x0002
|
|
|
|
typedef struct _SA_DISPLAY_CAPS {
|
|
ULONG SizeOfStruct;
|
|
USHORT DisplayType;
|
|
USHORT CharacterSet;
|
|
USHORT DisplayHeight;
|
|
USHORT DisplayWidth;
|
|
} SA_DISPLAY_CAPS, *PSA_DISPLAY_CAPS;
|
|
|
|
#define SA_DISPLAY_MAX_WIDTH 128
|
|
#define SA_DISPLAY_MAX_HEIGHT 128
|
|
#define SA_DISPLAY_MAX_BITMAP_SIZE (SA_DISPLAY_MAX_WIDTH * SA_DISPLAY_MAX_HEIGHT)
|
|
|
|
#define SA_DISPLAY_READY 0x00000001 // OS is running normally
|
|
#define SA_DISPLAY_SHUTTING_DOWN 0x00000002 // OS is shutting down
|
|
#define SA_DISPLAY_NET_ERR 0x00000004 // LAN error
|
|
#define SA_DISPLAY_HW_ERR 0x00000008 // general hardware error
|
|
#define SA_DISPLAY_CHECK_DISK 0x00000010 // autochk.exe is running
|
|
#define SA_DISPLAY_BACKUP_DISK 0x00000020 // disk backup in progress
|
|
#define SA_DISPLAY_NEW_TAPE 0x00000040 // new tape media required
|
|
#define SA_DISPLAY_NEW_DISK 0x00000080 // new disk media required
|
|
#define SA_DISPLAY_STARTING 0x00000100 // OS is booting
|
|
#define SA_DISPLAY_WAN_CONNECTED 0x00000200 // connected to ISP
|
|
#define SA_DISPLAY_WAN_ERR 0x00000400 // WAN error, e.g. no dial tone
|
|
#define SA_DISPLAY_DISK_ERR 0x00000800 // disk error, e.g. dirty bit set
|
|
#define SA_DISPLAY_ADD_START_TASKS 0x00001000 // additional startup tasks running, e.g. autochk, sw update
|
|
|
|
typedef struct _SA_DISPLAY_SHOW_MESSAGE {
|
|
ULONG SizeOfStruct;
|
|
ULONG MsgCode;
|
|
USHORT Width;
|
|
USHORT Height;
|
|
UCHAR Bits[SA_DISPLAY_MAX_BITMAP_SIZE];
|
|
} SA_DISPLAY_SHOW_MESSAGE, *PSA_DISPLAY_SHOW_MESSAGE;
|
|
|
|
#define SA_KEYPAD_UP 0x00000001
|
|
#define SA_KEYPAD_DOWN 0x00000002
|
|
#define SA_KEYPAD_LEFT 0x00000004
|
|
#define SA_KEYPAD_RIGHT 0x00000008
|
|
#define SA_KEYPAD_CANCEL 0x00000010
|
|
#define SA_KEYPAD_SELECT 0x00000020
|
|
|
|
#define SA_NVRAM_MINIMUM_SIZE 32
|
|
#define SA_NVRAM_MAXIMUM_SIZE 128
|
|
|
|
typedef struct _SA_NVRAM_CAPS {
|
|
ULONG SizeOfStruct;
|
|
USHORT NvramSize;
|
|
} SA_NVRAM_CAPS, *PSA_NVRAM_CAPS;
|
|
|
|
typedef struct _SA_NVRAM_BOOT_COUNTER {
|
|
ULONG SizeOfStruct;
|
|
ULONG Number;
|
|
ULONG Value;
|
|
ULONG DeviceId;
|
|
} SA_NVRAM_BOOT_COUNTER, *PSA_NVRAM_BOOT_COUNTER;
|
|
|
|
typedef struct _SA_WD_CAPS {
|
|
ULONG SizeOfStruct;
|
|
USHORT Minimum;
|
|
USHORT Maximum;
|
|
} SA_WD_CAPS, *PSA_WD_CAPS;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _SAIO_ */
|