Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygentimezone.c
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS system libraries 00004 * PURPOSE: Timezone functions 00005 * FILE: lib/rtl/timezone.c 00006 * PROGRAMER: Eric Kohl 00007 */ 00008 00009 /* INCLUDES *****************************************************************/ 00010 00011 #include <rtl.h> 00012 00013 #define NDEBUG 00014 #include <debug.h> 00015 00016 /* FUNCTIONS ***************************************************************/ 00017 00018 /* 00019 * @implemented 00020 */ 00021 NTSTATUS NTAPI 00022 RtlQueryTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) 00023 { 00024 RTL_QUERY_REGISTRY_TABLE QueryTable[8]; 00025 UNICODE_STRING StandardName; 00026 UNICODE_STRING DaylightName; 00027 NTSTATUS Status; 00028 00029 DPRINT("RtlQueryTimeZoneInformation()\n"); 00030 00031 PAGED_CODE_RTL(); 00032 00033 RtlZeroMemory(QueryTable, 00034 sizeof(QueryTable)); 00035 00036 StandardName.Length = 0; 00037 StandardName.MaximumLength = 32 * sizeof(WCHAR); 00038 StandardName.Buffer = TimeZoneInformation->StandardName; 00039 00040 DaylightName.Length = 0; 00041 DaylightName.MaximumLength = 32 * sizeof(WCHAR); 00042 DaylightName.Buffer = TimeZoneInformation->DaylightName; 00043 00044 QueryTable[0].Name = L"Bias"; 00045 QueryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT; 00046 QueryTable[0].EntryContext = &TimeZoneInformation->Bias; 00047 00048 QueryTable[1].Name = L"Standard Name"; 00049 QueryTable[1].Flags = RTL_QUERY_REGISTRY_DIRECT; 00050 QueryTable[1].EntryContext = &StandardName; 00051 00052 QueryTable[2].Name = L"Standard Bias"; 00053 QueryTable[2].Flags = RTL_QUERY_REGISTRY_DIRECT; 00054 QueryTable[2].EntryContext = &TimeZoneInformation->StandardBias; 00055 00056 QueryTable[3].Name = L"Standard Start"; 00057 QueryTable[3].Flags = RTL_QUERY_REGISTRY_DIRECT; 00058 QueryTable[3].EntryContext = &TimeZoneInformation->StandardDate; 00059 00060 QueryTable[4].Name = L"Daylight Name"; 00061 QueryTable[4].Flags = RTL_QUERY_REGISTRY_DIRECT; 00062 QueryTable[4].EntryContext = &DaylightName; 00063 00064 QueryTable[5].Name = L"Daylight Bias"; 00065 QueryTable[5].Flags = RTL_QUERY_REGISTRY_DIRECT; 00066 QueryTable[5].EntryContext = &TimeZoneInformation->DaylightBias; 00067 00068 QueryTable[6].Name = L"Daylight Start"; 00069 QueryTable[6].Flags = RTL_QUERY_REGISTRY_DIRECT; 00070 QueryTable[6].EntryContext = &TimeZoneInformation->DaylightDate; 00071 00072 Status = RtlQueryRegistryValues(RTL_REGISTRY_CONTROL, 00073 L"TimeZoneInformation", 00074 QueryTable, 00075 NULL, 00076 NULL); 00077 00078 return Status; 00079 } 00080 00081 00082 /* 00083 * @implemented 00084 */ 00085 NTSTATUS NTAPI 00086 RtlSetTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation) 00087 { 00088 SIZE_T Length; 00089 NTSTATUS Status; 00090 00091 DPRINT("RtlSetTimeZoneInformation()\n"); 00092 00093 PAGED_CODE_RTL(); 00094 00095 Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, 00096 L"TimeZoneInformation", 00097 L"Bias", 00098 REG_DWORD, 00099 &TimeZoneInformation->Bias, 00100 sizeof(LONG)); 00101 if (!NT_SUCCESS(Status)) 00102 { 00103 return Status; 00104 } 00105 00106 Length = (wcslen(TimeZoneInformation->StandardName) + 1) * sizeof(WCHAR); 00107 Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, 00108 L"TimeZoneInformation", 00109 L"Standard Name", 00110 REG_SZ, 00111 TimeZoneInformation->StandardName, 00112 (ULONG)Length); 00113 if (!NT_SUCCESS(Status)) 00114 { 00115 return Status; 00116 } 00117 00118 Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, 00119 L"TimeZoneInformation", 00120 L"Standard Bias", 00121 REG_DWORD, 00122 &TimeZoneInformation->StandardBias, 00123 sizeof(LONG)); 00124 if (!NT_SUCCESS(Status)) 00125 { 00126 return Status; 00127 } 00128 00129 Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, 00130 L"TimeZoneInformation", 00131 L"Standard Start", 00132 REG_BINARY, 00133 &TimeZoneInformation->StandardDate, 00134 sizeof(SYSTEMTIME)); 00135 if (!NT_SUCCESS(Status)) 00136 { 00137 return Status; 00138 } 00139 00140 Length = (wcslen(TimeZoneInformation->DaylightName) + 1) * sizeof(WCHAR); 00141 Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, 00142 L"TimeZoneInformation", 00143 L"Daylight Name", 00144 REG_SZ, 00145 TimeZoneInformation->DaylightName, 00146 (ULONG)Length); 00147 if (!NT_SUCCESS(Status)) 00148 { 00149 return Status; 00150 } 00151 00152 Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, 00153 L"TimeZoneInformation", 00154 L"Daylight Bias", 00155 REG_DWORD, 00156 &TimeZoneInformation->DaylightBias, 00157 sizeof(LONG)); 00158 if (!NT_SUCCESS(Status)) 00159 { 00160 return Status; 00161 } 00162 00163 Status = RtlWriteRegistryValue(RTL_REGISTRY_CONTROL, 00164 L"TimeZoneInformation", 00165 L"Daylight Start", 00166 REG_BINARY, 00167 &TimeZoneInformation->DaylightDate, 00168 sizeof(SYSTEMTIME)); 00169 00170 return Status; 00171 } 00172 00173 /* EOF */ Generated on Sun May 27 2012 04:21:05 for ReactOS by
1.7.6.1
|