ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
May 2005
----- 2025 -----
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
26 participants
814 discussions
Start a n
N
ew thread
[weiden] 14978: it's valid to pass lpTargetHandle = NULL to DuplicateHandle()
by weiden@svn.reactos.com
it's valid to pass lpTargetHandle = NULL to DuplicateHandle() Modified: trunk/reactos/ntoskrnl/ob/handle.c _____ Modified: trunk/reactos/ntoskrnl/ob/handle.c --- trunk/reactos/ntoskrnl/ob/handle.c 2005-05-04 20:38:43 UTC (rev 14977) +++ trunk/reactos/ntoskrnl/ob/handle.c 2005-05-04 21:23:13 UTC (rev 14978) @@ -347,7 +347,7 @@ NtDuplicateObject (IN HANDLE SourceProcessHandle, IN HANDLE SourceHandle, IN HANDLE TargetProcessHandle, - OUT PHANDLE TargetHandle, + OUT
…
[View More]
PHANDLE TargetHandle OPTIONAL, IN ACCESS_MASK DesiredAccess, IN BOOLEAN InheritHandle, ULONG Options) @@ -386,7 +386,7 @@ PreviousMode = ExGetPreviousMode(); - if(PreviousMode != KernelMode) + if(TargetHandle != NULL && PreviousMode != KernelMode) { _SEH_TRY { @@ -488,7 +488,7 @@ ObDereferenceObject(TargetProcess); ObDereferenceObject(SourceProcess); - if(NT_SUCCESS(Status)) + if(NT_SUCCESS(Status) && TargetHandle != NULL) { _SEH_TRY {
[View Less]
20 years, 1 month
1
0
0
0
[gvg] 14977: Fix GDB stub:
by gvg@svn.reactos.com
Fix GDB stub: - Initialize WrapperTable routines as early as possible - Initialize debug port (hard coded to COM2, 115200 baud for now) - Don't limit runnable thread on startup Modified: trunk/reactos/ntoskrnl/kd/wrappers/gdbstub.c _____ Modified: trunk/reactos/ntoskrnl/kd/wrappers/gdbstub.c --- trunk/reactos/ntoskrnl/kd/wrappers/gdbstub.c 2005-05-04 19:29:28 UTC (rev 14976) +++ trunk/reactos/ntoskrnl/kd/wrappers/gdbstub.c 2005-05-04 20:38:43 UTC (rev 14977) @@ -107,7 +107,7 @@ static
…
[View More]
PETHREAD GspEnumThread; extern LIST_ENTRY PsActiveProcessHead; -KD_PORT_INFORMATION GdbPortInfo; +KD_PORT_INFORMATION GdbPortInfo = { 2, 115200, 0 }; /* FIXME hardcoded for COM2, 115200 baud */ /* Number of Registers. */ #define NUMREGS 16 @@ -714,19 +714,24 @@ { case 'c': /* Run thread */ if (GspFindThread (ptr, &ThreadInfo)) - { - GspOutBuffer[0] = 'O'; - GspOutBuffer[1] = 'K'; + { + GspOutBuffer[0] = 'O'; + GspOutBuffer[1] = 'K'; - if(GspRunThread) ObDereferenceObject(GspRunThread); - - GspRunThread = ThreadInfo; - if (GspRunThread) ObReferenceObject(GspRunThread); - } - else - { - GspOutBuffer[0] = 'E'; - } + if (NULL != GspRunThread) + { + ObDereferenceObject(GspRunThread); + } + GspRunThread = ThreadInfo; + if (NULL != GspRunThread) + { + ObReferenceObject(GspRunThread); + } + } + else + { + GspOutBuffer[0] = 'E'; + } break; case 'g': /* Debug thread */ if (GspFindThread (ptr, &ThreadInfo)) @@ -1548,6 +1553,10 @@ if (BootPhase == 0) { + /* Write out the functions that we support for now */ + WrapperTable->KdpInitRoutine = KdpGdbStubInit; + WrapperTable->KdpPrintRoutine = KdpGdbDebugPrint; + WrapperTable->KdpExceptionRoutine = KdpGdbEnterDebuggerException; /* Initialize the Port */ KdPortInitializeEx(&GdbPortInfo, 0, 0); @@ -1555,17 +1564,10 @@ else if (BootPhase == 1) { GspInitialized = TRUE; - GspRunThread = PsGetCurrentThread(); - - ObReferenceObject(GspRunThread); + GspRunThread = NULL; GspDbgThread = NULL; GspEnumThread = NULL; - - /* Write out the functions that we support for now */ - WrapperTable->KdpInitRoutine = KdpGdbStubInit; - WrapperTable->KdpPrintRoutine = KdpGdbDebugPrint; - WrapperTable->KdpExceptionRoutine = KdpGdbEnterDebuggerException; HalDisplayString("Waiting for GDB to attach\n"); DbgPrint("Module 'hal.dll' loaded at 0x%.08x.\n", LdrHalBase);
[View Less]
20 years, 1 month
1
0
0
0
[weiden] 14976: make correct use of tchar.h in taskmgr and build it as unicode by default
by weiden@svn.reactos.com
make correct use of tchar.h in taskmgr and build it as unicode by default Modified: trunk/reactos/include/tchar.h Modified: trunk/reactos/subsys/system/taskmgr/dbgchnl.c Modified: trunk/reactos/subsys/system/taskmgr/makefile Modified: trunk/reactos/subsys/system/taskmgr/perfpage.c Modified: trunk/reactos/subsys/system/taskmgr/run.c Modified: trunk/reactos/subsys/system/taskmgr/run.h _____ Modified: trunk/reactos/include/tchar.h --- trunk/reactos/include/tchar.h 2005-05-04 18:53:47 UTC (rev
…
[View More]
14975) +++ trunk/reactos/include/tchar.h 2005-05-04 19:29:28 UTC (rev 14976) @@ -6,7 +6,7 @@ #ifdef _UNICODE - #define __TEXT(q) L##q + #define __T(q) L##q #ifndef _TCHAR_DEFINED #ifndef RC_INVOKED @@ -203,7 +203,7 @@ #else - #define __TEXT(q) q + #define __T(q) q #ifndef _TCHAR_DEFINED #ifndef RC_INVOKED @@ -403,8 +403,8 @@ -#define _TEXT(x) __TEXT(x) -#define _T(x) __TEXT(x) +#define _TEXT(x) __T(x) +#define _T(x) __T(x) #endif /* _TCHAR_H_ */ _____ Modified: trunk/reactos/subsys/system/taskmgr/dbgchnl.c --- trunk/reactos/subsys/system/taskmgr/dbgchnl.c 2005-05-04 18:53:47 UTC (rev 14975) +++ trunk/reactos/subsys/system/taskmgr/dbgchnl.c 2005-05-04 19:29:28 UTC (rev 14976) @@ -69,11 +69,11 @@ return dwProcessId; } -static int list_channel_CB(HANDLE hProcess, void* addr, char* buffer, void* user) +static int list_channel_CB(HANDLE hProcess, void* addr, TCHAR* buffer, void* user) { int j; - char val[2]; - LVITEMA lvi; + TCHAR val[2]; + LVITEM lvi; int index; HWND hChannelLV = (HWND)user; @@ -85,10 +85,10 @@ index = ListView_InsertItem(hChannelLV, &lvi); if (index == -1) return 0; - val[1] = '\0'; + val[1] = TEXT('\0'); for (j = 0; j < 4; j++) { - val[0] = (buffer[0] & (1 << j)) ? 'x' : ' '; + val[0] = (buffer[0] & (1 << j)) ? TEXT('x') : TEXT(' '); ListView_SetItemText(hChannelLV, index, j + 1, val); } return 1; @@ -96,7 +96,7 @@ struct cce_user { - const char* name; /* channel to look for */ + LPCTSTR name; /* channel to look for */ unsigned value, mask; /* how to change channel */ unsigned done; /* number of successful changes */ unsigned notdone; /* number of unsuccessful changes */ @@ -107,11 +107,11 @@ * * Callback used for changing a given channel attributes */ -static int change_channel_CB(HANDLE hProcess, void* addr, char* buffer, void* pmt) +static int change_channel_CB(HANDLE hProcess, void* addr, TCHAR* buffer, void* pmt) { struct cce_user* user = (struct cce_user*)pmt; - if (!user->name || !strcmp(buffer + 1, user->name)) + if (!user->name || !_tcscmp(buffer + 1, user->name)) { buffer[0] = (buffer[0] & ~user->mask) | (user->value & user->mask); if (WriteProcessMemory(hProcess, addr, buffer, 1, NULL)) @@ -222,7 +222,7 @@ int nb_channels; }; -typedef int (*EnumChannelCB)(HANDLE, void*, char*, void*); +typedef int (*EnumChannelCB)(HANDLE, void*, TCHAR*, void*); /****************************************************************** * enum_channel @@ -235,15 +235,15 @@ struct dll_option_layout dol; int i, j, ret = 1; void* buf_addr; - char buffer[32]; + TCHAR buffer[32]; void* addr; - const char** cache = NULL; + const TCHAR** cache = NULL; unsigned num_cache, used_cache; addr = get_symbol(hProcess, "first_dll", "libwine.so"); if (!addr) return -1; if (unique) - cache = HeapAlloc(GetProcessHeap(), 0, (num_cache = 32) * sizeof(char*)); + cache = HeapAlloc(GetProcessHeap(), 0, (num_cache = 32) * sizeof(TCHAR*)); else num_cache = 0; used_cache = 0; @@ -265,12 +265,12 @@ * them again */ for (j = 0; j < used_cache; j++) - if (!strcmp(cache[j], buffer + 1)) break; + if (!_tcscmp(cache[j], buffer + 1)) break; if (j != used_cache) continue; if (used_cache == num_cache) - cache = HeapReAlloc(GetProcessHeap(), 0, cache, (num_cache *= 2) * sizeof(char*)); - cache[used_cache++] = strcpy(HeapAlloc(GetProcessHeap(), 0, strlen(buffer + 1) + 1), - buffer + 1); + cache = HeapReAlloc(GetProcessHeap(), 0, cache, (num_cache *= 2) * sizeof(TCHAR*)); + cache[used_cache++] = _tcscpy(HeapAlloc(GetProcessHeap(), 0, (_tcslen(buffer + 1) + 1) * sizeof(TCHAR)), + buffer + 1); } ret = ce(hProcess, buf_addr, buffer, user); } @@ -278,7 +278,7 @@ } if (unique) { - for (j = 0; j < used_cache; j++) HeapFree(GetProcessHeap(), 0, (char*)cache[j]); + for (j = 0; j < used_cache; j++) HeapFree(GetProcessHeap(), 0, (TCHAR*)cache[j]); HeapFree(GetProcessHeap(), 0, cache); } return 0; @@ -365,13 +365,13 @@ ListView_GetItemText(hChannelLV, lhti.iItem, 0, name, sizeof(name) / sizeof(name[0])); ListView_GetItemText(hChannelLV, lhti.iItem, lhti.iSubItem, val, sizeof(val) / sizeof(val[0])); user.name = name; - user.value = (val[0] == 'x') ? 0 : bitmask; + user.value = (val[0] == TEXT('x')) ? 0 : bitmask; user.mask = bitmask; user.done = user.notdone = 0; enum_channel(hProcess, change_channel_CB, &user, FALSE); if (user.done) { - val[0] ^= ('x' ^ ' '); + val[0] ^= (TEXT('x') ^ TEXT(' ')); ListView_SetItemText(hChannelLV, lhti.iItem, lhti.iSubItem, val); } if (user.notdone) _____ Modified: trunk/reactos/subsys/system/taskmgr/makefile --- trunk/reactos/subsys/system/taskmgr/makefile 2005-05-04 18:53:47 UTC (rev 14975) +++ trunk/reactos/subsys/system/taskmgr/makefile 2005-05-04 19:29:28 UTC (rev 14976) @@ -16,7 +16,7 @@ TARGET_PCH = precomp.h -TARGET_CFLAGS = -Werror -Wall -DDBG -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -D__USE_W32API +TARGET_CFLAGS = -Werror -Wall -DDBG -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -D__USE_W32API -DUNICODE -D_UNICODE TARGET_SDKLIBS = ntdll.a kernel32.a user32.a gdi32.a comctl32.a _____ Modified: trunk/reactos/subsys/system/taskmgr/perfpage.c --- trunk/reactos/subsys/system/taskmgr/perfpage.c 2005-05-04 18:53:47 UTC (rev 14975) +++ trunk/reactos/subsys/system/taskmgr/perfpage.c 2005-05-04 19:29:28 UTC (rev 14976) @@ -355,11 +355,11 @@ CommitChargeTotal = PerfDataGetCommitChargeTotalK(); CommitChargeLimit = PerfDataGetCommitChargeLimitK(); CommitChargePeak = PerfDataGetCommitChargePeakK(); - _ultoa(CommitChargeTotal, Text, 10); + _ultot(CommitChargeTotal, Text, 10); SetWindowText(hPerformancePageCommitChargeTotalEdit, Text); - _ultoa(CommitChargeLimit, Text, 10); + _ultot(CommitChargeLimit, Text, 10); SetWindowText(hPerformancePageCommitChargeLimitEdit, Text); - _ultoa(CommitChargePeak, Text, 10); + _ultot(CommitChargePeak, Text, 10); SetWindowText(hPerformancePageCommitChargePeakEdit, Text); wsprintf(Text, szMemUsage, CommitChargeTotal, CommitChargeLimit); SendMessage(hStatusWnd, SB_SETTEXT, 2, (LPARAM)Text); @@ -370,11 +370,11 @@ KernelMemoryTotal = PerfDataGetKernelMemoryTotalK(); KernelMemoryPaged = PerfDataGetKernelMemoryPagedK(); KernelMemoryNonPaged = PerfDataGetKernelMemoryNonPagedK(); - _ultoa(KernelMemoryTotal, Text, 10); + _ultot(KernelMemoryTotal, Text, 10); SetWindowText(hPerformancePageKernelMemoryTotalEdit, Text); - _ultoa(KernelMemoryPaged, Text, 10); + _ultot(KernelMemoryPaged, Text, 10); SetWindowText(hPerformancePageKernelMemoryPagedEdit, Text); - _ultoa(KernelMemoryNonPaged, Text, 10); + _ultot(KernelMemoryNonPaged, Text, 10); SetWindowText(hPerformancePageKernelMemoryNonPagedEdit, Text); /* @@ -383,11 +383,11 @@ PhysicalMemoryTotal = PerfDataGetPhysicalMemoryTotalK(); PhysicalMemoryAvailable = PerfDataGetPhysicalMemoryAvailableK(); PhysicalMemorySystemCache = PerfDataGetPhysicalMemorySystemCacheK(); - _ultoa(PhysicalMemoryTotal, Text, 10); + _ultot(PhysicalMemoryTotal, Text, 10); SetWindowText(hPerformancePagePhysicalMemoryTotalEdit, Text); - _ultoa(PhysicalMemoryAvailable, Text, 10); + _ultot(PhysicalMemoryAvailable, Text, 10); SetWindowText(hPerformancePagePhysicalMemoryAvailableEdit, Text); - _ultoa(PhysicalMemorySystemCache, Text, 10); + _ultot(PhysicalMemorySystemCache, Text, 10); SetWindowText(hPerformancePagePhysicalMemorySystemCacheEdit, Text); /* @@ -396,11 +396,11 @@ TotalHandles = PerfDataGetSystemHandleCount(); TotalThreads = PerfDataGetTotalThreadCount(); TotalProcesses = PerfDataGetProcessCount(); - _ultoa(TotalHandles, Text, 10); + _ultot(TotalHandles, Text, 10); SetWindowText(hPerformancePageTotalsHandleCountEdit, Text); - _ultoa(TotalThreads, Text, 10); + _ultot(TotalThreads, Text, 10); SetWindowText(hPerformancePageTotalsThreadCountEdit, Text); - _ultoa(TotalProcesses, Text, 10); + _ultot(TotalProcesses, Text, 10); SetWindowText(hPerformancePageTotalsProcessCountEdit, Text); /* _____ Modified: trunk/reactos/subsys/system/taskmgr/run.c --- trunk/reactos/subsys/system/taskmgr/run.c 2005-05-04 18:53:47 UTC (rev 14975) +++ trunk/reactos/subsys/system/taskmgr/run.c 2005-05-04 19:29:28 UTC (rev 14976) @@ -27,38 +27,43 @@ { HMODULE hShell32; RUNFILEDLG RunFileDlg; - OSVERSIONINFO versionInfo; - WCHAR wTitle[40]; - WCHAR wText[256]; - TCHAR szTemp[256]; - char szTitle[40]; - char szText[256]; + TCHAR szTitle[40]; + TCHAR szText[256]; - /* Load language string from resource file */ - LoadString(hInst, IDS_CREATENEWTASK, szTemp, 40); - strcpy(szTitle,szTemp); + /* Load language strings from resource file */ + LoadString(hInst, IDS_CREATENEWTASK, szTitle, sizeof(szTitle) / sizeof(szTitle[0])); + LoadString(hInst, IDS_CREATENEWTASK_DESC, szText, sizeof(szText) / sizeof(szText[0])); - LoadString(hInst, IDS_CREATENEWTASK_DESC, szTemp, 256); - strcpy(szText,szTemp); - hShell32 = LoadLibrary(_T("SHELL32.DLL")); - RunFileDlg = (RUNFILEDLG)(FARPROC)GetProcAddress(hShell32, (char*)((long)0x3D)); + RunFileDlg = (RUNFILEDLG)(FARPROC)GetProcAddress(hShell32, (LPCSTR)0x3D); /* Show "Run..." dialog */ if (RunFileDlg) { - versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&versionInfo); - - if (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) +#ifndef UNICODE + if (GetVersion() < 0x80000000) { - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szTitle, -1, wTitle, 40); - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szText, -1, wText, 256); - RunFileDlg(hMainWnd, 0, NULL, (LPCSTR)wTitle, (LPCSTR)wText, RFF_CALCDIRECTORY); + WCHAR wTitle[40]; + WCHAR wText[256]; + + /* RunFileDlg is always unicode on NT systems, convert the ansi + strings to unicode */ + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szTitle, -1, wTitle, sizeof(szTitle) / sizeof(szTitle[0])); + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szText, -1, wText, sizeof(szText) / sizeof(szText[0])); + + RunFileDlg(hMainWnd, 0, NULL, wTitle, wText, RFF_CALCDIRECTORY); } else - RunFileDlg(hMainWnd, 0, NULL, szTitle, szText, RFF_CALCDIRECTORY); + { + /* RunFileDlg is ansi on win 9x systems */ + RunFileDlg(hMainWnd, 0, NULL, (LPCWSTR)szTitle, (LPCWSTR)szText, RFF_CALCDIRECTORY); + } +#else + /* NOTE - don't check whether running on win 9x or NT, let's just + assume that a unicode build only runs on NT */ + RunFileDlg(hMainWnd, 0, NULL, szTitle, szText, RFF_CALCDIRECTORY); +#endif } FreeLibrary(hShell32); _____ Modified: trunk/reactos/subsys/system/taskmgr/run.h --- trunk/reactos/subsys/system/taskmgr/run.h 2005-05-04 18:53:47 UTC (rev 14975) +++ trunk/reactos/subsys/system/taskmgr/run.h 2005-05-04 19:29:28 UTC (rev 14976) @@ -36,9 +36,9 @@ typedef void (WINAPI *RUNFILEDLG)( HWND hwndOwner, HICON hIcon, -LPCSTR lpstrDirectory, -LPCSTR lpstrTitle, -LPCSTR lpstrDescription, +LPCWSTR lpstrDirectory, +LPCWSTR lpstrTitle, +LPCWSTR lpstrDescription, UINT uFlags); /*
[View Less]
20 years, 1 month
1
0
0
0
[mbosma] 14975: Steven Wilson: update tlist to use new process info struct names
by mbosma@svn.reactos.com
Steven Wilson: update tlist to use new process info struct names Modified: trunk/rosapps/sysutils/tlist/tlist.c _____ Modified: trunk/rosapps/sysutils/tlist/tlist.c --- trunk/rosapps/sysutils/tlist/tlist.c 2005-05-04 18:10:12 UTC (rev 14974) +++ trunk/rosapps/sysutils/tlist/tlist.c 2005-05-04 18:53:47 UTC (rev 14975) @@ -107,8 +107,8 @@ int STDCALL ProcessHasDescendants ( - ULONG Pid, - PSYSTEM_PROCESSES pInfo + HANDLE Pid, +
…
[View More]
PSYSTEM_PROCESS_INFORMATION pInfo ) { LONG Count = 0; @@ -116,16 +116,16 @@ if (NULL == pInfo) return 0; do { - if (ALREADY_PROCESSED != pInfo->InheritedFromProcessId) + if (ALREADY_PROCESSED != (DWORD)pInfo->InheritedFromUniqueProcessId) { - if ((Pid != pInfo->ProcessId) && (Pid == pInfo->InheritedFromProcessId)) + if ((Pid != (HANDLE)pInfo->UniqueProcessId) && (Pid == (HANDLE)pInfo->InheritedFromUniqueProcessId)) { ++ Count; } } - pInfo = (PSYSTEM_PROCESSES)((PBYTE)pInfo + pInfo->NextEntryDelta); + pInfo = (PSYSTEM_PROCESS_INFORMATION)((PBYTE)pInfo + pInfo->NextEntryOffset); - } while (0 != pInfo->NextEntryDelta); + } while (0 != pInfo->NextEntryOffset); return Count; } @@ -133,18 +133,18 @@ BOOL STDCALL GetProcessInfo ( - PSYSTEM_PROCESSES pInfo, + PSYSTEM_PROCESS_INFORMATION pInfo, LPWSTR * Module, LPWSTR * Title ) { - *Module = (pInfo->ProcessName.Length ? pInfo->ProcessName.Buffer : L"System process"); + *Module = (pInfo->ImageName.Length ? pInfo->ImageName.Buffer : L"System process"); *Title = L""; /* TODO: check if the process has any window */ return TRUE; } int STDCALL PrintProcessInfoDepth ( - PSYSTEM_PROCESSES pInfo, + PSYSTEM_PROCESS_INFORMATION pInfo, LONG Depth ) { @@ -157,8 +157,8 @@ wprintf ( L"%s (%d, %d) %s\n", Module, - pInfo->ProcessId, - pInfo->InheritedFromProcessId, + pInfo->UniqueProcessId, + pInfo->InheritedFromUniqueProcessId, Title ); return EXIT_SUCCESS; @@ -166,25 +166,25 @@ int STDCALL PrintProcessAndDescendants ( - PSYSTEM_PROCESSES pInfo, - PSYSTEM_PROCESSES pInfoBase, + PSYSTEM_PROCESS_INFORMATION pInfo, + PSYSTEM_PROCESS_INFORMATION pInfoBase, LONG Depth ) { - DWORD Pid = 0; + HANDLE Pid = 0; if (NULL == pInfo) return EXIT_FAILURE; /* Print current pInfo process */ PrintProcessInfoDepth (pInfo, Depth ++); - pInfo->InheritedFromProcessId = ALREADY_PROCESSED; + pInfo->InheritedFromUniqueProcessId = (HANDLE)ALREADY_PROCESSED; /* Save current process' PID */ - Pid = pInfo->ProcessId; + Pid = pInfo->UniqueProcessId; /* Scan and print possible children */ do { - if (ALREADY_PROCESSED != pInfo->InheritedFromProcessId) + if (ALREADY_PROCESSED != (DWORD)pInfo->InheritedFromUniqueProcessId) { - if (Pid == pInfo->InheritedFromProcessId) + if (Pid == pInfo->InheritedFromUniqueProcessId) { if (ProcessHasDescendants (Pid, pInfoBase)) { @@ -197,21 +197,21 @@ else { PrintProcessInfoDepth (pInfo, Depth); - pInfo->InheritedFromProcessId = ALREADY_PROCESSED; + pInfo->InheritedFromUniqueProcessId = (HANDLE)ALREADY_PROCESSED; } } } - pInfo = (PSYSTEM_PROCESSES)((PBYTE)pInfo + pInfo->NextEntryDelta); + pInfo = (PSYSTEM_PROCESS_INFORMATION)((PBYTE)pInfo + pInfo->NextEntryOffset); - } while (0 != pInfo->NextEntryDelta); + } while (0 != pInfo->NextEntryOffset); return EXIT_SUCCESS; } int STDCALL PrintProcessList (BOOL DisplayTree) { - PSYSTEM_PROCESSES pInfo = NULL; - PSYSTEM_PROCESSES pInfoBase = NULL; + PSYSTEM_PROCESS_INFORMATION pInfo = NULL; + PSYSTEM_PROCESS_INFORMATION pInfoBase = NULL; LONG Length = 0; LPWSTR Module = L""; LPWSTR Title = L""; @@ -228,15 +228,15 @@ GetProcessInfo (pInfo, & Module, & Title); wprintf ( L"%4d %-16s %s\n", - pInfo->ProcessId, + pInfo->UniqueProcessId, Module, Title, - pInfo->InheritedFromProcessId + pInfo->InheritedFromUniqueProcessId ); } else { - if (ALREADY_PROCESSED != pInfo->InheritedFromProcessId) + if (ALREADY_PROCESSED != (DWORD)pInfo->InheritedFromUniqueProcessId) { PrintProcessAndDescendants (pInfo, pInfoBase, 0); } @@ -251,24 +251,24 @@ } -int STDCALL PrintThreads (PSYSTEM_PROCESSES pInfo) +int STDCALL PrintThreads (PSYSTEM_PROCESS_INFORMATION pInfo) { - ULONG i = 0; - NTSTATUS Status = STATUS_SUCCESS; - HANDLE hThread = INVALID_HANDLE_VALUE; - OBJECT_ATTRIBUTES Oa = {0}; - PVOID Win32StartAddress = NULL; - THREAD_BASIC_INFORMATION tInfo = {0}; - ULONG ReturnLength = 0; - PSYSTEM_THREADS CurThread; + ULONG i = 0; + NTSTATUS Status = STATUS_SUCCESS; + HANDLE hThread = INVALID_HANDLE_VALUE; + OBJECT_ATTRIBUTES Oa = {0}; + PVOID Win32StartAddress = NULL; + THREAD_BASIC_INFORMATION tInfo = {0}; + ULONG ReturnLength = 0; + PSYSTEM_THREAD_INFORMATION CurThread; if (NULL == pInfo) return EXIT_FAILURE; CurThread = PsaWalkFirstThread(pInfo); - wprintf (L" NumberOfThreads: %d\n", pInfo->ThreadCount); + wprintf (L" NumberOfThreads: %d\n", pInfo->NumberOfThreads); - for (i = 0; i < pInfo->ThreadCount; i ++, CurThread = PsaWalkNextThread(CurThread)) + for (i = 0; i < pInfo->NumberOfThreads; i ++, CurThread = PsaWalkNextThread(CurThread)) { Status = NtOpenThread ( & hThread, @@ -314,7 +314,7 @@ CurThread->ClientId.UniqueThread, Win32StartAddress, 0 /* FIXME: ((PTEB) tInfo.TebBaseAddress)->LastErrorValue */, - ThreadStateName[CurThread->State] + ThreadStateName[CurThread->ThreadState] ); } return EXIT_SUCCESS; @@ -326,10 +326,10 @@ return EXIT_SUCCESS; } -PSYSTEM_PROCESSES STDCALL +PSYSTEM_PROCESS_INFORMATION STDCALL GetProcessInfoPid ( - PSYSTEM_PROCESSES pInfoBase, - DWORD Pid + PSYSTEM_PROCESS_INFORMATION pInfoBase, + HANDLE Pid ) { if (NULL == pInfoBase) return NULL; @@ -338,7 +338,7 @@ while(pInfoBase) { - if (Pid == pInfoBase->ProcessId) + if (Pid == pInfoBase->UniqueProcessId) { return pInfoBase; } @@ -375,8 +375,8 @@ ULONG ReturnLength = 0; PROCESS_BASIC_INFORMATION PsBasic; VM_COUNTERS PsVm; - PSYSTEM_PROCESSES pInfo = NULL; - PSYSTEM_PROCESSES pInfoBase = NULL; + PSYSTEM_PROCESS_INFORMATION pInfo = NULL; + PSYSTEM_PROCESS_INFORMATION pInfoBase = NULL; LONG pInfoBaseLength = 0; LPWSTR Module = L""; LPWSTR Title = L""; @@ -407,7 +407,7 @@ if (!NT_SUCCESS(PsaCaptureProcessesAndThreads (&pInfoBase))) return EXIT_FAILURE; - pInfo = GetProcessInfoPid (pInfoBase, (DWORD) ClientId.UniqueProcess); + pInfo = GetProcessInfoPid (pInfoBase, ClientId.UniqueProcess); if (NULL == pInfo) return EXIT_FAILURE; GetProcessInfo (pInfo, & Module, & Title);
[View Less]
20 years, 1 month
1
0
0
0
[ros-diffs] [greatlrd] 14974: David Nordenberg: Swedish translation, proofread by Andreas Bjerkeholt and small change from Kris Engeman
by greatlrd@svn.reactos.com
David Nordenberg: Swedish translation, proofread by Andreas Bjerkeholt and small change from Kris Engeman Added: trunk/reactos/subsys/system/winlogon/Sv.rc Modified: trunk/reactos/subsys/system/winlogon/winlogon.rc _____ Added: trunk/reactos/subsys/system/winlogon/Sv.rc --- trunk/reactos/subsys/system/winlogon/Sv.rc 2005-05-04 17:59:36 UTC (rev 14973) +++ trunk/reactos/subsys/system/winlogon/Sv.rc 2005-05-04 18:10:12 UTC (rev 14974) @@ -0,0 +1,47 @@ +//Swedish resources by David
…
[View More]
Nordenberg 2005-04-29 + +LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT + +IDD_SHUTDOWNCOMPUTER DIALOG 45, 22, 164, 52 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Stõng av datorn" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Du kan nu stõnga av datorn.", IDC_SHUTDOWNCOMPUTER, 31, 13, 132, 8 + ICON IDI_WINLOGON, IDC_SHTDOWNICON, 6, 7, 18, 20 + DEFPUSHBUTTON "&Starta om", IDC_BTNSHTDOWNCOMPUTER, 62, 32, 40, 14 +END + +IDD_GINALOADFAILED DIALOG 58, 83, 231, 119 +STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Anvõndargrõnssnittet kunde inte starta" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "DLL-filen %s kunde inte laddas.", IDC_GINALOADFAILED, 39, 16, 156, 24 + LTEXT "Kontakta din systemadministrat÷r f÷r att ersõtta eller Õterstõlla DLL-filen.", IDC_GINALOADFAILEDCONTACT, 39, 53, 151, 25 + DEFPUSHBUTTON "&Starta om", 1, 80, 91, 68, 14 +END + +STRINGTABLE +BEGIN + IDS_PREPARENETWORKCONNECTIONS "F÷rbereder nõtverksanslutningar..." + IDS_APPLYINGCOMPUTERSETTINGS "Verkstõller datorns instõllningar..." + IDS_RUNNINGSTARTUPSCRIPTS "K÷r uppstartsskript..." + IDS_RUNNINGSHUTDOWNSCRIPTS "K÷r avstõngningsskript..." + IDS_APPLYINGYOURPERSONALSETTINGS "Verkstõller dina personliga instõllningar..." + IDS_RUNNINGLOGOFFSCRIPTS "K÷r utloggningsskript..." + IDS_RUNNINGLOGONSCRIPTS "K÷r inloggningsskript..." + IDS_LOADINGYOURPERSONALSETTINGS "Laddar dina personliga instõllningar..." + IDS_CLOSINGNETWORKCONNECTIONS "Stõnger nõtverksanslutningar..." + IDS_REACTOSISSHUTTINGDOWN "ReactOS hÕller pÕ att stõngas av..." + IDS_PREPARETOSTANDBY "F÷rbereder f÷r võntelõge..." + IDS_PREPARETOHIBERNATE "F÷rbereder f÷r vilolõge..." + IDS_SAVEYOURSETTINGS "Sparar dina instõllningar..." + IDS_REACTOSISSTARTINGUP "ReactOS startas..." +END + +STRINGTABLE +BEGIN + IDS_FAILEDACTIVATEUSERSHELL "Winlogon kunde inte ladda anvõndarskalet!" +END + _____ Modified: trunk/reactos/subsys/system/winlogon/winlogon.rc --- trunk/reactos/subsys/system/winlogon/winlogon.rc 2005-05-04 17:59:36 UTC (rev 14973) +++ trunk/reactos/subsys/system/winlogon/winlogon.rc 2005-05-04 18:10:12 UTC (rev 14974) @@ -15,4 +15,6 @@ #include "Cz.rc" #include "En.rc" #include "De.rc" +#include "Sv.rc" +
[View Less]
20 years, 1 month
1
0
0
0
[mf] 14973: restore toolbar bitmap
by mf@svn.reactos.com
restore toolbar bitmap Modified: trunk/reactos/subsys/system/explorer/explorer_intres.rc _____ Modified: trunk/reactos/subsys/system/explorer/explorer_intres.rc --- trunk/reactos/subsys/system/explorer/explorer_intres.rc 2005-05-04 17:41:27 UTC (rev 14972) +++ trunk/reactos/subsys/system/explorer/explorer_intres.rc 2005-05-04 17:59:36 UTC (rev 14973) @@ -493,8 +493,8 @@ 3 TEXTINCLUDE DISCARDABLE BEGIN "#ifndef ROSSHELL\r\n" - "IDB_IMAGES BITMAP DISCARDABLE ""res/images.bmp""\r\
…
[View More]
n" - "IDB_TOOLBAR BITMAP DISCARDABLE ""res/toolbar.bmp""\r\n" + "IDB_IMAGES BITMAP DISCARDABLE ""res/images.bmp""\r\n" + "IDB_TOOLBAR BITMAP DISCARDABLE ""res/toolbar.bmp""\r\n" "#endif\r\n" "#ifndef _ROS_\r\n" "LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL\r\n" @@ -1862,7 +1862,7 @@ BEGIN MENUITEM "Explorer &FAQ...", ID_EXPLORER_FAQ MENUITEM "&Om Explorer...", ID_ABOUT_EXPLORER - MENUITEM "Om &operativsystemet...", ID_ABOUT_WINDOWS + MENUITEM "Om &operativsystemet...", ID_ABOUT_WINDOWS END END @@ -2294,6 +2294,10 @@ // // Generated from the TEXTINCLUDE 3 resource. // +#ifndef ROSSHELL +IDB_IMAGES BITMAP DISCARDABLE "res/images.bmp" +IDB_TOOLBAR BITMAP DISCARDABLE "res/toolbar.bmp" +#endif #ifndef _ROS_ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL STRINGTABLE DISCARDABLE
[View Less]
20 years, 1 month
1
0
0
0
[greatlrd] 14972: Swedish åäö was gone in the translation after some commit.
by greatlrd@svn.reactos.com
Swedish åäö was gone in the translation after some commit. I which we can split all langues to own .rc files. so this can not be happen agien Thx Harteex for fixing åäö in the .rc file Modified: trunk/reactos/subsys/system/explorer/explorer_intres.rc _____ Modified: trunk/reactos/subsys/system/explorer/explorer_intres.rc --- trunk/reactos/subsys/system/explorer/explorer_intres.rc 2005-05-04 16:54:48 UTC (rev 14971) +++ trunk/reactos/subsys/system/explorer/explorer_intres.rc 2005-05-04
…
[View More]
17:41:27 UTC (rev 14972) @@ -1664,20 +1664,20 @@ END POPUP "&Visa" BEGIN - MENUITEM "&Verktygsf§lt", ID_VIEW_TOOL_BAR - MENUITEM "&Extraf§lt", ID_VIEW_EXTRA_BAR - MENUITEM "E&nhetsf§lt", ID_VIEW_DRIVE_BAR, CHECKED - MENUITEM "S&idf§lt", ID_VIEW_SIDE_BAR - MENUITEM "&Statusf§lt", ID_VIEW_STATUSBAR + MENUITEM "&Verktygsfõlt", ID_VIEW_TOOL_BAR + MENUITEM "&Extrafõlt", ID_VIEW_EXTRA_BAR + MENUITEM "E&nhetsfõlt", ID_VIEW_DRIVE_BAR, CHECKED + MENUITEM "S&idfõlt", ID_VIEW_SIDE_BAR + MENUITEM "&Statusfõlt", ID_VIEW_STATUSBAR MENUITEM SEPARATOR MENUITEM "&Uppdatera\tF5", ID_REFRESH - MENUITEM "F&ullsk§rm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN + MENUITEM "F&ullskõrm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN MENUITEM "SDI", ID_VIEW_SDI END - POPUP "&F¸nster" + POPUP "&F÷nster" BEGIN - MENUITEM "Nytt &f¸nster", ID_WINDOW_NEW - MENUITEM "?verlappande\tShift+F5", ID_WINDOW_CASCADE + MENUITEM "Nytt &f÷nster", ID_WINDOW_NEW + MENUITEM "Íverlappande\tShift+F5", ID_WINDOW_CASCADE MENUITEM "Ordna &horizontellt", ID_WINDOW_TILE_HORZ MENUITEM "Ordna &vertikalt\tShift+F4", ID_WINDOW_TILE_VERT MENUITEM "Ordna automatiskt", ID_WINDOW_AUTOSORT @@ -1687,7 +1687,7 @@ BEGIN MENUITEM "&Alternativ", ID_TOOLS_OPTIONS END - POPUP "&Hj§lp" + POPUP "&Hjõlp" BEGIN MENUITEM "Explorer &FAQ...", ID_EXPLORER_FAQ MENUITEM "Om &Explorer...", ID_ABOUT_EXPLORER @@ -1699,7 +1699,7 @@ BEGIN POPUP "&Arkiv" BEGIN - MENUITEM "&?ppna\tEnter", 101 + MENUITEM "&Íppna\tEnter", 101 MENUITEM "&Flytta...\tF7", 106 MENUITEM "&Kopiera...\tF8", 107 MENUITEM "&I urklipp...\tF9", 118 @@ -1710,13 +1710,13 @@ MENUITEM "&Komprimera...", 119 MENUITEM "Packa &upp...", 120 MENUITEM SEPARATOR - MENUITEM "&K¸r...", ID_EXECUTE + MENUITEM "&K÷r...", ID_EXECUTE MENUITEM "&Skriv ut...", 102 MENUITEM "Associera...", 103 MENUITEM SEPARATOR MENUITEM "Skapa mapp...", ID_EXECUTE - MENUITEM "&S¸k...", 104 - MENUITEM "&V§lj filer...", 116 + MENUITEM "&S÷k...", 104 + MENUITEM "&Võlj filer...", 116 MENUITEM SEPARATOR MENUITEM "&Avsluta\tAlt+X", ID_FILE_EXIT END @@ -1727,27 +1727,27 @@ MENUITEM SEPARATOR MENUITEM "&Formatera disk...", 203 MENUITEM SEPARATOR - MENUITEM "Anslut &N§tverksenhet", 252 - MENUITEM "&Koppla ifrin N§tverksenhet", 253 + MENUITEM "Anslut &Nõtverksenhet", 252 + MENUITEM "&Koppla ifrÕn Nõtverksenhet", 253 MENUITEM SEPARATOR MENUITEM "Dela ut...", 254 MENUITEM "&Ta bort utdelning...", 255 MENUITEM SEPARATOR - MENUITEM "&V§lj enhet...", 251 + MENUITEM "&Võlj enhet...", 251 END POPUP "&Mappar" BEGIN - MENUITEM "&N§sta nivi\t+", 301 - MENUITEM "Ut¸ka &tr§d\t*", 302 - MENUITEM "Ut¸ka &alla\tCtrl+*", 303 - MENUITEM "Kollapsa &tr§d\t-", 304 + MENUITEM "&Nõsta nivÕ\t+", 301 + MENUITEM "Ut÷ka &trõd\t*", 302 + MENUITEM "Ut÷ka &alla\tCtrl+*", 303 + MENUITEM "Kollapsa &trõd\t-", 304 MENUITEM SEPARATOR MENUITEM "&Markera undermappar", 505 END POPUP "&Visa" BEGIN - MENUITEM "&Tr§d och mapp", 413 - MENUITEM "Bara tr&§d", 411 + MENUITEM "&Trõd och mapp", 413 + MENUITEM "Bara tr&õd", 411 MENUITEM "Bara &mapp", 412 MENUITEM SEPARATOR MENUITEM "De&la", 414 @@ -1764,31 +1764,31 @@ MENUITEM SEPARATOR MENUITEM "Sortera efter &...", 409 END - POPUP "&Inst§llningar" + POPUP "&Instõllningar" BEGIN - MENUITEM "&Bekr§ftelse...", 65535 + MENUITEM "&Bekrõftelse...", 65535 MENUITEM "&Teckensnitt...", 65535 - MENUITEM "&Konfigurera verktygsf§lt...", 65535 + MENUITEM "&Konfigurera verktygsfõlt...", 65535 MENUITEM SEPARATOR - MENUITEM "&Verktygsf§lt", ID_VIEW_TOOL_BAR, CHECKED - MENUITEM "&Enhetsf§lt", ID_VIEW_DRIVE_BAR, CHECKED - MENUITEM "&Sidf§lt", ID_VIEW_SIDE_BAR - MENUITEM "St&atusf§lt", ID_VIEW_STATUSBAR, CHECKED - MENUITEM "F&ullsk§rm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN + MENUITEM "&Verktygsfõlt", ID_VIEW_TOOL_BAR, CHECKED + MENUITEM "&Enhetsfõlt", ID_VIEW_DRIVE_BAR, CHECKED + MENUITEM "&Sidfõlt", ID_VIEW_SIDE_BAR + MENUITEM "St&atusfõlt", ID_VIEW_STATUSBAR, CHECKED + MENUITEM "F&ullskõrm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN MENUITEM SEPARATOR - MENUITEM "&Symbol efter k¸rning", 65535 - MENUITEM "&Spara §ndringar vid st§ngning", 511 + MENUITEM "&Symbol efter k÷rning", 65535 + MENUITEM "&Spara õndringar vid stõngning", 511 END - POPUP "&S§kerhet" + POPUP "&Sõkerhet" BEGIN - MENUITEM "&+tkomst...", 605 + MENUITEM "&?tkomst...", 605 MENUITEM "&Loggning...", 606 - MENUITEM "&-gare...", 607 + MENUITEM "&?gare...", 607 END - POPUP "&F¸nster" + POPUP "&F÷nster" BEGIN - MENUITEM "Nytt &f¸nster", ID_WINDOW_NEW - MENUITEM "?verlappande\tCtrl+F5", ID_WINDOW_CASCADE + MENUITEM "Nytt &f÷nster", ID_WINDOW_NEW + MENUITEM "Íverlappande\tCtrl+F5", ID_WINDOW_CASCADE MENUITEM "Ordna &horizontellt", ID_WINDOW_TILE_HORZ MENUITEM "Ordna &vertikalt\tCtrl+F4", ID_WINDOW_TILE_VERT MENUITEM "Ordna automatiskt", ID_WINDOW_AUTOSORT @@ -1797,9 +1797,9 @@ END POPUP "&?" BEGIN - MENUITEM "&Hj§lpavsnitt\tF1", ID_HELP - MENUITEM "Hj§lp &s¸k...\tF1", ID_HELP - MENUITEM "&Anv§nda hj§lpen\tF1", ID_HELP_USING + MENUITEM "&Hjõlpavsnitt\tF1", ID_HELP + MENUITEM "Hjõlp &s÷k...\tF1", ID_HELP + MENUITEM "&Anvõnda hjõlpen\tF1", ID_HELP_USING MENUITEM SEPARATOR MENUITEM "Information om &Winefile...", ID_ABOUT_WINEFILE END @@ -1809,7 +1809,7 @@ BEGIN POPUP "" BEGIN - MENUITEM "&Inst§llningar...", ID_DESKTOPBAR_SETTINGS + MENUITEM "&Instõllningar...", ID_DESKTOPBAR_SETTINGS MENUITEM "&Aktivitetshanteraren...", ID_TASKMGR MENUITEM SEPARATOR MENUITEM "&Om Explorer...", ID_ABOUT_EXPLORER @@ -1820,8 +1820,8 @@ BEGIN POPUP "" BEGIN - MENUITEM "?ppna volymkontroll", ID_TRAY_VOLUME - MENUITEM "Justera ljudinst§llningar", ID_VOLUME_PROPERTIES + MENUITEM "Íppna volymkontroll", ID_TRAY_VOLUME + MENUITEM "Justera ljudinstõllningar", ID_VOLUME_PROPERTIES END END @@ -1846,23 +1846,23 @@ END POPUP "&Visa" BEGIN - MENUITEM "&Verktygsf§lt", ID_VIEW_TOOL_BAR - MENUITEM "&Sidf§lt", ID_VIEW_SIDE_BAR, GRAYED - MENUITEM "&Statusf§lt", ID_VIEW_STATUSBAR + MENUITEM "&Verktygsfõlt", ID_VIEW_TOOL_BAR + MENUITEM "&Sidfõlt", ID_VIEW_SIDE_BAR, GRAYED + MENUITEM "&Statusfõlt", ID_VIEW_STATUSBAR MENUITEM SEPARATOR MENUITEM "&Uppdatera\tF5", ID_REFRESH - MENUITEM "&Fullsk§rm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN + MENUITEM "&Fullskõrm\tCtrl+Shift+S", ID_VIEW_FULLSCREEN MENUITEM "&MDI", ID_VIEW_MDI END POPUP "&Verktyg" BEGIN MENUITEM "&Alternativ", ID_TOOLS_OPTIONS END - POPUP "&Hj§lp" + POPUP "&Hjõlp" BEGIN MENUITEM "Explorer &FAQ...", ID_EXPLORER_FAQ MENUITEM "&Om Explorer...", ID_ABOUT_EXPLORER - MENUITEM "Om &OS...", ID_ABOUT_WINDOWS + MENUITEM "Om &operativsystemet...", ID_ABOUT_WINDOWS END END @@ -1874,7 +1874,7 @@ IDD_EXECUTE DIALOG FIXED IMPURE 15, 13, 210, 63 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "K¸r" +CAPTION "K÷r" FONT 8, "MS Shell Dlg" BEGIN CONTROL "",101,"Static",SS_SIMPLE | SS_NOPREFIX,3,6,162,10 @@ -1885,14 +1885,14 @@ 3,45,71,12 DEFPUSHBUTTON "&OK",1,158,6,47,14 PUSHBUTTON "&Avbryt",2,158,23,47,14 - PUSHBUTTON "&Hj§lp",254,158,43,47,14 + PUSHBUTTON "&Hjõlp",254,158,43,47,14 END IDD_SEARCH_PROGRAM DIALOGEX 0, 0, 200, 65 STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_APPWINDOW -CAPTION "S¸k program pi startmenyn" +CAPTION "S÷k program pÕ startmenyn" FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN LTEXT "&Filter:",IDC_STATIC,7,9,18,8 @@ -1905,26 +1905,26 @@ IDD_DESKBAR_DESKTOP DIALOG DISCARDABLE 0, 0, 212, 194 STYLE WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Skrivbordsinst§llningar" +CAPTION "Skrivbordsinstõllningar" FONT 8, "MS Sans Serif" BEGIN - LTEXT "V§lj frin vilket h¸rn ock it vilket hill du f¸redrar att rada upp ikonerna:", + LTEXT "Võlj frÕn vilket h÷rn och Õt vilket hÕll du f÷redrar att rada upp ikonerna:", IDC_STATIC,7,7,166,8 - CONTROL "v§. och nerit",IDC_ICON_ALIGN_0,"Button",BS_OWNERDRAW | + CONTROL "võ. och nerÕt",IDC_ICON_ALIGN_0,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,7,25,46,44 - CONTROL "¸vre it h¸.",IDC_ICON_ALIGN_1,"Button",BS_OWNERDRAW | + CONTROL "÷vre Õt h÷.",IDC_ICON_ALIGN_1,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,57,25,46,44 - CONTROL "¸vre it v§.",IDC_ICON_ALIGN_2,"Button",BS_OWNERDRAW | + CONTROL "÷vre Õt võ.",IDC_ICON_ALIGN_2,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,110,25,46,44 - CONTROL "h¸. och nerit",IDC_ICON_ALIGN_3,"Button",BS_OWNERDRAW | + CONTROL "h÷. och nerÕt",IDC_ICON_ALIGN_3,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,159,25,46,44 - CONTROL "v§. och uppit",IDC_ICON_ALIGN_4,"Button",BS_OWNERDRAW | + CONTROL "võ. och uppÕt",IDC_ICON_ALIGN_4,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,7,73,46,44 - CONTROL "nedre it h¸.",IDC_ICON_ALIGN_5,"Button",BS_OWNERDRAW | + CONTROL "nedre Õt h÷.",IDC_ICON_ALIGN_5,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,57,73,46,44 - CONTROL "nedre it v§.",IDC_ICON_ALIGN_6,"Button",BS_OWNERDRAW | + CONTROL "nedre Õt võ.",IDC_ICON_ALIGN_6,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,110,73,46,44 - CONTROL "h¸. och uppit",IDC_ICON_ALIGN_7,"Button",BS_OWNERDRAW | + CONTROL "h÷. och uppÕt",IDC_ICON_ALIGN_7,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,159,73,46,44 CONTROL "sidor och ner",IDC_ICON_ALIGN_8,"Button",BS_OWNERDRAW | BS_BOTTOM | WS_TABSTOP,7,121,46,44 @@ -1940,19 +1940,19 @@ IDD_DESKBAR_TASKBAR DIALOG DISCARDABLE 0, 0, 210, 194 STYLE WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Aktivitetsf§ltsinst§llningar" +CAPTION "Aktivitetsfõltsinstõllningar" FONT 8, "MS Sans Serif" BEGIN CONTROL "visa &klockan",ID_SHOW_CLOCK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,152,52,10 - CONTROL "&G¸m inaktiva meddelandeikoner",ID_HIDE_INACTIVE_ICONS, + CONTROL "&G÷m inaktiva meddelandeikoner",ID_HIDE_INACTIVE_ICONS, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,174,111,10 PUSHBUTTON "&Meddelanden...",ID_CONFIG_NOTIFYAREA,153,173,50,14 END IDD_DESKBAR_STARTMENU DIALOG DISCARDABLE 0, 0, 210, 194 STYLE WS_CHILD | WS_DISABLED | WS_CAPTION -CAPTION "Startmenyinst§llningar" +CAPTION "Startmenyinstõllningar" FONT 8, "MS Sans Serif" BEGIN END @@ -1961,26 +1961,26 @@ STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_APPWINDOW -CAPTION "Inst§llningar f¸r meddelandeikoner" +CAPTION "Instõllningar f÷r meddelandeikoner" FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN CONTROL "Tree1",IDC_NOTIFY_ICONS,"SysTreeView32",TVS_HASLINES | TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,7,7,194,31 - LTEXT "&Hj§lptext:",IDC_LABEL1,7,44,40,8 + LTEXT "&Hjõlptext:",IDC_LABEL1,7,44,40,8 EDITTEXT IDC_NOTIFY_TOOLTIP,58,42,143,14,ES_AUTOHSCROLL - LTEXT "&F¸nstertitel:",IDC_LABEL2,7,63,44,8 + LTEXT "&F÷nstertitel:",IDC_LABEL2,7,63,44,8 EDITTEXT IDC_NOTIFY_TITLE,58,60,143,14,ES_AUTOHSCROLL - LTEXT "&Moduls¸kv§g:",IDC_LABEL3,7,81,43,8 + LTEXT "&Moduls÷kvõg:",IDC_LABEL3,7,81,43,8 EDITTEXT IDC_NOTIFY_MODULE,58,78,143,14,ES_AUTOHSCROLL - GROUPBOX "&Visningsl§ge",IDC_LABEL4,7,96,157,28 + GROUPBOX "&Visningslõge",IDC_LABEL4,7,96,157,28 CONTROL "v&isa",IDC_NOTIFY_SHOW,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,108,33,10 - CONTROL "&d¸lj",IDC_NOTIFY_HIDE,"Button",BS_AUTORADIOBUTTON,66, + CONTROL "&d÷lj",IDC_NOTIFY_HIDE,"Button",BS_AUTORADIOBUTTON,66, 108,29,10 - CONTROL "d¸lj a&utomatiskt",IDC_NOTIFY_AUTOHIDE,"Button", + CONTROL "d÷lj a&utomatiskt",IDC_NOTIFY_AUTOHIDE,"Button", BS_AUTORADIOBUTTON,112,108,43,10 ICON "",IDC_PICTURE,173,101,21,20 - LTEXT "&Senast §ndrad:",IDC_LABEL6,7,132,43,8 + LTEXT "&Senast õndrad:",IDC_LABEL6,7,132,43,8 EDITTEXT IDC_LAST_CHANGE,59,129,105,14,ES_AUTOHSCROLL | ES_READONLY CONTROL "visa d&olda",ID_SHOW_HIDDEN_ICONS,"Button", @@ -1992,15 +1992,15 @@ IDD_MDI_SDI DIALOGEX 0, 0, 188, 126 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_APPWINDOW -CAPTION "V§lj MDI / SDI L§ge" +CAPTION "Võlj MDI / SDI Lõge" FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN - LTEXT "V§lj det gr§nssnitt du f¸redrar:",IDC_STATIC,7,7,160,8 + LTEXT "Võlj det grõnssnitt du f÷redrar:",IDC_STATIC,7,7,160,8 CONTROL "&MDI (multiple document interface)",IDC_MDI,"Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,121,10 CONTROL "&SDI (single document interface)",IDC_SDI,"Button", BS_AUTORADIOBUTTON,7,53,115,10 - LTEXT "Den h§r inst§llningen kommer att g§lla som standard i alla nya explorer-f¸nster.", + LTEXT "Den hõr instõllningen kommer att gõlla som standard i alla nya explorer-f÷nster.", IDC_STATIC,7,76,174,22 DEFPUSHBUTTON "&OK",IDOK,29,105,50,14,WS_GROUP PUSHBUTTON "&Avbryt",IDCANCEL,106,105,50,14 @@ -2017,14 +2017,14 @@ IDS_TITLE "Reactos Explorer" IDS_START "Start" IDS_LOGOFF "Logga ut..." - IDS_SHUTDOWN "St§ng av..." - IDS_LAUNCH "K¸r..." - IDS_START_HELP "Hj§lp" - IDS_SEARCH_FILES "S¸k..." + IDS_SHUTDOWN "Stõng av..." + IDS_LAUNCH "K÷r..." + IDS_START_HELP "Hjõlp" + IDS_SEARCH_FILES "S÷k..." IDS_DOCUMENTS "Dokument" IDS_FAVORITES "Favoriter" IDS_PROGRAMS "Program" - IDS_SETTINGS "Inst§llningar" + IDS_SETTINGS "Instõllningar" IDS_EXPLORE "Utforska" IDS_EMPTY "(tom)" IDS_RECENT "Senaste dokumenten" @@ -2034,7 +2034,7 @@ STRINGTABLE DISCARDABLE BEGIN IDS_STARTMENU "Startmeny" - IDS_MINIMIZE_ALL "minimera alla f¸nster" + IDS_MINIMIZE_ALL "minimera alla f÷nster" IDS_DESKTOP_NUM "Skrivbord %d" IDS_VOLUME "Volym" IDS_ITEMS_CUR "aktuella meddelanden" @@ -2042,32 +2042,32 @@ IDS_ITEMS_VISIBLE "synlig" IDS_ITEMS_HIDDEN "dold" IDS_NOTIFY_SHOW "visa" - IDS_NOTIFY_HIDE "d¸lj" - IDS_NOTIFY_AUTOHIDE "d¸lj automatiskt" + IDS_NOTIFY_HIDE "d÷lj" + IDS_NOTIFY_AUTOHIDE "d÷lj automatiskt" IDS_SHOW_HIDDEN_ICONS "Visa dolda ikoner" - IDS_HIDE_ICONS "D¸lj ikoner" + IDS_HIDE_ICONS "D÷lj ikoner" IDS_TERMINATE "Logga ut" END STRINGTABLE DISCARDABLE BEGIN - IDS_NETWORK "N§tverk" - IDS_CONNECTIONS "N§tverksanslutningar" + IDS_NETWORK "Nõtverk" + IDS_CONNECTIONS "Nõtverksanslutningar" IDS_DRIVES "Enheter" - IDS_SEARCH_COMPUTER "S¸k dator..." - IDS_SETTINGS_MENU "Inst§llningsmeny" + IDS_SEARCH_COMPUTER "S÷k dator..." + IDS_SETTINGS_MENU "Instõllningsmeny" IDS_CONTROL_PANEL "Kontrollpanelen" IDS_PRINTERS "Skrivare" IDS_BROWSE "Utforska filer" - IDS_SEARCH_PRG "S¸k program..." - IDS_ALL_USERS "Alla anv§ndare\\" - IDS_SEARCH "S¸k" + IDS_SEARCH_PRG "S÷k program..." + IDS_ALL_USERS "Alla anvõndare\\" + IDS_SEARCH "S÷k" IDS_ABOUT_EXPLORER "&Om Explorer..." IDS_LAUNCH_MANY_PROGRAMS - "Du har valt fler §n ett program.\n-r du s§ker pi att du vill ¸ppna dem alla?" - IDS_DESKTOPBAR_SETTINGS "Skrivbordsinst§llningar" + "Du har valt fler õn ett program.\n?r du sõker pÕ att du vill ÷ppna dem alla?" + IDS_DESKTOPBAR_SETTINGS "Skrivbordsinstõllningar" IDS_DESKTOP "Skrivbord" - IDS_TASKBAR "Aktivitetsf§lt" + IDS_TASKBAR "Aktivitetsfõlt" END #endif // Swedish resources
[View Less]
20 years, 1 month
1
0
0
0
[greatlrd] 14971: filip0402 : patch for taskmgr to remove some hardcode string tested by Harteex
by greatlrd@svn.reactos.com
filip0402 : patch for taskmgr to remove some hardcode string tested by Harteex Modified: trunk/reactos/subsys/system/taskmgr/taskmgr.c _____ Modified: trunk/reactos/subsys/system/taskmgr/taskmgr.c --- trunk/reactos/subsys/system/taskmgr/taskmgr.c 2005-05-04 16:00:39 UTC (rev 14970) +++ trunk/reactos/subsys/system/taskmgr/taskmgr.c 2005-05-04 16:54:48 UTC (rev 14971) @@ -824,7 +824,11 @@ RECT rc; int nParts[3]; TCHAR text[260]; + TCHAR szCpuUsage[256], szProcesses[256];
…
[View More]
+ LoadString(hInst, IDS_STATUS_CPUUSAGE, szCpuUsage, 256); + LoadString(hInst, IDS_STATUS_PROCESSES, szProcesses, 256); + bInMenuLoop = FALSE; /* Update the status bar pane sizes */ GetClientRect(hWnd, &rc); @@ -833,9 +837,9 @@ nParts[2] = rc.right; SendMessage(hStatusWnd, SB_SETPARTS, 3, (long)nParts); SendMessage(hStatusWnd, SB_SETTEXT, 0, (LPARAM)_T("")); - wsprintf(text, _T("CPU Usage: %3d%%"), PerfDataGetProcessorUsage()); + wsprintf(text, szCpuUsage, PerfDataGetProcessorUsage()); SendMessage(hStatusWnd, SB_SETTEXT, 1, (LPARAM)text); - wsprintf(text, _T("Processes: %d"), PerfDataGetProcessCount()); + wsprintf(text, szProcesses, PerfDataGetProcessCount()); SendMessage(hStatusWnd, SB_SETTEXT, 0, (LPARAM)text); }
[View Less]
20 years, 1 month
1
0
0
0
[hpoussin] 14970: Set Thread->SystemThread to TRUE when creating a system thread. Patch by Filip Navara
by hpoussin@svn.reactos.com
Set Thread->SystemThread to TRUE when creating a system thread. Patch by Filip Navara Modified: trunk/reactos/ntoskrnl/ps/thread.c _____ Modified: trunk/reactos/ntoskrnl/ps/thread.c --- trunk/reactos/ntoskrnl/ps/thread.c 2005-05-04 15:53:54 UTC (rev 14969) +++ trunk/reactos/ntoskrnl/ps/thread.c 2005-05-04 16:00:39 UTC (rev 14970) @@ -237,6 +237,7 @@ /* System Thread */ DPRINT("Initialliazing Thread Start Address :%x\n", StartRoutine); Thread->StartAddress =
…
[View More]
StartRoutine; + Thread->SystemThread = TRUE; /* Let the kernel intialize the Thread */ DPRINT("Initialliazing Kernel Thread\n");
[View Less]
20 years, 1 month
1
0
0
0
[fireball] 14969: RegOpenKey, RegOpenKeyEx A/W imported and ported from WINE. This keeps the current test set in advapi32_test registry on 85/0 level
by fireball@svn.reactos.com
RegOpenKey, RegOpenKeyEx A/W imported and ported from WINE. This keeps the current test set in advapi32_test registry on 85/0 level Modified: trunk/reactos/lib/advapi32/reg/reg.c _____ Modified: trunk/reactos/lib/advapi32/reg/reg.c --- trunk/reactos/lib/advapi32/reg/reg.c 2005-05-04 15:27:05 UTC (rev 14968) +++ trunk/reactos/lib/advapi32/reg/reg.c 2005-05-04 15:53:54 UTC (rev 14969) @@ -8,6 +8,7 @@ * UPDATE HISTORY: * Created 01/11/98 * 19990309 EA
…
[View More]
Stubs + * 20050502 Fireball imported some stuff from WINE */ /* INCLUDES *****************************************************************/ @@ -22,6 +23,9 @@ #define REG_MAX_NAME_SIZE 256 #define REG_MAX_DATA_SIZE 2048 +/* FIXME: should go into msvcrt.h header? */ +#define offsetof(s,m) (size_t)&(((s*)NULL)->m) + /* GLOBALS ******************************************************************/ static RTL_CRITICAL_SECTION HandleTableCS; @@ -40,6 +44,11 @@ /* FUNCTIONS ****************************************************************/ +/* check if value type needs string conversion (Ansi<->Unicode) */ +inline static int is_string( DWORD type ) +{ + return (type == REG_SZ) || (type == REG_EXPAND_SZ) || (type == REG_MULTI_SZ); +} /*********************************************************************** * * RegInitDefaultHandles @@ -1161,417 +1170,226 @@ return ErrorCode; } - /*********************************************************************** * * RegEnumValueA * * @implemented */ LONG STDCALL -RegEnumValueA (HKEY hKey, - DWORD dwIndex, - LPSTR lpValueName, - LPDWORD lpcbValueName, // lpValueName buffer len - LPDWORD lpReserved, - LPDWORD lpType, - LPBYTE lpData, - LPDWORD lpcbData) // lpData buffer len +RegEnumValueA( HKEY hKey, DWORD index, LPSTR value, LPDWORD val_count, + LPDWORD reserved, LPDWORD type, LPBYTE data, LPDWORD count ) { - union - { - KEY_VALUE_FULL_INFORMATION Full; - KEY_VALUE_BASIC_INFORMATION Basic; - } *ValueInfo; - - ULONG NameLength; - ULONG BufferSize; - ULONG DataLength = 0; - ULONG ResultSize; HANDLE KeyHandle; - LONG ErrorCode; - NTSTATUS Status; - UNICODE_STRING StringU; - ANSI_STRING StringA; - BOOL IsStringType; + NTSTATUS status; + DWORD total_size; + char buffer[256], *buf_ptr = buffer; + KEY_VALUE_FULL_INFORMATION *info = (KEY_VALUE_FULL_INFORMATION *)buffer; + static const int info_size = offsetof( KEY_VALUE_FULL_INFORMATION, Name ); - ErrorCode = ERROR_SUCCESS; + //TRACE("(%p,%ld,%p,%p,%p,%p,%p,%p)\n", + // hkey, index, value, val_count, reserved, type, data, count ); - Status = MapDefaultKey (&KeyHandle, hKey); - if (!NT_SUCCESS(Status)) + /* NT only checks count, not val_count */ + if ((data && !count) || reserved) return ERROR_INVALID_PARAMETER; + status = MapDefaultKey (&KeyHandle, hKey); + if (!NT_SUCCESS(status)) { - ErrorCode = RtlNtStatusToDosError (Status); + LONG ErrorCode; + ErrorCode = RtlNtStatusToDosError (status); SetLastError (ErrorCode); return ErrorCode; } - if (*lpcbValueName > 0) - NameLength = min (*lpcbValueName - 1, REG_MAX_NAME_SIZE) * sizeof(WCHAR); - else - NameLength = 0; + total_size = info_size + (MAX_PATH + 1) * sizeof(WCHAR); + if (data) total_size += *count; + total_size = min( sizeof(buffer), total_size ); - if (lpData) - { - DataLength = min (*lpcbData * sizeof(WCHAR), REG_MAX_DATA_SIZE); - BufferSize = ((sizeof(KEY_VALUE_FULL_INFORMATION) + NameLength + 3) & ~3) + DataLength; - } - else - { - BufferSize = sizeof(KEY_VALUE_BASIC_INFORMATION) + NameLength; - } + status = NtEnumerateValueKey( KeyHandle, index, KeyValueFullInformation, + buffer, total_size, &total_size ); + if (status && status != STATUS_BUFFER_OVERFLOW) goto done; - ValueInfo = RtlAllocateHeap (ProcessHeap, 0, BufferSize); - if (ValueInfo == NULL) - { - SetLastError(ERROR_OUTOFMEMORY); - return ERROR_OUTOFMEMORY; - } + /* we need to fetch the contents for a string type even if not requested, + * because we need to compute the length of the ASCII string. */ + if (value || data || is_string(info->Type)) + { + /* retry with a dynamically allocated buffer */ + while (status == STATUS_BUFFER_OVERFLOW) + { + if (buf_ptr != buffer) HeapFree( GetProcessHeap(), 0, buf_ptr ); + if (!(buf_ptr = HeapAlloc( GetProcessHeap(), 0, total_size ))) + return ERROR_NOT_ENOUGH_MEMORY; + info = (KEY_VALUE_FULL_INFORMATION *)buf_ptr; + status = NtEnumerateValueKey( KeyHandle, index, KeyValueFullInformation, + buf_ptr, total_size, &total_size ); + } - Status = NtEnumerateValueKey (KeyHandle, - (ULONG)dwIndex, - lpData ? KeyValueFullInformation : KeyValueBasicInformation, - ValueInfo, - BufferSize, - &ResultSize); + if (status) goto done; - DPRINT("NtEnumerateValueKey() returned status 0x%X\n", Status); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); + if (is_string(info->Type)) + { + DWORD len; + RtlUnicodeToMultiByteSize( &len, (WCHAR *)(buf_ptr + info->DataOffset), + total_size - info->DataOffset ); + if (data && len) + { + if (len > *count) status = STATUS_BUFFER_OVERFLOW; + else + { + RtlUnicodeToMultiByteN( data, len, NULL, (WCHAR *)(buf_ptr + info->DataOffset), + total_size - info->DataOffset ); + /* if the type is REG_SZ and data is not 0-terminated + * and there is enough space in the buffer NT appends a \0 */ + if (len < *count && data[len-1]) data[len] = 0; + } + } + info->DataLength = len; + } + else if (data) + { + if (total_size - info->DataOffset > *count) status = STATUS_BUFFER_OVERFLOW; + else memcpy( data, buf_ptr + info->DataOffset, total_size - info->DataOffset ); + } - // handle case when BufferSize was too small - // we must let caller know the minimum accepted size - // and value type - if (Status == STATUS_BUFFER_OVERFLOW || Status == STATUS_BUFFER_TOO_SMALL) - { - ErrorCode = ERROR_MORE_DATA; + if (value && !status) + { + DWORD len; - // query now with the sufficient buffer size - RtlFreeHeap (ProcessHeap, 0, ValueInfo); - BufferSize = ResultSize; - ValueInfo = RtlAllocateHeap (ProcessHeap, 0, BufferSize); // will be freed at the bottom, as usual - if (ValueInfo == NULL) - { - SetLastError(ERROR_OUTOFMEMORY); - return ERROR_OUTOFMEMORY; - } + RtlUnicodeToMultiByteSize( &len, info->Name, info->NameLength ); + if (len >= *val_count) + { + status = STATUS_BUFFER_OVERFLOW; + if (*val_count) + { + len = *val_count - 1; + RtlUnicodeToMultiByteN( value, len, NULL, info->Name, info->NameLength ); + value[len] = 0; + } + } + else + { + RtlUnicodeToMultiByteN( value, len, NULL, info->Name, info->NameLength ); + value[len] = 0; + *val_count = len; + } + } + } + else status = STATUS_SUCCESS; - Status = NtEnumerateValueKey (KeyHandle, - (ULONG)dwIndex, - lpData ? KeyValueFullInformation : KeyValueBasicInformation, - ValueInfo, - BufferSize, - &ResultSize); - if (!NT_SUCCESS(Status)) - { - // ok, some other error - ErrorCode = RtlNtStatusToDosError (Status); - } - else - { - // we have information now, pass it to the caller - // but don't touch valueName length here - IsStringType = (ValueInfo->Full.Type == REG_SZ) || - (ValueInfo->Full.Type == REG_MULTI_SZ) || - (ValueInfo->Full.Type == REG_EXPAND_SZ); //FIXME: Include REG_LINK ? + if (type) *type = info->Type; + if (count) *count = info->DataLength; - if (lpData) - { - if (lpcbData) - { - if (IsStringType) - *lpcbData = ValueInfo->Full.DataLength / sizeof(WCHAR); - else - *lpcbData = ValueInfo->Full.DataLength; - } - } - - // pass type also - if (lpType) - *lpType = lpData ? ValueInfo->Full.Type : ValueInfo->Basic.Type; - } - } - } - else - { - IsStringType = (ValueInfo->Full.Type == REG_SZ) || - (ValueInfo->Full.Type == REG_MULTI_SZ) || - (ValueInfo->Full.Type == REG_EXPAND_SZ); - if (lpData) - { - if (ValueInfo->Full.NameLength > NameLength || - (!IsStringType && ValueInfo->Full.DataLength > *lpcbData) || - ValueInfo->Full.DataLength > DataLength) - { - // overflow data - ErrorCode = ERROR_MORE_DATA; - - // return correct information for data length and type - if (lpcbData) - { - if (IsStringType) - *lpcbData = ValueInfo->Full.DataLength / sizeof(WCHAR); - else - *lpcbData = ValueInfo->Full.DataLength; - } - - if (lpType) - *lpType = ValueInfo->Full.Type; - } - else - { - if (IsStringType) - { - StringU.Buffer = (PWCHAR)((ULONG_PTR)ValueInfo + ValueInfo->Full.DataOffset); - StringU.Length = ValueInfo->Full.DataLength; - StringU.MaximumLength = DataLength; - StringA.Buffer = (PCHAR)lpData; - StringA.Length = 0; - StringA.MaximumLength = *lpcbData; - RtlUnicodeStringToAnsiString (&StringA, &StringU, FALSE); - *lpcbData = StringA.Length; - } - else - { - RtlCopyMemory (lpData, - (PVOID)((ULONG_PTR)ValueInfo + ValueInfo->Full.DataOffset), - ValueInfo->Full.DataLength); - *lpcbData = ValueInfo->Full.DataLength; - } - - StringU.Buffer = ValueInfo->Full.Name; - StringU.Length = ValueInfo->Full.NameLength; - StringU.MaximumLength = NameLength; - } - } - else - { - if (ValueInfo->Basic.NameLength > NameLength) - { - // overflow name - ErrorCode = ERROR_MORE_DATA; - - if (IsStringType) - *lpcbData = ValueInfo->Full.DataLength / sizeof(WCHAR); - else - *lpcbData = ValueInfo->Full.DataLength; - - if (lpType) - *lpType = ValueInfo->Basic.Type; - } - else - { - StringU.Buffer = ValueInfo->Basic.Name; - StringU.Length = ValueInfo->Basic.NameLength; - StringU.MaximumLength = NameLength; - } - } - - if (ErrorCode == ERROR_SUCCESS) - { - StringA.Buffer = (PCHAR)lpValueName; - StringA.Length = 0; - StringA.MaximumLength = *lpcbValueName; - RtlUnicodeStringToAnsiString (&StringA, &StringU, FALSE); - StringA.Buffer[StringA.Length] = 0; - *lpcbValueName = StringA.Length; - if (lpType) - { - *lpType = lpData ? ValueInfo->Full.Type : ValueInfo->Basic.Type; - } - } - } - - RtlFreeHeap (ProcessHeap, 0, ValueInfo); - - if (ErrorCode != ERROR_SUCCESS) - SetLastError(ErrorCode); - - return ErrorCode; + done: + if (buf_ptr != buffer) HeapFree( GetProcessHeap(), 0, buf_ptr ); + return RtlNtStatusToDosError(status); } - -/********************************************************************** ** - * RegEnumValueW - * +/********************************************************************** ******** + * RegEnumValueW [ADVAPI32.@] * @implemented + * + * PARAMS + * hkey [I] Handle to key to query + * index [I] Index of value to query + * value [O] Value string + * val_count [I/O] Size of value buffer (in wchars) + * reserved [I] Reserved + * type [O] Type code + * data [O] Value data + * count [I/O] Size of data buffer (in bytes) + * + * RETURNS + * Success: ERROR_SUCCESS + * Failure: nonzero error code from Winerror.h */ LONG STDCALL -RegEnumValueW (HKEY hKey, - DWORD dwIndex, - LPWSTR lpValueName, - LPDWORD lpcbValueName, - LPDWORD lpReserved, - LPDWORD lpType, - LPBYTE lpData, - LPDWORD lpcbData) +RegEnumValueW( HKEY hKey, DWORD index, LPWSTR value, PDWORD val_count, + PDWORD reserved, PDWORD type, LPBYTE data, PDWORD count ) { - union - { - KEY_VALUE_FULL_INFORMATION Full; - KEY_VALUE_BASIC_INFORMATION Basic; - } *ValueInfo; - - ULONG NameLength; - ULONG BufferSize; - ULONG DataLength = 0; - ULONG ResultSize; HANDLE KeyHandle; - LONG ErrorCode; - NTSTATUS Status; + NTSTATUS status; + DWORD total_size; + char buffer[256], *buf_ptr = buffer; + KEY_VALUE_FULL_INFORMATION *info = (KEY_VALUE_FULL_INFORMATION *)buffer; + static const int info_size = offsetof( KEY_VALUE_FULL_INFORMATION, Name ); - ErrorCode = ERROR_SUCCESS; + //TRACE("(%p,%ld,%p,%p,%p,%p,%p,%p)\n", + // hkey, index, value, val_count, reserved, type, data, count ); - Status = MapDefaultKey (&KeyHandle, hKey); - if (!NT_SUCCESS(Status)) + /* NT only checks count, not val_count */ + if ((data && !count) || reserved) return ERROR_INVALID_PARAMETER; + + status = MapDefaultKey (&KeyHandle, hKey); + if (!NT_SUCCESS(status)) { - ErrorCode = RtlNtStatusToDosError (Status); + LONG ErrorCode; + ErrorCode = RtlNtStatusToDosError (status); SetLastError (ErrorCode); return ErrorCode; } - if (*lpcbValueName > 0) - NameLength = min (*lpcbValueName - 1, REG_MAX_NAME_SIZE) * sizeof(WCHAR); - else - NameLength = 0; + total_size = info_size + (MAX_PATH + 1) * sizeof(WCHAR); + if (data) total_size += *count; + total_size = min( sizeof(buffer), total_size ); - if (lpData) - { - DataLength = min(*lpcbData, REG_MAX_DATA_SIZE); - BufferSize = ((sizeof(KEY_VALUE_FULL_INFORMATION) + NameLength + 3) & ~3) + DataLength; - } - else - { - BufferSize = sizeof(KEY_VALUE_BASIC_INFORMATION) + NameLength; - } - ValueInfo = RtlAllocateHeap (ProcessHeap, 0, BufferSize); - if (ValueInfo == NULL) - { - SetLastError (ERROR_OUTOFMEMORY); - return ERROR_OUTOFMEMORY; - } - Status = NtEnumerateValueKey (KeyHandle, - (ULONG)dwIndex, - lpData ? KeyValueFullInformation : KeyValueBasicInformation, - ValueInfo, - BufferSize, - &ResultSize); + status = NtEnumerateValueKey( KeyHandle, index, KeyValueFullInformation, + buffer, total_size, &total_size ); + if (status && status != STATUS_BUFFER_OVERFLOW) goto done; - DPRINT("NtEnumerateValueKey() returned status 0x%X\n", Status); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); + if (value || data) + { + /* retry with a dynamically allocated buffer */ + while (status == STATUS_BUFFER_OVERFLOW) + { + if (buf_ptr != buffer) HeapFree( GetProcessHeap(), 0, buf_ptr ); + if (!(buf_ptr = HeapAlloc( GetProcessHeap(), 0, total_size ))) + return ERROR_NOT_ENOUGH_MEMORY; + info = (KEY_VALUE_FULL_INFORMATION *)buf_ptr; + status = NtEnumerateValueKey( KeyHandle, index, KeyValueFullInformation, + buf_ptr, total_size, &total_size ); + } - // handle case when BufferSize was too small - // we must let caller know the minimum accepted size - // and value type - if (Status == STATUS_BUFFER_OVERFLOW || Status == STATUS_BUFFER_TOO_SMALL) - { - ErrorCode = ERROR_MORE_DATA; + if (status) goto done; - // query now with the sufficient buffer size - RtlFreeHeap (ProcessHeap, 0, ValueInfo); - BufferSize = ResultSize; - ValueInfo = RtlAllocateHeap (ProcessHeap, 0, BufferSize); // will be freed at the bottom, as usual - if (ValueInfo == NULL) - { - SetLastError(ERROR_OUTOFMEMORY); - return ERROR_OUTOFMEMORY; - } + if (value) + { + if (info->NameLength/sizeof(WCHAR) >= *val_count) + { + status = STATUS_BUFFER_OVERFLOW; + goto overflow; + } + memcpy( value, info->Name, info->NameLength ); + *val_count = info->NameLength / sizeof(WCHAR); + value[*val_count] = 0; + } - Status = NtEnumerateValueKey (KeyHandle, - (ULONG)dwIndex, - lpData ? KeyValueFullInformation : KeyValueBasicInformation, - ValueInfo, - BufferSize, - &ResultSize); - if (!NT_SUCCESS(Status)) - { - // ok, some other error - ErrorCode = RtlNtStatusToDosError (Status); - } - else - { - // we have information now, pass it to the caller - // but don't touch valueName length here - if (lpData && lpcbData) - *lpcbData = ValueInfo->Full.DataLength; + if (data) + { + if (total_size - info->DataOffset > *count) + { + status = STATUS_BUFFER_OVERFLOW; + goto overflow; + } + memcpy( data, buf_ptr + info->DataOffset, total_size - info->DataOffset ); + if (total_size - info->DataOffset <= *count-sizeof(WCHAR) && is_string(info->Type)) + { + /* if the type is REG_SZ and data is not 0-terminated + * and there is enough space in the buffer NT appends a \0 */ + WCHAR *ptr = (WCHAR *)(data + total_size - info->DataOffset); + if (ptr > (WCHAR *)data && ptr[-1]) *ptr = 0; + } + } + } + else status = STATUS_SUCCESS; - // pass type also - if (lpType) - *lpType = lpData ? ValueInfo->Full.Type : ValueInfo->Basic.Type; - } - } - } - else - { - if (lpData) - { - if (ValueInfo->Full.DataLength > DataLength || - ValueInfo->Full.NameLength > NameLength) - { - // overflow data - ErrorCode = ERROR_MORE_DATA; + overflow: + if (type) *type = info->Type; + if (count) *count = info->DataLength; - // return correct information for data length and type - if (lpcbData) - *lpcbData = ValueInfo->Full.DataLength; - - if (lpType) - *lpType = ValueInfo->Full.Type; - } - else - { - RtlCopyMemory (lpValueName, ValueInfo->Full.Name, ValueInfo->Full.NameLength); - *lpcbValueName = (DWORD)(ValueInfo->Full.NameLength / sizeof(WCHAR)); - lpValueName[*lpcbValueName] = 0; - RtlCopyMemory (lpData, - (PVOID)((ULONG_PTR)ValueInfo + ValueInfo->Full.DataOffset), - ValueInfo->Full.DataLength); - *lpcbData = (DWORD)ValueInfo->Full.DataLength; - } - } - else - { - if (ValueInfo->Basic.NameLength > NameLength) - { - // overflow name - ErrorCode = ERROR_MORE_DATA; - - if (lpcbData) - *lpcbData = ValueInfo->Full.DataLength; - - if (lpType) - *lpType = ValueInfo->Basic.Type; - } - else - { - RtlCopyMemory (lpValueName, ValueInfo->Basic.Name, ValueInfo->Basic.NameLength); - *lpcbValueName = (DWORD)(ValueInfo->Basic.NameLength / sizeof(WCHAR)); - lpValueName[*lpcbValueName] = 0; - } - - if (NULL != lpcbData) - { - *lpcbData = (DWORD)ValueInfo->Full.DataLength; - DPRINT1("BUG: Using ValueInfo as FULL when it is really BASIC\n"); - } - } - - if (ErrorCode == ERROR_SUCCESS && lpType != NULL) - { - *lpType = lpData ? ValueInfo->Full.Type : ValueInfo->Basic.Type; - } - } - - RtlFreeHeap (ProcessHeap, 0, ValueInfo); - - if (ErrorCode != ERROR_SUCCESS) - SetLastError (ErrorCode); - - return ErrorCode; + done: + if (buf_ptr != buffer) HeapFree( GetProcessHeap(), 0, buf_ptr ); + return RtlNtStatusToDosError(status); } - /*********************************************************************** * * RegFlushKey * @@ -1818,6 +1636,8 @@ /*********************************************************************** * * RegOpenKeyA * + * 20050503 Fireball - imported from WINE + * * @implemented */ LONG STDCALL @@ -1825,45 +1645,15 @@ LPCSTR lpSubKey, PHKEY phkResult) { - OBJECT_ATTRIBUTES ObjectAttributes; - UNICODE_STRING SubKeyString; - HANDLE KeyHandle; - LONG ErrorCode; - NTSTATUS Status; + DPRINT("RegOpenKeyA hKey 0x%x lpSubKey %s phkResult %p\n", hKey, lpSubKey, phkResult); - DPRINT("RegOpenKeyA hKey 0x%x lpSubKey %s phkResult %p\n", hKey, lpSubKey, phkResult); + if (!lpSubKey || !*lpSubKey) + { + *phkResult = hKey; + return ERROR_SUCCESS; + } - // Check input params - if (phkResult == NULL) return ERROR_INVALID_PARAMETER; - - Status = MapDefaultKey (&KeyHandle, - hKey); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); - SetLastError (ErrorCode); - return Status; - } - - RtlCreateUnicodeStringFromAsciiz (&SubKeyString, - (LPSTR)lpSubKey); - InitializeObjectAttributes (&ObjectAttributes, - &SubKeyString, - OBJ_CASE_INSENSITIVE, - KeyHandle, - NULL); - Status = NtOpenKey ((PHANDLE)phkResult, - MAXIMUM_ALLOWED, - &ObjectAttributes); - RtlFreeUnicodeString (&SubKeyString); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); - SetLastError (ErrorCode); - return ErrorCode; - } - - return ERROR_SUCCESS; + return RegOpenKeyExA( hKey, lpSubKey, 0, KEY_ALL_ACCESS, phkResult); } @@ -1872,6 +1662,7 @@ * * 19981101 Ariadne * 19990525 EA + * 20050503 Fireball - imported from WINE * * @implemented */ @@ -1880,44 +1671,14 @@ LPCWSTR lpSubKey, PHKEY phkResult) { - OBJECT_ATTRIBUTES ObjectAttributes; - UNICODE_STRING SubKeyString; - HANDLE KeyHandle; - LONG ErrorCode; - NTSTATUS Status; + DPRINT("RegOpenKeyW hKey 0x%x lpSubKey %S phkResult %p\n", hKey, lpSubKey, phkResult); - DPRINT("RegOpenKeyW hKey 0x%x lpSubKey %S phkResult %p\n", hKey, lpSubKey, phkResult); - - // Check input params - if (phkResult == NULL) return ERROR_INVALID_PARAMETER; - - Status = MapDefaultKey (&KeyHandle, - hKey); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); - SetLastError (ErrorCode); - return Status; - } - - RtlInitUnicodeString (&SubKeyString, - (LPWSTR)lpSubKey); - InitializeObjectAttributes (&ObjectAttributes, - &SubKeyString, - OBJ_CASE_INSENSITIVE, - KeyHandle, - NULL); - Status = NtOpenKey ((PHANDLE)phkResult, - MAXIMUM_ALLOWED, - &ObjectAttributes); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); - SetLastError(ErrorCode); - return ErrorCode; - } - - return ERROR_SUCCESS; + if (!lpSubKey || !*lpSubKey) + { + *phkResult = hKey; + return ERROR_SUCCESS; + } + return RegOpenKeyExW(hKey, lpSubKey, 0, KEY_ALL_ACCESS, phkResult); } @@ -1933,42 +1694,40 @@ REGSAM samDesired, PHKEY phkResult) { - OBJECT_ATTRIBUTES ObjectAttributes; - UNICODE_STRING SubKeyString; - HANDLE KeyHandle; - LONG ErrorCode; - NTSTATUS Status; + OBJECT_ATTRIBUTES ObjectAttributes; + UNICODE_STRING SubKeyString; + HANDLE KeyHandle; + LONG ErrorCode; + NTSTATUS Status; - DPRINT("RegOpenKeyExA hKey 0x%x lpSubKey %s ulOptions 0x%x samDesired 0x%x phkResult %p\n", - hKey, lpSubKey, ulOptions, samDesired, phkResult); - Status = MapDefaultKey (&KeyHandle, - hKey); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); - SetLastError (ErrorCode); - return ErrorCode; - } + DPRINT("RegOpenKeyExA hKey 0x%x lpSubKey %s ulOptions 0x%x samDesired 0x%x phkResult %p\n", + hKey, lpSubKey, ulOptions, samDesired, phkResult); - RtlCreateUnicodeStringFromAsciiz (&SubKeyString, - (LPSTR)lpSubKey); - InitializeObjectAttributes (&ObjectAttributes, - &SubKeyString, - OBJ_CASE_INSENSITIVE, - KeyHandle, - NULL); - Status = NtOpenKey ((PHANDLE)phkResult, - samDesired, - &ObjectAttributes); - RtlFreeUnicodeString (&SubKeyString); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); - SetLastError (ErrorCode); - return ErrorCode; - } + Status = MapDefaultKey (&KeyHandle, hKey); + if (!NT_SUCCESS(Status)) + { + ErrorCode = RtlNtStatusToDosError (Status); + SetLastError (ErrorCode); + return ErrorCode; + } - return ERROR_SUCCESS; + RtlCreateUnicodeStringFromAsciiz (&SubKeyString, (LPSTR)lpSubKey); + InitializeObjectAttributes (&ObjectAttributes, + &SubKeyString, + OBJ_CASE_INSENSITIVE, + KeyHandle, + NULL); + + Status = NtOpenKey ((PHANDLE)phkResult, samDesired, &ObjectAttributes); + RtlFreeUnicodeString (&SubKeyString); + if (!NT_SUCCESS(Status)) + { + ErrorCode = RtlNtStatusToDosError (Status); + SetLastError (ErrorCode); + return ErrorCode; + } + + return ERROR_SUCCESS; } @@ -1984,49 +1743,44 @@ REGSAM samDesired, PHKEY phkResult) { - OBJECT_ATTRIBUTES ObjectAttributes; - UNICODE_STRING SubKeyString; - HANDLE KeyHandle; - LONG ErrorCode; - NTSTATUS Status; + OBJECT_ATTRIBUTES ObjectAttributes; + UNICODE_STRING SubKeyString; + HANDLE KeyHandle; + LONG ErrorCode; + NTSTATUS Status; - DPRINT("RegOpenKeyExW hKey 0x%x lpSubKey %S ulOptions 0x%x samDesired 0x%x phkResult %p\n", - hKey, lpSubKey, ulOptions, samDesired, phkResult); - Status = MapDefaultKey (&KeyHandle, - hKey); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); - SetLastError (ErrorCode); - return ErrorCode; - } + DPRINT("RegOpenKeyExW hKey 0x%x lpSubKey %S ulOptions 0x%x samDesired 0x%x phkResult %p\n", + hKey, lpSubKey, ulOptions, samDesired, phkResult); + + Status = MapDefaultKey (&KeyHandle, hKey); + if (!NT_SUCCESS(Status)) + { + ErrorCode = RtlNtStatusToDosError (Status); + SetLastError (ErrorCode); + return ErrorCode; + } - if (lpSubKey != NULL) - { - RtlInitUnicodeString (&SubKeyString, - (LPWSTR)lpSubKey); - } - else - { - RtlInitUnicodeString (&SubKeyString, - (LPWSTR)L""); - } - InitializeObjectAttributes (&ObjectAttributes, - &SubKeyString, - OBJ_CASE_INSENSITIVE, - KeyHandle, - NULL); - Status = NtOpenKey ((PHANDLE)phkResult, - samDesired, - &ObjectAttributes); - if (!NT_SUCCESS(Status)) - { - ErrorCode = RtlNtStatusToDosError (Status); - SetLastError (ErrorCode); - return ErrorCode; - } + if (lpSubKey != NULL) + RtlInitUnicodeString (&SubKeyString, (LPWSTR)lpSubKey); + else + RtlInitUnicodeString (&SubKeyString, (LPWSTR)L""); - return ERROR_SUCCESS; + InitializeObjectAttributes (&ObjectAttributes, + &SubKeyString, + OBJ_CASE_INSENSITIVE, + KeyHandle, + NULL); + + Status = NtOpenKey ((PHANDLE)phkResult, samDesired, &ObjectAttributes); + + if (!NT_SUCCESS(Status)) + { + ErrorCode = RtlNtStatusToDosError (Status); + SetLastError (ErrorCode); + return ErrorCode; + } + + return ERROR_SUCCESS; }
[View Less]
20 years, 1 month
1
0
0
0
← Newer
1
...
71
72
73
74
75
76
77
...
82
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Results per page:
10
25
50
100
200