mirror of https://github.com/acidanthera/audk.git
Enable the SE_TIME_ZONE_NAME privilege for NT32 to fix SetTime function test running in Win7
Fix the GetTime implementation to return the correct Daylight value. Signed-off-by: niruiyu Reviewed-by: erictian git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12559 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
32fa3543c9
commit
24e12917a4
|
@ -1,6 +1,6 @@
|
||||||
/**@file
|
/**@file
|
||||||
|
|
||||||
Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -109,7 +109,7 @@ Returns:
|
||||||
|
|
||||||
Time->Daylight = 0;
|
Time->Daylight = 0;
|
||||||
if (TimeZone.StandardDate.wMonth) {
|
if (TimeZone.StandardDate.wMonth) {
|
||||||
Time->Daylight = EFI_TIME_ADJUST_DAYLIGHT;
|
Time->Daylight = (UINT8) TimeZone.StandardDate.wMonth;
|
||||||
}
|
}
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
|
@ -162,7 +162,10 @@ Returns:
|
||||||
gWinNt->GetTimeZoneInformation (&TimeZone);
|
gWinNt->GetTimeZoneInformation (&TimeZone);
|
||||||
TimeZone.StandardDate.wMonth = Time->Daylight;
|
TimeZone.StandardDate.wMonth = Time->Daylight;
|
||||||
TimeZone.Bias = Time->TimeZone;
|
TimeZone.Bias = Time->TimeZone;
|
||||||
gWinNt->SetTimeZoneInformation (&TimeZone);
|
Flag = gWinNt->SetTimeZoneInformation (&TimeZone);
|
||||||
|
if (!Flag) {
|
||||||
|
return EFI_DEVICE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
SystemTime.wYear = Time->Year;
|
SystemTime.wYear = Time->Year;
|
||||||
SystemTime.wMonth = Time->Month;
|
SystemTime.wMonth = Time->Month;
|
||||||
|
|
|
@ -30,7 +30,9 @@ Abstract:
|
||||||
|
|
||||||
#include "SecMain.h"
|
#include "SecMain.h"
|
||||||
|
|
||||||
|
#ifndef SE_TIME_ZONE_NAME
|
||||||
|
#define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege")
|
||||||
|
#endif
|
||||||
|
|
||||||
NT_PEI_LOAD_FILE_PPI mSecNtLoadFilePpi = { SecWinNtPeiLoadFile };
|
NT_PEI_LOAD_FILE_PPI mSecNtLoadFilePpi = { SecWinNtPeiLoadFile };
|
||||||
|
|
||||||
|
@ -155,6 +157,8 @@ Returns:
|
||||||
--*/
|
--*/
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
HANDLE Token;
|
||||||
|
TOKEN_PRIVILEGES TokenPrivileges;
|
||||||
EFI_PHYSICAL_ADDRESS InitialStackMemory;
|
EFI_PHYSICAL_ADDRESS InitialStackMemory;
|
||||||
UINT64 InitialStackMemorySize;
|
UINT64 InitialStackMemorySize;
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
|
@ -168,6 +172,16 @@ Returns:
|
||||||
CHAR16 *FirmwareVolumesStr;
|
CHAR16 *FirmwareVolumesStr;
|
||||||
UINTN *StackPointer;
|
UINTN *StackPointer;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Enable the privilege so that RTC driver can successfully run SetTime()
|
||||||
|
//
|
||||||
|
OpenProcessToken (GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &Token);
|
||||||
|
if (LookupPrivilegeValue(NULL, SE_TIME_ZONE_NAME, &TokenPrivileges.Privileges[0].Luid)) {
|
||||||
|
TokenPrivileges.PrivilegeCount = 1;
|
||||||
|
TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
|
||||||
|
AdjustTokenPrivileges(Token, FALSE, &TokenPrivileges, 0, (PTOKEN_PRIVILEGES) NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
MemorySizeStr = (CHAR16 *) PcdGetPtr (PcdWinNtMemorySizeForSecMain);
|
MemorySizeStr = (CHAR16 *) PcdGetPtr (PcdWinNtMemorySizeForSecMain);
|
||||||
FirmwareVolumesStr = (CHAR16 *) PcdGetPtr (PcdWinNtFirmwareVolume);
|
FirmwareVolumesStr = (CHAR16 *) PcdGetPtr (PcdWinNtFirmwareVolume);
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@
|
||||||
gEfiNt32PkgTokenSpaceGuid.PcdWinNtFirmwareVolume
|
gEfiNt32PkgTokenSpaceGuid.PcdWinNtFirmwareVolume
|
||||||
|
|
||||||
[BuildOptions]
|
[BuildOptions]
|
||||||
MSFT:*_*_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\SecMain.exe" /base:0x10000000 /pdb:"$(BIN_DIR)\SecMain.pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib
|
MSFT:*_*_IA32_DLINK_FLAGS == /out:"$(BIN_DIR)\SecMain.exe" /base:0x10000000 /pdb:"$(BIN_DIR)\SecMain.pdb" /LIBPATH:"$(VCINSTALLDIR)\Lib" /LIBPATH:"$(VCINSTALLDIR)\PlatformSdk\Lib" /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP /OPT:REF /DEBUG /MACHINE:I386 /LTCG Kernel32.lib MSVCRTD.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib
|
||||||
MSFT:*_*_IA32_CC_FLAGS == /nologo /W4 /WX /Gy /c /D UNICODE /Od /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE
|
MSFT:*_*_IA32_CC_FLAGS == /nologo /W4 /WX /Gy /c /D UNICODE /Od /FIAutoGen.h /EHs-c- /GF /Gs8192 /Zi /Gm /D _CRT_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_DEPRECATE
|
||||||
MSFT:*_*_IA32_PP_FLAGS == /nologo /E /TC /FIAutoGen.h
|
MSFT:*_*_IA32_PP_FLAGS == /nologo /E /TC /FIAutoGen.h
|
||||||
MSFT:*_*_IA32_ASM_FLAGS == /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
|
MSFT:*_*_IA32_ASM_FLAGS == /nologo /W3 /WX /c /coff /Cx /Zd /W0 /Zi
|
||||||
|
|
Loading…
Reference in New Issue