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
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
June 2015
----- 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
13 participants
343 discussions
Start a n
N
ew thread
[akhaldi] 68067: [USER32_WINETEST] Sync with Wine Staging 1.7.43.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Jun 8 10:56:37 2015 New Revision: 68067 URL:
http://svn.reactos.org/svn/reactos?rev=68067&view=rev
Log: [USER32_WINETEST] Sync with Wine Staging 1.7.43. Modified: trunk/rostests/winetests/user32/class.c trunk/rostests/winetests/user32/clipboard.c trunk/rostests/winetests/user32/input.c trunk/rostests/winetests/user32/msg.c trunk/rostests/winetests/user32/static.c trunk/rostests/winetests/user32/win.c trunk/rostests/winetests/user32/winstation.c Modified: trunk/rostests/winetests/user32/class.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/class.c?…
============================================================================== --- trunk/rostests/winetests/user32/class.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/class.c [iso-8859-1] Mon Jun 8 10:56:37 2015 @@ -1002,6 +1002,13 @@ hsmicon = (HICON)GetClassLongPtrW(hwnd, GCLP_HICONSM); ok(hsmicon != NULL, "GetClassLong should return non-zero handle\n"); + ok(SendMessageA(hwnd, WM_GETICON, ICON_BIG, 0) == 0, + "WM_GETICON with ICON_BIG should not return the class icon\n"); + ok(SendMessageA(hwnd, WM_GETICON, ICON_SMALL, 0) == 0, + "WM_GETICON with ICON_SMALL should not return the class icon\n"); + ok(SendMessageA(hwnd, WM_GETICON, ICON_SMALL2, 0) == 0, + "WM_GETICON with ICON_SMALL2 should not return the class icon\n"); + hsmallnew = CopyImage(wcex.hIcon, IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 0); ok(!SetClassLongPtrW(hwnd, GCLP_HICONSM, (LONG_PTR)hsmallnew), Modified: trunk/rostests/winetests/user32/clipboard.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/clipboar…
============================================================================== --- trunk/rostests/winetests/user32/clipboard.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/clipboard.c [iso-8859-1] Mon Jun 8 10:56:37 2015 @@ -35,9 +35,18 @@ expected_error, GetLastError()); \ } while (0) +static DWORD WINAPI open_clipboard_thread(LPVOID arg) +{ + HWND hWnd = arg; + ok(OpenClipboard(hWnd), "OpenClipboard second time in the same hwnd failed\n"); + return 0; +} + static void test_ClipboardOwner(void) { + HANDLE thread; HWND hWnd1, hWnd2; + DWORD dwret; BOOL ret; SetLastError(0xdeadbeef); @@ -66,7 +75,12 @@ ok( ret, "CloseClipboard error %d\n", GetLastError()); ok(OpenClipboard(hWnd1), "OpenClipboard failed\n"); - todo_wine ok(OpenClipboard(hWnd1), "OpenClipboard second time in the same hwnd failed\n"); + thread = CreateThread(NULL, 0, open_clipboard_thread, hWnd1, 0, NULL); + ok(thread != NULL, "CreateThread failed with error %d\n", GetLastError()); + dwret = WaitForSingleObject(thread, 1000); + ok(dwret == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", dwret); + CloseHandle(thread); + ok(OpenClipboard(hWnd1), "OpenClipboard second time in the same hwnd failed\n"); SetLastError(0xdeadbeef); ret = OpenClipboard(hWnd2); @@ -150,8 +164,8 @@ if (format_id < 0xc000) ok(!len, "GetClipboardFormatNameA should fail, but it returned %d (%s)\n", len, buf); - else - if (len) trace("%04x: %s\n", format_id, len ? buf : ""); + else if (len && winetest_debug > 1) + trace("%04x: %s\n", format_id, len ? buf : ""); } ret = OpenClipboard(0); Modified: trunk/rostests/winetests/user32/input.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/input.c?…
============================================================================== --- trunk/rostests/winetests/user32/input.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/input.c [iso-8859-1] Mon Jun 8 10:56:37 2015 @@ -1542,7 +1542,7 @@ { WCHAR wStr[4]; BYTE state[256]; - const BYTE SC_RETURN = 0x1c, SC_TAB = 0x0f; + const BYTE SC_RETURN = 0x1c, SC_TAB = 0x0f, SC_A = 0x1e; const BYTE HIGHEST_BIT = 0x80; int i, ret; for(i=0; i<256; i++) @@ -1564,9 +1564,13 @@ ok(wStr[1]==0 || broken(wStr[1]!=0) /* nt4 */, "ToUnicode didn't null-terminate the buffer when there was room.\n"); } + + ret = ToUnicode('A', SC_A, state, wStr, 4, 0); + ok(ret == 1, "ToUnicode for character A didn't return 1 (was %i)\n", ret); + ok(wStr[0] == 'a', "ToUnicode for character 'A' was %i (expected %i)\n", wStr[0], 'a'); + state[VK_CONTROL] |= HIGHEST_BIT; state[VK_LCONTROL] |= HIGHEST_BIT; - ret = ToUnicode(VK_TAB, SC_TAB, state, wStr, 2, 0); ok(ret == 0, "ToUnicode for CTRL + Tab didn't return 0 (was %i)\n", ret); @@ -1574,6 +1578,10 @@ ok(ret == 1, "ToUnicode for CTRL + Return didn't return 1 (was %i)\n", ret); if(ret == 1) ok(wStr[0]=='\n', "ToUnicode for CTRL + Return was %i (expected 10)\n", wStr[0]); + + ret = ToUnicode('A', SC_A, state, wStr, 4, 0); + ok(ret == 1, "ToUnicode for CTRL + character A didn't return 1 (was %i)\n", ret); + ok(wStr[0] == 1, "ToUnicode for CTRL + character 'A' was %i (expected 1)\n", wStr[0]); state[VK_SHIFT] |= HIGHEST_BIT; state[VK_LSHIFT] |= HIGHEST_BIT; @@ -1581,6 +1589,66 @@ ok(ret == 0, "ToUnicode for CTRL + SHIFT + Tab didn't return 0 (was %i)\n", ret); ret = ToUnicode(VK_RETURN, SC_RETURN, state, wStr, 2, 0); todo_wine ok(ret == 0, "ToUnicode for CTRL + SHIFT + Return didn't return 0 (was %i)\n", ret); + + ret = ToUnicode(VK_TAB, SC_TAB, NULL, wStr, 4, 0); + ok(ret == 0, "ToUnicode with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicode(VK_RETURN, SC_RETURN, NULL, wStr, 4, 0); + ok(ret == 0, "ToUnicode with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicode('A', SC_A, NULL, wStr, 4, 0); + ok(ret == 0, "ToUnicode with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicodeEx(VK_TAB, SC_TAB, NULL, wStr, 4, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToUnicodeEx with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicodeEx(VK_RETURN, SC_RETURN, NULL, wStr, 4, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToUnicodeEx with NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToUnicodeEx('A', SC_A, NULL, wStr, 4, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToUnicodeEx with NULL keystate didn't return 0 (was %i)\n", ret); +} + +static void test_ToAscii(void) +{ + WORD character; + BYTE state[256]; + const BYTE SC_RETURN = 0x1c, SC_A = 0x1e; + const BYTE HIGHEST_BIT = 0x80; + int ret; + + memset(state, 0, sizeof(state)); + + character = 0; + ret = ToAscii(VK_RETURN, SC_RETURN, state, &character, 0); + ok(ret == 1, "ToAscii for Return key didn't return 1 (was %i)\n", ret); + ok(character == '\r', "ToAscii for Return was %i (expected 13)\n", character); + + character = 0; + ret = ToAscii('A', SC_A, state, &character, 0); + ok(ret == 1, "ToAscii for character 'A' didn't return 1 (was %i)\n", ret); + ok(character == 'a', "ToAscii for character 'A' was %i (expected %i)\n", character, 'a'); + + state[VK_CONTROL] |= HIGHEST_BIT; + state[VK_LCONTROL] |= HIGHEST_BIT; + character = 0; + ret = ToAscii(VK_RETURN, SC_RETURN, state, &character, 0); + ok(ret == 1, "ToAscii for CTRL + Return key didn't return 1 (was %i)\n", ret); + ok(character == '\n', "ToAscii for CTRL + Return was %i (expected 10)\n", character); + + character = 0; + ret = ToAscii('A', SC_A, state, &character, 0); + ok(ret == 1, "ToAscii for CTRL + character 'A' didn't return 1 (was %i)\n", ret); + ok(character == 1, "ToAscii for CTRL + character 'A' was %i (expected 1)\n", character); + + state[VK_SHIFT] |= HIGHEST_BIT; + state[VK_LSHIFT] |= HIGHEST_BIT; + ret = ToAscii(VK_RETURN, SC_RETURN, state, &character, 0); + todo_wine ok(ret == 0, "ToAscii for CTRL + Shift + Return key didn't return 0 (was %i)\n", ret); + + ret = ToAscii(VK_RETURN, SC_RETURN, NULL, &character, 0); + ok(ret == 0, "ToAscii for NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToAscii('A', SC_A, NULL, &character, 0); + ok(ret == 0, "ToAscii for NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToAsciiEx(VK_RETURN, SC_RETURN, NULL, &character, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToAsciiEx for NULL keystate didn't return 0 (was %i)\n", ret); + ret = ToAsciiEx('A', SC_A, NULL, &character, 0, GetKeyboardLayout(0)); + ok(ret == 0, "ToAsciiEx for NULL keystate didn't return 0 (was %i)\n", ret); } static void test_get_async_key_state(void) @@ -1899,6 +1967,9 @@ ok(!got_button_up, "unexpected WM_LBUTTONUP message\n"); /* click after SetCapture call */ + hwnd = CreateWindowA("button", "button", WS_VISIBLE | WS_POPUP, + 0, 0, 100, 100, 0, NULL, NULL, NULL); + ok(hwnd != 0, "CreateWindow failed\n"); SetCapture(button_win); got_button_down = got_button_up = FALSE; simulate_click(FALSE, 50, 50); @@ -1920,6 +1991,7 @@ } ok(got_button_down, "expected WM_RBUTTONDOWN message\n"); ok(got_button_up, "expected WM_RBUTTONUP message\n"); + DestroyWindow(hwnd); /* click on child window after SetCapture call */ hwnd = CreateWindowA("button", "button2", WS_VISIBLE | WS_CHILD, @@ -1953,6 +2025,307 @@ DestroyWindow(button_win); } + +static LRESULT WINAPI MsgCheckProcA(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + if (message == WM_USER+1) + { + HWND hwnd = (HWND)lParam; + ok(GetFocus() == hwnd, "thread expected focus %p, got %p\n", hwnd, GetFocus()); + ok(GetActiveWindow() == hwnd, "thread expected active %p, got %p\n", hwnd, GetActiveWindow()); + } + return DefWindowProcA(hwnd, message, wParam, lParam); +} + +struct wnd_event +{ + HWND hwnd; + HANDLE wait_event; + HANDLE start_event; + DWORD attach_from; + DWORD attach_to; + BOOL setWindows; +}; + +static DWORD WINAPI thread_proc(void *param) +{ + MSG msg; + struct wnd_event *wnd_event = param; + BOOL ret; + + if (wnd_event->wait_event) + { + ok(WaitForSingleObject(wnd_event->wait_event, INFINITE) == WAIT_OBJECT_0, + "WaitForSingleObject failed\n"); + CloseHandle(wnd_event->wait_event); + } + + if (wnd_event->attach_from) + { + ret = AttachThreadInput(wnd_event->attach_from, GetCurrentThreadId(), TRUE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + } + + if (wnd_event->attach_to) + { + ret = AttachThreadInput(GetCurrentThreadId(), wnd_event->attach_to, TRUE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + } + + wnd_event->hwnd = CreateWindowExA(0, "TestWindowClass", "window caption text", WS_OVERLAPPEDWINDOW, + 100, 100, 200, 200, 0, 0, 0, NULL); + ok(wnd_event->hwnd != 0, "Failed to create overlapped window\n"); + + if (wnd_event->setWindows) + { + SetFocus(wnd_event->hwnd); + SetActiveWindow(wnd_event->hwnd); + } + + SetEvent(wnd_event->start_event); + + while (GetMessageA(&msg, 0, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessageA(&msg); + } + + return 0; +} + +static void test_attach_input(void) +{ + HANDLE hThread; + HWND ourWnd, Wnd2; + DWORD ret, tid; + struct wnd_event wnd_event; + WNDCLASSA cls; + + cls.style = 0; + cls.lpfnWndProc = MsgCheckProcA; + cls.cbClsExtra = 0; + cls.cbWndExtra = 0; + cls.hInstance = GetModuleHandleA(0); + cls.hIcon = 0; + cls.hCursor = LoadCursorW( NULL, (LPCWSTR)IDC_ARROW); + cls.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); + cls.lpszMenuName = NULL; + cls.lpszClassName = "TestWindowClass"; + if(!RegisterClassA(&cls)) return; + + wnd_event.wait_event = NULL; + wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL); + wnd_event.attach_from = 0; + wnd_event.attach_to = 0; + wnd_event.setWindows = FALSE; + if (!wnd_event.start_event) + { + win_skip("skipping interthread message test under win9x\n"); + return; + } + + hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid); + ok(hThread != NULL, "CreateThread failed, error %d\n", GetLastError()); + + ok(WaitForSingleObject(wnd_event.start_event, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(wnd_event.start_event); + + ourWnd = CreateWindowExA(0, "TestWindowClass", NULL, WS_OVERLAPPEDWINDOW, + 0, 0, 0, 0, 0, 0, 0, NULL); + ok(ourWnd!= 0, "failed to create ourWnd window\n"); + + Wnd2 = CreateWindowExA(0, "TestWindowClass", NULL, WS_OVERLAPPEDWINDOW, + 0, 0, 0, 0, 0, 0, 0, NULL); + ok(Wnd2!= 0, "failed to create Wnd2 window\n"); + + SetFocus(ourWnd); + SetActiveWindow(ourWnd); + + ret = AttachThreadInput(GetCurrentThreadId(), tid, TRUE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + + ok(GetActiveWindow() == ourWnd, "expected active %p, got %p\n", ourWnd, GetActiveWindow()); + ok(GetFocus() == ourWnd, "expected focus %p, got %p\n", ourWnd, GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, (LPARAM)ourWnd); + + ret = AttachThreadInput(GetCurrentThreadId(), tid, FALSE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + ok(GetActiveWindow() == ourWnd, "expected active %p, got %p\n", ourWnd, GetActiveWindow()); + ok(GetFocus() == ourWnd, "expected focus %p, got %p\n", ourWnd, GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, 0); + + ret = AttachThreadInput(GetCurrentThreadId(), tid, TRUE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + + ok(GetActiveWindow() == ourWnd, "expected active %p, got %p\n", ourWnd, GetActiveWindow()); + ok(GetFocus() == ourWnd, "expected focus %p, got %p\n", ourWnd, GetFocus()); + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, (LPARAM)ourWnd); + + SetActiveWindow(Wnd2); + SetFocus(Wnd2); + ok(GetActiveWindow() == Wnd2, "expected active %p, got %p\n", Wnd2, GetActiveWindow()); + ok(GetFocus() == Wnd2, "expected focus %p, got %p\n", Wnd2, GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, (LPARAM)Wnd2); + + ret = AttachThreadInput(GetCurrentThreadId(), tid, FALSE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + ok(GetActiveWindow() == Wnd2, "expected active %p, got %p\n", Wnd2, GetActiveWindow()); + ok(GetFocus() == Wnd2, "expected focus %p, got %p\n", Wnd2, GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, 0); + + ret = PostMessageA(wnd_event.hwnd, WM_QUIT, 0, 0); + ok(ret, "PostMessageA(WM_QUIT) error %d\n", GetLastError()); + + ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hThread); + + wnd_event.wait_event = NULL; + wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL); + wnd_event.attach_from = 0; + wnd_event.attach_to = 0; + wnd_event.setWindows = TRUE; + + hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid); + ok(hThread != NULL, "CreateThread failed, error %d\n", GetLastError()); + + ok(WaitForSingleObject(wnd_event.start_event, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(wnd_event.start_event); + + SetFocus(ourWnd); + SetActiveWindow(ourWnd); + + ret = AttachThreadInput(GetCurrentThreadId(), tid, TRUE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + + ok(GetActiveWindow() == wnd_event.hwnd, "expected active %p, got %p\n", wnd_event.hwnd, GetActiveWindow()); + ok(GetFocus() == wnd_event.hwnd, "expected focus %p, got %p\n", wnd_event.hwnd, GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, (LPARAM)wnd_event.hwnd); + + ret = AttachThreadInput(GetCurrentThreadId(), tid, FALSE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + + ok(GetActiveWindow() == 0, "expected active 0, got %p\n", GetActiveWindow()); + ok(GetFocus() == 0, "expected focus 0, got %p\n", GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, (LPARAM)wnd_event.hwnd); + + ret = AttachThreadInput(GetCurrentThreadId(), tid, TRUE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + + ok(GetActiveWindow() == wnd_event.hwnd, "expected active %p, got %p\n", wnd_event.hwnd, GetActiveWindow()); + ok(GetFocus() == wnd_event.hwnd, "expected focus %p, got %p\n", wnd_event.hwnd, GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, (LPARAM)wnd_event.hwnd); + + SetFocus(Wnd2); + SetActiveWindow(Wnd2); + ok(GetActiveWindow() == Wnd2, "expected active %p, got %p\n", Wnd2, GetActiveWindow()); + ok(GetFocus() == Wnd2, "expected focus %p, got %p\n", Wnd2, GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, (LPARAM)Wnd2); + + ret = AttachThreadInput(GetCurrentThreadId(), tid, FALSE); + ok(ret, "AttachThreadInput error %d\n", GetLastError()); + + ok(GetActiveWindow() == Wnd2, "expected active %p, got %p\n", Wnd2, GetActiveWindow()); + ok(GetFocus() == Wnd2, "expected focus %p, got %p\n", Wnd2, GetFocus()); + + SendMessageA(wnd_event.hwnd, WM_USER+1, 0, 0); + + ret = PostMessageA(wnd_event.hwnd, WM_QUIT, 0, 0); + ok(ret, "PostMessageA(WM_QUIT) error %d\n", GetLastError()); + + ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hThread); + + wnd_event.wait_event = CreateEventW(NULL, 0, 0, NULL); + wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL); + wnd_event.attach_from = 0; + wnd_event.attach_to = 0; + wnd_event.setWindows = TRUE; + + hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid); + ok(hThread != NULL, "CreateThread failed, error %d\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = AttachThreadInput(GetCurrentThreadId(), tid, TRUE); + ok(!ret, "AttachThreadInput succeeded\n"); + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == 0xdeadbeef) /* <= Win XP */, + "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = AttachThreadInput(tid, GetCurrentThreadId(), TRUE); + ok(!ret, "AttachThreadInput succeeded\n"); + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == 0xdeadbeef) /* <= Win XP */, + "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); + + SetEvent(wnd_event.wait_event); + + ok(WaitForSingleObject(wnd_event.start_event, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(wnd_event.start_event); + + ret = PostMessageA(wnd_event.hwnd, WM_QUIT, 0, 0); + ok(ret, "PostMessageA(WM_QUIT) error %d\n", GetLastError()); + + ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hThread); + + wnd_event.wait_event = NULL; + wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL); + wnd_event.attach_from = GetCurrentThreadId(); + wnd_event.attach_to = 0; + wnd_event.setWindows = FALSE; + + SetFocus(ourWnd); + SetActiveWindow(ourWnd); + + hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid); + ok(hThread != NULL, "CreateThread failed, error %d\n", GetLastError()); + + ok(WaitForSingleObject(wnd_event.start_event, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(wnd_event.start_event); + + ok(GetActiveWindow() == ourWnd, "expected active %p, got %p\n", ourWnd, GetActiveWindow()); + ok(GetFocus() == ourWnd, "expected focus %p, got %p\n", ourWnd, GetFocus()); + + ret = PostMessageA(wnd_event.hwnd, WM_QUIT, 0, 0); + ok(ret, "PostMessageA(WM_QUIT) error %d\n", GetLastError()); + + ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hThread); + + wnd_event.wait_event = NULL; + wnd_event.start_event = CreateEventW(NULL, 0, 0, NULL); + wnd_event.attach_from = 0; + wnd_event.attach_to = GetCurrentThreadId(); + wnd_event.setWindows = FALSE; + + SetFocus(ourWnd); + SetActiveWindow(ourWnd); + + hThread = CreateThread(NULL, 0, thread_proc, &wnd_event, 0, &tid); + ok(hThread != NULL, "CreateThread failed, error %d\n", GetLastError()); + + ok(WaitForSingleObject(wnd_event.start_event, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(wnd_event.start_event); + + ok(GetActiveWindow() == ourWnd, "expected active %p, got %p\n", ourWnd, GetActiveWindow()); + ok(GetFocus() == ourWnd, "expected focus %p, got %p\n", ourWnd, GetFocus()); + + ret = PostMessageA(wnd_event.hwnd, WM_QUIT, 0, 0); + ok(ret, "PostMessageA(WM_QUIT) error %d\n", GetLastError()); + + ok(WaitForSingleObject(hThread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n"); + CloseHandle(hThread); + DestroyWindow(ourWnd); + DestroyWindow(Wnd2); +} + START_TEST(input) { init_function_pointers(); @@ -1970,9 +2343,11 @@ test_mouse_ll_hook(); test_key_map(); test_ToUnicode(); + test_ToAscii(); test_get_async_key_state(); test_keyboard_layout_name(); test_key_names(); + test_attach_input(); if(pGetMouseMovePointsEx) test_GetMouseMovePointsEx(); Modified: trunk/rostests/winetests/user32/msg.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/msg.c?re…
============================================================================== --- trunk/rostests/winetests/user32/msg.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/msg.c [iso-8859-1] Mon Jun 8 10:56:37 2015 @@ -10437,6 +10437,115 @@ done: DestroyWindow(hwnd); SetCursorPos(pos.x, pos.y); + flush_events(); +} + +static void test_PeekMessage3(void) +{ + HWND hwnd; + BOOL ret; + MSG msg; + + hwnd = CreateWindowA("TestWindowClass", "PeekMessage3", WS_OVERLAPPEDWINDOW, + 10, 10, 800, 800, NULL, NULL, NULL, NULL); + ok(hwnd != NULL, "expected hwnd != NULL\n"); + flush_events(); + + /* GetMessage() and PeekMessage(..., PM_REMOVE) should prefer messages which + * were already seen. */ + + SetTimer(hwnd, 1, 0, NULL); + while (!PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE)); + ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + PostMessageA(hwnd, WM_USER, 0, 0); + ret = PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE); + ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); + + SetTimer(hwnd, 1, 0, NULL); + while (!PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE)); + ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + PostMessageA(hwnd, WM_USER, 0, 0); + ret = PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE); + ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, PM_REMOVE); + ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); + + /* It doesn't matter if a message range is specified or not. */ + + SetTimer(hwnd, 1, 0, NULL); + while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + PostMessageA(hwnd, WM_USER, 0, 0); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); + + /* But not if the post messages were added before the PeekMessage() call. */ + + PostMessageA(hwnd, WM_USER, 0, 0); + SetTimer(hwnd, 1, 0, NULL); + while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); + + /* More complicated test with multiple messages. */ + + PostMessageA(hwnd, WM_USER, 0, 0); + SetTimer(hwnd, 1, 0, NULL); + while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + PostMessageA(hwnd, WM_USER + 1, 0, 0); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_USER + 1, "msg.message = %u instead of WM_USER + 1\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); + + /* Also works for posted messages, but the situation is a bit different, + * because both messages are in the same queue. */ + + PostMessageA(hwnd, WM_TIMER, 0, 0); + while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + PostMessageA(hwnd, WM_USER, 0, 0); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); + + PostMessageA(hwnd, WM_USER, 0, 0); + PostMessageA(hwnd, WM_TIMER, 0, 0); + while (!PeekMessageA(&msg, NULL, WM_TIMER, WM_TIMER, PM_NOREMOVE)); + ok(msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_USER, "msg.message = %u instead of WM_USER\n", msg.message); + ret = GetMessageA(&msg, NULL, 0, 0); + ok(ret && msg.message == WM_TIMER, "msg.message = %u instead of WM_TIMER\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, 0); + ok(!ret, "expected PeekMessage to return FALSE, got %u\n", ret); + + DestroyWindow(hwnd); flush_events(); } @@ -14124,10 +14233,9 @@ ret = AttachThreadInput(GetCurrentThreadId(), tid, TRUE); ok(ret, "AttachThreadInput error %d\n", GetLastError()); -todo_wine { ok(GetActiveWindow() == parent, "expected active %p, got %p\n", parent, GetActiveWindow()); ok(GetFocus() == parent, "expected focus %p, got %p\n", parent, GetFocus()); -} + flush_events(); flush_sequence(); @@ -14484,6 +14592,160 @@ DestroyWindow(hwnd); } +static const struct message send_message_1[] = { + { WM_USER+2, sent|wparam|lparam, 0, 0 }, + { WM_USER, sent|wparam|lparam, 0, 0 }, + { 0 } +}; +static const struct message send_message_2[] = { + { WM_USER+4, sent|wparam|lparam, 0, 0 }, + { 0 } +}; +static const struct message send_message_3[] = { + { WM_USER+3, sent|wparam|lparam, 0, 0 }, + { 0 } +}; +static const struct message send_message_4[] = { + { WM_USER+1, sent|wparam|lparam, 0, 0 }, + { 0 } +}; + +static DWORD WINAPI SendMessage_thread_1(void *param) +{ + struct wnd_event *wnd_event = param; + + trace("thread: starting\n"); + WaitForSingleObject(wnd_event->start_event, INFINITE); + + trace("thread: call PostMessage\n"); + PostMessageA(wnd_event->hwnd, WM_USER, 0, 0); + + trace("thread: call PostMessage\n"); + PostMessageA(wnd_event->hwnd, WM_USER+1, 0, 0); + + trace("thread: call SendMessage\n"); + SendMessageA(wnd_event->hwnd, WM_USER+2, 0, 0); + + trace("thread: call SendMessage\n"); + SendMessageA(wnd_event->hwnd, WM_USER+3, 0, 0); + + return 0; +} + +static DWORD WINAPI SendMessage_thread_2(void *param) +{ + struct wnd_event *wnd_event = param; + + trace("thread: starting\n"); + WaitForSingleObject(wnd_event->start_event, INFINITE); + + trace("thread: call PostMessage\n"); + PostMessageA(wnd_event->hwnd, WM_USER, 0, 0); + + trace("thread: call PostMessage\n"); + PostMessageA(wnd_event->hwnd, WM_USER+1, 0, 0); + + /* this leads to sending an internal message under Wine */ + trace("thread: call EnableWindow\n"); + EnableWindow(wnd_event->hwnd, TRUE); + + trace("thread: call SendMessage\n"); + SendMessageA(wnd_event->hwnd, WM_USER+2, 0, 0); + + trace("thread: call SendMessage\n"); + SendMessageA(wnd_event->hwnd, WM_USER+3, 0, 0); + + return 0; +} + +static void test_SendMessage_other_thread(int thread_n) +{ + DWORD qs_all_input = QS_ALLINPUT & ~QS_RAWINPUT; + HANDLE hthread; + struct wnd_event wnd_event; + DWORD tid, ret; + MSG msg; + + wnd_event.start_event = CreateEventA(NULL, 0, 0, NULL); + + wnd_event.hwnd = CreateWindowExA(0, "TestWindowClass", NULL, WS_OVERLAPPEDWINDOW, + 100, 100, 200, 200, 0, 0, 0, NULL); + ok(wnd_event.hwnd != 0, "CreateWindowEx failed\n"); + + hthread = CreateThread(NULL, 0, thread_n == 1 ? SendMessage_thread_1 : SendMessage_thread_2, &wnd_event, 0, &tid); + ok(hthread != NULL, "CreateThread failed, error %d\n", GetLastError()); + CloseHandle(hthread); + + flush_events(); + flush_sequence(); + + ret = GetQueueStatus(QS_SENDMESSAGE); + ok(ret == 0, "wrong status %08x\n", ret); + + SetEvent(wnd_event.start_event); + + /* wait for other thread's SendMessage */ + for (;;) + { + ret = GetQueueStatus(QS_SENDMESSAGE); + if (ret == MAKELONG(QS_SENDMESSAGE, QS_SENDMESSAGE)) break; + Sleep(50); + } + + ret = GetQueueStatus(QS_SENDMESSAGE|QS_POSTMESSAGE); + ok(ret == MAKELONG(QS_POSTMESSAGE, QS_SENDMESSAGE|QS_POSTMESSAGE), "wrong status %08x\n", ret); + + trace("main: call GetMessage\n"); + GetMessageA(&msg, 0, 0, 0); + ok(msg.message == WM_USER, "expected WM_USER, got %04x\n", msg.message); + DispatchMessageA(&msg); + ok_sequence(send_message_1, "SendMessage from other thread 1", thread_n == 2); + + /* intentionally yield */ + MsgWaitForMultipleObjects(0, NULL, FALSE, 100, qs_all_input); + + trace("main: call SendMessage\n"); + SendMessageA(wnd_event.hwnd, WM_USER+4, 0, 0); + ok_sequence(send_message_2, "SendMessage from other thread 2", FALSE); + + ret = GetQueueStatus(QS_SENDMESSAGE|QS_POSTMESSAGE); + ok(ret == MAKELONG(QS_SENDMESSAGE, QS_SENDMESSAGE|QS_POSTMESSAGE), "wrong status %08x\n", ret); + + trace("main: call PeekMessage\n"); + ok(PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE), "PeekMessage should not fail\n"); + ok(msg.message == WM_USER+1, "expected WM_USER+1, got %04x\n", msg.message); + ok_sequence(send_message_3, "SendMessage from other thread 3", thread_n == 2); + + trace("main: call PeekMessage\n"); + ok(PeekMessageA(&msg, 0, 0, 0, PM_REMOVE), "PeekMessage should not fail\n"); + ok(msg.message == WM_USER+1, "expected WM_USER+1, got %04x\n", msg.message); + DispatchMessageA(&msg); + ok_sequence(send_message_4, "SendMessage from other thread 4", FALSE); + + /* intentionally yield */ + MsgWaitForMultipleObjects(0, NULL, FALSE, 100, qs_all_input); + + ret = GetQueueStatus(QS_SENDMESSAGE|QS_POSTMESSAGE); + /* FIXME: remove once Wine is fixed */ +if (thread_n == 2) todo_wine + ok(ret == 0, "wrong status %08x\n", ret); +else + ok(ret == 0, "wrong status %08x\n", ret); + + trace("main: call PeekMessage\n"); + ok(!PeekMessageA(&msg, 0, 0, 0, PM_REMOVE), "PeekMessage should fail\n"); + ok_sequence(WmEmptySeq, "SendMessage from other thread 5", thread_n == 2); + + ret = GetQueueStatus(QS_SENDMESSAGE|QS_POSTMESSAGE); + ok(ret == 0, "wrong status %08x\n", ret); + + trace("main: call DestroyWindow\n"); + DestroyWindow(msg.hwnd); + + flush_events(); + flush_sequence(); +} + static void init_funcs(void) { HMODULE hKernel32 = GetModuleHandleA("kernel32.dll"); @@ -14562,12 +14824,16 @@ pUnhookWinEvent = 0; } hEvent_hook = 0; + + test_SendMessage_other_thread(1); + test_SendMessage_other_thread(2); test_SetFocus(); test_SetParent(); test_PostMessage(); test_ShowWindow(); test_PeekMessage(); test_PeekMessage2(); + test_PeekMessage3(); test_WaitForInputIdle( test_argv[0] ); test_scrollwindowex(); test_messages(); @@ -14700,9 +14966,12 @@ } init_tests(); + test_SendMessage_other_thread(1); + test_SendMessage_other_thread(2); test_PostMessage(); test_PeekMessage(); test_PeekMessage2(); + test_PeekMessage3(); test_interthread_messages(); test_DispatchMessage(); test_SendMessageTimeout(); Modified: trunk/rostests/winetests/user32/static.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/static.c…
============================================================================== --- trunk/rostests/winetests/user32/static.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/static.c [iso-8859-1] Mon Jun 8 10:56:37 2015 @@ -117,6 +117,21 @@ DestroyWindow(hStatic); } +static void test_set_text(void) +{ + HWND hStatic = build_static(SS_SIMPLE); + char buffA[10]; + + GetWindowTextA(hStatic, buffA, sizeof(buffA)); + ok(!strcmp(buffA, "Test"), "got wrong text %s\n", buffA); + + SetWindowTextA(hStatic, NULL); + GetWindowTextA(hStatic, buffA, sizeof(buffA)); + ok(buffA[0] == 0, "got wrong text %s\n", buffA); + + DestroyWindow(hStatic); +} + START_TEST(static) { static const char szClassName[] = "testclass"; @@ -148,6 +163,7 @@ test_updates(SS_WHITERECT, TODO_COUNT); test_updates(SS_ETCHEDHORZ, TODO_COUNT); test_updates(SS_ETCHEDVERT, TODO_COUNT); + test_set_text(); DestroyWindow(hMainWnd); } Modified: trunk/rostests/winetests/user32/win.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/win.c?re…
============================================================================== --- trunk/rostests/winetests/user32/win.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/win.c [iso-8859-1] Mon Jun 8 10:56:37 2015 @@ -2007,23 +2007,20 @@ res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL, 0 ); ok( res == 0, "wrong small icon %p/0\n", res ); - /* this test is XP specific */ - /*res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL2, 0 ); - ok( res != 0, "wrong small icon %p\n", res );*/ + res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL2, 0 ); + ok( (res && res != small_icon && res != icon2) || broken(!res), "wrong small2 icon %p\n", res ); res = (HICON)SendMessageA( hwnd, WM_SETICON, ICON_SMALL, (LPARAM)icon ); ok( res == 0, "wrong previous small icon %p/0\n", res ); res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL, 0 ); ok( res == icon, "wrong small icon after set %p/%p\n", res, icon ); - /* this test is XP specific */ - /*res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL2, 0 ); - ok( res == icon, "wrong small icon after set %p/%p\n", res, icon );*/ + res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL2, 0 ); + ok( res == icon || broken(!res), "wrong small2 icon after set %p/%p\n", res, icon ); res = (HICON)SendMessageA( hwnd, WM_SETICON, ICON_SMALL, (LPARAM)small_icon ); ok( res == icon, "wrong previous small icon %p/%p\n", res, icon ); res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL, 0 ); ok( res == small_icon, "wrong small icon after set %p/%p\n", res, small_icon ); - /* this test is XP specific */ - /*res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL2, 0 ); - ok( res == small_icon, "wrong small icon after set %p/%p\n", res, small_icon );*/ + res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_SMALL2, 0 ); + ok( res == small_icon || broken(!res), "wrong small2 icon after set %p/%p\n", res, small_icon ); /* make sure the big icon hasn't changed */ res = (HICON)SendMessageA( hwnd, WM_GETICON, ICON_BIG, 0 ); @@ -3797,7 +3794,7 @@ ok((lpss->styleOld & ~WS_EX_WINDOWEDGE) == (lpcs->dwExStyle & ~WS_EX_WINDOWEDGE), "Ex style (0x%08x) should match what the caller passed to CreateWindowEx (0x%08x)\n", - (lpss->styleOld & ~WS_EX_WINDOWEDGE), (lpcs->dwExStyle & ~WS_EX_WINDOWEDGE)); + lpss->styleOld, lpcs->dwExStyle); ok(lpss->styleNew == lpcs->style, "Style (0x%08x) should match what the caller passed to CreateWindowEx (0x%08x)\n", @@ -3985,14 +3982,14 @@ style = GetWindowLongA(hwnd, GWL_STYLE); ex_style = GetWindowLongA(hwnd, GWL_EXSTYLE); - ok(style == (style_out | DS_3DLOOK), "expected style %#x, got %#x\n", style_out | DS_3DLOOK, style); + ok(style == (style_out | DS_3DLOOK), "got %#x\n", style); ok(ex_style == ex_style_out, "expected ex_style %#x, got %#x\n", ex_style_out, ex_style); /* try setting the styles explicitly */ SetWindowLongA(hwnd, GWL_EXSTYLE, ex_style_in); style = GetWindowLongA(hwnd, GWL_STYLE); ex_style = GetWindowLongA(hwnd, GWL_EXSTYLE); - ok(style == (style_out | DS_3DLOOK), "expected style %#x, got %#x\n", style_out|DS_3DLOOK, style); + ok(style == (style_out | DS_3DLOOK), "got %#x\n", style); /* WS_EX_WINDOWEDGE can't always be changed */ if (ex_style_in & WS_EX_DLGMODALFRAME) ex_style_out = ex_style_in | WS_EX_WINDOWEDGE; @@ -4883,6 +4880,7 @@ WNDCLASSA classA; WNDCLASSW classW; HWND hwnd; + ATOM atom; memset(&classW, 0, sizeof(classW)); classW.hInstance = GetModuleHandleA(0); @@ -4894,7 +4892,8 @@ classA.hInstance = GetModuleHandleA(0); classA.lpfnWndProc = def_window_procA; classA.lpszClassName = ansi_class_nameA; - assert(RegisterClassA(&classA)); + atom = RegisterClassA(&classA); + assert(atom); /* unicode class: window proc */ hwnd = CreateWindowExW(0, unicode_class_nameW, NULL, WS_POPUP, @@ -5794,7 +5793,7 @@ num_msgs++; } CloseHandle( thread ); - ok( num_msgs == 1, "got %u wakeups from MsgWaitForMultipleObjects\n", num_msgs ); + ok( num_msgs >= 1, "got %u wakeups from MsgWaitForMultipleObjects\n", num_msgs ); /* test interthread SetWindowText */ num_msgs = 0; @@ -5807,7 +5806,7 @@ num_msgs++; } CloseHandle( thread ); - ok( num_msgs == 1, "got %u wakeups from MsgWaitForMultipleObjects\n", num_msgs ); + ok( num_msgs >= 1, "got %u wakeups from MsgWaitForMultipleObjects\n", num_msgs ); num_gettext_msgs = 0; memset( buf, 0, sizeof(buf) ); @@ -8006,35 +8005,40 @@ GetMessageA(&msg, button, 0, 0); ok(msg.message == WM_APP, "msg.message = %x\n", msg.message); pos = GetMessagePos(); - todo_wine ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); + ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); PostMessageA(button, WM_APP, 0, 0); SetCursorPos(350, 330); GetMessageA(&msg, button, 0, 0); ok(msg.message == WM_APP, "msg.message = %x\n", msg.message); pos = GetMessagePos(); - todo_wine ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); + ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); PostMessageA(button, WM_APP, 0, 0); SetCursorPos(320, 340); PostMessageA(button, WM_APP+1, 0, 0); pos = GetMessagePos(); - todo_wine ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); + ok(pos == MAKELONG(340, 320), "pos = %08x\n", pos); GetMessageA(&msg, button, 0, 0); ok(msg.message == WM_APP, "msg.message = %x\n", msg.message); pos = GetMessagePos(); - todo_wine ok(pos == MAKELONG(350, 330), "pos = %08x\n", pos); + ok(pos == MAKELONG(350, 330), "pos = %08x\n", pos); GetMessageA(&msg, button, 0, 0); ok(msg.message == WM_APP+1, "msg.message = %x\n", msg.message); pos = GetMessagePos(); - todo_wine ok(pos == MAKELONG(320, 340), "pos = %08x\n", pos); + ok(pos == MAKELONG(320, 340), "pos = %08x\n", pos); SetTimer(button, 1, 250, NULL); SetCursorPos(330, 350); GetMessageA(&msg, button, 0, 0); + while (msg.message == WM_PAINT) + { + UpdateWindow( button ); + GetMessageA(&msg, button, 0, 0); + } ok(msg.message == WM_TIMER, "msg.message = %x\n", msg.message); pos = GetMessagePos(); - todo_wine ok(pos == MAKELONG(330, 350), "pos = %08x\n", pos); + ok(pos == MAKELONG(330, 350), "pos = %08x\n", pos); KillTimer(button, 1); DestroyWindow(button); Modified: trunk/rostests/winetests/user32/winstation.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/user32/winstati…
============================================================================== --- trunk/rostests/winetests/user32/winstation.c [iso-8859-1] (original) +++ trunk/rostests/winetests/user32/winstation.c [iso-8859-1] Mon Jun 8 10:56:37 2015 @@ -880,7 +880,10 @@ if (input_desk_id == thread_desk_id) { ok(ret, "SetForegroundWindow failed!\n"); - ok(hwnd == hwnd_test , "unexpected foreground window %p\n", hwnd); + if (hwnd) + ok(hwnd == hwnd_test , "unexpected foreground window %p\n", hwnd); + else + todo_wine ok(hwnd == hwnd_test , "unexpected foreground window %p\n", hwnd); } else { @@ -893,12 +896,18 @@ if (input_desk_id == thread_desk_id) { ok(!ret, "SetForegroundWindow should fail!\n"); - ok(hwnd == partners[input_desk_id] , "unexpected foreground window %p\n", hwnd); + if (hwnd) + ok(hwnd == partners[input_desk_id] , "unexpected foreground window %p\n", hwnd); + else + todo_wine ok(hwnd == partners[input_desk_id] , "unexpected foreground window %p\n", hwnd); } else { todo_wine ok(!ret, "SetForegroundWindow should fail!\n"); - todo_wine ok(hwnd == 0, "unexpected foreground window %p\n", hwnd); + if (!hwnd) + ok(hwnd == 0, "unexpected foreground window %p\n", hwnd); + else + todo_wine ok(hwnd == 0, "unexpected foreground window %p\n", hwnd); } } }
9 years, 10 months
1
0
0
0
[aandrejevic] 68066: [NTVDM] Fix INT 21h, AH=55h. It's supposed to set the current PSP too. Fix the order of registers in DOS_REGISTER_STATE to make it more compatible.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Sun Jun 7 23:07:15 2015 New Revision: 68066 URL:
http://svn.reactos.org/svn/reactos?rev=68066&view=rev
Log: [NTVDM] Fix INT 21h, AH=55h. It's supposed to set the current PSP too. Fix the order of registers in DOS_REGISTER_STATE to make it more compatible. Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/dos.c trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.h Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/dos.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/dos.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/dos.c [iso-8859-1] Sun Jun 7 23:07:15 2015 @@ -1510,6 +1510,7 @@ case 0x55: { DosCreatePsp(getDX(), getSI()); + DosSetProcessContext(getDX()); break; } Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.h [iso-8859-1] Sun Jun 7 23:07:15 2015 @@ -74,8 +74,7 @@ typedef struct _DOS_REGISTER_STATE { - WORD DI, SI, BP, BX, DX, CX, AX; - WORD ES, DS; + WORD AX, BX, CX, DX, SI, DI, BP, DS, ES; } DOS_REGISTER_STATE, *PDOS_REGISTER_STATE; #pragma pack(pop)
9 years, 10 months
1
0
0
0
[aandrejevic] 68065: [NTVDM] Revert r67603, apparently DosTerminateProcess should just always pop the registers. Make our DOS_REGISTERS_STATE structure more compatible.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Sun Jun 7 20:29:56 2015 New Revision: 68065 URL:
http://svn.reactos.org/svn/reactos?rev=68065&view=rev
Log: [NTVDM] Revert r67603, apparently DosTerminateProcess should just always pop the registers. Make our DOS_REGISTERS_STATE structure more compatible. Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dem.c trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/dos.c trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.h Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dem.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/dos/dem.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dem.c [iso-8859-1] Sun Jun 7 20:29:56 2015 @@ -266,7 +266,7 @@ } /* Start the process from the command line */ - Result = DosStartProcess(AppName, CmdLine, Env); + Result = DosStartProcess(AppName, CmdLine, Env, 0); if (Result != ERROR_SUCCESS) { DisplayMessage(L"Could not start '%S'. Error: %u", AppName, Result); Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/dos.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/dos.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/dos.c [iso-8859-1] Sun Jun 7 20:29:56 2015 @@ -1376,7 +1376,9 @@ if (LoadType == DOS_LOAD_AND_EXECUTE) { /* Create a new process */ - ErrorCode = DosCreateProcess(ProgramName, ParamBlock); + ErrorCode = DosCreateProcess(ProgramName, + ParamBlock, + MAKELONG(Stack[STACK_IP], Stack[STACK_CS])); } else #endif @@ -1386,7 +1388,8 @@ ProgramName, ParamBlock, NULL, - NULL); + NULL, + MAKELONG(Stack[STACK_IP], Stack[STACK_CS])); } } else if (OrgAL == 0x05) Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.c [iso-8859-1] Sun Jun 7 20:29:56 2015 @@ -49,25 +49,24 @@ PDOS_REGISTER_STATE State; WORD StackPointer = getSP(); - /* Allocate stack space for the registers */ - StackPointer -= sizeof(DOS_REGISTER_STATE); + /* + * Allocate stack space for the registers. Note that we + * already have one word allocated (the interrupt number). + */ + StackPointer -= sizeof(DOS_REGISTER_STATE) - sizeof(WORD); State = SEG_OFF_TO_PTR(getSS(), StackPointer); setSP(StackPointer); /* Save */ - State->EAX = getEAX(); - State->ECX = getECX(); - State->EDX = getEDX(); - State->EBX = getEBX(); - State->ESP = getESP(); - State->EBP = getEBP(); - State->ESI = getESI(); - State->EDI = getEDI(); State->DS = getDS(); State->ES = getES(); - State->FS = getFS(); - State->GS = getGS(); - State->Flags = getEFLAGS(); + State->AX = getAX(); + State->CX = getCX(); + State->DX = getDX(); + State->BX = getBX(); + State->BP = getBP(); + State->SI = getSI(); + State->DI = getDI(); } static inline VOID DosRestoreState(VOID) @@ -76,21 +75,18 @@ /* Pop the state structure from the stack */ State = SEG_OFF_TO_PTR(getSS(), getSP()); - setSP(getSP() + sizeof(DOS_REGISTER_STATE)); + setSP(getSP() + sizeof(DOS_REGISTER_STATE) - sizeof(WORD)); /* Restore */ - setEAX(State->EAX); - setECX(State->ECX); - setEDX(State->EDX); - setEBX(State->EBX); - setEBP(State->EBP); - setESI(State->ESI); - setEDI(State->EDI); setDS(State->DS); setES(State->ES); - setFS(State->FS); - setGS(State->GS); - setEFLAGS(State->Flags); + setAX(State->AX); + setCX(State->CX); + setDX(State->DX); + setBX(State->BX); + setBP(State->BP); + setSI(State->SI); + setDI(State->DI); } static WORD DosCopyEnvironmentBlock(LPCSTR Environment OPTIONAL, @@ -244,7 +240,8 @@ IN LPCSTR ExecutablePath, IN PDOS_EXEC_PARAM_BLOCK Parameters, IN LPCSTR CommandLine OPTIONAL, - IN LPCSTR Environment OPTIONAL) + IN LPCSTR Environment OPTIONAL, + IN DWORD ReturnAddress OPTIONAL) { DWORD Result = ERROR_SUCCESS; HANDLE FileHandle = INVALID_HANDLE_VALUE, FileMapping = NULL; @@ -454,8 +451,8 @@ DosChangeMemoryOwner(Segment, Segment); DosChangeMemoryOwner(EnvBlock, Segment); - /* Set INT 22h to the current CS:IP */ - ((PULONG)BaseAddress)[0x22] = MAKELONG(getIP(), getCS()); + /* Set INT 22h to the return address */ + ((PULONG)BaseAddress)[0x22] = ReturnAddress; /* Create the PSP */ DosCreatePsp(Segment, (WORD)TotalSize); @@ -556,8 +553,8 @@ DosChangeMemoryOwner(Segment, Segment); DosChangeMemoryOwner(EnvBlock, Segment); - /* Set INT 22h to the current CS:IP */ - ((PULONG)BaseAddress)[0x22] = MAKELONG(getIP(), getCS()); + /* Set INT 22h to the return address */ + ((PULONG)BaseAddress)[0x22] = ReturnAddress; /* Create the PSP */ DosCreatePsp(Segment, MaxAllocSize); @@ -641,7 +638,8 @@ DWORD DosStartProcess(IN LPCSTR ExecutablePath, IN LPCSTR CommandLine, - IN LPCSTR Environment OPTIONAL) + IN LPCSTR Environment OPTIONAL, + IN DWORD ReturnAddress OPTIONAL) { DWORD Result; @@ -658,7 +656,8 @@ ExecutablePath, NULL, CommandLine, - Environment); + Environment, + ReturnAddress); if (Result != ERROR_SUCCESS) goto Quit; @@ -686,7 +685,8 @@ #ifndef STANDALONE WORD DosCreateProcess(LPCSTR ProgramName, - PDOS_EXEC_PARAM_BLOCK Parameters) + PDOS_EXEC_PARAM_BLOCK Parameters, + DWORD ReturnAddress OPTIONAL) { DWORD Result; DWORD BinaryType; @@ -809,7 +809,8 @@ AppName, Parameters, CmdLine, - Env); + Env, + ReturnAddress); if (Result == ERROR_SUCCESS) { /* Increment the re-entry count */ @@ -849,6 +850,7 @@ PDOS_MCB CurrentMcb; LPDWORD IntVecTable = (LPDWORD)((ULONG_PTR)BaseAddress); PDOS_PSP PspBlock = SEGMENT_TO_PSP(Psp); + LPWORD Stack; #ifndef STANDALONE VDM_COMMAND_INFO CommandInfo; #endif @@ -951,15 +953,12 @@ setSS(HIWORD(SEGMENT_TO_PSP(Sda->CurrentPsp)->LastStack)); setSP(LOWORD(SEGMENT_TO_PSP(Sda->CurrentPsp)->LastStack)); - /* Are we returning to DOS code? */ - if (HIWORD(PspBlock->TerminateAddress) == DOS_CODE_SEGMENT) - { - /* Pop the task state */ - DosRestoreState(); - } + /* Pop the task state */ + DosRestoreState(); /* Return control to the parent process */ - CpuExecute(HIWORD(PspBlock->TerminateAddress), - LOWORD(PspBlock->TerminateAddress)); -} - + Stack = (LPWORD)SEG_OFF_TO_PTR(getSS(), getSP()); + Stack[STACK_CS] = HIWORD(PspBlock->TerminateAddress); + Stack[STACK_IP] = LOWORD(PspBlock->TerminateAddress); +} + Modified: trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/dos/…
============================================================================== --- trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/mvdm/ntvdm/dos/dos32krnl/process.h [iso-8859-1] Sun Jun 7 20:29:56 2015 @@ -74,9 +74,8 @@ typedef struct _DOS_REGISTER_STATE { - DWORD Flags; - WORD GS, FS, ES, DS; - DWORD EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX; + WORD DI, SI, BP, BX, DX, CX, AX; + WORD ES, DS; } DOS_REGISTER_STATE, *PDOS_REGISTER_STATE; #pragma pack(pop) @@ -97,19 +96,22 @@ IN LPCSTR ExecutablePath, IN PDOS_EXEC_PARAM_BLOCK Parameters, IN LPCSTR CommandLine OPTIONAL, - IN LPCSTR Environment OPTIONAL + IN LPCSTR Environment OPTIONAL, + IN DWORD ReturnAddress OPTIONAL ); DWORD DosStartProcess( IN LPCSTR ExecutablePath, IN LPCSTR CommandLine, - IN LPCSTR Environment OPTIONAL + IN LPCSTR Environment OPTIONAL, + IN DWORD ReturnAddress OPTIONAL ); WORD DosCreateProcess ( LPCSTR ProgramName, - PDOS_EXEC_PARAM_BLOCK Parameters + PDOS_EXEC_PARAM_BLOCK Parameters, + IN DWORD ReturnAddress OPTIONAL ); VOID DosTerminateProcess(WORD Psp, BYTE ReturnCode, WORD KeepResident);
9 years, 10 months
1
0
0
0
[akhaldi] 68064: [XDK][PSDK][DDK] Fix packing of TOKEN_STATISTICS. Fixes GCC build.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sun Jun 7 19:27:33 2015 New Revision: 68064 URL:
http://svn.reactos.org/svn/reactos?rev=68064&view=rev
Log: [XDK][PSDK][DDK] Fix packing of TOKEN_STATISTICS. Fixes GCC build. Modified: trunk/reactos/include/ddk/ntifs.h trunk/reactos/include/psdk/winnt.h trunk/reactos/include/xdk/setypes.h Modified: trunk/reactos/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntifs.h?rev=68…
============================================================================== --- trunk/reactos/include/ddk/ntifs.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/ntifs.h [iso-8859-1] Sun Jun 7 19:27:33 2015 @@ -651,6 +651,7 @@ LUID SourceIdentifier; } TOKEN_SOURCE, *PTOKEN_SOURCE; +#include <pshpack4.h> typedef struct _TOKEN_STATISTICS { LUID TokenId; LUID AuthenticationId; @@ -663,6 +664,7 @@ ULONG PrivilegeCount; LUID ModifiedId; } TOKEN_STATISTICS, *PTOKEN_STATISTICS; +#include <poppack.h> typedef struct _TOKEN_CONTROL { LUID TokenId; Modified: trunk/reactos/include/psdk/winnt.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winnt.h?rev=6…
============================================================================== --- trunk/reactos/include/psdk/winnt.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/winnt.h [iso-8859-1] Sun Jun 7 19:27:33 2015 @@ -4773,6 +4773,7 @@ LUID SourceIdentifier; } TOKEN_SOURCE, *PTOKEN_SOURCE; +#include <pshpack4.h> typedef struct _TOKEN_STATISTICS { LUID TokenId; LUID AuthenticationId; @@ -4785,6 +4786,7 @@ DWORD PrivilegeCount; LUID ModifiedId; } TOKEN_STATISTICS, *PTOKEN_STATISTICS; +#include <poppack.h> typedef struct _TOKEN_CONTROL { LUID TokenId; Modified: trunk/reactos/include/xdk/setypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/setypes.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/setypes.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/setypes.h [iso-8859-1] Sun Jun 7 19:27:33 2015 @@ -990,6 +990,7 @@ LUID SourceIdentifier; } TOKEN_SOURCE, *PTOKEN_SOURCE; +#include <pshpack4.h> typedef struct _TOKEN_STATISTICS { LUID TokenId; LUID AuthenticationId; @@ -1002,6 +1003,7 @@ $ULONG PrivilegeCount; LUID ModifiedId; } TOKEN_STATISTICS, *PTOKEN_STATISTICS; +#include <poppack.h> typedef struct _TOKEN_CONTROL { LUID TokenId;
9 years, 10 months
1
0
0
0
[akhaldi] 68063: [XDK][PSDK][DDK] Share more Se types between winnt and ntifs. Also add missing and improve some existing types and definitions in winnt to match the other.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sun Jun 7 18:49:31 2015 New Revision: 68063 URL:
http://svn.reactos.org/svn/reactos?rev=68063&view=rev
Log: [XDK][PSDK][DDK] Share more Se types between winnt and ntifs. Also add missing and improve some existing types and definitions in winnt to match the other. Modified: trunk/reactos/include/ddk/ntifs.h trunk/reactos/include/psdk/winnt.h trunk/reactos/include/xdk/setypes.h trunk/reactos/include/xdk/winnt_old.h Modified: trunk/reactos/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntifs.h?rev=68…
============================================================================== --- trunk/reactos/include/ddk/ntifs.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/ntifs.h [iso-8859-1] Sun Jun 7 18:49:31 2015 @@ -483,16 +483,15 @@ ACCESS_REASON Data[32]; } ACCESS_REASONS, *PACCESS_REASONS; -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 -#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 +#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 typedef struct _SE_SECURITY_DESCRIPTOR { ULONG Size; ULONG Flags; PSECURITY_DESCRIPTOR SecurityDescriptor; } SE_SECURITY_DESCRIPTOR, *PSE_SECURITY_DESCRIPTOR; - typedef struct _SE_ACCESS_REQUEST { ULONG Size; @@ -505,87 +504,45 @@ POBJECT_TYPE_LIST ObjectTypeList; } SE_ACCESS_REQUEST, *PSE_ACCESS_REQUEST; -typedef struct _SE_ACCESS_REPLY { - ULONG Size; - ULONG ResultListCount; - PACCESS_MASK GrantedAccess; - PNTSTATUS AccessStatus; - PACCESS_REASONS AccessReason; - PPRIVILEGE_SET* Privileges; -} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY; - -typedef enum _SE_AUDIT_OPERATION { - AuditPrivilegeObject, - AuditPrivilegeService, - AuditAccessCheck, - AuditOpenObject, - AuditOpenObjectWithTransaction, - AuditCloseObject, - AuditDeleteObject, - AuditOpenObjectForDelete, - AuditOpenObjectForDeleteWithTransaction, - AuditCloseNonObject, - AuditOpenNonObject, - AuditObjectReference, - AuditHandleCreation, -} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION; - -typedef struct _SE_AUDIT_INFO { - ULONG Size; - AUDIT_EVENT_TYPE AuditType; - SE_AUDIT_OPERATION AuditOperation; - ULONG AuditFlags; - UNICODE_STRING SubsystemName; - UNICODE_STRING ObjectTypeName; - UNICODE_STRING ObjectName; - PVOID HandleId; - GUID* TransactionId; - LUID* OperationId; - BOOLEAN ObjectCreation; - BOOLEAN GenerateOnClose; -} SE_AUDIT_INFO, *PSE_AUDIT_INFO; - -#define TOKEN_ASSIGN_PRIMARY (0x0001) -#define TOKEN_DUPLICATE (0x0002) -#define TOKEN_IMPERSONATE (0x0004) -#define TOKEN_QUERY (0x0008) -#define TOKEN_QUERY_SOURCE (0x0010) -#define TOKEN_ADJUST_PRIVILEGES (0x0020) -#define TOKEN_ADJUST_GROUPS (0x0040) -#define TOKEN_ADJUST_DEFAULT (0x0080) -#define TOKEN_ADJUST_SESSIONID (0x0100) - -#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ - TOKEN_ASSIGN_PRIMARY |\ - TOKEN_DUPLICATE |\ - TOKEN_IMPERSONATE |\ - TOKEN_QUERY |\ - TOKEN_QUERY_SOURCE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT ) +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) +#define TOKEN_ADJUST_SESSIONID (0x0100) + +#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ + TOKEN_ASSIGN_PRIMARY |\ + TOKEN_DUPLICATE |\ + TOKEN_IMPERSONATE |\ + TOKEN_QUERY |\ + TOKEN_QUERY_SOURCE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) #if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT))) -#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P |\ - TOKEN_ADJUST_SESSIONID ) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) #else -#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) #endif -#define TOKEN_READ (STANDARD_RIGHTS_READ |\ - TOKEN_QUERY) - -#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT) - -#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) +#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) + +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) + +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) typedef enum _TOKEN_TYPE { TokenPrimary = 1, TokenImpersonation -} TOKEN_TYPE,*PTOKEN_TYPE; +} TOKEN_TYPE, *PTOKEN_TYPE; typedef enum _TOKEN_INFORMATION_CLASS { TokenUser = 1, @@ -630,24 +587,24 @@ #else SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; #endif -} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; +} TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS; typedef struct _TOKEN_PRIVILEGES { ULONG PrivilegeCount; LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; -} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; +} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES; typedef struct _TOKEN_OWNER { PSID Owner; -} TOKEN_OWNER,*PTOKEN_OWNER; +} TOKEN_OWNER, *PTOKEN_OWNER; typedef struct _TOKEN_PRIMARY_GROUP { PSID PrimaryGroup; -} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; +} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP; typedef struct _TOKEN_DEFAULT_DACL { PACL DefaultDacl; -} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; +} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL; typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { ULONG SidCount; @@ -678,25 +635,10 @@ #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 -#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ - TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) - -typedef struct _TOKEN_MANDATORY_POLICY { - ULONG Policy; -} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; - -typedef struct _TOKEN_ACCESS_INFORMATION { - PSID_AND_ATTRIBUTES_HASH SidHash; - PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; - PTOKEN_PRIVILEGES Privileges; - LUID AuthenticationId; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - TOKEN_MANDATORY_POLICY MandatoryPolicy; - ULONG Flags; -} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; - -#define POLICY_AUDIT_SUBCATEGORY_COUNT (53) +#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ + TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) + +#define POLICY_AUDIT_SUBCATEGORY_COUNT (56) typedef struct _TOKEN_AUDIT_POLICY { UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; @@ -707,7 +649,7 @@ typedef struct _TOKEN_SOURCE { CHAR SourceName[TOKEN_SOURCE_LENGTH]; LUID SourceIdentifier; -} TOKEN_SOURCE,*PTOKEN_SOURCE; +} TOKEN_SOURCE, *PTOKEN_SOURCE; typedef struct _TOKEN_STATISTICS { LUID TokenId; @@ -727,7 +669,7 @@ LUID AuthenticationId; LUID ModifiedId; TOKEN_SOURCE TokenSource; -} TOKEN_CONTROL,*PTOKEN_CONTROL; +} TOKEN_CONTROL, *PTOKEN_CONTROL; typedef struct _TOKEN_ORIGIN { LUID OriginatingLogonSession; @@ -742,6 +684,62 @@ MandatoryLevelSecureProcess, MandatoryLevelCount } MANDATORY_LEVEL, *PMANDATORY_LEVEL; + + +typedef struct _SE_ACCESS_REPLY { + ULONG Size; + ULONG ResultListCount; + PACCESS_MASK GrantedAccess; + PNTSTATUS AccessStatus; + PACCESS_REASONS AccessReason; + PPRIVILEGE_SET* Privileges; +} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY; + +typedef enum _SE_AUDIT_OPERATION { + AuditPrivilegeObject, + AuditPrivilegeService, + AuditAccessCheck, + AuditOpenObject, + AuditOpenObjectWithTransaction, + AuditCloseObject, + AuditDeleteObject, + AuditOpenObjectForDelete, + AuditOpenObjectForDeleteWithTransaction, + AuditCloseNonObject, + AuditOpenNonObject, + AuditObjectReference, + AuditHandleCreation, +} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION; + +typedef struct _SE_AUDIT_INFO { + ULONG Size; + AUDIT_EVENT_TYPE AuditType; + SE_AUDIT_OPERATION AuditOperation; + ULONG AuditFlags; + UNICODE_STRING SubsystemName; + UNICODE_STRING ObjectTypeName; + UNICODE_STRING ObjectName; + PVOID HandleId; + GUID* TransactionId; + LUID* OperationId; + BOOLEAN ObjectCreation; + BOOLEAN GenerateOnClose; +} SE_AUDIT_INFO, *PSE_AUDIT_INFO; + +typedef struct _TOKEN_MANDATORY_POLICY { + ULONG Policy; +} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; + +typedef struct _TOKEN_ACCESS_INFORMATION { + PSID_AND_ATTRIBUTES_HASH SidHash; + PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; + PTOKEN_PRIVILEGES Privileges; + LUID AuthenticationId; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + TOKEN_MANDATORY_POLICY MandatoryPolicy; + ULONG Flags; +} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; #define TOKEN_HAS_TRAVERSE_PRIVILEGE 0x0001 #define TOKEN_HAS_BACKUP_PRIVILEGE 0x0002 Modified: trunk/reactos/include/psdk/winnt.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winnt.h?rev=6…
============================================================================== --- trunk/reactos/include/psdk/winnt.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/winnt.h [iso-8859-1] Sun Jun 7 18:49:31 2015 @@ -2832,36 +2832,6 @@ #define SERVICE_ERROR_SEVERE 2 #define SERVICE_ERROR_CRITICAL 3 -/* also in ddk/ntifs.h */ -#define TOKEN_ASSIGN_PRIMARY (0x0001) -#define TOKEN_DUPLICATE (0x0002) -#define TOKEN_IMPERSONATE (0x0004) -#define TOKEN_QUERY (0x0008) -#define TOKEN_QUERY_SOURCE (0x0010) -#define TOKEN_ADJUST_PRIVILEGES (0x0020) -#define TOKEN_ADJUST_GROUPS (0x0040) -#define TOKEN_ADJUST_DEFAULT (0x0080) -#define TOKEN_ADJUST_SESSIONID (0x0100) -#define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - TOKEN_ASSIGN_PRIMARY |\ - TOKEN_DUPLICATE |\ - TOKEN_IMPERSONATE |\ - TOKEN_QUERY |\ - TOKEN_QUERY_SOURCE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT |\ - TOKEN_ADJUST_SESSIONID) -#define TOKEN_READ (STANDARD_RIGHTS_READ |\ - TOKEN_QUERY) -#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT) - -#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) -#define TOKEN_SOURCE_LENGTH 8 -/* end ddk/ntifs.h */ #define DLL_PROCESS_DETACH 0 #define DLL_PROCESS_ATTACH 1 #define DLL_THREAD_ATTACH 2 @@ -4635,9 +4605,9 @@ ACCESS_REASON Data[32]; } ACCESS_REASONS, *PACCESS_REASONS; -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 -#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 +#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 typedef struct _SE_SECURITY_DESCRIPTOR { DWORD Size; @@ -4645,187 +4615,56 @@ PSECURITY_DESCRIPTOR SecurityDescriptor; } SE_SECURITY_DESCRIPTOR, *PSE_SECURITY_DESCRIPTOR; - -typedef struct _ACCESS_ALLOWED_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE; - -typedef struct _ACCESS_DENIED_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE; - -typedef struct _SYSTEM_AUDIT_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE; - -typedef struct _SYSTEM_ALARM_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE; - -typedef struct _ACCESS_ALLOWED_CALLBACK_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} ACCESS_ALLOWED_CALLBACK_ACE, *PACCESS_ALLOWED_CALLBACK_ACE; - -typedef struct _ACCESS_DENIED_CALLBACK_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} ACCESS_DENIED_CALLBACK_ACE, *PACCESS_DENIED_CALLBACK_ACE; - -typedef struct _SYSTEM_AUDIT_CALLBACK_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} SYSTEM_AUDIT_CALLBACK_ACE, *PSYSTEM_AUDIT_CALLBACK_ACE; - -typedef struct _SYSTEM_ALARM_CALLBACK_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD SidStart; -} SYSTEM_ALARM_CALLBACK_ACE, *PSYSTEM_ALARM_CALLBACK_ACE; - -typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} ACCESS_ALLOWED_CALLBACK_OBJECT_ACE, *PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; - -typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} ACCESS_DENIED_CALLBACK_OBJECT_ACE, *PACCESS_DENIED_CALLBACK_OBJECT_ACE; - -typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} SYSTEM_AUDIT_CALLBACK_OBJECT_ACE, *PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; - -typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { - ACE_HEADER Header; - ACCESS_MASK Mask; - DWORD Flags; - GUID ObjectType; - GUID InheritedObjectType; - DWORD SidStart; -} SYSTEM_ALARM_CALLBACK_OBJECT_ACE, *PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; - -typedef struct _TOKEN_SOURCE { - CHAR SourceName[TOKEN_SOURCE_LENGTH]; - LUID SourceIdentifier; -} TOKEN_SOURCE,*PTOKEN_SOURCE; - -typedef struct _TOKEN_CONTROL { - LUID TokenId; - LUID AuthenticationId; - LUID ModifiedId; - TOKEN_SOURCE TokenSource; -} TOKEN_CONTROL,*PTOKEN_CONTROL; - -typedef struct _TOKEN_DEFAULT_DACL { - PACL DefaultDacl; -} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; - -typedef struct _TOKEN_GROUPS { - DWORD GroupCount; - SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; -} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; - -typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { - DWORD SidCount; - DWORD SidLength; - PSID_AND_ATTRIBUTES Sids; - DWORD RestrictedSidCount; - DWORD RestrictedSidLength; - PSID_AND_ATTRIBUTES RestrictedSids; - DWORD PrivilegeCount; - DWORD PrivilegeLength; - PLUID_AND_ATTRIBUTES Privileges; - LUID AuthenticationId; -} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; - -typedef struct _TOKEN_ORIGIN { - LUID OriginatingLogonSession; -} TOKEN_ORIGIN, *PTOKEN_ORIGIN; - -typedef struct _TOKEN_OWNER { - PSID Owner; -} TOKEN_OWNER,*PTOKEN_OWNER; - -typedef struct _TOKEN_PRIMARY_GROUP { - PSID PrimaryGroup; -} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; - -typedef struct _TOKEN_PRIVILEGES { - DWORD PrivilegeCount; - LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; -} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; - -typedef enum tagTOKEN_TYPE { - TokenPrimary = 1, - TokenImpersonation -} TOKEN_TYPE,*PTOKEN_TYPE; - -typedef enum _TOKEN_ELEVATION_TYPE { - TokenElevationTypeDefault = 1, - TokenElevationTypeFull, - TokenElevationTypeLimited, -} TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; - -typedef struct _TOKEN_MANDATORY_LABEL { - SID_AND_ATTRIBUTES Label; -} TOKEN_MANDATORY_LABEL, * PTOKEN_MANDATORY_LABEL; - -#include <pshpack4.h> -typedef struct _TOKEN_STATISTICS { - LUID TokenId; - LUID AuthenticationId; - LARGE_INTEGER ExpirationTime; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - DWORD DynamicCharged; - DWORD DynamicAvailable; - DWORD GroupCount; - DWORD PrivilegeCount; - LUID ModifiedId; -} TOKEN_STATISTICS, *PTOKEN_STATISTICS; -#include <poppack.h> - -typedef struct _TOKEN_USER { - SID_AND_ATTRIBUTES User; -} TOKEN_USER, *PTOKEN_USER; +typedef struct _SE_ACCESS_REQUEST { + DWORD Size; + PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor; + ACCESS_MASK DesiredAccess; + ACCESS_MASK PreviouslyGrantedAccess; + PSID PrincipalSelfSid; + PGENERIC_MAPPING GenericMapping; + DWORD ObjectTypeListCount; + POBJECT_TYPE_LIST ObjectTypeList; +} SE_ACCESS_REQUEST, *PSE_ACCESS_REQUEST; + +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) +#define TOKEN_ADJUST_SESSIONID (0x0100) + +#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ + TOKEN_ASSIGN_PRIMARY |\ + TOKEN_DUPLICATE |\ + TOKEN_IMPERSONATE |\ + TOKEN_QUERY |\ + TOKEN_QUERY_SOURCE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) + +#if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT))) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) +#else +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) +#endif + +#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) + +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) + +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) + +typedef enum _TOKEN_TYPE { + TokenPrimary = 1, + TokenImpersonation +} TOKEN_TYPE, *PTOKEN_TYPE; typedef enum _TOKEN_INFORMATION_CLASS { TokenUser = 1, @@ -4857,7 +4696,219 @@ TokenMandatoryPolicy, TokenLogonSid, MaxTokenInfoClass -} TOKEN_INFORMATION_CLASS; +} TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS; + +typedef struct _TOKEN_USER { + SID_AND_ATTRIBUTES User; +} TOKEN_USER, *PTOKEN_USER; + +typedef struct _TOKEN_GROUPS { + DWORD GroupCount; +#ifdef MIDL_PASS + [size_is(GroupCount)] SID_AND_ATTRIBUTES Groups[*]; +#else + SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; +#endif +} TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS; + +typedef struct _TOKEN_PRIVILEGES { + DWORD PrivilegeCount; + LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; +} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES; + +typedef struct _TOKEN_OWNER { + PSID Owner; +} TOKEN_OWNER, *PTOKEN_OWNER; + +typedef struct _TOKEN_PRIMARY_GROUP { + PSID PrimaryGroup; +} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP; + +typedef struct _TOKEN_DEFAULT_DACL { + PACL DefaultDacl; +} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL; + +typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { + DWORD SidCount; + DWORD SidLength; + PSID_AND_ATTRIBUTES Sids; + DWORD RestrictedSidCount; + DWORD RestrictedSidLength; + PSID_AND_ATTRIBUTES RestrictedSids; + DWORD PrivilegeCount; + DWORD PrivilegeLength; + PLUID_AND_ATTRIBUTES Privileges; + LUID AuthenticationId; +} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; + +typedef struct _TOKEN_LINKED_TOKEN { + HANDLE LinkedToken; +} TOKEN_LINKED_TOKEN, *PTOKEN_LINKED_TOKEN; + +typedef struct _TOKEN_ELEVATION { + DWORD TokenIsElevated; +} TOKEN_ELEVATION, *PTOKEN_ELEVATION; + +typedef struct _TOKEN_MANDATORY_LABEL { + SID_AND_ATTRIBUTES Label; +} TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL; + +#define TOKEN_MANDATORY_POLICY_OFF 0x0 +#define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 +#define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 + +#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ + TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) + +#define POLICY_AUDIT_SUBCATEGORY_COUNT (56) + +typedef struct _TOKEN_AUDIT_POLICY { + BYTE PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; +} TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; + +#define TOKEN_SOURCE_LENGTH 8 + +typedef struct _TOKEN_SOURCE { + CHAR SourceName[TOKEN_SOURCE_LENGTH]; + LUID SourceIdentifier; +} TOKEN_SOURCE, *PTOKEN_SOURCE; + +typedef struct _TOKEN_STATISTICS { + LUID TokenId; + LUID AuthenticationId; + LARGE_INTEGER ExpirationTime; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + DWORD DynamicCharged; + DWORD DynamicAvailable; + DWORD GroupCount; + DWORD PrivilegeCount; + LUID ModifiedId; +} TOKEN_STATISTICS, *PTOKEN_STATISTICS; + +typedef struct _TOKEN_CONTROL { + LUID TokenId; + LUID AuthenticationId; + LUID ModifiedId; + TOKEN_SOURCE TokenSource; +} TOKEN_CONTROL, *PTOKEN_CONTROL; + +typedef struct _TOKEN_ORIGIN { + LUID OriginatingLogonSession; +} TOKEN_ORIGIN, *PTOKEN_ORIGIN; + +typedef enum _MANDATORY_LEVEL { + MandatoryLevelUntrusted = 0, + MandatoryLevelLow, + MandatoryLevelMedium, + MandatoryLevelHigh, + MandatoryLevelSystem, + MandatoryLevelSecureProcess, + MandatoryLevelCount +} MANDATORY_LEVEL, *PMANDATORY_LEVEL; + + +typedef struct _ACCESS_ALLOWED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE; + +typedef struct _ACCESS_DENIED_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE; + +typedef struct _SYSTEM_AUDIT_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE; + +typedef struct _SYSTEM_ALARM_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE; + +typedef struct _ACCESS_ALLOWED_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} ACCESS_ALLOWED_CALLBACK_ACE, *PACCESS_ALLOWED_CALLBACK_ACE; + +typedef struct _ACCESS_DENIED_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} ACCESS_DENIED_CALLBACK_ACE, *PACCESS_DENIED_CALLBACK_ACE; + +typedef struct _SYSTEM_AUDIT_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} SYSTEM_AUDIT_CALLBACK_ACE, *PSYSTEM_AUDIT_CALLBACK_ACE; + +typedef struct _SYSTEM_ALARM_CALLBACK_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD SidStart; +} SYSTEM_ALARM_CALLBACK_ACE, *PSYSTEM_ALARM_CALLBACK_ACE; + +typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} ACCESS_ALLOWED_CALLBACK_OBJECT_ACE, *PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; + +typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} ACCESS_DENIED_CALLBACK_OBJECT_ACE, *PACCESS_DENIED_CALLBACK_OBJECT_ACE; + +typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} SYSTEM_AUDIT_CALLBACK_OBJECT_ACE, *PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; + +typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { + ACE_HEADER Header; + ACCESS_MASK Mask; + DWORD Flags; + GUID ObjectType; + GUID InheritedObjectType; + DWORD SidStart; +} SYSTEM_ALARM_CALLBACK_OBJECT_ACE, *PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; + +typedef enum _TOKEN_ELEVATION_TYPE { + TokenElevationTypeDefault = 1, + TokenElevationTypeFull, + TokenElevationTypeLimited, +} TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; typedef struct _QUOTA_LIMITS { SIZE_T PagedPoolLimit; Modified: trunk/reactos/include/xdk/setypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/setypes.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/setypes.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/setypes.h [iso-8859-1] Sun Jun 7 18:49:31 2015 @@ -822,9 +822,9 @@ ACCESS_REASON Data[32]; } ACCESS_REASONS, *PACCESS_REASONS; -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 -#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 -#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001 +#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002 +#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003 typedef struct _SE_SECURITY_DESCRIPTOR { $ULONG Size; @@ -832,101 +832,56 @@ PSECURITY_DESCRIPTOR SecurityDescriptor; } SE_SECURITY_DESCRIPTOR, *PSE_SECURITY_DESCRIPTOR; -$endif(_NTIFS_ || _WINNT_) -$if(_NTIFS_) - typedef struct _SE_ACCESS_REQUEST { - ULONG Size; + $ULONG Size; PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor; ACCESS_MASK DesiredAccess; ACCESS_MASK PreviouslyGrantedAccess; PSID PrincipalSelfSid; PGENERIC_MAPPING GenericMapping; - ULONG ObjectTypeListCount; + $ULONG ObjectTypeListCount; POBJECT_TYPE_LIST ObjectTypeList; } SE_ACCESS_REQUEST, *PSE_ACCESS_REQUEST; -typedef struct _SE_ACCESS_REPLY { - ULONG Size; - ULONG ResultListCount; - PACCESS_MASK GrantedAccess; - PNTSTATUS AccessStatus; - PACCESS_REASONS AccessReason; - PPRIVILEGE_SET* Privileges; -} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY; - -typedef enum _SE_AUDIT_OPERATION { - AuditPrivilegeObject, - AuditPrivilegeService, - AuditAccessCheck, - AuditOpenObject, - AuditOpenObjectWithTransaction, - AuditCloseObject, - AuditDeleteObject, - AuditOpenObjectForDelete, - AuditOpenObjectForDeleteWithTransaction, - AuditCloseNonObject, - AuditOpenNonObject, - AuditObjectReference, - AuditHandleCreation, -} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION; - -typedef struct _SE_AUDIT_INFO { - ULONG Size; - AUDIT_EVENT_TYPE AuditType; - SE_AUDIT_OPERATION AuditOperation; - ULONG AuditFlags; - UNICODE_STRING SubsystemName; - UNICODE_STRING ObjectTypeName; - UNICODE_STRING ObjectName; - PVOID HandleId; - GUID* TransactionId; - LUID* OperationId; - BOOLEAN ObjectCreation; - BOOLEAN GenerateOnClose; -} SE_AUDIT_INFO, *PSE_AUDIT_INFO; - -#define TOKEN_ASSIGN_PRIMARY (0x0001) -#define TOKEN_DUPLICATE (0x0002) -#define TOKEN_IMPERSONATE (0x0004) -#define TOKEN_QUERY (0x0008) -#define TOKEN_QUERY_SOURCE (0x0010) -#define TOKEN_ADJUST_PRIVILEGES (0x0020) -#define TOKEN_ADJUST_GROUPS (0x0040) -#define TOKEN_ADJUST_DEFAULT (0x0080) -#define TOKEN_ADJUST_SESSIONID (0x0100) - -#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ - TOKEN_ASSIGN_PRIMARY |\ - TOKEN_DUPLICATE |\ - TOKEN_IMPERSONATE |\ - TOKEN_QUERY |\ - TOKEN_QUERY_SOURCE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT ) +#define TOKEN_ASSIGN_PRIMARY (0x0001) +#define TOKEN_DUPLICATE (0x0002) +#define TOKEN_IMPERSONATE (0x0004) +#define TOKEN_QUERY (0x0008) +#define TOKEN_QUERY_SOURCE (0x0010) +#define TOKEN_ADJUST_PRIVILEGES (0x0020) +#define TOKEN_ADJUST_GROUPS (0x0040) +#define TOKEN_ADJUST_DEFAULT (0x0080) +#define TOKEN_ADJUST_SESSIONID (0x0100) + +#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED |\ + TOKEN_ASSIGN_PRIMARY |\ + TOKEN_DUPLICATE |\ + TOKEN_IMPERSONATE |\ + TOKEN_QUERY |\ + TOKEN_QUERY_SOURCE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) #if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT))) -#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P |\ - TOKEN_ADJUST_SESSIONID ) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID) #else -#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) +#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P) #endif -#define TOKEN_READ (STANDARD_RIGHTS_READ |\ - TOKEN_QUERY) - -#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT) - -#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) +#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY) + +#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) + +#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) typedef enum _TOKEN_TYPE { TokenPrimary = 1, TokenImpersonation -} TOKEN_TYPE,*PTOKEN_TYPE; +} TOKEN_TYPE, *PTOKEN_TYPE; typedef enum _TOKEN_INFORMATION_CLASS { TokenUser = 1, @@ -965,40 +920,40 @@ } TOKEN_USER, *PTOKEN_USER; typedef struct _TOKEN_GROUPS { - ULONG GroupCount; + $ULONG GroupCount; #ifdef MIDL_PASS [size_is(GroupCount)] SID_AND_ATTRIBUTES Groups[*]; #else SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; #endif -} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; +} TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS; typedef struct _TOKEN_PRIVILEGES { - ULONG PrivilegeCount; + $ULONG PrivilegeCount; LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; -} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; +} TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES; typedef struct _TOKEN_OWNER { PSID Owner; -} TOKEN_OWNER,*PTOKEN_OWNER; +} TOKEN_OWNER, *PTOKEN_OWNER; typedef struct _TOKEN_PRIMARY_GROUP { PSID PrimaryGroup; -} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; +} TOKEN_PRIMARY_GROUP, *PTOKEN_PRIMARY_GROUP; typedef struct _TOKEN_DEFAULT_DACL { PACL DefaultDacl; -} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; +} TOKEN_DEFAULT_DACL, *PTOKEN_DEFAULT_DACL; typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { - ULONG SidCount; - ULONG SidLength; + $ULONG SidCount; + $ULONG SidLength; PSID_AND_ATTRIBUTES Sids; - ULONG RestrictedSidCount; - ULONG RestrictedSidLength; + $ULONG RestrictedSidCount; + $ULONG RestrictedSidLength; PSID_AND_ATTRIBUTES RestrictedSids; - ULONG PrivilegeCount; - ULONG PrivilegeLength; + $ULONG PrivilegeCount; + $ULONG PrivilegeLength; PLUID_AND_ATTRIBUTES Privileges; LUID AuthenticationId; } TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; @@ -1008,7 +963,7 @@ } TOKEN_LINKED_TOKEN, *PTOKEN_LINKED_TOKEN; typedef struct _TOKEN_ELEVATION { - ULONG TokenIsElevated; + $ULONG TokenIsElevated; } TOKEN_ELEVATION, *PTOKEN_ELEVATION; typedef struct _TOKEN_MANDATORY_LABEL { @@ -1019,28 +974,13 @@ #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1 #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2 -#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ - TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) - -typedef struct _TOKEN_MANDATORY_POLICY { - ULONG Policy; -} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; - -typedef struct _TOKEN_ACCESS_INFORMATION { - PSID_AND_ATTRIBUTES_HASH SidHash; - PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; - PTOKEN_PRIVILEGES Privileges; - LUID AuthenticationId; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - TOKEN_MANDATORY_POLICY MandatoryPolicy; - ULONG Flags; -} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; - -#define POLICY_AUDIT_SUBCATEGORY_COUNT (53) +#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \ + TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN) + +#define POLICY_AUDIT_SUBCATEGORY_COUNT (56) typedef struct _TOKEN_AUDIT_POLICY { - UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; + $UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1]; } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY; #define TOKEN_SOURCE_LENGTH 8 @@ -1048,7 +988,7 @@ typedef struct _TOKEN_SOURCE { CHAR SourceName[TOKEN_SOURCE_LENGTH]; LUID SourceIdentifier; -} TOKEN_SOURCE,*PTOKEN_SOURCE; +} TOKEN_SOURCE, *PTOKEN_SOURCE; typedef struct _TOKEN_STATISTICS { LUID TokenId; @@ -1056,10 +996,10 @@ LARGE_INTEGER ExpirationTime; TOKEN_TYPE TokenType; SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - ULONG DynamicCharged; - ULONG DynamicAvailable; - ULONG GroupCount; - ULONG PrivilegeCount; + $ULONG DynamicCharged; + $ULONG DynamicAvailable; + $ULONG GroupCount; + $ULONG PrivilegeCount; LUID ModifiedId; } TOKEN_STATISTICS, *PTOKEN_STATISTICS; @@ -1068,7 +1008,7 @@ LUID AuthenticationId; LUID ModifiedId; TOKEN_SOURCE TokenSource; -} TOKEN_CONTROL,*PTOKEN_CONTROL; +} TOKEN_CONTROL, *PTOKEN_CONTROL; typedef struct _TOKEN_ORIGIN { LUID OriginatingLogonSession; @@ -1083,6 +1023,64 @@ MandatoryLevelSecureProcess, MandatoryLevelCount } MANDATORY_LEVEL, *PMANDATORY_LEVEL; + +$endif(_NTIFS_ || _WINNT_) +$if(_NTIFS_) + +typedef struct _SE_ACCESS_REPLY { + $ULONG Size; + $ULONG ResultListCount; + PACCESS_MASK GrantedAccess; + PNTSTATUS AccessStatus; + PACCESS_REASONS AccessReason; + PPRIVILEGE_SET* Privileges; +} SE_ACCESS_REPLY, *PSE_ACCESS_REPLY; + +typedef enum _SE_AUDIT_OPERATION { + AuditPrivilegeObject, + AuditPrivilegeService, + AuditAccessCheck, + AuditOpenObject, + AuditOpenObjectWithTransaction, + AuditCloseObject, + AuditDeleteObject, + AuditOpenObjectForDelete, + AuditOpenObjectForDeleteWithTransaction, + AuditCloseNonObject, + AuditOpenNonObject, + AuditObjectReference, + AuditHandleCreation, +} SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION; + +typedef struct _SE_AUDIT_INFO { + ULONG Size; + AUDIT_EVENT_TYPE AuditType; + SE_AUDIT_OPERATION AuditOperation; + ULONG AuditFlags; + UNICODE_STRING SubsystemName; + UNICODE_STRING ObjectTypeName; + UNICODE_STRING ObjectName; + PVOID HandleId; + GUID* TransactionId; + LUID* OperationId; + BOOLEAN ObjectCreation; + BOOLEAN GenerateOnClose; +} SE_AUDIT_INFO, *PSE_AUDIT_INFO; + +typedef struct _TOKEN_MANDATORY_POLICY { + $ULONG Policy; +} TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY; + +typedef struct _TOKEN_ACCESS_INFORMATION { + PSID_AND_ATTRIBUTES_HASH SidHash; + PSID_AND_ATTRIBUTES_HASH RestrictedSidHash; + PTOKEN_PRIVILEGES Privileges; + LUID AuthenticationId; + TOKEN_TYPE TokenType; + SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; + TOKEN_MANDATORY_POLICY MandatoryPolicy; + $ULONG Flags; +} TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION; #define TOKEN_HAS_TRAVERSE_PRIVILEGE 0x0001 #define TOKEN_HAS_BACKUP_PRIVILEGE 0x0002 Modified: trunk/reactos/include/xdk/winnt_old.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/winnt_old.h?re…
============================================================================== --- trunk/reactos/include/xdk/winnt_old.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/winnt_old.h [iso-8859-1] Sun Jun 7 18:49:31 2015 @@ -937,36 +937,6 @@ #define SERVICE_ERROR_SEVERE 2 #define SERVICE_ERROR_CRITICAL 3 -/* also in ddk/ntifs.h */ -#define TOKEN_ASSIGN_PRIMARY (0x0001) -#define TOKEN_DUPLICATE (0x0002) -#define TOKEN_IMPERSONATE (0x0004) -#define TOKEN_QUERY (0x0008) -#define TOKEN_QUERY_SOURCE (0x0010) -#define TOKEN_ADJUST_PRIVILEGES (0x0020) -#define TOKEN_ADJUST_GROUPS (0x0040) -#define TOKEN_ADJUST_DEFAULT (0x0080) -#define TOKEN_ADJUST_SESSIONID (0x0100) -#define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ - TOKEN_ASSIGN_PRIMARY |\ - TOKEN_DUPLICATE |\ - TOKEN_IMPERSONATE |\ - TOKEN_QUERY |\ - TOKEN_QUERY_SOURCE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT |\ - TOKEN_ADJUST_SESSIONID) -#define TOKEN_READ (STANDARD_RIGHTS_READ |\ - TOKEN_QUERY) -#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ - TOKEN_ADJUST_PRIVILEGES |\ - TOKEN_ADJUST_GROUPS |\ - TOKEN_ADJUST_DEFAULT) - -#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) -#define TOKEN_SOURCE_LENGTH 8 -/* end ddk/ntifs.h */ #define DLL_PROCESS_DETACH 0 #define DLL_PROCESS_ATTACH 1 #define DLL_THREAD_ATTACH 2 @@ -2200,122 +2170,11 @@ DWORD SidStart; } SYSTEM_ALARM_CALLBACK_OBJECT_ACE, *PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; -typedef struct _TOKEN_SOURCE { - CHAR SourceName[TOKEN_SOURCE_LENGTH]; - LUID SourceIdentifier; -} TOKEN_SOURCE,*PTOKEN_SOURCE; - -typedef struct _TOKEN_CONTROL { - LUID TokenId; - LUID AuthenticationId; - LUID ModifiedId; - TOKEN_SOURCE TokenSource; -} TOKEN_CONTROL,*PTOKEN_CONTROL; - -typedef struct _TOKEN_DEFAULT_DACL { - PACL DefaultDacl; -} TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; - -typedef struct _TOKEN_GROUPS { - DWORD GroupCount; - SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; -} TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; - -typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { - DWORD SidCount; - DWORD SidLength; - PSID_AND_ATTRIBUTES Sids; - DWORD RestrictedSidCount; - DWORD RestrictedSidLength; - PSID_AND_ATTRIBUTES RestrictedSids; - DWORD PrivilegeCount; - DWORD PrivilegeLength; - PLUID_AND_ATTRIBUTES Privileges; - LUID AuthenticationId; -} TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; - -typedef struct _TOKEN_ORIGIN { - LUID OriginatingLogonSession; -} TOKEN_ORIGIN, *PTOKEN_ORIGIN; - -typedef struct _TOKEN_OWNER { - PSID Owner; -} TOKEN_OWNER,*PTOKEN_OWNER; - -typedef struct _TOKEN_PRIMARY_GROUP { - PSID PrimaryGroup; -} TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; - -typedef struct _TOKEN_PRIVILEGES { - DWORD PrivilegeCount; - LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; -} TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; - -typedef enum tagTOKEN_TYPE { - TokenPrimary = 1, - TokenImpersonation -} TOKEN_TYPE,*PTOKEN_TYPE; - typedef enum _TOKEN_ELEVATION_TYPE { TokenElevationTypeDefault = 1, TokenElevationTypeFull, TokenElevationTypeLimited, } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; - -typedef struct _TOKEN_MANDATORY_LABEL { - SID_AND_ATTRIBUTES Label; -} TOKEN_MANDATORY_LABEL, * PTOKEN_MANDATORY_LABEL; - -#include <pshpack4.h> -typedef struct _TOKEN_STATISTICS { - LUID TokenId; - LUID AuthenticationId; - LARGE_INTEGER ExpirationTime; - TOKEN_TYPE TokenType; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - DWORD DynamicCharged; - DWORD DynamicAvailable; - DWORD GroupCount; - DWORD PrivilegeCount; - LUID ModifiedId; -} TOKEN_STATISTICS, *PTOKEN_STATISTICS; -#include <poppack.h> - -typedef struct _TOKEN_USER { - SID_AND_ATTRIBUTES User; -} TOKEN_USER, *PTOKEN_USER; - -typedef enum _TOKEN_INFORMATION_CLASS { - TokenUser = 1, - TokenGroups, - TokenPrivileges, - TokenOwner, - TokenPrimaryGroup, - TokenDefaultDacl, - TokenSource, - TokenType, - TokenImpersonationLevel, - TokenStatistics, - TokenRestrictedSids, - TokenSessionId, - TokenGroupsAndPrivileges, - TokenSessionReference, - TokenSandBoxInert, - TokenAuditPolicy, - TokenOrigin, - TokenElevationType, - TokenLinkedToken, - TokenElevation, - TokenHasRestrictions, - TokenAccessInformation, - TokenVirtualizationAllowed, - TokenVirtualizationEnabled, - TokenIntegrityLevel, - TokenUIAccess, - TokenMandatoryPolicy, - TokenLogonSid, - MaxTokenInfoClass -} TOKEN_INFORMATION_CLASS; typedef struct _QUOTA_LIMITS { SIZE_T PagedPoolLimit;
9 years, 10 months
1
0
0
0
[ekohl] 68062: [DISK] Revert accidential changes.
by ekohl@svn.reactos.org
Author: ekohl Date: Sun Jun 7 13:44:49 2015 New Revision: 68062 URL:
http://svn.reactos.org/svn/reactos?rev=68062&view=rev
Log: [DISK] Revert accidential changes. Modified: trunk/reactos/drivers/storage/class/disk/disk.c Modified: trunk/reactos/drivers/storage/class/disk/disk.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/class/disk…
============================================================================== --- trunk/reactos/drivers/storage/class/disk/disk.c [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/class/disk/disk.c [iso-8859-1] Sun Jun 7 13:44:49 2015 @@ -4809,7 +4809,6 @@ ULONG numberListElements; BOOLEAN found; - DPRINT1("UpdateDeviceObjects()\n"); partitionCount = ((partitionList->PartitionCount + 3) / 4) * 4; // @@ -4910,11 +4909,10 @@ if (partitionEntry->PartitionLength.QuadPart == deviceExtension->PartitionLength.QuadPart) { -// DebugPrint((3, - DPRINT1( + DebugPrint((3, "UpdateDeviceObjects: Found match for \\Harddisk%d\\Partition%d\n", physicalExtension->DeviceNumber, - diskData->PartitionNumber); + diskData->PartitionNumber)); // // Indicate match is found and set partition number @@ -4950,12 +4948,11 @@ diskData->PartitionOrdinal = partitionOrdinal; -// DebugPrint((1, - DPRINT1( + DebugPrint((1, "UpdateDeviceObjects: Disk %d ordinal %d is partition %d\n", physicalExtension->DeviceNumber, diskData->PartitionOrdinal, - diskData->PartitionNumber); + diskData->PartitionNumber)); } else { @@ -4963,11 +4960,10 @@ // no match was found, indicate this partition is gone. // -// DebugPrint((1, - DPRINT1( + DebugPrint((1, "UpdateDeviceObjects: Deleting \\Device\\Harddisk%x\\Partition%x\n", physicalExtension->DeviceNumber, - diskData->PartitionNumber); + diskData->PartitionNumber)); deviceExtension->PartitionLength.QuadPart = (LONGLONG) 0; } @@ -5089,10 +5085,9 @@ continue; } -// DebugPrint((3, - DPRINT1( + DebugPrint((3, "UpdateDeviceObjects: Create device object %s\n", - ntNameBuffer); + ntNameBuffer)); // // This is a new name. Create the device object to represent it. @@ -5107,10 +5102,9 @@ &deviceObject); if (!NT_SUCCESS(status)) { -// DebugPrint((1, - DPRINT1( + DebugPrint((1, "UpdateDeviceObjects: Can't create device %s\n", - ntNameBuffer); + ntNameBuffer)); RtlFreeUnicodeString(&ntUnicodeString); continue; } @@ -5201,11 +5195,10 @@ diskData = (PDISK_DATA)(deviceExtension + 1); -// DebugPrint((1, - DPRINT1( + DebugPrint((1, "UpdateDeviceObjects: Used existing device object \\Device\\Harddisk%x\\Partition%x\n", physicalExtension->DeviceNumber, - partitionNumber); + partitionNumber)); } // @@ -5220,11 +5213,10 @@ diskData->HiddenSectors = partitionEntry->HiddenSectors; diskData->PartitionOrdinal = partitionOrdinal; -// DebugPrint((1, - DPRINT1( + DebugPrint((1, "UpdateDeviceObjects: Ordinal %d is partition %d\n", diskData->PartitionOrdinal, - diskData->PartitionNumber); + diskData->PartitionNumber)); // // Update partition number passed in to indicate the
9 years, 10 months
1
0
0
0
[akhaldi] 68061: [XDK][PSDK][DDK] Share more Se types between winnt and ntddk/ntifs/wdm. Also add missing and improve some existing types and definitions in winnt to match the others.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sun Jun 7 13:14:36 2015 New Revision: 68061 URL:
http://svn.reactos.org/svn/reactos?rev=68061&view=rev
Log: [XDK][PSDK][DDK] Share more Se types between winnt and ntddk/ntifs/wdm. Also add missing and improve some existing types and definitions in winnt to match the others. Modified: trunk/reactos/include/ddk/ntddk.h trunk/reactos/include/ddk/ntifs.h trunk/reactos/include/ddk/wdm.h trunk/reactos/include/psdk/winnt.h trunk/reactos/include/xdk/setypes.h trunk/reactos/include/xdk/winnt_old.h [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/include/ddk/ntddk.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntddk.h?rev=68…
Modified: trunk/reactos/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntifs.h?rev=68…
Modified: trunk/reactos/include/ddk/wdm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/wdm.h?rev=6806…
Modified: trunk/reactos/include/psdk/winnt.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winnt.h?rev=6…
Modified: trunk/reactos/include/xdk/setypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/setypes.h?rev=…
Modified: trunk/reactos/include/xdk/winnt_old.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/winnt_old.h?re…
9 years, 10 months
1
0
0
0
[akhaldi] 68060: [XDK] Add some workarounds for the UM/KM types mismatches.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sun Jun 7 13:01:46 2015 New Revision: 68060 URL:
http://svn.reactos.org/svn/reactos?rev=68060&view=rev
Log: [XDK] Add some workarounds for the UM/KM types mismatches. Modified: trunk/reactos/include/xdk/ntifs.template.h trunk/reactos/include/xdk/wdm.template.h Modified: trunk/reactos/include/xdk/ntifs.template.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/ntifs.template…
============================================================================== --- trunk/reactos/include/xdk/ntifs.template.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/ntifs.template.h [iso-8859-1] Sun Jun 7 13:01:46 2015 @@ -32,6 +32,7 @@ $define(UCHAR=UCHAR) $define(ULONG=ULONG) +$define(USHORT=USHORT) /* Dependencies */ #include <ntddk.h> Modified: trunk/reactos/include/xdk/wdm.template.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/wdm.template.h…
============================================================================== --- trunk/reactos/include/xdk/wdm.template.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/wdm.template.h [iso-8859-1] Sun Jun 7 13:01:46 2015 @@ -76,7 +76,9 @@ extern "C" { #endif +$define(UCHAR=UCHAR) $define(ULONG=ULONG) +$define(USHORT=USHORT) #if !defined(_NTHALDLL_) && !defined(_BLDR_) #define NTHALAPI DECLSPEC_IMPORT
9 years, 10 months
1
0
0
0
[ekohl] 68059: [DISK] Get rid of explicit status definition. Import ntiologc.h instead.
by ekohl@svn.reactos.org
Author: ekohl Date: Sun Jun 7 11:46:34 2015 New Revision: 68059 URL:
http://svn.reactos.org/svn/reactos?rev=68059&view=rev
Log: [DISK] Get rid of explicit status definition. Import ntiologc.h instead. Modified: trunk/reactos/drivers/storage/class/disk/disk.c Modified: trunk/reactos/drivers/storage/class/disk/disk.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/class/disk…
============================================================================== --- trunk/reactos/drivers/storage/class/disk/disk.c [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/class/disk/disk.c [iso-8859-1] Sun Jun 7 11:46:34 2015 @@ -12,14 +12,13 @@ #include <ntddscsi.h> #include <mountdev.h> #include <mountmgr.h> +#include <ntiologc.h> #include <include/class2.h> #include <stdio.h> #define NDEBUG #include <debug.h> -#define IO_WRITE_CACHE_ENABLED ((NTSTATUS)0x80040020L) -#define IO_WRITE_CACHE_DISABLED ((NTSTATUS)0x80040022L) #ifdef POOL_TAGGING #ifdef ExAllocatePool @@ -4810,6 +4809,7 @@ ULONG numberListElements; BOOLEAN found; + DPRINT1("UpdateDeviceObjects()\n"); partitionCount = ((partitionList->PartitionCount + 3) / 4) * 4; // @@ -4910,10 +4910,11 @@ if (partitionEntry->PartitionLength.QuadPart == deviceExtension->PartitionLength.QuadPart) { - DebugPrint((3, +// DebugPrint((3, + DPRINT1( "UpdateDeviceObjects: Found match for \\Harddisk%d\\Partition%d\n", physicalExtension->DeviceNumber, - diskData->PartitionNumber)); + diskData->PartitionNumber); // // Indicate match is found and set partition number @@ -4949,11 +4950,12 @@ diskData->PartitionOrdinal = partitionOrdinal; - DebugPrint((1, +// DebugPrint((1, + DPRINT1( "UpdateDeviceObjects: Disk %d ordinal %d is partition %d\n", physicalExtension->DeviceNumber, diskData->PartitionOrdinal, - diskData->PartitionNumber)); + diskData->PartitionNumber); } else { @@ -4961,10 +4963,11 @@ // no match was found, indicate this partition is gone. // - DebugPrint((1, +// DebugPrint((1, + DPRINT1( "UpdateDeviceObjects: Deleting \\Device\\Harddisk%x\\Partition%x\n", physicalExtension->DeviceNumber, - diskData->PartitionNumber)); + diskData->PartitionNumber); deviceExtension->PartitionLength.QuadPart = (LONGLONG) 0; } @@ -5086,9 +5089,10 @@ continue; } - DebugPrint((3, +// DebugPrint((3, + DPRINT1( "UpdateDeviceObjects: Create device object %s\n", - ntNameBuffer)); + ntNameBuffer); // // This is a new name. Create the device object to represent it. @@ -5103,9 +5107,10 @@ &deviceObject); if (!NT_SUCCESS(status)) { - DebugPrint((1, +// DebugPrint((1, + DPRINT1( "UpdateDeviceObjects: Can't create device %s\n", - ntNameBuffer)); + ntNameBuffer); RtlFreeUnicodeString(&ntUnicodeString); continue; } @@ -5196,10 +5201,11 @@ diskData = (PDISK_DATA)(deviceExtension + 1); - DebugPrint((1, +// DebugPrint((1, + DPRINT1( "UpdateDeviceObjects: Used existing device object \\Device\\Harddisk%x\\Partition%x\n", physicalExtension->DeviceNumber, - partitionNumber)); + partitionNumber); } // @@ -5214,10 +5220,11 @@ diskData->HiddenSectors = partitionEntry->HiddenSectors; diskData->PartitionOrdinal = partitionOrdinal; - DebugPrint((1, +// DebugPrint((1, + DPRINT1( "UpdateDeviceObjects: Ordinal %d is partition %d\n", diskData->PartitionOrdinal, - diskData->PartitionNumber)); + diskData->PartitionNumber); // // Update partition number passed in to indicate the
9 years, 10 months
1
0
0
0
[akhaldi] 68058: [XDK][PSDK][DDK] Share some Se types between winnt and ntifs/wdm. WIP.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sun Jun 7 09:57:36 2015 New Revision: 68058 URL:
http://svn.reactos.org/svn/reactos?rev=68058&view=rev
Log: [XDK][PSDK][DDK] Share some Se types between winnt and ntifs/wdm. WIP. Modified: trunk/reactos/include/ddk/ntifs.h trunk/reactos/include/ddk/wdm.h trunk/reactos/include/psdk/winnt.h trunk/reactos/include/xdk/setypes.h trunk/reactos/include/xdk/winnt_old.h Modified: trunk/reactos/include/ddk/ntifs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/ntifs.h?rev=68…
============================================================================== --- trunk/reactos/include/ddk/ntifs.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/ntifs.h [iso-8859-1] Sun Jun 7 09:57:36 2015 @@ -30,6 +30,7 @@ extern "C" { #endif + /* Dependencies */ #include <ntddk.h> #include <excpt.h> @@ -63,6 +64,7 @@ /****************************************************************************** * Security Manager Types * ******************************************************************************/ + #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED #define SID_IDENTIFIER_AUTHORITY_DEFINED typedef struct _SID_IDENTIFIER_AUTHORITY { @@ -83,6 +85,7 @@ #endif } SID, *PISID; #endif + #define SID_REVISION 1 #define SID_MAX_SUB_AUTHORITIES 15 Modified: trunk/reactos/include/ddk/wdm.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/wdm.h?rev=6805…
============================================================================== --- trunk/reactos/include/ddk/wdm.h [iso-8859-1] (original) +++ trunk/reactos/include/ddk/wdm.h [iso-8859-1] Sun Jun 7 09:57:36 2015 @@ -75,6 +75,7 @@ #ifdef __cplusplus extern "C" { #endif + #if !defined(_NTHALDLL_) && !defined(_BLDR_) #define NTHALAPI DECLSPEC_IMPORT @@ -2514,8 +2515,11 @@ typedef PVOID PSECURITY_DESCRIPTOR; typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION; typedef ULONG ACCESS_MASK, *PACCESS_MASK; + + typedef PVOID PACCESS_TOKEN; typedef PVOID PSID; + #define DELETE 0x00010000L #define READ_CONTROL 0x00020000L @@ -2594,6 +2598,7 @@ LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; } PRIVILEGE_SET,*PPRIVILEGE_SET; + typedef enum _SECURITY_IMPERSONATION_LEVEL { SecurityAnonymous, SecurityIdentification, @@ -2601,6 +2606,7 @@ SecurityDelegation } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL; + #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation #define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation @@ -2608,6 +2614,7 @@ #define SECURITY_DYNAMIC_TRACKING (TRUE) #define SECURITY_STATIC_TRACKING (FALSE) + typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE; @@ -2624,6 +2631,7 @@ BOOLEAN EffectiveOnly; SECURITY_IMPERSONATION_LEVEL Level; } SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE; + #define OWNER_SECURITY_INFORMATION (0x00000001L) #define GROUP_SECURITY_INFORMATION (0x00000002L) Modified: trunk/reactos/include/psdk/winnt.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winnt.h?rev=6…
============================================================================== --- trunk/reactos/include/psdk/winnt.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/winnt.h [iso-8859-1] Sun Jun 7 09:57:36 2015 @@ -4462,43 +4462,60 @@ BOOL bInheritHandle; } SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES; +/****************************************************************************** + * Security Manager Types * + ******************************************************************************/ + +typedef PVOID PACCESS_TOKEN; +typedef PVOID PSID; + + typedef enum _SECURITY_IMPERSONATION_LEVEL { SecurityAnonymous, SecurityIdentification, SecurityImpersonation, SecurityDelegation -} SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; - -typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE; +} SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL; + + +typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE; typedef struct _SECURITY_QUALITY_OF_SERVICE { DWORD Length; SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; BOOLEAN EffectiveOnly; -} SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; - -typedef PVOID PACCESS_TOKEN; +} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE; typedef struct _SE_IMPERSONATION_STATE { PACCESS_TOKEN Token; BOOLEAN CopyOnOpen; BOOLEAN EffectiveOnly; SECURITY_IMPERSONATION_LEVEL Level; -} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; - +} SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE; + + +#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED +#define SID_IDENTIFIER_AUTHORITY_DEFINED typedef struct _SID_IDENTIFIER_AUTHORITY { BYTE Value[6]; } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; - -typedef PVOID PSID; - +#endif + +#ifndef SID_DEFINED +#define SID_DEFINED typedef struct _SID { BYTE Revision; BYTE SubAuthorityCount; SID_IDENTIFIER_AUTHORITY IdentifierAuthority; +#ifdef MIDL_PASS + [size_is(SubAuthorityCount)] DWORD SubAuthority[*]; +#else DWORD SubAuthority[ANYSIZE_ARRAY]; +#endif } SID, *PISID; +#endif + #define SECURITY_MIN_SID_SIZE (sizeof(SID)) #define SECURITY_MAX_SID_SIZE (FIELD_OFFSET(SID, SubAuthority) + SID_MAX_SUB_AUTHORITIES * sizeof(DWORD)) Modified: trunk/reactos/include/xdk/setypes.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/setypes.h?rev=…
============================================================================== --- trunk/reactos/include/xdk/setypes.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/setypes.h [iso-8859-1] Sun Jun 7 09:57:36 2015 @@ -7,8 +7,15 @@ typedef PVOID PSECURITY_DESCRIPTOR; typedef ULONG SECURITY_INFORMATION, *PSECURITY_INFORMATION; typedef ULONG ACCESS_MASK, *PACCESS_MASK; + +$endif (_WDMDDK_) +$if (_WDMDDK_ || _WINNT_) + typedef PVOID PACCESS_TOKEN; typedef PVOID PSID; + +$endif (_WDMDDK_ || _WINNT_) +$if (_WDMDDK_) #define DELETE 0x00010000L #define READ_CONTROL 0x00020000L @@ -87,6 +94,9 @@ LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; } PRIVILEGE_SET,*PPRIVILEGE_SET; +$endif(_WDMDDK_) +$if(_WDMDDK_ || _WINNT_) + typedef enum _SECURITY_IMPERSONATION_LEVEL { SecurityAnonymous, SecurityIdentification, @@ -94,6 +104,9 @@ SecurityDelegation } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL; +$endif (_WDMDDK_ || _WINNT_) +$if (_WDMDDK_) + #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation #define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation @@ -102,10 +115,13 @@ #define SECURITY_DYNAMIC_TRACKING (TRUE) #define SECURITY_STATIC_TRACKING (FALSE) +$endif (_WDMDDK_) +$if (_WDMDDK_ || _WINNT_) + typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE; typedef struct _SECURITY_QUALITY_OF_SERVICE { - ULONG Length; + $ULONG Length; SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; BOOLEAN EffectiveOnly; @@ -117,6 +133,9 @@ BOOLEAN EffectiveOnly; SECURITY_IMPERSONATION_LEVEL Level; } SE_IMPERSONATION_STATE, *PSE_IMPERSONATION_STATE; + +$endif (_WDMDDK_ || _WINNT_) +$if (_WDMDDK_) #define OWNER_SECURITY_INFORMATION (0x00000001L) #define GROUP_SECURITY_INFORMATION (0x00000002L) @@ -393,27 +412,31 @@ WinThisOrganizationCertificateSid = 82, } WELL_KNOWN_SID_TYPE; $endif (_NTDDK_) -$if (_NTIFS_) +$if (_NTIFS_ || _WINNT_) + #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED #define SID_IDENTIFIER_AUTHORITY_DEFINED typedef struct _SID_IDENTIFIER_AUTHORITY { - UCHAR Value[6]; + $UCHAR Value[6]; } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; #endif #ifndef SID_DEFINED #define SID_DEFINED typedef struct _SID { - UCHAR Revision; - UCHAR SubAuthorityCount; + $UCHAR Revision; + $UCHAR SubAuthorityCount; SID_IDENTIFIER_AUTHORITY IdentifierAuthority; #ifdef MIDL_PASS - [size_is(SubAuthorityCount)] ULONG SubAuthority[*]; + [size_is(SubAuthorityCount)] $ULONG SubAuthority[*]; #else - ULONG SubAuthority[ANYSIZE_ARRAY]; + $ULONG SubAuthority[ANYSIZE_ARRAY]; #endif } SID, *PISID; #endif + +$endif (_NTIFS_ || _WINNT_) +$if (_NTIFS_) #define SID_REVISION 1 #define SID_MAX_SUB_AUTHORITIES 15 Modified: trunk/reactos/include/xdk/winnt_old.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/xdk/winnt_old.h?re…
============================================================================== --- trunk/reactos/include/xdk/winnt_old.h [iso-8859-1] (original) +++ trunk/reactos/include/xdk/winnt_old.h [iso-8859-1] Sun Jun 7 09:57:36 2015 @@ -2567,43 +2567,7 @@ BOOL bInheritHandle; } SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES; -typedef enum _SECURITY_IMPERSONATION_LEVEL { - SecurityAnonymous, - SecurityIdentification, - SecurityImpersonation, - SecurityDelegation -} SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; - -typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE; - -typedef struct _SECURITY_QUALITY_OF_SERVICE { - DWORD Length; - SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; - SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; - BOOLEAN EffectiveOnly; -} SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; - -typedef PVOID PACCESS_TOKEN; - -typedef struct _SE_IMPERSONATION_STATE { - PACCESS_TOKEN Token; - BOOLEAN CopyOnOpen; - BOOLEAN EffectiveOnly; - SECURITY_IMPERSONATION_LEVEL Level; -} SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; - -typedef struct _SID_IDENTIFIER_AUTHORITY { - BYTE Value[6]; -} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; - -typedef PVOID PSID; - -typedef struct _SID { - BYTE Revision; - BYTE SubAuthorityCount; - SID_IDENTIFIER_AUTHORITY IdentifierAuthority; - DWORD SubAuthority[ANYSIZE_ARRAY]; -} SID, *PISID; +$include(setypes.h) #define SECURITY_MIN_SID_SIZE (sizeof(SID)) #define SECURITY_MAX_SID_SIZE (FIELD_OFFSET(SID, SubAuthority) + SID_MAX_SUB_AUTHORITIES * sizeof(DWORD))
9 years, 10 months
1
0
0
0
← Newer
1
...
24
25
26
27
28
29
30
...
35
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
Results per page:
10
25
50
100
200