windows-nt/Source/XPSP1/NT/shell/inc/win95/bios.h
2020-09-26 16:20:57 +08:00

108 lines
3.6 KiB
C

/*****************************************************************************
*
* (C) Copyright MICROSOFT Corp., 1994
*
* Title: BIOS.H - PnP BIOS Enumerator VxD
*
* Version: 4.00
*
* Date: 6-Feb-1994
*
* Author: MSq
*
*------------------------------------------------------------------------------
*
* Change log:
*
* DATE REV DESCRIPTION
* ----------- --- -----------------------------------------------------------
* 6-Feb-1994 MSq Original
*****************************************************************************/
/*XLATOFF*/
#define BIOS_Service Declare_Service
/*XLATON*/
/*MACROS*/
Begin_Service_Table(BIOS, VxD)
BIOS_Service (_BIOSGetVersion, VxD_CODE)
BIOS_Service (_BIOSSoftUndock, VxD_CODE)
BIOS_Service (_BIOSGetCapabilities, VxD_CODE)
BIOS_Service (_BIOSGetAPMTable, VxD_CODE)
End_Service_Table(BIOS, VxD)
/*ENDMACROS*/
/*
* One can add a VxD to fix a broken BIOS. This VxD must have
* BIOS_EXT_DEVICE_ID as device ID and must export three services, in that
* order:
*
* GetVersion: must return in eax 0x00000100 for this release and carry
* clear (ie standard version code).
*
* GetHeader: must return in eax the linear address to an installation
* structure, this need not be in BIOS space, but need to have the correct
* values for building BIOS selectors. The structure will be used instead of
* the one found by the scan. Also, the BIOS EXT VxD must use this time to
* initialize. If initialization failed, the value 0 must be return.
*
* CallBIOS: will be called instead of calling the BIOS entry point. The
* stack will be the exact same as if we were calling the BIOS except that
* the return address is a 32-bit ret to BIOS.VxD. Also CS=DS=ES=SS=Flat
* segment. Thus the BIOS_EXT VxD can pop the return address in a local
* variable (this API will never be reentered) and do stack munging before
* calling its internal function or call BIOS even. All registers except
* eax, which is the return value, must be preserved. The high word of eax
* is discarded by BIOS.VxD.
*/
/*XLATOFF*/
#define BIOS_EXT_Service Declare_Service
/*XLATON*/
/*MACROS*/
Begin_Service_Table(BIOS_EXT, VxD)
BIOS_EXT_Service (_BIOSEXTGetVersion, VxD_CODE)
BIOS_EXT_Service (_BIOSEXTGetHeader, VxD_CODE)
BIOS_EXT_Service (_BIOSEXTCallBIOS, VxD_CODE)
End_Service_Table(BIOS_EXT, VxD)
/*ENDMACROS*/
#define PNPBIOS_SERVICE_GETVERSION 0x000
#define PNPBIOS_SERVICE_SOFTUNDOCK 0x100
#define PNPBIOS_SERVICE_GETDOCKCAPABILITIES 0x200
#define PNPBIOS_SERVICE_GETAPMTABLE 0x300
struct BIOSPARAMSTAG {
DWORD bp_ret;
WORD *bp_pTableSize;
char *bp_pTable;
};
typedef struct BIOSPARAMSTAG BIOSPARAMS;
typedef struct BIOSPARAMSTAG *PBIOSPARAMS;
#define PNPBIOS_ERR_NONE 0x00
#define PNPBIOS_ERR_SUCCESS PNPBIOS_ERR_NONE
#define PNPBIOS_WARN_NOT_SET_STATICALLY 0x7F
#define PNPBIOS_ERR_UNKNOWN_FUNCTION 0x81
#define PNPBIOS_ERR_FUNCTION_NOT_SUPPORTED 0x82
#define PNPBIOS_ERR_INVALID_HANDLE 0x83
#define PNPBIOS_ERR_BAD_PARAMETER 0x84
#define PNPBIOS_ERR_SET_FAILED 0x85
#define PNPBIOS_ERR_EVENTS_NOT_PENDING 0x86
#define PNPBIOS_ERR_SYSTEM_NOT_DOCKED 0x87
#define PNPBIOS_ERR_NO_ISA_PNP_CARDS 0x88
#define PNPBIOS_ERR_CANT_DETERMINE_DOCKING 0x89
#define PNPBIOS_ERR_CHANGE_FAILED_NO_BATTERY 0x8A
#define PNPBIOS_ERR_CHANGE_FAILED_CONFLICT 0x8B
#define PNPBIOS_ERR_BUFFER_TOO_SMALL 0x8C
#define PNPBIOS_ERR_USE_ESCD_SUPPORT 0x8D
#define PNPBIOS_ERR_MS_INTERNAL 0xFE
#define PNPBIOS_DOCK_CAPABILITY_VCR 0x0001
#define PNPBIOS_DOCK_CAPABILITY_TEMPERATURE 0x0006
#define PNPBIOS_DOCK_CAPABILITY_COLD 0x0000
#define PNPBIOS_DOCK_CAPABILITY_WARM 0x0002
#define PNPBIOS_DOCK_CAPABILITY_HOT 0x0004