VirtualBox

Changeset 80708 in vbox


Ignore:
Timestamp:
Sep 10, 2019 4:34:49 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
133249
Message:

IPRT: Added RTSystemFirmwareXXX API to query the firmware type / UEFI variables. Only very limited support for Windows for now. Work in progress.

Location:
trunk
Files:
3 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/mangling.h

    r80585 r80708  
    22172217# define RTSymlinkRead                                  RT_MANGLER(RTSymlinkRead)
    22182218# define RTSymlinkReadA                                 RT_MANGLER(RTSymlinkReadA)
     2219# define RTSystemFirmwareQueryType                      RT_MANGLER(RTSystemFirmwareQueryType)
     2220# define RTSystemFirmwareValueFree                      RT_MANGLER(RTSystemFirmwareValueFree)
     2221# define RTSystemFirmwareValueGet                       RT_MANGLER(RTSystemFirmwareValueGet)
    22192222# define RTSystemIsInsideVM                             RT_MANGLER(RTSystemIsInsideVM)
    22202223# define RTSystemQueryAvailableRam                      RT_MANGLER(RTSystemQueryAvailableRam)
  • trunk/include/iprt/system.h

    r78939 r80708  
    260260RTDECL(bool) RTSystemIsInsideVM(void);
    261261
     262/**
     263 * Enumeration for defining a system's firmware type.
     264 */
     265typedef enum RTSYSFWTYPE
     266{
     267    /** Unknown firmware. */
     268    RTSYSFWTYPE_UNKNOWN = 0,
     269    /** Firmware is BIOS. */
     270    RTSYSFWTYPE_BIOS,
     271    /** Firmware is UEFI. */
     272    RTSYSFWTYPE_UEFI,
     273    /** The usual 32-bit hack.  */
     274    RTSYSFWTYP_32_BIT_HACK = 0x7fffffff
     275} RTSYSFWTYPE;
     276/** Pointer to a system firmware type. */
     277typedef RTSYSFWTYPE *PRTSYSFWTYPE;
     278
     279/**
     280 * Queries the system's firmware type.
     281 *
     282 * @retval  IPRT status code.
     283 * @param   pFirmwareType       Where to store the firmware type on success.
     284 */
     285RTDECL(int) RTSystemFirmwareQueryType(PRTSYSFWTYPE pFirmwareType);
     286
     287/**
     288 * Enumeration for defining a system firmware value type.
     289 */
     290typedef enum RTSYSFWVALUETYPE
     291{
     292    /** Invalid value type. */
     293    RTSYSFWVALUETYPE_INVALID = 0,
     294    /** Value is of type boolean. */
     295    RTSYSFWVALUETYPE_BOOLEAN,
     296    /** The usual 32-bit hack.  */
     297    RTSYSFWVALUETYPE_32_BIT_HACK = 0x7fffffff
     298} RTSYSFWVALUETYPE;
     299
     300/**
     301 * Structure for keeping a system firmware value.
     302 */
     303typedef struct RTSYSFWVALUE
     304{
     305    /** Value type. */
     306    RTSYSFWVALUETYPE enmType;
     307    union
     308    {
     309        /** Boolean value. */
     310        bool fVal;
     311    } u;
     312} RTSYSFWVALUE;
     313/** Pointer to a system firmware value. */
     314typedef RTSYSFWVALUE *PRTSYSFWVALUE;
     315
     316/**
     317 * Enumeration for a system firmware property.
     318 */
     319typedef enum RTSYSFWPRPOP
     320{
     321    /** Invalid property, do not use. */
     322    RTSYSFWPROP_INVALID = 0,
     323    /** @todo Not yet implemented. */
     324    RTSYSFWPROP_BOOT_CURRENT,
     325    /** @todo Not yet implemented. */
     326    RTSYSFWPROP_BOOT_ORDER,
     327    /** @todo Not yet implemented. */
     328    RTSYSFWPROP_BOOT_NEXT,
     329    /** boolean: Whether Secure Boot is enabled or not. */
     330    RTSYSFWPROP_SECURE_BOOT,
     331    /** @todo Not yet implemented. */
     332    RTSYSFWPROP_TIMEOUT,
     333    /** @todo Not yet implemented. */
     334    RTSYSFWPROP_PLATFORM_LANG,
     335    /** The usual 32-bit hack.  */
     336    RTSYSFWPROP_32_BIT_HACK = 0x7fffffff
     337} RTSYSFWPROP;
     338
     339RTDECL(int) RTSystemFirmwareValueGet(RTSYSFWPROP enmProp, PRTSYSFWVALUE *ppValue);
     340
     341RTDECL(void) RTSystemFirmwareValueFree(PRTSYSFWVALUE pValue);
     342
    262343#ifdef RT_OS_WINDOWS
    263344
  • trunk/src/VBox/Runtime/Makefile.kmk

    r80204 r80708  
    873873        r3/win/RTSystemShutdown-win.cpp \
    874874        r3/win/RTSystemQueryDmiString-win.cpp \
     875        r3/win/RTSystemFirmware-win.cpp \
    875876        r3/win/RTSystemQueryTotalRam-win.cpp \
    876877        r3/win/RTTimeZoneGetCurrent-win.cpp \
     
    933934        generic/RTSemEventMultiWait-2-ex-generic.cpp \
    934935        generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
     936        generic/RTSystemFirmware-generic.cpp \
    935937        generic/RTTimeLocalNow-generic.cpp \
    936938        generic/RTTimerCreate-generic.cpp \
     
    10431045        generic/RTRandAdvCreateSystemTruer-generic.cpp \
    10441046        generic/RTSystemQueryDmiString-generic.cpp \
     1047        generic/RTSystemFirmware-generic.cpp \
    10451048        generic/RTSystemShutdown-generic.cpp \
    10461049        generic/RTTimeLocalNow-generic.cpp \
     
    11471150        r3/darwin/rtProcInitExePath-darwin.cpp \
    11481151        r3/darwin/RTSystemQueryDmiString-darwin.cpp \
     1152        r3/generic/RTSystemFirmware-generic.cpp \
    11491153        r3/darwin/sched-darwin.cpp \
    11501154        r3/darwin/systemmem-darwin.cpp \
     
    12141218        generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
    12151219        generic/RTSystemQueryDmiString-generic.cpp \
     1220        generic/RTSystemFirmware-generic.cpp \
    12161221        generic/RTSystemShutdown-generic.cpp \
    12171222        generic/RTThreadGetAffinity-stub-generic.cpp \
     
    12971302        generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
    12981303        generic/RTSystemQueryDmiString-generic.cpp \
     1304        generic/RTSystemFirmware-generic.cpp \
    12991305        generic/RTSystemShutdown-generic.cpp \
    13001306        generic/RTThreadGetAffinity-stub-generic.cpp \
     
    14511457        common/string/memrchr.asm \
    14521458        r3/solaris/coredumper-solaris.cpp \
    1453         r3/solaris/RTSystemQueryDmiString-solaris.cpp
     1459        r3/solaris/RTSystemQueryDmiString-solaris.cpp \
     1460        r3/generic/RTSystemFirmware-generic.cpp
    14541461RuntimeR3_SOURCES.solaris.x86 = \
    14551462        common/string/memrchr.asm \
    14561463        r3/solaris/coredumper-solaris.cpp \
    1457         r3/solaris/RTSystemQueryDmiString-solaris.cpp
     1464        r3/solaris/RTSystemQueryDmiString-solaris.cpp \
     1465        r3/generic/RTSystemFirmware-generic.cpp
    14581466RuntimeR3_SOURCES.solaris.sparc32 = \
    14591467        common/string/memrchr.cpp \
    1460         generic/RTSystemQueryDmiString-generic.cpp
     1468        generic/RTSystemQueryDmiString-generic.cpp \
     1469        generic/RTSystemFirmware-generic.cpp
    14611470RuntimeR3_SOURCES.solaris.sparc64 = \
    14621471        common/string/memrchr.cpp \
    1463         generic/RTSystemQueryDmiString-generic.cpp
     1472        generic/RTSystemQueryDmiString-generic.cpp \
     1473        generic/RTSystemFirmware-generic.cpp
    14641474
    14651475RuntimeR3_SOURCES.haiku = \
     
    39914001x509-template.o x509-template.obj: x509-core.o x509-asn1-decoder.o x509-sanity.o x509-init.o
    39924002pkcs7-template.o pkcs7-template.obj: pkcs7-core.o pkcs7-asn1-decoder.o pkcs7-sanity.o pkcs7-init.o
    3993 
  • trunk/src/VBox/Runtime/testcase/Makefile.kmk

    r80665 r80708  
    127127        tstRTSymlink \
    128128        tstRTSystemQueryDmi \
     129        tstRTSystemQueryFirmware \
    129130        tstRTSystemQueryOsInfo \
    130131        tstRTTcp-1 \
     
    656657tstRTSystemQueryDmi_SOURCES = tstRTSystemQueryDmi.cpp
    657658
     659tstRTSystemQueryFirmware_TEMPLATE = VBOXR3TSTEXE
     660tstRTSystemQueryFirmware_SOURCES = tstRTSystemQueryFirmware.cpp
     661
    658662tstRTSystemQueryOsInfo_TEMPLATE = VBOXR3TSTEXE
    659663tstRTSystemQueryOsInfo_SOURCES = tstRTSystemQueryOsInfo.cpp
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette