Déterminer si une plateforme est mobile ou de bureau
TMM s’exécute uniquement sur les ordinateurs mobiles et est automatiquement désactivé sur les ordinateurs de bureau. Les fournisseurs de matériel doivent activer et utiliser leurs propres méthodes propriétaires pour entrer la vue clone sur les ordinateurs de bureau. Ils doivent déterminer si une plateforme est mobile afin d’éviter d’utiliser leurs méthodes propriétaires pour entrer une vue clone sur un ordinateur mobile et utiliser À la place TMM.
Les fournisseurs de matériel peuvent utiliser le code suivant pour déterminer si une plateforme est mobile ou de bureau. La plateforme peut ensuite utiliser le mécanisme approprié pour entrer en mode clone.
#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;
}
Pour plus d’informations sur les fonctions appelées dans le code précédent, consultez la documentation Microsoft Windows SDK.