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
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
February 2019
----- 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
23 participants
208 discussions
Start a n
N
ew thread
[reactos] 02/02: [NTDLL_APITEST] Add test for NtDuplicateObject with OBJ_PROTECT_CLOSE.
by Thomas Faber
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=58215e5fb77a1c457ce26…
commit 58215e5fb77a1c457ce26274fdf4d720a982b92b Author: Thomas Faber <thomas.faber(a)reactos.org> AuthorDate: Sat Feb 2 22:48:51 2019 +0100 Commit: Thomas Faber <thomas.faber(a)reactos.org> CommitDate: Sat Feb 2 23:02:53 2019 +0100 [NTDLL_APITEST] Add test for NtDuplicateObject with OBJ_PROTECT_CLOSE. --- modules/rostests/apitests/ntdll/CMakeLists.txt | 1 + .../rostests/apitests/ntdll/NtDuplicateObject.c | 30 ++++++++++++++++++++++ modules/rostests/apitests/ntdll/testlist.c | 2 ++ 3 files changed, 33 insertions(+) diff --git a/modules/rostests/apitests/ntdll/CMakeLists.txt b/modules/rostests/apitests/ntdll/CMakeLists.txt index 4860cd225a..e3a2725d6b 100644 --- a/modules/rostests/apitests/ntdll/CMakeLists.txt +++ b/modules/rostests/apitests/ntdll/CMakeLists.txt @@ -15,6 +15,7 @@ list(APPEND SOURCE NtCreateKey.c NtCreateThread.c NtDeleteKey.c + NtDuplicateObject.c NtFreeVirtualMemory.c NtLoadUnloadKey.c NtMapViewOfSection.c diff --git a/modules/rostests/apitests/ntdll/NtDuplicateObject.c b/modules/rostests/apitests/ntdll/NtDuplicateObject.c new file mode 100644 index 0000000000..7944c3211e --- /dev/null +++ b/modules/rostests/apitests/ntdll/NtDuplicateObject.c @@ -0,0 +1,30 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: LGPL-2.1-or-later (
https://spdx.org/licenses/LGPL-2.1-or-later
) + * PURPOSE: Test for NtDuplicateObject + * COPYRIGHT: Copyright 2019 Thomas Faber (thomas.faber(a)reactos.org) + */ + +#include "precomp.h" + +#define OBJ_PROTECT_CLOSE 0x01 + +START_TEST(NtDuplicateObject) +{ + NTSTATUS Status; + HANDLE Handle; + + Handle = NULL; + Status = NtDuplicateObject(NtCurrentProcess(), + NtCurrentProcess(), + NtCurrentProcess(), + &Handle, + GENERIC_ALL, + OBJ_PROTECT_CLOSE, + 0); + ok_hex(Status, STATUS_SUCCESS); + ok(Handle != NULL && Handle != NtCurrentProcess(), + "Handle = %p\n", Handle); + Status = NtClose(Handle); + ok_hex(Status, STATUS_HANDLE_NOT_CLOSABLE); +} diff --git a/modules/rostests/apitests/ntdll/testlist.c b/modules/rostests/apitests/ntdll/testlist.c index e627634de8..a828865d8a 100644 --- a/modules/rostests/apitests/ntdll/testlist.c +++ b/modules/rostests/apitests/ntdll/testlist.c @@ -13,6 +13,7 @@ extern void func_NtCreateFile(void); extern void func_NtCreateKey(void); extern void func_NtCreateThread(void); extern void func_NtDeleteKey(void); +extern void func_NtDuplicateObject(void); extern void func_NtFreeVirtualMemory(void); extern void func_NtLoadUnloadKey(void); extern void func_NtMapViewOfSection(void); @@ -77,6 +78,7 @@ const struct test winetest_testlist[] = { "NtCreateKey", func_NtCreateKey }, { "NtCreateThread", func_NtCreateThread }, { "NtDeleteKey", func_NtDeleteKey }, + { "NtDuplicateObject", func_NtDuplicateObject }, { "NtFreeVirtualMemory", func_NtFreeVirtualMemory }, { "NtLoadUnloadKey", func_NtLoadUnloadKey }, { "NtMapViewOfSection", func_NtMapViewOfSection },
5 years, 10 months
1
0
0
0
[reactos] 01/02: [NTOS:OB] Correctly handle OBJ_PROTECT_CLOSE in ObDuplicateObject.
by Thomas Faber
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f5fc9e0cf2d8d33fa65ef…
commit f5fc9e0cf2d8d33fa65ef8be74911da2f5d5c875 Author: Thomas Faber <thomas.faber(a)reactos.org> AuthorDate: Sat Jan 19 11:45:33 2019 +0100 Commit: Thomas Faber <thomas.faber(a)reactos.org> CommitDate: Sat Feb 2 23:02:50 2019 +0100 [NTOS:OB] Correctly handle OBJ_PROTECT_CLOSE in ObDuplicateObject. --- ntoskrnl/ob/obhandle.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ntoskrnl/ob/obhandle.c b/ntoskrnl/ob/obhandle.c index 057cdecd7f..38171d2f16 100644 --- a/ntoskrnl/ob/obhandle.c +++ b/ntoskrnl/ob/obhandle.c @@ -2443,6 +2443,12 @@ ObDuplicateObject(IN PEPROCESS SourceProcess, return Status; } + if (NewHandleEntry.ObAttributes & OBJ_PROTECT_CLOSE) + { + NewHandleEntry.ObAttributes &= ~OBJ_PROTECT_CLOSE; + NewHandleEntry.GrantedAccess |= ObpAccessProtectCloseBit; + } + /* Now create the handle */ NewHandle = ExCreateHandle(HandleTable, &NewHandleEntry); if (!NewHandle)
5 years, 10 months
1
0
0
0
[reactos] 02/02: [NTDLL_APITEST] Add tests for zero and negative information class values. CORE-15651
by Thomas Faber
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a71f3a70d84d1079ca49c…
commit a71f3a70d84d1079ca49cbc81622f1ddec97065a Author: Thomas Faber <thomas.faber(a)reactos.org> AuthorDate: Sat Feb 2 21:37:08 2019 +0100 Commit: Thomas Faber <thomas.faber(a)reactos.org> CommitDate: Sat Feb 2 22:50:19 2019 +0100 [NTDLL_APITEST] Add tests for zero and negative information class values. CORE-15651 --- modules/rostests/apitests/ntdll/CMakeLists.txt | 4 ++++ .../apitests/ntdll/NtQueryInformationFile.c | 23 ++++++++++++++++++++++ .../apitests/ntdll/NtQuerySystemInformation.c | 19 ++++++++++++++++++ .../apitests/ntdll/NtQueryVolumeInformationFile.c | 3 +++ .../rostests/apitests/ntdll/NtSetInformationFile.c | 19 ++++++++++++++++++ .../apitests/ntdll/NtSetVolumeInformationFile.c | 19 ++++++++++++++++++ modules/rostests/apitests/ntdll/testlist.c | 8 ++++++++ 7 files changed, 95 insertions(+) diff --git a/modules/rostests/apitests/ntdll/CMakeLists.txt b/modules/rostests/apitests/ntdll/CMakeLists.txt index 768a522f4a..4860cd225a 100644 --- a/modules/rostests/apitests/ntdll/CMakeLists.txt +++ b/modules/rostests/apitests/ntdll/CMakeLists.txt @@ -23,13 +23,17 @@ list(APPEND SOURCE NtOpenProcessToken.c NtOpenThreadToken.c NtProtectVirtualMemory.c + NtQueryInformationFile.c NtQueryInformationProcess.c NtQueryKey.c NtQuerySystemEnvironmentValue.c + NtQuerySystemInformation.c NtQueryVolumeInformationFile.c NtReadFile.c NtSaveKey.c + NtSetInformationFile.c NtSetValueKey.c + NtSetVolumeInformationFile.c NtWriteFile.c RtlAllocateHeap.c RtlBitmap.c diff --git a/modules/rostests/apitests/ntdll/NtQueryInformationFile.c b/modules/rostests/apitests/ntdll/NtQueryInformationFile.c new file mode 100644 index 0000000000..74739bb390 --- /dev/null +++ b/modules/rostests/apitests/ntdll/NtQueryInformationFile.c @@ -0,0 +1,23 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: LGPL-2.1-or-later (
https://spdx.org/licenses/LGPL-2.1-or-later
) + * PURPOSE: Test for NtQueryInformationFile + * COPYRIGHT: Copyright 2019 Thomas Faber (thomas.faber(a)reactos.org) + */ + +#include "precomp.h" + +#define ntv6(x) (LOBYTE(LOWORD(GetVersion())) >= 6 ? (x) : 0) + +START_TEST(NtQueryInformationFile) +{ + NTSTATUS Status; + + Status = NtQueryInformationFile(NULL, NULL, NULL, 0, 0); + ok(Status == STATUS_INVALID_INFO_CLASS || + ntv6(Status == STATUS_NOT_IMPLEMENTED), "Status = %lx\n", Status); + + Status = NtQueryInformationFile(NULL, NULL, NULL, 0, 0x80000000); + ok(Status == STATUS_INVALID_INFO_CLASS || + ntv6(Status == STATUS_NOT_IMPLEMENTED), "Status = %lx\n", Status); +} diff --git a/modules/rostests/apitests/ntdll/NtQuerySystemInformation.c b/modules/rostests/apitests/ntdll/NtQuerySystemInformation.c new file mode 100644 index 0000000000..0ecd91d668 --- /dev/null +++ b/modules/rostests/apitests/ntdll/NtQuerySystemInformation.c @@ -0,0 +1,19 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: LGPL-2.1-or-later (
https://spdx.org/licenses/LGPL-2.1-or-later
) + * PURPOSE: Test for NtQuerySystemInformation + * COPYRIGHT: Copyright 2019 Thomas Faber (thomas.faber(a)reactos.org) + */ + +#include "precomp.h" + +START_TEST(NtQuerySystemInformation) +{ + NTSTATUS Status; + + Status = NtQuerySystemInformation(0, NULL, 0, NULL); + ok_hex(Status, STATUS_INFO_LENGTH_MISMATCH); + + Status = NtQuerySystemInformation(0x80000000, NULL, 0, NULL); + ok_hex(Status, STATUS_INVALID_INFO_CLASS); +} diff --git a/modules/rostests/apitests/ntdll/NtQueryVolumeInformationFile.c b/modules/rostests/apitests/ntdll/NtQueryVolumeInformationFile.c index b361d26681..c6fb6eb260 100644 --- a/modules/rostests/apitests/ntdll/NtQueryVolumeInformationFile.c +++ b/modules/rostests/apitests/ntdll/NtQueryVolumeInformationFile.c @@ -278,6 +278,9 @@ START_TEST(NtQueryVolumeInformationFile) ok(status == STATUS_INVALID_INFO_CLASS, "Expected STATUS_INVALID_INFO_CLASS, got 0x%lx\n", status); ok(GetLastError() == 0xcacacaca, "Expected 0xcacacaca, got %lx\n", GetLastError()); + status = NtQueryVolumeInformationFile(NULL, NULL, NULL, 0, 0x80000000); + ok(status == STATUS_INVALID_INFO_CLASS, "Expected STATUS_INVALID_INFO_CLASS, got 0x%lx\n", status); + TestFileFsDeviceInformation(handle); TestFileFsVolumeInformation(handle); TestFileFsAttributeInformation(handle); diff --git a/modules/rostests/apitests/ntdll/NtSetInformationFile.c b/modules/rostests/apitests/ntdll/NtSetInformationFile.c new file mode 100644 index 0000000000..27afa45b4d --- /dev/null +++ b/modules/rostests/apitests/ntdll/NtSetInformationFile.c @@ -0,0 +1,19 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: LGPL-2.1-or-later (
https://spdx.org/licenses/LGPL-2.1-or-later
) + * PURPOSE: Test for NtSetInformationFile + * COPYRIGHT: Copyright 2019 Thomas Faber (thomas.faber(a)reactos.org) + */ + +#include "precomp.h" + +START_TEST(NtSetInformationFile) +{ + NTSTATUS Status; + + Status = NtSetInformationFile(NULL, NULL, NULL, 0, 0); + ok(Status == STATUS_INVALID_INFO_CLASS, "Status = %lx\n", Status); + + Status = NtSetInformationFile(NULL, NULL, NULL, 0, 0x80000000); + ok(Status == STATUS_INVALID_INFO_CLASS, "Status = %lx\n", Status); +} diff --git a/modules/rostests/apitests/ntdll/NtSetVolumeInformationFile.c b/modules/rostests/apitests/ntdll/NtSetVolumeInformationFile.c new file mode 100644 index 0000000000..7d75367067 --- /dev/null +++ b/modules/rostests/apitests/ntdll/NtSetVolumeInformationFile.c @@ -0,0 +1,19 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: LGPL-2.1-or-later (
https://spdx.org/licenses/LGPL-2.1-or-later
) + * PURPOSE: Test for NtSetVolumeInformationFile + * COPYRIGHT: Copyright 2019 Thomas Faber (thomas.faber(a)reactos.org) + */ + +#include "precomp.h" + +START_TEST(NtSetVolumeInformationFile) +{ + NTSTATUS Status; + + Status = NtSetVolumeInformationFile(NULL, NULL, NULL, 0, 0); + ok(Status == STATUS_INVALID_INFO_CLASS, "Status = %lx\n", Status); + + Status = NtSetVolumeInformationFile(NULL, NULL, NULL, 0, 0x80000000); + ok(Status == STATUS_INVALID_INFO_CLASS, "Status = %lx\n", Status); +} diff --git a/modules/rostests/apitests/ntdll/testlist.c b/modules/rostests/apitests/ntdll/testlist.c index cd96ef8142..e627634de8 100644 --- a/modules/rostests/apitests/ntdll/testlist.c +++ b/modules/rostests/apitests/ntdll/testlist.c @@ -21,13 +21,17 @@ extern void func_NtOpenKey(void); extern void func_NtOpenProcessToken(void); extern void func_NtOpenThreadToken(void); extern void func_NtProtectVirtualMemory(void); +extern void func_NtQueryInformationFile(void); extern void func_NtQueryInformationProcess(void); extern void func_NtQueryKey(void); extern void func_NtQuerySystemEnvironmentValue(void); +extern void func_NtQuerySystemInformation(void); extern void func_NtQueryVolumeInformationFile(void); extern void func_NtReadFile(void); extern void func_NtSaveKey(void); +extern void func_NtSetInformationFile(void); extern void func_NtSetValueKey(void); +extern void func_NtSetVolumeInformationFile(void); extern void func_NtSystemInformation(void); extern void func_NtWriteFile(void); extern void func_RtlAllocateHeap(void); @@ -81,13 +85,17 @@ const struct test winetest_testlist[] = { "NtOpenProcessToken", func_NtOpenProcessToken }, { "NtOpenThreadToken", func_NtOpenThreadToken }, { "NtProtectVirtualMemory", func_NtProtectVirtualMemory }, + { "NtQueryInformationFile", func_NtQueryInformationFile }, { "NtQueryInformationProcess", func_NtQueryInformationProcess }, { "NtQueryKey", func_NtQueryKey }, { "NtQuerySystemEnvironmentValue", func_NtQuerySystemEnvironmentValue }, + { "NtQuerySystemInformation", func_NtQuerySystemInformation }, { "NtQueryVolumeInformationFile", func_NtQueryVolumeInformationFile }, { "NtReadFile", func_NtReadFile }, { "NtSaveKey", func_NtSaveKey}, + { "NtSetInformationFile", func_NtSetInformationFile }, { "NtSetValueKey", func_NtSetValueKey}, + { "NtSetVolumeInformationFile", func_NtSetVolumeInformationFile }, { "NtSystemInformation", func_NtSystemInformation }, { "NtWriteFile", func_NtWriteFile }, { "RtlAllocateHeap", func_RtlAllocateHeap },
5 years, 10 months
1
0
0
0
[reactos] 01/02: [NTOSKRNL] Guard against negative InformationClass enum values. CORE-15651
by Thomas Faber
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=63977328b1b163d2cadb0…
commit 63977328b1b163d2cadb05b52330ae12910b7d98 Author: Thomas Faber <thomas.faber(a)reactos.org> AuthorDate: Sat Jan 19 11:35:18 2019 +0100 Commit: Thomas Faber <thomas.faber(a)reactos.org> CommitDate: Sat Feb 2 22:50:02 2019 +0100 [NTOSKRNL] Guard against negative InformationClass enum values. CORE-15651 --- ntoskrnl/ex/sysinfo.c | 6 ++++-- ntoskrnl/io/iomgr/iofunc.c | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ntoskrnl/ex/sysinfo.c b/ntoskrnl/ex/sysinfo.c index a7883d4944..4949705ab2 100644 --- a/ntoskrnl/ex/sysinfo.c +++ b/ntoskrnl/ex/sysinfo.c @@ -2847,7 +2847,8 @@ NtQuerySystemInformation( /* * Check if the request is valid. */ - if (SystemInformationClass >= MAX_SYSTEM_INFO_CLASS) + if (SystemInformationClass < MIN_SYSTEM_INFO_CLASS || + SystemInformationClass >= MAX_SYSTEM_INFO_CLASS) { _SEH2_YIELD(return STATUS_INVALID_INFO_CLASS); } @@ -2871,7 +2872,8 @@ NtQuerySystemInformation( /* * Check if the request is valid. */ - if (SystemInformationClass >= MAX_SYSTEM_INFO_CLASS) + if (SystemInformationClass < MIN_SYSTEM_INFO_CLASS || + SystemInformationClass >= MAX_SYSTEM_INFO_CLASS) { _SEH2_YIELD(return STATUS_INVALID_INFO_CLASS); } diff --git a/ntoskrnl/io/iomgr/iofunc.c b/ntoskrnl/io/iomgr/iofunc.c index 61fd88f8fd..f2d3e59dd2 100644 --- a/ntoskrnl/io/iomgr/iofunc.c +++ b/ntoskrnl/io/iomgr/iofunc.c @@ -2158,7 +2158,8 @@ NtQueryInformationFile(IN HANDLE FileHandle, if (PreviousMode != KernelMode) { /* Validate the information class */ - if ((FileInformationClass >= FileMaximumInformation) || + if ((FileInformationClass < 0) || + (FileInformationClass >= FileMaximumInformation) || !(IopQueryOperationLength[FileInformationClass])) { /* Invalid class */ @@ -2192,7 +2193,8 @@ NtQueryInformationFile(IN HANDLE FileHandle, else { /* Validate the information class */ - if ((FileInformationClass >= FileMaximumInformation) || + if ((FileInformationClass < 0) || + (FileInformationClass >= FileMaximumInformation) || !(IopQueryOperationLength[FileInformationClass])) { /* Invalid class */ @@ -2959,7 +2961,8 @@ NtSetInformationFile(IN HANDLE FileHandle, if (PreviousMode != KernelMode) { /* Validate the information class */ - if ((FileInformationClass >= FileMaximumInformation) || + if ((FileInformationClass < 0) || + (FileInformationClass >= FileMaximumInformation) || !(IopSetOperationLength[FileInformationClass])) { /* Invalid class */ @@ -2995,7 +2998,8 @@ NtSetInformationFile(IN HANDLE FileHandle, else { /* Validate the information class */ - if ((FileInformationClass >= FileMaximumInformation) || + if ((FileInformationClass < 0) || + (FileInformationClass >= FileMaximumInformation) || !(IopSetOperationLength[FileInformationClass])) { /* Invalid class */ @@ -3991,7 +3995,8 @@ NtQueryVolumeInformationFile(IN HANDLE FileHandle, if (PreviousMode != KernelMode) { /* Validate the information class */ - if ((FsInformationClass >= FileFsMaximumInformation) || + if ((FsInformationClass < 0) || + (FsInformationClass >= FileFsMaximumInformation) || !(IopQueryFsOperationLength[FsInformationClass])) { /* Invalid class */ @@ -4163,7 +4168,8 @@ NtSetVolumeInformationFile(IN HANDLE FileHandle, if (PreviousMode != KernelMode) { /* Validate the information class */ - if ((FsInformationClass >= FileFsMaximumInformation) || + if ((FsInformationClass < 0) || + (FsInformationClass >= FileFsMaximumInformation) || !(IopSetFsOperationLength[FsInformationClass])) { /* Invalid class */
5 years, 10 months
1
0
0
0
[reactos] 01/01: [RPCRT4][RPCRT4_WINETEST] Don't unset IDL_FLAGS. Fixes build on 64 bit hosts.
by Thomas Faber
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=1a14dcb53f192b429dd0f…
commit 1a14dcb53f192b429dd0fee7406ada0a6d4e0c49 Author: Thomas Faber <thomas.faber(a)reactos.org> AuthorDate: Sat Feb 2 19:03:40 2019 +0100 Commit: Thomas Faber <thomas.faber(a)reactos.org> CommitDate: Sat Feb 2 19:06:04 2019 +0100 [RPCRT4][RPCRT4_WINETEST] Don't unset IDL_FLAGS. Fixes build on 64 bit hosts. --- dll/win32/rpcrt4/CMakeLists.txt | 3 ++- modules/rostests/winetests/rpcrt4/CMakeLists.txt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dll/win32/rpcrt4/CMakeLists.txt b/dll/win32/rpcrt4/CMakeLists.txt index 212231a3a2..24c5d8fb40 100644 --- a/dll/win32/rpcrt4/CMakeLists.txt +++ b/dll/win32/rpcrt4/CMakeLists.txt @@ -14,9 +14,10 @@ spec2def(rpcrt4.dll rpcrt4.spec ADD_IMPORTLIB) add_rpc_files(client epm.idl) add_idl_headers(ndr_types_header ndr_types.idl) +set(OLD_IDL_FLAGS ${IDL_FLAGS}) set(IDL_FLAGS ${IDL_FLAGS} -Oicf) add_rpcproxy_files(ndr_types.idl) -unset(IDL_FLAGS) +set(IDL_FLAGS ${OLD_IDL_FLAGS}) list(APPEND SOURCE cproxy.c diff --git a/modules/rostests/winetests/rpcrt4/CMakeLists.txt b/modules/rostests/winetests/rpcrt4/CMakeLists.txt index dbb7cf7fc1..4eeac9d3af 100644 --- a/modules/rostests/winetests/rpcrt4/CMakeLists.txt +++ b/modules/rostests/winetests/rpcrt4/CMakeLists.txt @@ -7,10 +7,11 @@ add_definitions( -DPROXY_DELEGATION) include_directories(${CMAKE_CURRENT_BINARY_DIR}) +set(OLD_IDL_FLAGS ${IDL_FLAGS}) set(IDL_FLAGS ${IDL_FLAGS} --prefix-server=s_) add_rpc_files(client server.idl) add_rpc_files(server server.idl) -unset(IDL_FLAGS) +set(IDL_FLAGS ${OLD_IDL_FLAGS}) add_rpcproxy_files(cstub.idl) list(APPEND SOURCE
5 years, 10 months
1
0
0
0
[reactos] 01/01: [SNDVOL32] Implement the mute checkbox. The tray dialog is done.
by Eric Kohl
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=60c28213bcb42b5bb4052…
commit 60c28213bcb42b5bb4052c723412730791c598fe Author: Eric Kohl <eric.kohl(a)reactos.org> AuthorDate: Sat Feb 2 17:21:35 2019 +0100 Commit: Eric Kohl <eric.kohl(a)reactos.org> CommitDate: Sat Feb 2 17:22:21 2019 +0100 [SNDVOL32] Implement the mute checkbox. The tray dialog is done. --- base/applications/sndvol32/tray.c | 68 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/base/applications/sndvol32/tray.c b/base/applications/sndvol32/tray.c index e871520d64..5970adcd21 100644 --- a/base/applications/sndvol32/tray.c +++ b/base/applications/sndvol32/tray.c @@ -20,6 +20,8 @@ typedef struct _DIALOG_DATA DWORD maxChannel; PMIXERCONTROLDETAILS_UNSIGNED volumeInitValues; PMIXERCONTROLDETAILS_UNSIGNED volumeCurrentValues; + + DWORD muteControlID; } DIALOG_DATA, *PDIALOG_DATA; @@ -54,9 +56,6 @@ OnTrayInitDialog( x = ptCursor.x; SetWindowPos(hwnd, HWND_TOPMOST, x, y, 0, 0, SWP_NOSIZE); - - /* Disable the controls for now */ - EnableWindow(GetDlgItem(hwnd, IDC_LINE_SWITCH), FALSE); } @@ -70,6 +69,7 @@ OnTrayInitMixer( MIXERCONTROL mxc; MIXERLINECONTROLS mxlctrl; MIXERCONTROLDETAILS mxcd; + MIXERCONTROLDETAILS_BOOLEAN mxcdBool; DWORD i; /* Open the mixer */ @@ -140,6 +140,63 @@ OnTrayInitMixer( SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_SETRANGE, TRUE, MAKELONG(VOLUME_MIN, VOLUME_MAX)); SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_SETPAGESIZE, 0, VOLUME_PAGE_SIZE); SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_SETPOS, TRUE, VOLUME_MAX -(pDialogData->maxVolume - pDialogData->volumeMinimum) / pDialogData->volumeStep); + + /* Retrieve the mute control information */ + mxlctrl.cbStruct = sizeof(MIXERLINECONTROLS); + mxlctrl.dwLineID = mxln.dwLineID; + mxlctrl.dwControlType = MIXERCONTROL_CONTROLTYPE_MUTE; + mxlctrl.cControls = 1; + mxlctrl.cbmxctrl = sizeof(MIXERCONTROL); + mxlctrl.pamxctrl = &mxc; + + if (mixerGetLineControls((HMIXEROBJ)pDialogData->hMixer, &mxlctrl, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR) + return; + + pDialogData->muteControlID = mxc.dwControlID; + + /* Retrieve the mute value */ + mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS); + mxcd.dwControlID = mxc.dwControlID; + mxcd.cChannels = 1; + mxcd.cMultipleItems = 0; + mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN); + mxcd.paDetails = &mxcdBool; + + if (mixerGetControlDetails((HMIXEROBJ)pDialogData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR) + return; + + /* Initialize the mute checkbox */ + SendDlgItemMessage(hwndDlg, IDC_LINE_SWITCH, BM_SETCHECK, (WPARAM)(mxcdBool.fValue ? BST_CHECKED : BST_UNCHECKED), 0); +} + + +static +VOID +OnCommand( + PDIALOG_DATA pDialogData, + HWND hwndDlg, + WPARAM wParam, + LPARAM lParam) +{ + MIXERCONTROLDETAILS mxcd; + MIXERCONTROLDETAILS_BOOLEAN mxcdMute; + + if ((LOWORD(wParam) == IDC_LINE_SWITCH) && + (HIWORD(wParam) == BN_CLICKED)) + { + mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS); + mxcd.dwControlID = pDialogData->muteControlID; + mxcd.cChannels = 1; + mxcd.cMultipleItems = 0; + mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_BOOLEAN); + mxcd.paDetails = &mxcdMute; + + mxcdMute.fValue = (SendMessage((HWND)lParam, BM_GETCHECK, 0, 0) == BST_CHECKED); + + mixerSetControlDetails((HMIXEROBJ)pDialogData->hMixer, + &mxcd, + MIXER_OBJECTF_HMIXER | MIXER_SETCONTROLDETAILSF_VALUE); + } } @@ -221,6 +278,11 @@ TrayDlgProc( OnTrayInitMixer(pDialogData, hwndDlg); break; + case WM_COMMAND: + if (pDialogData) + OnCommand(pDialogData, hwndDlg, wParam, lParam); + break; + case WM_VSCROLL: if (pDialogData) OnVScroll(pDialogData, hwndDlg, wParam, lParam);
5 years, 10 months
1
0
0
0
[reactos] 01/01: [UNIATA] Add AHCI revision 1.3.1
by Alexandr A. Telyatnikov
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0c7e9684bd25d5d54cee2…
commit 0c7e9684bd25d5d54cee2840f78bca60e46ede7d Author: Alexandr A. Telyatnikov <alter(a)alter.org.ua> AuthorDate: Sat Feb 2 01:18:15 2019 +0300 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Sat Feb 2 15:47:39 2019 +0100 [UNIATA] Add AHCI revision 1.3.1 Also explicitly print current AHCI revision in debug log. CORE-15643 --- drivers/storage/ide/uniata/id_sata.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/storage/ide/uniata/id_sata.cpp b/drivers/storage/ide/uniata/id_sata.cpp index 6a16c16f09..25fa089ea8 100644 --- a/drivers/storage/ide/uniata/id_sata.cpp +++ b/drivers/storage/ide/uniata/id_sata.cpp @@ -869,11 +869,12 @@ UniAtaAhciValidateVersion( case 0x00010100: case 0x00010200: case 0x00010300: + case 0x00010301: break; default: KdPrint2((PRINT_PREFIX " Unknown AHCI revision\n")); if(AtapiRegCheckDevValue(deviceExtension, CHAN_NOT_SPECIFIED, DEVNUM_NOT_SPECIFIED, L"CheckAhciRevision", Strict)) { - KdPrint((" AHCI revision excluded\n")); + KdPrint((" AHCI revision excluded %#x\n", version)); return FALSE; } } @@ -966,7 +967,7 @@ UniataAhciDetect( CAP = UniataAhciReadHostPort4(deviceExtension, IDX_AHCI_CAP); CAP2 = UniataAhciReadHostPort4(deviceExtension, IDX_AHCI_CAP2); - KdPrint2((PRINT_PREFIX " AHCI CAP %#x, CAP2 %#x\n", CAP, CAP2)); + KdPrint2((PRINT_PREFIX " AHCI CAP %#x, CAP2 %#x, ver %#x\n", CAP, CAP2, version)); if(CAP & AHCI_CAP_S64A) { KdPrint2((PRINT_PREFIX " 64bit")); //deviceExtension->Host64 = TRUE; // this is just DETECT, do not update anything
5 years, 10 months
1
0
0
0
[reactos] 01/01: [SETUPAPI] Add a stub for SetupDiDeleteDeviceInterfaceData to make the wine tests work.
by Eric Kohl
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=8687529bdf85d7654e5e5…
commit 8687529bdf85d7654e5e5cf06d02bab631f89279 Author: Eric Kohl <eric.kohl(a)reactos.org> AuthorDate: Sat Feb 2 15:13:35 2019 +0100 Commit: Eric Kohl <eric.kohl(a)reactos.org> CommitDate: Sat Feb 2 15:13:35 2019 +0100 [SETUPAPI] Add a stub for SetupDiDeleteDeviceInterfaceData to make the wine tests work. --- dll/win32/setupapi/interface.c | 14 ++++++++++++++ dll/win32/setupapi/setupapi.spec | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/dll/win32/setupapi/interface.c b/dll/win32/setupapi/interface.c index 172d045018..f080d51828 100644 --- a/dll/win32/setupapi/interface.c +++ b/dll/win32/setupapi/interface.c @@ -627,3 +627,17 @@ SetupDiOpenDeviceInterfaceRegKey( return hKey; } + +/*********************************************************************** + * SetupDiDeleteDeviceInterfaceData (SETUPAPI.@) + */ +BOOL +WINAPI +SetupDiDeleteDeviceInterfaceData( + HDEVINFO DeviceInfoSet, + PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData) +{ + FIXME("SetupDiDeleteDeviceInterfaceData(%p %p) stub\n", + DeviceInfoSet, DeviceInterfaceData); + return TRUE; +} diff --git a/dll/win32/setupapi/setupapi.spec b/dll/win32/setupapi/setupapi.spec index 99de0fca82..bfe00fa114 100644 --- a/dll/win32/setupapi/setupapi.spec +++ b/dll/win32/setupapi/setupapi.spec @@ -281,7 +281,7 @@ @ stdcall SetupDiCreateDeviceInterfaceW(ptr ptr ptr wstr long ptr) @ stdcall SetupDiDeleteDevRegKey(ptr ptr long long long) @ stdcall SetupDiDeleteDeviceInfo(long ptr) -@ stub SetupDiDeleteDeviceInterfaceData +@ stdcall SetupDiDeleteDeviceInterfaceData(ptr ptr) @ stdcall SetupDiDeleteDeviceInterfaceRegKey(ptr ptr long) @ stdcall SetupDiDestroyClassImageList(ptr) @ stdcall SetupDiDestroyDeviceInfoList(long)
5 years, 10 months
1
0
0
0
[reactos] 01/01: [SNDVOL32] Implement the volume control for the tray window.
by Eric Kohl
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c73c7cc16efa53e9208ac…
commit c73c7cc16efa53e9208acd64d1931c4a806e8692 Author: Eric Kohl <eric.kohl(a)reactos.org> AuthorDate: Sat Feb 2 14:43:30 2019 +0100 Commit: Eric Kohl <eric.kohl(a)reactos.org> CommitDate: Sat Feb 2 14:44:14 2019 +0100 [SNDVOL32] Implement the volume control for the tray window. --- base/applications/sndvol32/tray.c | 187 +++++++++++++++++++++++++++++++++++++- 1 file changed, 186 insertions(+), 1 deletion(-) diff --git a/base/applications/sndvol32/tray.c b/base/applications/sndvol32/tray.c index 2223aadaef..e871520d64 100644 --- a/base/applications/sndvol32/tray.c +++ b/base/applications/sndvol32/tray.c @@ -7,6 +7,22 @@ #include "sndvol32.h" +typedef struct _DIALOG_DATA +{ + HMIXER hMixer; + DWORD volumeControlID; + DWORD volumeChannels; + DWORD volumeMinimum; + DWORD volumeMaximum; + DWORD volumeStep; + + DWORD maxVolume; + DWORD maxChannel; + PMIXERCONTROLDETAILS_UNSIGNED volumeInitValues; + PMIXERCONTROLDETAILS_UNSIGNED volumeCurrentValues; +} DIALOG_DATA, *PDIALOG_DATA; + + static VOID OnTrayInitDialog( HWND hwnd, @@ -40,11 +56,147 @@ OnTrayInitDialog( SetWindowPos(hwnd, HWND_TOPMOST, x, y, 0, 0, SWP_NOSIZE); /* Disable the controls for now */ - EnableWindow(GetDlgItem(hwnd, IDC_LINE_SLIDER_VERT), FALSE); EnableWindow(GetDlgItem(hwnd, IDC_LINE_SWITCH), FALSE); } +static +VOID +OnTrayInitMixer( + PDIALOG_DATA pDialogData, + HWND hwndDlg) +{ + MIXERLINE mxln; + MIXERCONTROL mxc; + MIXERLINECONTROLS mxlctrl; + MIXERCONTROLDETAILS mxcd; + DWORD i; + + /* Open the mixer */ + if (mixerOpen(&pDialogData->hMixer, 0, PtrToUlong(hwndDlg), 0, MIXER_OBJECTF_MIXER | CALLBACK_WINDOW) != MMSYSERR_NOERROR) + return; + + /* Retrieve the mixer information */ + mxln.cbStruct = sizeof(MIXERLINE); + mxln.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS; + + if (mixerGetLineInfo((HMIXEROBJ)pDialogData->hMixer, &mxln, MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE) != MMSYSERR_NOERROR) + return; + + pDialogData->volumeChannels = mxln.cChannels; + + /* Retrieve the line information */ + mxlctrl.cbStruct = sizeof(MIXERLINECONTROLS); + mxlctrl.dwLineID = mxln.dwLineID; + mxlctrl.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME; + mxlctrl.cControls = 1; + mxlctrl.cbmxctrl = sizeof(MIXERCONTROL); + mxlctrl.pamxctrl = &mxc; + + if (mixerGetLineControls((HMIXEROBJ)pDialogData->hMixer, &mxlctrl, MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR) + return; + + pDialogData->volumeControlID = mxc.dwControlID; + pDialogData->volumeMinimum = mxc.Bounds.dwMinimum; + pDialogData->volumeMaximum = mxc.Bounds.dwMaximum; + pDialogData->volumeStep = (pDialogData->volumeMaximum - pDialogData->volumeMinimum) / (VOLUME_MAX - VOLUME_MIN); + + /* Allocate a buffer for all channel volume values */ + pDialogData->volumeInitValues = HeapAlloc(GetProcessHeap(), + 0, + mxln.cChannels * sizeof(MIXERCONTROLDETAILS_UNSIGNED)); + if (pDialogData->volumeInitValues == NULL) + return; + + pDialogData->volumeCurrentValues = HeapAlloc(GetProcessHeap(), + 0, + mxln.cChannels * sizeof(MIXERCONTROLDETAILS_UNSIGNED)); + if (pDialogData->volumeCurrentValues == NULL) + return; + + /* Retrieve the channel volume values */ + mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS); + mxcd.dwControlID = mxc.dwControlID; + mxcd.cChannels = mxln.cChannels; + mxcd.cMultipleItems = 0; + mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED); + mxcd.paDetails = pDialogData->volumeInitValues; + + if (mixerGetControlDetails((HMIXEROBJ)pDialogData->hMixer, &mxcd, MIXER_OBJECTF_HMIXER | MIXER_GETCONTROLDETAILSF_VALUE) != MMSYSERR_NOERROR) + return; + + pDialogData->maxVolume = pDialogData->volumeInitValues[0].dwValue; + pDialogData->maxChannel = 0; + for (i = 1; i < pDialogData->volumeChannels; i++) + { + if (pDialogData->volumeInitValues[i].dwValue > pDialogData->maxVolume) + { + pDialogData->maxVolume = pDialogData->volumeInitValues[i].dwValue; + pDialogData->maxChannel = i; + } + } + + /* Initialize the volume trackbar */ + SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_SETRANGE, TRUE, MAKELONG(VOLUME_MIN, VOLUME_MAX)); + SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_SETPAGESIZE, 0, VOLUME_PAGE_SIZE); + SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_SETPOS, TRUE, VOLUME_MAX -(pDialogData->maxVolume - pDialogData->volumeMinimum) / pDialogData->volumeStep); +} + + +static +VOID +OnVScroll( + PDIALOG_DATA pDialogData, + HWND hwndDlg, + WPARAM wParam, + LPARAM lParam) +{ + MIXERCONTROLDETAILS mxcd; + DWORD dwPos, dwVolume, i; + + switch (LOWORD(wParam)) + { + case TB_THUMBTRACK: + + dwPos = VOLUME_MAX - (DWORD)SendDlgItemMessage(hwndDlg, IDC_LINE_SLIDER_VERT, TBM_GETPOS, 0, 0); + dwVolume = (dwPos * pDialogData->volumeStep) + pDialogData->volumeMinimum; + + for (i = 0; i < pDialogData->volumeChannels; i++) + { + if (i == pDialogData->maxChannel) + { + pDialogData->volumeCurrentValues[i].dwValue = dwVolume; + } + else + { + pDialogData->volumeCurrentValues[i].dwValue = + pDialogData->volumeInitValues[i].dwValue * dwVolume / pDialogData-> maxVolume; + } + } + + mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS); + mxcd.dwControlID = pDialogData->volumeControlID; + mxcd.cChannels = pDialogData->volumeChannels; + mxcd.cMultipleItems = 0; + mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED); + mxcd.paDetails = pDialogData->volumeCurrentValues; + + mixerSetControlDetails((HMIXEROBJ)pDialogData->hMixer, + &mxcd, + MIXER_OBJECTF_HMIXER | MIXER_SETCONTROLDETAILSF_VALUE); + break; + + case TB_ENDTRACK: + PlaySound((LPCTSTR)SND_ALIAS_SYSTEMDEFAULT, NULL, SND_ASYNC | SND_ALIAS_ID); + break; + + default: + break; + } +} + + + INT_PTR CALLBACK TrayDlgProc( @@ -53,10 +205,43 @@ TrayDlgProc( WPARAM wParam, LPARAM lParam) { + PDIALOG_DATA pDialogData; + + pDialogData = (PDIALOG_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER); + switch (uMsg) { case WM_INITDIALOG: OnTrayInitDialog(hwndDlg, wParam, lParam); + + pDialogData = (PDIALOG_DATA)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DIALOG_DATA)); + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pDialogData); + + if (pDialogData) + OnTrayInitMixer(pDialogData, hwndDlg); + break; + + case WM_VSCROLL: + if (pDialogData) + OnVScroll(pDialogData, hwndDlg, wParam, lParam); + break; + + case WM_DESTROY: + if (pDialogData) + { + if (pDialogData->volumeInitValues) + HeapFree(GetProcessHeap(), 0, pDialogData->volumeInitValues); + + if (pDialogData->volumeCurrentValues) + HeapFree(GetProcessHeap(), 0, pDialogData->volumeCurrentValues); + + if (pDialogData->hMixer) + mixerClose(pDialogData->hMixer); + + HeapFree(GetProcessHeap(), 0, pDialogData); + pDialogData = NULL; + SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)NULL); + } break; case WM_ACTIVATE:
5 years, 10 months
1
0
0
0
[reactos] 01/01: [SETUP] GUI setup Hindi translation (#951)
by Arnav Bhatt
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f5960cea70c3a9e6cccd2…
commit f5960cea70c3a9e6cccd2045610a381600cb029e Author: Arnav Bhatt <arnavbhatt288(a)gmail.com> AuthorDate: Sat Feb 2 19:11:31 2019 +0530 Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org> CommitDate: Sat Feb 2 14:41:31 2019 +0100 [SETUP] GUI setup Hindi translation (#951) --- base/setup/reactos/lang/hi-IN.rc | 144 +++++++++++++++++++++++++++++++++++++++ base/setup/reactos/reactos.rc | 3 + 2 files changed, 147 insertions(+) diff --git a/base/setup/reactos/lang/hi-IN.rc b/base/setup/reactos/lang/hi-IN.rc new file mode 100644 index 0000000000..ae1be18dfc --- /dev/null +++ b/base/setup/reactos/lang/hi-IN.rc @@ -0,0 +1,144 @@ +/* + * PROJECT: ReactOS GUI First Stage Setup + * LICENSE: GPL-2.0+ (
https://spdx.org/licenses/GPL-2.0+
) + * PURPOSE: Hindi Translation Of First Stage Setup + * COPYRIGHT: Copyright 2018 Arnav Bhatt (arnavbhatt2004(a)gmail.com) + */ + +LANGUAGE LANG_HINDI, SUBLANG_HINDI_INDIA + +IDD_STARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "रिऐक्ट ओएस सेटअप" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "रिऐक्ट ओएस सेटअप विज़ार्ड में आपका स्वागत है।", IDC_STARTTITLE, 115, 8, 195, 24 + LTEXT "आप अभी तक इस सीडी से सीधे रिऐक्ट ओएस इंस्टॉल नहीं कर सकते हैं! कृपया अपने कंप्यूटर को रिऐक्ट ओएस इंस्टॉल करने के लिए इस सीडी से रीस्टॉर्ट करें।", IDC_STATIC, 115, 40, 195, 100 + LTEXT "सेटअप से बाहर निकलने के लिए समाप्त क्लिक करें।", IDC_STATIC, 115, 169, 195, 17 +END + +IDD_TYPEPAGE DIALOGEX 0, 0, 317, 143 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "रिऐक्ट ओएस सेटअप" +FONT 8, "MS Shell Dlg" +BEGIN + AUTORADIOBUTTON "रिऐक्ट ओएस इंस्टॉल करें", IDC_INSTALL, 7, 7, 277, 10 + LTEXT "रिऐक्ट ओएस की एक नई कापी इन्स्टॉल करें। यह विकल्प आपकी फाइलें, सेटिंग्स और प्रोग्राम नहीं रखता है। आप डिस्क और विभाजन में परिवर्तन कर सकते हैं।", IDC_INSTALLTEXT, 18, 18, 269, 25 + AUTORADIOBUTTON "रिऐक्ट ओएस की अद्यतन या मरम्मत करे। ", IDC_UPDATE, 7, 50, 277, 10 + LTEXT "रिऐक्ट ओएस की एक स्थापित कापी अद्यतन या मरम्मत करे। यह विकल्प आपकी फाइलें, सेटिंग्स और प्रोग्राम रखता है। यह विकल्प केवल तभी उपलब्ध होता है जब इस कंप्यूटर पर रिऐक्ट ओएस पहले से इंस्टॉल हो।", IDC_UPDATETEXT, 18, 61, 269, 30 + LTEXT "जारी रखने के लिए आगे दबाएँ।", IDC_STATIC, 7, 128, 297, 8 +END + +IDD_DEVICEPAGE DIALOGEX 0, 0, 317, 143 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "रिऐक्ट ओएस सेटअप" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "कंप्यूटर:", IDC_STATIC, 20, 15, 80, 10 + CONTROL "", IDC_COMPUTER, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST, 100, 15, 180, 80 + LTEXT "डिस्प्ले:", IDC_STATIC, 20, 35, 80, 10 + CONTROL "", IDC_DISPLAY, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST, 100, 35, 180, 80 + LTEXT "कीबोर्ड:", IDC_STATIC, 20, 55, 80, 10 + CONTROL "", IDC_KEYBOARD, "ComboBox", WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWNLIST, 100, 55, 180, 80 + LTEXT "डिवाइस की इन्स्टलेशन का सेटअप के लिए आगे क्लिक करें।", IDC_STATIC, 7, 128, 297, 8 +END + +IDD_DRIVEPAGE DIALOGEX 0, 0, 317, 143 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "रिऐक्ट ओएस सेटअप" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDC_PARTITION, "SysListView32", WS_BORDER | WS_VISIBLE | WS_TABSTOP | LVS_REPORT | LVS_SINGLESEL, 7, 7, 303, 112 + PUSHBUTTON "&बनाएं", IDC_PARTCREATE, 7, 122, 50, 14 + PUSHBUTTON "&डिलीट", IDC_PARTDELETE, 63, 122, 50, 14 + PUSHBUTTON "&ड्राइवर", IDC_DEVICEDRIVER, 174, 122, 50, 14, WS_DISABLED + PUSHBUTTON "&उन्नत विकल्प...", IDC_PARTMOREOPTS, 230, 122, 80, 14 +/* LTEXT "Click Next to check the summary.", IDC_STATIC, 7, 128, 277, 8 */ +END + +IDD_PARTITION DIALOGEX 0, 0, 145, 90 +STYLE DS_SHELLFONT | WS_VISIBLE | WS_CAPTION +CAPTION "विभाजन बनाएं" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDC_UPDOWN1, "msctls_updown32", WS_VISIBLE, 104, 22, 9, 13 + CONTROL "विभाजन बनाएं और फ़ॉर्मेट करें", IDC_STATIC, "Button", BS_GROUPBOX, 7, 5, 129, 57 + LTEXT "साइज़:", IDC_STATIC, 13, 24, 27, 9 + EDITTEXT IDC_PARTSIZE, 58, 22, 47, 13, WS_VISIBLE | WS_TABSTOP + LTEXT "GB", IDC_UNIT, 117, 24, 14, 9 + LTEXT "फाइल सिस्टम:", IDC_STATIC, 13, 46, 42, 9 + CONTROL "", IDC_FSTYPE, "ComboBox", WS_VISIBLE | WS_TABSTOP | CBS_DROPDOWNLIST, 58, 42, 73, 50 + PUSHBUTTON "&ओके", IDOK, 35, 68, 47, 15, WS_VISIBLE | WS_TABSTOP + PUSHBUTTON "&रद्द करे", IDCANCEL, 87, 68, 47, 15, WS_VISIBLE | WS_TABSTOP +END + +IDD_BOOTOPTIONS DIALOGEX 0, 0, 305, 116 +STYLE DS_SHELLFONT | WS_VISIBLE | WS_CAPTION +CAPTION "उन्नत विभाजन सेटिंग्स" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "इन्स्टलेशन फ़ोल्डर", IDC_STATIC, "Button", BS_GROUPBOX, 4, 1, 298, 30 + EDITTEXT IDC_PATH, 10, 11, 278, 13, WS_VISIBLE + CONTROL "बूट लोडर इन्स्टलेशन", IDC_STATIC, "Button", BS_GROUPBOX, 4, 36, 298, 52 + CONTROL "हार्ड डिस्क पर बूट लोडर इंस्टॉल करें (MBR और VBR)", IDC_INSTFREELDR, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 10, 46, 278, 11 + CONTROL "हार्ड डिस्क पर बूट लोडर इंस्टॉल करें (केवल VBR)", IDC_INSTVBRONLY, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 10, 57, 278, 11 + CONTROL "बूटलोडर की कोई इन्स्टलेशन नहीं", IDC_NOINSTFREELDR, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP | WS_DISABLED, 10, 68, 278, 11 + PUSHBUTTON "&ओके", IDOK, 180, 94, 50, 15, WS_TABSTOP | WS_VISIBLE + PUSHBUTTON "&रद्द करे", IDCANCEL, 240, 94, 50, 15, WS_TABSTOP | WS_VISIBLE +END + +IDD_SUMMARYPAGE DIALOGEX 0, 0, 317, 143 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "रिऐक्ट ओएस सेटअप" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "इन्स्टलेशन प्रक्रिया शुरू करने के लिए आगे क्लिक करें।", IDC_STATIC, 7, 128, 303, 8 +END + +IDD_PROCESSPAGE DIALOGEX 0, 0, 317, 143 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "रिऐक्ट ओएस सेटअप" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "फाइलें इंस्टॉल करें...", IDC_ACTIVITY, 20, 50, 277, 10 + LTEXT "test.txt", IDC_ITEM, 30, 80, 257, 10 + CONTROL "", IDC_PROCESSPROGRESS, "msctls_progress32", PBS_SMOOTH | WS_CHILD | WS_VISIBLE | WS_BORDER, 7, 120, 303, 8 +END + +IDD_RESTARTPAGE DIALOGEX 0, 0, 317, 193 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "रिऐक्ट ओएस सेटअप को पूरा करना" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "आपने रिऐक्ट ओएस सेटअप का पहला चरण सफलतापूर्वक पूरा कर लिया है।", IDC_STATIC, 115, 50, 195, 10 + LTEXT "जब आप समाप्त क्लिक करते हैं, तो आपका कंप्यूटर रीस्टॉर्ट होगा।", IDC_STATIC, 115, 80, 195, 10 + CONTROL "", IDC_RESTART_PROGRESS, "msctls_progress32", PBS_SMOOTH | WS_CHILD | WS_VISIBLE | WS_BORDER, 115, 110, 195, 8 + LTEXT "यदि ड्राइव में सीडी है, तो इसे हटा दें। फिर, अपने कंप्यूटर को पुनरारंभ करने के लिए, समाप्त क्लिक करें।", IDC_STATIC, 115, 169, 195, 17 +END + +STRINGTABLE +BEGIN + IDS_TYPETITLE "रिऐक्ट ओएस सेटअप में आपका स्वागत है" + IDS_TYPESUBTITLE "सेटअप प्रकार चुनें।" + IDS_DEVICETITLE "बुनियादी डिवाइसों को सेटअप करें" + IDS_DEVICESUBTITLE "डिस्प्ले और कीबोर्ड की सेटिंग्स सेट करें।" + IDS_DRIVETITLE "इन्स्टलेशन विभाजन और सिस्टम फ़ोल्डर सेटअप करें" + IDS_DRIVESUBTITLE "इन्स्टलेशन विभाजन, सिस्टम फ़ोल्डर और बूट लोडर तैयार करें।" + IDS_PROCESSTITLE "सेटअप विभाजन, कॉपी फ़ाइलें और सेटअप सिस्टम" + IDS_PROCESSSUBTITLE "विभाजन बनाएं और फ़ॉर्मेट करें, फ़ाइलें कॉपी करें, बूट लोडर को इंस्टॉल करें और सेटअप करें" + IDS_RESTARTTITLE "सेटअप का पहला चरण समाप्त हो गया" + IDS_RESTARTSUBTITLE "सेटअप का पहला चरण पूरा हो गया है, दूसरे चरण के साथ जारी रखने के लिए रीस्टॉर्ट करें" + IDS_SUMMARYTITLE "इन्स्टलेशन सारांश" + IDS_SUMMARYSUBTITLE "इन्स्टलेशन डिवाइस पर लागू करने से पहले जांच करने के लिए इन्स्टलेशन गुणों की सूची" + IDS_ABORTSETUP "रिऐक्ट ओएस आपके कंप्यूटर पर पूरी तरह से इंस्टॉल नहीं है। अगर आप अभी सेटअप को छोड़ देते हैं, तो आपको रिऐक्ट ओएस इंस्टॉल करने के लिए सेटअप को फिर से चलाने की आवश्यकता होगी। आपको वास्तव में छोड़ना है?" + IDS_ABORTSETUP2 "इन्स्टलेशन रद्द करें?" + IDS_NO_TXTSETUP_SIF "'txtsetup.sif' खोजने में असमर्थ \nसेटअप जारी रखने में असमर्थ है " + IDS_CAPTION "रिऐक्ट ओएस सेटअप" +END + +STRINGTABLE +BEGIN + IDS_PARTITION_NAME "नाम" + IDS_PARTITION_SIZE "साइज़" + IDS_PARTITION_TYPE "प्रकार" +END diff --git a/base/setup/reactos/reactos.rc b/base/setup/reactos/reactos.rc index b1fdf6f33d..fd2281782e 100644 --- a/base/setup/reactos/reactos.rc +++ b/base/setup/reactos/reactos.rc @@ -57,6 +57,9 @@ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "reactos.exe.manifest" #ifdef LANGUAGE_HE_IL #include "lang/he-IL.rc" #endif +#ifdef LANGUAGE_HI_IN + #include "lang/hi-IN.rc" +#endif #ifdef LANGUAGE_HU_HU #include "lang/hu-HU.rc" #endif
5 years, 10 months
1
0
0
0
← Newer
1
...
15
16
17
18
19
20
21
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
Results per page:
10
25
50
100
200