ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

timezone.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.