プラットフォームがモバイルとデスクトップのどちらであるかの確認
TMM はモバイル コンピューターでのみ実行され、デスクトップ コンピューターでは自動的に無効になります。 ハードウェア ベンダーは、独自の方法を有効にして使用し、デスクトップ コンピューターではクローン ビューに入る必要があります。 モバイル コンピューターでは、独自の方法を使用してクローン ビューに入らずに TMM を使用するように、プラットフォームがモバイルかどうかを判別する必要があります。
ハードウェア ベンダーは、次のコードを使用して、プラットフォームがモバイルかデスクトップかを判別できます。 その後で、プラットフォームは適切なメカニズムを使用してクローン ビューに入ることができます。
#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;
}
前述のコードで呼び出される関数の詳細については、Microsoft Windows SDK のドキュメントを参照してください。