Freigeben über


Bestimmen, ob es sich bei einer Plattform um eine mobile Plattform oder um einen Desktop handelt

TMM wird nur auf mobilen Computern ausgeführt und wird auf Desktopcomputern automatisch deaktiviert. Hardwarehersteller sollten ihre eigenen proprietären Methoden aktivieren und verwenden, um die Klonansicht auf Desktopcomputern zu öffnen. Sie sollten ermitteln, ob eine Plattform mobil ist, damit sie die Verwendung ihrer proprietären Methoden vermeiden können, um die Klonansicht auf einem mobilen Computer zu öffnen, und stattdessen TMM verwenden.

Hardwareanbieter können den folgenden Code verwenden, um zu bestimmen, ob eine Plattform mobil oder desktops ist. Die Plattform kann dann den entsprechenden Mechanismus verwenden, um in die Klonansicht zu gelangen.

#include <Powrprof.h>   // For GetPwrCapabilities

    BOOL IsMobilePlatform()
    {
        BOOL fIsMobilePlatform = FALSE;

        fIsMobilePlatform = (PlatformRoleMobile == PowerDeterminePlatformRole());

        POWER_PLATFORM_ROLE iRole;

        // Check if the operating system determines 
        // that the computer is a mobile computer.
        iRole = PowerDeterminePlatformRole();

        if (PlatformRoleMobile == iRole)
        {
            fIsMobilePlatform = TRUE;
        }
        else if (PlatformRoleDesktop == iRole) 
        // Can happen when a battery is not plugged into a laptop
        {
            SYSTEM_POWER_CAPABILITIES powerCapabilities;

            if (GetPwrCapabilities(&powerCapabilities))
            {
         // Check if a battery exists, and it is not for a UPS.
         // Note that SystemBatteriesPresent is set on a laptop even if the battery is unplugged.
                fIsMobilePlatform = ((TRUE == powerCapabilities.SystemBatteriesPresent) && (FALSE == powerCapabilities.BatteriesAreShortTerm));
            }
            // GetPwrCapabilities should never fail 
            // However, if it does, leave fReturn == FALSE.
        }

        return fIsMobilePlatform;
    }

Informationen zu den Funktionen, die im vorherigen Code aufgerufen werden, finden Sie in der Microsoft Windows SDK Dokumentation.