diff --git a/reactos/dll/win32/msgina/gui.c b/reactos/dll/win32/msgina/gui.c index 99c3a61c809..a8e28974f9f 100644 --- a/reactos/dll/win32/msgina/gui.c +++ b/reactos/dll/win32/msgina/gui.c @@ -11,222 +11,222 @@ WINE_DEFAULT_DEBUG_CHANNEL(msgina); typedef struct _DISPLAYSTATUSMSG { - PGINA_CONTEXT Context; - HDESK hDesktop; - DWORD dwOptions; - PWSTR pTitle; - PWSTR pMessage; - HANDLE StartupEvent; + PGINA_CONTEXT Context; + HDESK hDesktop; + DWORD dwOptions; + PWSTR pTitle; + PWSTR pMessage; + HANDLE StartupEvent; } DISPLAYSTATUSMSG, *PDISPLAYSTATUSMSG; static BOOL GUIInitialize( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - TRACE("GUIInitialize(%p)\n", pgContext); - return TRUE; + TRACE("GUIInitialize(%p)\n", pgContext); + return TRUE; } static INT_PTR CALLBACK StatusMessageWindowProc( - IN HWND hwndDlg, - IN UINT uMsg, - IN WPARAM wParam, - IN LPARAM lParam) + IN HWND hwndDlg, + IN UINT uMsg, + IN WPARAM wParam, + IN LPARAM lParam) { - UNREFERENCED_PARAMETER(wParam); + UNREFERENCED_PARAMETER(wParam); - switch (uMsg) - { - case WM_INITDIALOG: - { - PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lParam; - if (!msg) - return FALSE; + switch (uMsg) + { + case WM_INITDIALOG: + { + PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lParam; + if (!msg) + return FALSE; - msg->Context->hStatusWindow = hwndDlg; + msg->Context->hStatusWindow = hwndDlg; - if (msg->pTitle) - SetWindowTextW(hwndDlg, msg->pTitle); - SetDlgItemTextW(hwndDlg, IDC_STATUSLABEL, msg->pMessage); - SetEvent(msg->StartupEvent); - return TRUE; - } - } - return FALSE; + if (msg->pTitle) + SetWindowTextW(hwndDlg, msg->pTitle); + SetDlgItemTextW(hwndDlg, IDC_STATUSLABEL, msg->pMessage); + SetEvent(msg->StartupEvent); + return TRUE; + } + } + return FALSE; } static DWORD WINAPI StartupWindowThread(LPVOID lpParam) { - HDESK hDesk; - PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lpParam; + HDESK hDesk; + PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lpParam; - /* When SetThreadDesktop is called the system closes the desktop handle when needed - so we have to create a new handle because this handle may still be in use by winlogon */ - if (!DuplicateHandle ( GetCurrentProcess(), - msg->hDesktop, - GetCurrentProcess(), - (HANDLE*)&hDesk, - 0, - FALSE, - DUPLICATE_SAME_ACCESS)) - { - HeapFree(GetProcessHeap(), 0, lpParam); - return FALSE; - } + /* When SetThreadDesktop is called the system closes the desktop handle when needed + so we have to create a new handle because this handle may still be in use by winlogon */ + if (!DuplicateHandle ( GetCurrentProcess(), + msg->hDesktop, + GetCurrentProcess(), + (HANDLE*)&hDesk, + 0, + FALSE, + DUPLICATE_SAME_ACCESS)) + { + HeapFree(GetProcessHeap(), 0, lpParam); + return FALSE; + } - if(!SetThreadDesktop(hDesk)) - { - HeapFree(GetProcessHeap(), 0, lpParam); - return FALSE; - } + if(!SetThreadDesktop(hDesk)) + { + HeapFree(GetProcessHeap(), 0, lpParam); + return FALSE; + } - DialogBoxParam( - hDllInstance, - MAKEINTRESOURCE(IDD_STATUSWINDOW_DLG), - GetDesktopWindow(), - StatusMessageWindowProc, - (LPARAM)lpParam); + DialogBoxParam( + hDllInstance, + MAKEINTRESOURCE(IDD_STATUSWINDOW_DLG), + GetDesktopWindow(), + StatusMessageWindowProc, + (LPARAM)lpParam); - HeapFree(GetProcessHeap(), 0, lpParam); - return TRUE; + HeapFree(GetProcessHeap(), 0, lpParam); + return TRUE; } static BOOL GUIDisplayStatusMessage( - IN PGINA_CONTEXT pgContext, - IN HDESK hDesktop, - IN DWORD dwOptions, - IN PWSTR pTitle, - IN PWSTR pMessage) + IN PGINA_CONTEXT pgContext, + IN HDESK hDesktop, + IN DWORD dwOptions, + IN PWSTR pTitle, + IN PWSTR pMessage) { - PDISPLAYSTATUSMSG msg; - HANDLE Thread; - DWORD ThreadId; + PDISPLAYSTATUSMSG msg; + HANDLE Thread; + DWORD ThreadId; - TRACE("GUIDisplayStatusMessage(%ws)\n", pMessage); + TRACE("GUIDisplayStatusMessage(%ws)\n", pMessage); - if (!pgContext->hStatusWindow) - { - msg = (PDISPLAYSTATUSMSG)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DISPLAYSTATUSMSG)); - if(!msg) - return FALSE; + if (!pgContext->hStatusWindow) + { + msg = (PDISPLAYSTATUSMSG)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DISPLAYSTATUSMSG)); + if(!msg) + return FALSE; - msg->Context = pgContext; - msg->dwOptions = dwOptions; - msg->pTitle = pTitle; - msg->pMessage = pMessage; - msg->hDesktop = hDesktop; + msg->Context = pgContext; + msg->dwOptions = dwOptions; + msg->pTitle = pTitle; + msg->pMessage = pMessage; + msg->hDesktop = hDesktop; - msg->StartupEvent = CreateEventW( - NULL, - TRUE, - FALSE, - NULL); + msg->StartupEvent = CreateEventW( + NULL, + TRUE, + FALSE, + NULL); - if (!msg->StartupEvent) - return FALSE; + if (!msg->StartupEvent) + return FALSE; - Thread = CreateThread( - NULL, - 0, - StartupWindowThread, - (PVOID)msg, - 0, - &ThreadId); - if (Thread) - { - CloseHandle(Thread); - WaitForSingleObject(msg->StartupEvent, INFINITE); - CloseHandle(msg->StartupEvent); - return TRUE; - } + Thread = CreateThread( + NULL, + 0, + StartupWindowThread, + (PVOID)msg, + 0, + &ThreadId); + if (Thread) + { + CloseHandle(Thread); + WaitForSingleObject(msg->StartupEvent, INFINITE); + CloseHandle(msg->StartupEvent); + return TRUE; + } - return FALSE; - } + return FALSE; + } - if (pTitle) - SetWindowTextW(pgContext->hStatusWindow, pTitle); + if (pTitle) + SetWindowTextW(pgContext->hStatusWindow, pTitle); - SetDlgItemTextW(pgContext->hStatusWindow, IDC_STATUSLABEL, pMessage); + SetDlgItemTextW(pgContext->hStatusWindow, IDC_STATUSLABEL, pMessage); - return TRUE; + return TRUE; } static BOOL GUIRemoveStatusMessage( - IN PGINA_CONTEXT pgContext) + IN PGINA_CONTEXT pgContext) { - if (pgContext->hStatusWindow) - { - EndDialog(pgContext->hStatusWindow, 0); - pgContext->hStatusWindow = NULL; - } + if (pgContext->hStatusWindow) + { + EndDialog(pgContext->hStatusWindow, 0); + pgContext->hStatusWindow = NULL; + } - return TRUE; + return TRUE; } static INT_PTR CALLBACK EmptyWindowProc( - IN HWND hwndDlg, - IN UINT uMsg, - IN WPARAM wParam, - IN LPARAM lParam) + IN HWND hwndDlg, + IN UINT uMsg, + IN WPARAM wParam, + IN LPARAM lParam) { - UNREFERENCED_PARAMETER(hwndDlg); - UNREFERENCED_PARAMETER(uMsg); - UNREFERENCED_PARAMETER(wParam); - UNREFERENCED_PARAMETER(lParam); + UNREFERENCED_PARAMETER(hwndDlg); + UNREFERENCED_PARAMETER(uMsg); + UNREFERENCED_PARAMETER(wParam); + UNREFERENCED_PARAMETER(lParam); - return FALSE; + return FALSE; } static VOID GUIDisplaySASNotice( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - INT result; + INT result; - TRACE("GUIDisplaySASNotice()\n"); + TRACE("GUIDisplaySASNotice()\n"); - /* Display the notice window */ - result = DialogBoxParam( - pgContext->hDllInstance, - MAKEINTRESOURCE(IDD_NOTICE_DLG), - GetDesktopWindow(), - EmptyWindowProc, - (LPARAM)NULL); - if (result == -1) - { - /* Failed to display the window. Do as if the user - * already has pressed CTRL+ALT+DELETE */ - pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx, WLX_SAS_TYPE_CTRL_ALT_DEL); - } + /* Display the notice window */ + result = DialogBoxParam( + pgContext->hDllInstance, + MAKEINTRESOURCE(IDD_NOTICE_DLG), + GetDesktopWindow(), + EmptyWindowProc, + (LPARAM)NULL); + if (result == -1) + { + /* Failed to display the window. Do as if the user + * already has pressed CTRL+ALT+DELETE */ + pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx, WLX_SAS_TYPE_CTRL_ALT_DEL); + } } /* Get the text contained in a textbox. Allocates memory in pText * to contain the text. Returns TRUE in case of success */ static BOOL GetTextboxText( - IN HWND hwndDlg, - IN INT TextboxId, - OUT LPWSTR *pText) + IN HWND hwndDlg, + IN INT TextboxId, + OUT LPWSTR *pText) { - LPWSTR Text; - int Count; + LPWSTR Text; + int Count; - Count = GetWindowTextLength(GetDlgItem(hwndDlg, TextboxId)); - Text = HeapAlloc(GetProcessHeap(), 0, (Count + 1) * sizeof(WCHAR)); - if (!Text) - return FALSE; - if (Count != GetWindowTextW(GetDlgItem(hwndDlg, TextboxId), Text, Count + 1)) - { - HeapFree(GetProcessHeap(), 0, Text); - return FALSE; - } - *pText = Text; - return TRUE; + Count = GetWindowTextLength(GetDlgItem(hwndDlg, TextboxId)); + Text = HeapAlloc(GetProcessHeap(), 0, (Count + 1) * sizeof(WCHAR)); + if (!Text) + return FALSE; + if (Count != GetWindowTextW(GetDlgItem(hwndDlg, TextboxId), Text, Count + 1)) + { + HeapFree(GetProcessHeap(), 0, Text); + return FALSE; + } + *pText = Text; + return TRUE; } static VOID @@ -260,209 +260,209 @@ OnInitSecurityDlg(HWND hwnd, static INT_PTR CALLBACK LoggedOnWindowProc( - IN HWND hwndDlg, - IN UINT uMsg, - IN WPARAM wParam, - IN LPARAM lParam) + IN HWND hwndDlg, + IN UINT uMsg, + IN WPARAM wParam, + IN LPARAM lParam) { - switch (uMsg) - { - case WM_INITDIALOG: - { - OnInitSecurityDlg(hwndDlg, (PGINA_CONTEXT)lParam); - SetFocus(GetDlgItem(hwndDlg, IDNO)); - return TRUE; - } + switch (uMsg) + { + case WM_INITDIALOG: + { + OnInitSecurityDlg(hwndDlg, (PGINA_CONTEXT)lParam); + SetFocus(GetDlgItem(hwndDlg, IDNO)); + return TRUE; + } - case WM_COMMAND: - { - switch (LOWORD(wParam)) - { - case IDC_LOCK: - EndDialog(hwndDlg, WLX_SAS_ACTION_LOCK_WKSTA); - return TRUE; - case IDC_LOGOFF: - EndDialog(hwndDlg, WLX_SAS_ACTION_LOGOFF); - return TRUE; - case IDC_SHUTDOWN: - EndDialog(hwndDlg, WLX_SAS_ACTION_SHUTDOWN_POWER_OFF); - return TRUE; - case IDC_TASKMGR: - EndDialog(hwndDlg, WLX_SAS_ACTION_TASKLIST); - return TRUE; - case IDCANCEL: - EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); - return TRUE; - } - break; - } - case WM_CLOSE: - { - EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); - return TRUE; - } - } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_LOCK: + EndDialog(hwndDlg, WLX_SAS_ACTION_LOCK_WKSTA); + return TRUE; + case IDC_LOGOFF: + EndDialog(hwndDlg, WLX_SAS_ACTION_LOGOFF); + return TRUE; + case IDC_SHUTDOWN: + EndDialog(hwndDlg, WLX_SAS_ACTION_SHUTDOWN_POWER_OFF); + return TRUE; + case IDC_TASKMGR: + EndDialog(hwndDlg, WLX_SAS_ACTION_TASKLIST); + return TRUE; + case IDCANCEL: + EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); + return TRUE; + } + break; + } + case WM_CLOSE: + { + EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); + return TRUE; + } + } - return FALSE; + return FALSE; } static INT GUILoggedOnSAS( - IN OUT PGINA_CONTEXT pgContext, - IN DWORD dwSasType) + IN OUT PGINA_CONTEXT pgContext, + IN DWORD dwSasType) { - INT result; + INT result; - TRACE("GUILoggedOnSAS()\n"); + TRACE("GUILoggedOnSAS()\n"); - if (dwSasType != WLX_SAS_TYPE_CTRL_ALT_DEL) - { - /* Nothing to do for WLX_SAS_TYPE_TIMEOUT ; the dialog will - * close itself thanks to the use of WlxDialogBoxParam */ - return WLX_SAS_ACTION_NONE; - } + if (dwSasType != WLX_SAS_TYPE_CTRL_ALT_DEL) + { + /* Nothing to do for WLX_SAS_TYPE_TIMEOUT ; the dialog will + * close itself thanks to the use of WlxDialogBoxParam */ + return WLX_SAS_ACTION_NONE; + } - result = pgContext->pWlxFuncs->WlxSwitchDesktopToWinlogon( - pgContext->hWlx); + result = pgContext->pWlxFuncs->WlxSwitchDesktopToWinlogon( + pgContext->hWlx); - result = pgContext->pWlxFuncs->WlxDialogBoxParam( - pgContext->hWlx, - pgContext->hDllInstance, - MAKEINTRESOURCEW(IDD_LOGGEDON_DLG), - GetDesktopWindow(), - LoggedOnWindowProc, - (LPARAM)pgContext); + result = pgContext->pWlxFuncs->WlxDialogBoxParam( + pgContext->hWlx, + pgContext->hDllInstance, + MAKEINTRESOURCEW(IDD_LOGGEDON_DLG), + GetDesktopWindow(), + LoggedOnWindowProc, + (LPARAM)pgContext); - if (result < WLX_SAS_ACTION_LOGON || - result > WLX_SAS_ACTION_SWITCH_CONSOLE) - { - result = WLX_SAS_ACTION_NONE; - } + if (result < WLX_SAS_ACTION_LOGON || + result > WLX_SAS_ACTION_SWITCH_CONSOLE) + { + result = WLX_SAS_ACTION_NONE; + } - if (result == WLX_SAS_ACTION_NONE) - { - result = pgContext->pWlxFuncs->WlxSwitchDesktopToUser( - pgContext->hWlx); - } + if (result == WLX_SAS_ACTION_NONE) + { + result = pgContext->pWlxFuncs->WlxSwitchDesktopToUser( + pgContext->hWlx); + } - return result; + return result; } static INT_PTR CALLBACK LoggedOutWindowProc( - IN HWND hwndDlg, - IN UINT uMsg, - IN WPARAM wParam, - IN LPARAM lParam) + IN HWND hwndDlg, + IN UINT uMsg, + IN WPARAM wParam, + IN LPARAM lParam) { - PGINA_CONTEXT pgContext; + PGINA_CONTEXT pgContext; - pgContext = (PGINA_CONTEXT)GetWindowLongPtr(hwndDlg, GWL_USERDATA); + pgContext = (PGINA_CONTEXT)GetWindowLongPtr(hwndDlg, GWL_USERDATA); - switch (uMsg) - { - case WM_INITDIALOG: - { - /* FIXME: take care of DontDisplayLastUserName, NoDomainUI, ShutdownWithoutLogon */ - pgContext = (PGINA_CONTEXT)lParam; - SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pgContext); - SetFocus(GetDlgItem(hwndDlg, IDC_USERNAME)); + switch (uMsg) + { + case WM_INITDIALOG: + { + /* FIXME: take care of DontDisplayLastUserName, NoDomainUI, ShutdownWithoutLogon */ + pgContext = (PGINA_CONTEXT)lParam; + SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pgContext); + SetFocus(GetDlgItem(hwndDlg, IDC_USERNAME)); - pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); - return TRUE; - } - case WM_PAINT: - { - PAINTSTRUCT ps; - HDC hdc; - if (pgContext->hBitmap) - { - hdc = BeginPaint(hwndDlg, &ps); - DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP); - EndPaint(hwndDlg, &ps); - } - return TRUE; - } - case WM_DESTROY: - { - DeleteObject(pgContext->hBitmap); - return TRUE; - } - case WM_COMMAND: - { - switch (LOWORD(wParam)) - { - case IDOK: - { - LPWSTR UserName = NULL, Password = NULL; - INT result = WLX_SAS_ACTION_NONE; + pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); + return TRUE; + } + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc; + if (pgContext->hBitmap) + { + hdc = BeginPaint(hwndDlg, &ps); + DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP); + EndPaint(hwndDlg, &ps); + } + return TRUE; + } + case WM_DESTROY: + { + DeleteObject(pgContext->hBitmap); + return TRUE; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDOK: + { + LPWSTR UserName = NULL, Password = NULL; + INT result = WLX_SAS_ACTION_NONE; - if (GetTextboxText(hwndDlg, IDC_USERNAME, &UserName) && *UserName == '\0') - break; - if (GetTextboxText(hwndDlg, IDC_PASSWORD, &Password) && - DoLoginTasks(pgContext, UserName, NULL, Password)) - { - result = WLX_SAS_ACTION_LOGON; - } - HeapFree(GetProcessHeap(), 0, UserName); - HeapFree(GetProcessHeap(), 0, Password); - EndDialog(hwndDlg, result); - return TRUE; - } - case IDCANCEL: - { - EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); - return TRUE; - } - case IDC_SHUTDOWN: - { - EndDialog(hwndDlg, WLX_SAS_ACTION_SHUTDOWN); - return TRUE; - } - } - break; - } - } + if (GetTextboxText(hwndDlg, IDC_USERNAME, &UserName) && *UserName == '\0') + break; + if (GetTextboxText(hwndDlg, IDC_PASSWORD, &Password) && + DoLoginTasks(pgContext, UserName, NULL, Password)) + { + result = WLX_SAS_ACTION_LOGON; + } + HeapFree(GetProcessHeap(), 0, UserName); + HeapFree(GetProcessHeap(), 0, Password); + EndDialog(hwndDlg, result); + return TRUE; + } + case IDCANCEL: + { + EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); + return TRUE; + } + case IDC_SHUTDOWN: + { + EndDialog(hwndDlg, WLX_SAS_ACTION_SHUTDOWN); + return TRUE; + } + } + break; + } + } - return FALSE; + return FALSE; } static INT GUILoggedOutSAS( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - int result; + int result; - TRACE("GUILoggedOutSAS()\n"); + TRACE("GUILoggedOutSAS()\n"); - result = pgContext->pWlxFuncs->WlxDialogBoxParam( - pgContext->hWlx, - pgContext->hDllInstance, - MAKEINTRESOURCEW(IDD_LOGGEDOUT_DLG), - GetDesktopWindow(), - LoggedOutWindowProc, - (LPARAM)pgContext); - if (result >= WLX_SAS_ACTION_LOGON && - result <= WLX_SAS_ACTION_SWITCH_CONSOLE) - { - WARN("WlxLoggedOutSAS() returns 0x%x\n", result); - return result; - } + result = pgContext->pWlxFuncs->WlxDialogBoxParam( + pgContext->hWlx, + pgContext->hDllInstance, + MAKEINTRESOURCEW(IDD_LOGGEDOUT_DLG), + GetDesktopWindow(), + LoggedOutWindowProc, + (LPARAM)pgContext); + if (result >= WLX_SAS_ACTION_LOGON && + result <= WLX_SAS_ACTION_SWITCH_CONSOLE) + { + WARN("WlxLoggedOutSAS() returns 0x%x\n", result); + return result; + } - WARN("WlxDialogBoxParam() failed (0x%x)\n", result); - return WLX_SAS_ACTION_NONE; + WARN("WlxDialogBoxParam() failed (0x%x)\n", result); + return WLX_SAS_ACTION_NONE; } static INT GUILockedSAS( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - TRACE("GUILockedSAS()\n"); + TRACE("GUILockedSAS()\n"); - UNREFERENCED_PARAMETER(pgContext); + UNREFERENCED_PARAMETER(pgContext); - UNIMPLEMENTED; - return WLX_SAS_ACTION_UNLOCK_WKSTA; + UNIMPLEMENTED; + return WLX_SAS_ACTION_UNLOCK_WKSTA; } @@ -485,71 +485,71 @@ OnInitLockedDlg(HWND hwnd, static INT_PTR CALLBACK LockedWindowProc( - IN HWND hwndDlg, - IN UINT uMsg, - IN WPARAM wParam, - IN LPARAM lParam) + IN HWND hwndDlg, + IN UINT uMsg, + IN WPARAM wParam, + IN LPARAM lParam) { - PGINA_CONTEXT pgContext; + PGINA_CONTEXT pgContext; - pgContext = (PGINA_CONTEXT)GetWindowLongPtr(hwndDlg, GWL_USERDATA); + pgContext = (PGINA_CONTEXT)GetWindowLongPtr(hwndDlg, GWL_USERDATA); - switch (uMsg) - { - case WM_INITDIALOG: - { - pgContext = (PGINA_CONTEXT)lParam; - SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pgContext); + switch (uMsg) + { + case WM_INITDIALOG: + { + pgContext = (PGINA_CONTEXT)lParam; + SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pgContext); - pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); - OnInitLockedDlg(hwndDlg, pgContext); - return TRUE; - } - case WM_PAINT: - { - PAINTSTRUCT ps; - HDC hdc; - if (pgContext->hBitmap) - { - hdc = BeginPaint(hwndDlg, &ps); - DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP); - EndPaint(hwndDlg, &ps); - } - return TRUE; - } - case WM_DESTROY: - { - DeleteObject(pgContext->hBitmap); - return TRUE; - } - } + pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); + OnInitLockedDlg(hwndDlg, pgContext); + return TRUE; + } + case WM_PAINT: + { + PAINTSTRUCT ps; + HDC hdc; + if (pgContext->hBitmap) + { + hdc = BeginPaint(hwndDlg, &ps); + DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP); + EndPaint(hwndDlg, &ps); + } + return TRUE; + } + case WM_DESTROY: + { + DeleteObject(pgContext->hBitmap); + return TRUE; + } + } - return FALSE; + return FALSE; } static VOID GUIDisplayLockedNotice( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - TRACE("GUIdisplayLockedNotice()\n"); + TRACE("GUIdisplayLockedNotice()\n"); - pgContext->pWlxFuncs->WlxDialogBoxParam( - pgContext->hWlx, - pgContext->hDllInstance, - MAKEINTRESOURCEW(IDD_LOCKED_DLG), - GetDesktopWindow(), - LockedWindowProc, - (LPARAM)pgContext); + pgContext->pWlxFuncs->WlxDialogBoxParam( + pgContext->hWlx, + pgContext->hDllInstance, + MAKEINTRESOURCEW(IDD_LOCKED_DLG), + GetDesktopWindow(), + LockedWindowProc, + (LPARAM)pgContext); } GINA_UI GinaGraphicalUI = { - GUIInitialize, - GUIDisplayStatusMessage, - GUIRemoveStatusMessage, - GUIDisplaySASNotice, - GUILoggedOnSAS, - GUILoggedOutSAS, - GUILockedSAS, - GUIDisplayLockedNotice, + GUIInitialize, + GUIDisplayStatusMessage, + GUIRemoveStatusMessage, + GUIDisplaySASNotice, + GUILoggedOnSAS, + GUILoggedOutSAS, + GUILockedSAS, + GUIDisplayLockedNotice, }; diff --git a/reactos/dll/win32/msgina/msgina.c b/reactos/dll/win32/msgina/msgina.c index 18488bd5c6d..f6bc70aaec0 100644 --- a/reactos/dll/win32/msgina/msgina.c +++ b/reactos/dll/win32/msgina/msgina.c @@ -39,100 +39,100 @@ static PGINA_UI pGinaUI; */ BOOL WINAPI WlxNegotiate( - IN DWORD dwWinlogonVersion, - OUT PDWORD pdwDllVersion) + IN DWORD dwWinlogonVersion, + OUT PDWORD pdwDllVersion) { - TRACE("WlxNegotiate(%lx, %p)\n", dwWinlogonVersion, pdwDllVersion); + TRACE("WlxNegotiate(%lx, %p)\n", dwWinlogonVersion, pdwDllVersion); - if(!pdwDllVersion || (dwWinlogonVersion < WLX_VERSION_1_3)) - return FALSE; + if(!pdwDllVersion || (dwWinlogonVersion < WLX_VERSION_1_3)) + return FALSE; - *pdwDllVersion = WLX_VERSION_1_3; + *pdwDllVersion = WLX_VERSION_1_3; - return TRUE; + return TRUE; } static LONG ReadRegSzKey( - IN HKEY hKey, - IN LPCWSTR pszKey, - OUT LPWSTR* pValue) + IN HKEY hKey, + IN LPCWSTR pszKey, + OUT LPWSTR* pValue) { - LONG rc; - DWORD dwType; - DWORD cbData = 0; - LPWSTR Value; + LONG rc; + DWORD dwType; + DWORD cbData = 0; + LPWSTR Value; - if (!pValue) - return ERROR_INVALID_PARAMETER; + if (!pValue) + return ERROR_INVALID_PARAMETER; - *pValue = NULL; - rc = RegQueryValueExW(hKey, pszKey, NULL, &dwType, NULL, &cbData); - if (rc != ERROR_SUCCESS) - return rc; - if (dwType != REG_SZ) - return ERROR_FILE_NOT_FOUND; - Value = HeapAlloc(GetProcessHeap(), 0, cbData + sizeof(WCHAR)); - if (!Value) - return ERROR_NOT_ENOUGH_MEMORY; - rc = RegQueryValueExW(hKey, pszKey, NULL, NULL, (LPBYTE)Value, &cbData); - if (rc != ERROR_SUCCESS) - { - HeapFree(GetProcessHeap(), 0, Value); - return rc; - } - /* NULL-terminate the string */ - Value[cbData / sizeof(WCHAR)] = '\0'; + *pValue = NULL; + rc = RegQueryValueExW(hKey, pszKey, NULL, &dwType, NULL, &cbData); + if (rc != ERROR_SUCCESS) + return rc; + if (dwType != REG_SZ) + return ERROR_FILE_NOT_FOUND; + Value = HeapAlloc(GetProcessHeap(), 0, cbData + sizeof(WCHAR)); + if (!Value) + return ERROR_NOT_ENOUGH_MEMORY; + rc = RegQueryValueExW(hKey, pszKey, NULL, NULL, (LPBYTE)Value, &cbData); + if (rc != ERROR_SUCCESS) + { + HeapFree(GetProcessHeap(), 0, Value); + return rc; + } + /* NULL-terminate the string */ + Value[cbData / sizeof(WCHAR)] = '\0'; - *pValue = Value; - return ERROR_SUCCESS; + *pValue = Value; + return ERROR_SUCCESS; } static VOID ChooseGinaUI(VOID) { - HKEY ControlKey = NULL; - LPWSTR SystemStartOptions = NULL; - LPWSTR CurrentOption, NextOption; /* Pointers into SystemStartOptions */ - BOOL ConsoleBoot = FALSE; - LONG rc; + HKEY ControlKey = NULL; + LPWSTR SystemStartOptions = NULL; + LPWSTR CurrentOption, NextOption; /* Pointers into SystemStartOptions */ + BOOL ConsoleBoot = FALSE; + LONG rc; - rc = RegOpenKeyExW( - HKEY_LOCAL_MACHINE, - L"SYSTEM\\CurrentControlSet\\Control", - 0, - KEY_QUERY_VALUE, - &ControlKey); + rc = RegOpenKeyExW( + HKEY_LOCAL_MACHINE, + L"SYSTEM\\CurrentControlSet\\Control", + 0, + KEY_QUERY_VALUE, + &ControlKey); - rc = ReadRegSzKey(ControlKey, L"SystemStartOptions", &SystemStartOptions); - if (rc != ERROR_SUCCESS) - goto cleanup; + rc = ReadRegSzKey(ControlKey, L"SystemStartOptions", &SystemStartOptions); + if (rc != ERROR_SUCCESS) + goto cleanup; - /* Check for CONSOLE switch in SystemStartOptions */ - CurrentOption = SystemStartOptions; - while (CurrentOption) - { - NextOption = wcschr(CurrentOption, L' '); - if (NextOption) - *NextOption = L'\0'; - if (wcsicmp(CurrentOption, L"CONSOLE") == 0) - { - TRACE("Found %S. Switching to console boot\n", CurrentOption); - ConsoleBoot = TRUE; - goto cleanup; - } - CurrentOption = NextOption ? NextOption + 1 : NULL; - } + /* Check for CONSOLE switch in SystemStartOptions */ + CurrentOption = SystemStartOptions; + while (CurrentOption) + { + NextOption = wcschr(CurrentOption, L' '); + if (NextOption) + *NextOption = L'\0'; + if (wcsicmp(CurrentOption, L"CONSOLE") == 0) + { + TRACE("Found %S. Switching to console boot\n", CurrentOption); + ConsoleBoot = TRUE; + goto cleanup; + } + CurrentOption = NextOption ? NextOption + 1 : NULL; + } cleanup: - if (ConsoleBoot) - pGinaUI = &GinaTextUI; - else - pGinaUI = &GinaGraphicalUI; + if (ConsoleBoot) + pGinaUI = &GinaTextUI; + else + pGinaUI = &GinaGraphicalUI; - if (ControlKey != NULL) - RegCloseKey(ControlKey); - HeapFree(GetProcessHeap(), 0, SystemStartOptions); + if (ControlKey != NULL) + RegCloseKey(ControlKey); + HeapFree(GetProcessHeap(), 0, SystemStartOptions); } /* @@ -140,50 +140,50 @@ cleanup: */ BOOL WINAPI WlxInitialize( - LPWSTR lpWinsta, - HANDLE hWlx, - PVOID pvReserved, - PVOID pWinlogonFunctions, - PVOID *pWlxContext) + LPWSTR lpWinsta, + HANDLE hWlx, + PVOID pvReserved, + PVOID pWinlogonFunctions, + PVOID *pWlxContext) { - PGINA_CONTEXT pgContext; + PGINA_CONTEXT pgContext; - UNREFERENCED_PARAMETER(pvReserved); + UNREFERENCED_PARAMETER(pvReserved); - pgContext = (PGINA_CONTEXT)LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, sizeof(GINA_CONTEXT)); - if(!pgContext) - { - WARN("LocalAlloc() failed\n"); - return FALSE; - } + pgContext = (PGINA_CONTEXT)LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, sizeof(GINA_CONTEXT)); + if(!pgContext) + { + WARN("LocalAlloc() failed\n"); + return FALSE; + } - /* Return the context to winlogon */ - *pWlxContext = (PVOID)pgContext; - pgContext->hDllInstance = hDllInstance; + /* Return the context to winlogon */ + *pWlxContext = (PVOID)pgContext; + pgContext->hDllInstance = hDllInstance; - /* Save pointer to dispatch table */ - pgContext->pWlxFuncs = (PWLX_DISPATCH_VERSION_1_3)pWinlogonFunctions; + /* Save pointer to dispatch table */ + pgContext->pWlxFuncs = (PWLX_DISPATCH_VERSION_1_3)pWinlogonFunctions; - /* Save the winlogon handle used to call the dispatch functions */ - pgContext->hWlx = hWlx; + /* Save the winlogon handle used to call the dispatch functions */ + pgContext->hWlx = hWlx; - /* Save window station */ - pgContext->station = lpWinsta; + /* Save window station */ + pgContext->station = lpWinsta; - /* Clear status window handle */ - pgContext->hStatusWindow = 0; + /* Clear status window handle */ + pgContext->hStatusWindow = 0; - /* Notify winlogon that we will use the default SAS */ - pgContext->pWlxFuncs->WlxUseCtrlAltDel(hWlx); + /* Notify winlogon that we will use the default SAS */ + pgContext->pWlxFuncs->WlxUseCtrlAltDel(hWlx); - /* Locates the authentification package */ - //LsaRegisterLogonProcess(...); + /* Locates the authentification package */ + //LsaRegisterLogonProcess(...); - /* Check autologon settings the first time */ - pgContext->AutoLogonState = AUTOLOGON_CHECK_REGISTRY; + /* Check autologon settings the first time */ + pgContext->AutoLogonState = AUTOLOGON_CHECK_REGISTRY; - ChooseGinaUI(); - return pGinaUI->Initialize(pgContext); + ChooseGinaUI(); + return pGinaUI->Initialize(pgContext); } /* @@ -252,65 +252,65 @@ WlxScreenSaverNotify( */ BOOL WINAPI WlxStartApplication( - PVOID pWlxContext, - PWSTR pszDesktopName, - PVOID pEnvironment, - PWSTR pszCmdLine) + PVOID pWlxContext, + PWSTR pszDesktopName, + PVOID pEnvironment, + PWSTR pszCmdLine) { - PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; - STARTUPINFOW StartupInfo; - PROCESS_INFORMATION ProcessInformation; - WCHAR CurrentDirectory[MAX_PATH]; - HANDLE hAppToken; - UINT len; - BOOL ret; + PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; + STARTUPINFOW StartupInfo; + PROCESS_INFORMATION ProcessInformation; + WCHAR CurrentDirectory[MAX_PATH]; + HANDLE hAppToken; + UINT len; + BOOL ret; - len = GetWindowsDirectoryW(CurrentDirectory, MAX_PATH); - if (len == 0 || len > MAX_PATH) - { - ERR("GetWindowsDirectoryW() failed\n"); - return FALSE; - } + len = GetWindowsDirectoryW(CurrentDirectory, MAX_PATH); + if (len == 0 || len > MAX_PATH) + { + ERR("GetWindowsDirectoryW() failed\n"); + return FALSE; + } - ret = DuplicateTokenEx(pgContext->UserToken, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &hAppToken); - if (!ret) - { - ERR("DuplicateTokenEx() failed with error %lu\n", GetLastError()); - return FALSE; - } + ret = DuplicateTokenEx(pgContext->UserToken, MAXIMUM_ALLOWED, NULL, SecurityImpersonation, TokenPrimary, &hAppToken); + if (!ret) + { + ERR("DuplicateTokenEx() failed with error %lu\n", GetLastError()); + return FALSE; + } - ZeroMemory(&StartupInfo, sizeof(StartupInfo)); - ZeroMemory(&ProcessInformation, sizeof(ProcessInformation)); - StartupInfo.cb = sizeof(StartupInfo); - StartupInfo.lpTitle = pszCmdLine; - StartupInfo.dwFlags = STARTF_USESHOWWINDOW; - StartupInfo.wShowWindow = SW_SHOW; - StartupInfo.lpDesktop = pszDesktopName; + ZeroMemory(&StartupInfo, sizeof(StartupInfo)); + ZeroMemory(&ProcessInformation, sizeof(ProcessInformation)); + StartupInfo.cb = sizeof(StartupInfo); + StartupInfo.lpTitle = pszCmdLine; + StartupInfo.dwFlags = STARTF_USESHOWWINDOW; + StartupInfo.wShowWindow = SW_SHOW; + StartupInfo.lpDesktop = pszDesktopName; - len = GetWindowsDirectoryW(CurrentDirectory, MAX_PATH); - if (len == 0 || len > MAX_PATH) - { - ERR("GetWindowsDirectoryW() failed\n"); - return FALSE; - } - ret = CreateProcessAsUserW( - hAppToken, - pszCmdLine, - NULL, - NULL, - NULL, - FALSE, - CREATE_UNICODE_ENVIRONMENT, - pEnvironment, - CurrentDirectory, - &StartupInfo, - &ProcessInformation); - CloseHandle(ProcessInformation.hProcess); - CloseHandle(ProcessInformation.hThread); - CloseHandle(hAppToken); - if (!ret) - ERR("CreateProcessAsUserW() failed with error %lu\n", GetLastError()); - return ret; + len = GetWindowsDirectoryW(CurrentDirectory, MAX_PATH); + if (len == 0 || len > MAX_PATH) + { + ERR("GetWindowsDirectoryW() failed\n"); + return FALSE; + } + ret = CreateProcessAsUserW( + hAppToken, + pszCmdLine, + NULL, + NULL, + NULL, + FALSE, + CREATE_UNICODE_ENVIRONMENT, + pEnvironment, + CurrentDirectory, + &StartupInfo, + &ProcessInformation); + CloseHandle(ProcessInformation.hProcess); + CloseHandle(ProcessInformation.hThread); + CloseHandle(hAppToken); + if (!ret) + ERR("CreateProcessAsUserW() failed with error %lu\n", GetLastError()); + return ret; } /* @@ -318,61 +318,61 @@ WlxStartApplication( */ BOOL WINAPI WlxActivateUserShell( - PVOID pWlxContext, - PWSTR pszDesktopName, - PWSTR pszMprLogonScript, - PVOID pEnvironment) + PVOID pWlxContext, + PWSTR pszDesktopName, + PWSTR pszMprLogonScript, + PVOID pEnvironment) { - HKEY hKey; - DWORD BufSize, ValueType; - WCHAR pszUserInitApp[MAX_PATH + 1]; - WCHAR pszExpUserInitApp[MAX_PATH]; - DWORD len; - LONG rc; + HKEY hKey; + DWORD BufSize, ValueType; + WCHAR pszUserInitApp[MAX_PATH + 1]; + WCHAR pszExpUserInitApp[MAX_PATH]; + DWORD len; + LONG rc; - TRACE("WlxActivateUserShell()\n"); + TRACE("WlxActivateUserShell()\n"); - UNREFERENCED_PARAMETER(pszMprLogonScript); + UNREFERENCED_PARAMETER(pszMprLogonScript); - /* Get the path of userinit */ - rc = RegOpenKeyExW( - HKEY_LOCAL_MACHINE, - L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", - 0, - KEY_QUERY_VALUE, - &hKey); - if (rc != ERROR_SUCCESS) - { - WARN("RegOpenKeyExW() failed with error %lu\n", rc); - return FALSE; - } + /* Get the path of userinit */ + rc = RegOpenKeyExW( + HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", + 0, + KEY_QUERY_VALUE, + &hKey); + if (rc != ERROR_SUCCESS) + { + WARN("RegOpenKeyExW() failed with error %lu\n", rc); + return FALSE; + } - /* Query userinit application */ - BufSize = sizeof(pszUserInitApp) - sizeof(UNICODE_NULL); - rc = RegQueryValueExW( - hKey, - L"Userinit", - NULL, - &ValueType, - (LPBYTE)pszUserInitApp, - &BufSize); - RegCloseKey(hKey); - if (rc != ERROR_SUCCESS || (ValueType != REG_SZ && ValueType != REG_EXPAND_SZ)) - { - WARN("RegQueryValueExW() failed with error %lu\n", rc); - return FALSE; - } - pszUserInitApp[MAX_PATH] = UNICODE_NULL; + /* Query userinit application */ + BufSize = sizeof(pszUserInitApp) - sizeof(UNICODE_NULL); + rc = RegQueryValueExW( + hKey, + L"Userinit", + NULL, + &ValueType, + (LPBYTE)pszUserInitApp, + &BufSize); + RegCloseKey(hKey); + if (rc != ERROR_SUCCESS || (ValueType != REG_SZ && ValueType != REG_EXPAND_SZ)) + { + WARN("RegQueryValueExW() failed with error %lu\n", rc); + return FALSE; + } + pszUserInitApp[MAX_PATH] = UNICODE_NULL; - len = ExpandEnvironmentStringsW(pszUserInitApp, pszExpUserInitApp, MAX_PATH); - if (len > MAX_PATH) - { - WARN("ExpandEnvironmentStringsW() failed. Required size %lu\n", len); - return FALSE; - } + len = ExpandEnvironmentStringsW(pszUserInitApp, pszExpUserInitApp, MAX_PATH); + if (len > MAX_PATH) + { + WARN("ExpandEnvironmentStringsW() failed. Required size %lu\n", len); + return FALSE; + } - /* Start userinit app */ - return WlxStartApplication(pWlxContext, pszDesktopName, pEnvironment, pszExpUserInitApp); + /* Start userinit app */ + return WlxStartApplication(pWlxContext, pszDesktopName, pEnvironment, pszExpUserInitApp); } /* @@ -380,43 +380,43 @@ WlxActivateUserShell( */ int WINAPI WlxLoggedOnSAS( - PVOID pWlxContext, - DWORD dwSasType, - PVOID pReserved) + PVOID pWlxContext, + DWORD dwSasType, + PVOID pReserved) { - PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; - INT SasAction = WLX_SAS_ACTION_NONE; + PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; + INT SasAction = WLX_SAS_ACTION_NONE; - TRACE("WlxLoggedOnSAS(0x%lx)\n", dwSasType); + TRACE("WlxLoggedOnSAS(0x%lx)\n", dwSasType); - UNREFERENCED_PARAMETER(pReserved); + UNREFERENCED_PARAMETER(pReserved); - switch (dwSasType) - { - case WLX_SAS_TYPE_CTRL_ALT_DEL: - case WLX_SAS_TYPE_TIMEOUT: - { - SasAction = pGinaUI->LoggedOnSAS(pgContext, dwSasType); - break; - } - case WLX_SAS_TYPE_SC_INSERT: - { - FIXME("WlxLoggedOnSAS: SasType WLX_SAS_TYPE_SC_INSERT not supported!\n"); - break; - } - case WLX_SAS_TYPE_SC_REMOVE: - { - FIXME("WlxLoggedOnSAS: SasType WLX_SAS_TYPE_SC_REMOVE not supported!\n"); - break; - } - default: - { - WARN("WlxLoggedOnSAS: Unknown SasType: 0x%x\n", dwSasType); - break; - } - } + switch (dwSasType) + { + case WLX_SAS_TYPE_CTRL_ALT_DEL: + case WLX_SAS_TYPE_TIMEOUT: + { + SasAction = pGinaUI->LoggedOnSAS(pgContext, dwSasType); + break; + } + case WLX_SAS_TYPE_SC_INSERT: + { + FIXME("WlxLoggedOnSAS: SasType WLX_SAS_TYPE_SC_INSERT not supported!\n"); + break; + } + case WLX_SAS_TYPE_SC_REMOVE: + { + FIXME("WlxLoggedOnSAS: SasType WLX_SAS_TYPE_SC_REMOVE not supported!\n"); + break; + } + default: + { + WARN("WlxLoggedOnSAS: Unknown SasType: 0x%x\n", dwSasType); + break; + } + } - return SasAction; + return SasAction; } /* @@ -424,17 +424,17 @@ WlxLoggedOnSAS( */ BOOL WINAPI WlxDisplayStatusMessage( - IN PVOID pWlxContext, - IN HDESK hDesktop, - IN DWORD dwOptions, - IN PWSTR pTitle, - IN PWSTR pMessage) + IN PVOID pWlxContext, + IN HDESK hDesktop, + IN DWORD dwOptions, + IN PWSTR pTitle, + IN PWSTR pMessage) { - PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; + PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; - TRACE("WlxDisplayStatusMessage(\"%S\")\n", pMessage); + TRACE("WlxDisplayStatusMessage(\"%S\")\n", pMessage); - return pGinaUI->DisplayStatusMessage(pgContext, hDesktop, dwOptions, pTitle, pMessage); + return pGinaUI->DisplayStatusMessage(pgContext, hDesktop, dwOptions, pTitle, pMessage); } /* @@ -442,231 +442,231 @@ WlxDisplayStatusMessage( */ BOOL WINAPI WlxRemoveStatusMessage( - IN PVOID pWlxContext) + IN PVOID pWlxContext) { - PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; + PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; - TRACE("WlxRemoveStatusMessage()\n"); + TRACE("WlxRemoveStatusMessage()\n"); - return pGinaUI->RemoveStatusMessage(pgContext); + return pGinaUI->RemoveStatusMessage(pgContext); } static PWSTR DuplicationString(PWSTR Str) { - DWORD cb; - PWSTR NewStr; + DWORD cb; + PWSTR NewStr; - if (Str == NULL) return NULL; + if (Str == NULL) return NULL; - cb = (wcslen(Str) + 1) * sizeof(WCHAR); - if ((NewStr = LocalAlloc(LMEM_FIXED, cb))) - memcpy(NewStr, Str, cb); - return NewStr; + cb = (wcslen(Str) + 1) * sizeof(WCHAR); + if ((NewStr = LocalAlloc(LMEM_FIXED, cb))) + memcpy(NewStr, Str, cb); + return NewStr; } BOOL DoLoginTasks( - IN OUT PGINA_CONTEXT pgContext, - IN PWSTR UserName, - IN PWSTR Domain, - IN PWSTR Password) + IN OUT PGINA_CONTEXT pgContext, + IN PWSTR UserName, + IN PWSTR Domain, + IN PWSTR Password) { - LPWSTR ProfilePath = NULL; - LPWSTR lpEnvironment = NULL; - TOKEN_STATISTICS Stats; - PWLX_PROFILE_V2_0 pProfile = NULL; - DWORD cbStats, cbSize; - DWORD dwLength; - BOOL bResult; + LPWSTR ProfilePath = NULL; + LPWSTR lpEnvironment = NULL; + TOKEN_STATISTICS Stats; + PWLX_PROFILE_V2_0 pProfile = NULL; + DWORD cbStats, cbSize; + DWORD dwLength; + BOOL bResult; - if (!LogonUserW(UserName, Domain, Password, - LOGON32_LOGON_INTERACTIVE, - LOGON32_PROVIDER_DEFAULT, - &pgContext->UserToken)) - { - WARN("LogonUserW() failed\n"); - goto cleanup; - } + if (!LogonUserW(UserName, Domain, Password, + LOGON32_LOGON_INTERACTIVE, + LOGON32_PROVIDER_DEFAULT, + &pgContext->UserToken)) + { + WARN("LogonUserW() failed\n"); + goto cleanup; + } - /* Store the logon time in the context */ - GetLocalTime(&pgContext->LogonTime); + /* Store the logon time in the context */ + GetLocalTime(&pgContext->LogonTime); - /* Store user and domain in the context */ - wcscpy(pgContext->UserName, UserName); - if (Domain == NULL || wcslen(Domain) == 0) - { - dwLength = 256; - GetComputerNameW(pgContext->Domain, &dwLength); - } - else - { - wcscpy(pgContext->Domain, Domain); - } + /* Store user and domain in the context */ + wcscpy(pgContext->UserName, UserName); + if (Domain == NULL || wcslen(Domain) == 0) + { + dwLength = 256; + GetComputerNameW(pgContext->Domain, &dwLength); + } + else + { + wcscpy(pgContext->Domain, Domain); + } - /* Get profile path */ - cbSize = 0; - bResult = GetProfilesDirectoryW(NULL, &cbSize); - if (!bResult && GetLastError() == ERROR_INSUFFICIENT_BUFFER) - { - ProfilePath = HeapAlloc(GetProcessHeap(), 0, cbSize * sizeof(WCHAR)); - if (!ProfilePath) - { - WARN("HeapAlloc() failed\n"); - goto cleanup; - } - bResult = GetProfilesDirectoryW(ProfilePath, &cbSize); - } - if (!bResult) - { - WARN("GetUserProfileDirectoryW() failed\n"); - goto cleanup; - } + /* Get profile path */ + cbSize = 0; + bResult = GetProfilesDirectoryW(NULL, &cbSize); + if (!bResult && GetLastError() == ERROR_INSUFFICIENT_BUFFER) + { + ProfilePath = HeapAlloc(GetProcessHeap(), 0, cbSize * sizeof(WCHAR)); + if (!ProfilePath) + { + WARN("HeapAlloc() failed\n"); + goto cleanup; + } + bResult = GetProfilesDirectoryW(ProfilePath, &cbSize); + } + if (!bResult) + { + WARN("GetUserProfileDirectoryW() failed\n"); + goto cleanup; + } - /* Allocate memory for profile */ - pProfile = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WLX_PROFILE_V2_0)); - if (!pProfile) - { - WARN("HeapAlloc() failed\n"); - goto cleanup; - } - pProfile->dwType = WLX_PROFILE_TYPE_V2_0; - pProfile->pszProfile = ProfilePath; + /* Allocate memory for profile */ + pProfile = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WLX_PROFILE_V2_0)); + if (!pProfile) + { + WARN("HeapAlloc() failed\n"); + goto cleanup; + } + pProfile->dwType = WLX_PROFILE_TYPE_V2_0; + pProfile->pszProfile = ProfilePath; - lpEnvironment = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, - (wcslen(pgContext->Domain)+ 14 + 1) * sizeof(WCHAR)); - if (!lpEnvironment) - { - WARN("HeapAlloc() failed\n"); - goto cleanup; - } + lpEnvironment = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + (wcslen(pgContext->Domain)+ 14 + 1) * sizeof(WCHAR)); + if (!lpEnvironment) + { + WARN("HeapAlloc() failed\n"); + goto cleanup; + } - wsprintfW(lpEnvironment, L"LOGONSERVER=\\\\%s", pgContext->Domain); + wsprintfW(lpEnvironment, L"LOGONSERVER=\\\\%s", pgContext->Domain); - pProfile->pszEnvironment = lpEnvironment; + pProfile->pszEnvironment = lpEnvironment; - if (!GetTokenInformation(pgContext->UserToken, - TokenStatistics, - (PVOID)&Stats, - sizeof(TOKEN_STATISTICS), - &cbStats)) - { - WARN("Couldn't get Authentication id from user token!\n"); - goto cleanup; - } + if (!GetTokenInformation(pgContext->UserToken, + TokenStatistics, + (PVOID)&Stats, + sizeof(TOKEN_STATISTICS), + &cbStats)) + { + WARN("Couldn't get Authentication id from user token!\n"); + goto cleanup; + } - *pgContext->pAuthenticationId = Stats.AuthenticationId; - pgContext->pMprNotifyInfo->pszUserName = DuplicationString(UserName); - pgContext->pMprNotifyInfo->pszDomain = DuplicationString(Domain); - pgContext->pMprNotifyInfo->pszPassword = DuplicationString(Password); - pgContext->pMprNotifyInfo->pszOldPassword = NULL; - *pgContext->pdwOptions = 0; - *pgContext->pProfile = pProfile; - return TRUE; + *pgContext->pAuthenticationId = Stats.AuthenticationId; + pgContext->pMprNotifyInfo->pszUserName = DuplicationString(UserName); + pgContext->pMprNotifyInfo->pszDomain = DuplicationString(Domain); + pgContext->pMprNotifyInfo->pszPassword = DuplicationString(Password); + pgContext->pMprNotifyInfo->pszOldPassword = NULL; + *pgContext->pdwOptions = 0; + *pgContext->pProfile = pProfile; + return TRUE; cleanup: - if (pProfile) - { - HeapFree(GetProcessHeap(), 0, pProfile->pszEnvironment); - } - HeapFree(GetProcessHeap(), 0, pProfile); - HeapFree(GetProcessHeap(), 0, ProfilePath); - return FALSE; + if (pProfile) + { + HeapFree(GetProcessHeap(), 0, pProfile->pszEnvironment); + } + HeapFree(GetProcessHeap(), 0, pProfile); + HeapFree(GetProcessHeap(), 0, ProfilePath); + return FALSE; } static BOOL DoAutoLogon( - IN PGINA_CONTEXT pgContext) + IN PGINA_CONTEXT pgContext) { - HKEY WinLogonKey = NULL; - LPWSTR AutoLogon = NULL; - LPWSTR AutoCount = NULL; - LPWSTR IgnoreShiftOverride = NULL; - LPWSTR UserName = NULL; - LPWSTR DomainName = NULL; - LPWSTR Password = NULL; - BOOL result = FALSE; - LONG rc; + HKEY WinLogonKey = NULL; + LPWSTR AutoLogon = NULL; + LPWSTR AutoCount = NULL; + LPWSTR IgnoreShiftOverride = NULL; + LPWSTR UserName = NULL; + LPWSTR DomainName = NULL; + LPWSTR Password = NULL; + BOOL result = FALSE; + LONG rc; - TRACE("DoAutoLogon(): AutoLogonState = %lu\n", - pgContext->AutoLogonState); + TRACE("DoAutoLogon(): AutoLogonState = %lu\n", + pgContext->AutoLogonState); - if (pgContext->AutoLogonState == AUTOLOGON_DISABLED) - return FALSE; + if (pgContext->AutoLogonState == AUTOLOGON_DISABLED) + return FALSE; - rc = RegOpenKeyExW( - HKEY_LOCAL_MACHINE, - L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\WinLogon", - 0, - KEY_QUERY_VALUE, - &WinLogonKey); - if (rc != ERROR_SUCCESS) - goto cleanup; + rc = RegOpenKeyExW( + HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\WinLogon", + 0, + KEY_QUERY_VALUE, + &WinLogonKey); + if (rc != ERROR_SUCCESS) + goto cleanup; - if (pgContext->AutoLogonState == AUTOLOGON_CHECK_REGISTRY) - { - /* Set it by default to disabled, we might reenable it again later */ - pgContext->AutoLogonState = AUTOLOGON_DISABLED; + if (pgContext->AutoLogonState == AUTOLOGON_CHECK_REGISTRY) + { + /* Set it by default to disabled, we might reenable it again later */ + pgContext->AutoLogonState = AUTOLOGON_DISABLED; - rc = ReadRegSzKey(WinLogonKey, L"AutoAdminLogon", &AutoLogon); - if (rc != ERROR_SUCCESS) - goto cleanup; - if (wcscmp(AutoLogon, L"1") != 0) - goto cleanup; + rc = ReadRegSzKey(WinLogonKey, L"AutoAdminLogon", &AutoLogon); + if (rc != ERROR_SUCCESS) + goto cleanup; + if (wcscmp(AutoLogon, L"1") != 0) + goto cleanup; - rc = ReadRegSzKey(WinLogonKey, L"AutoLogonCount", &AutoCount); - if (rc == ERROR_SUCCESS && wcscmp(AutoCount, L"0") == 0) - goto cleanup; - else if (rc != ERROR_FILE_NOT_FOUND) - goto cleanup; + rc = ReadRegSzKey(WinLogonKey, L"AutoLogonCount", &AutoCount); + if (rc == ERROR_SUCCESS && wcscmp(AutoCount, L"0") == 0) + goto cleanup; + else if (rc != ERROR_FILE_NOT_FOUND) + goto cleanup; - rc = ReadRegSzKey(WinLogonKey, L"IgnoreShiftOverride", &UserName); - if (rc == ERROR_SUCCESS) - { - if (wcscmp(AutoLogon, L"1") != 0 && GetKeyState(VK_SHIFT) < 0) - goto cleanup; - } - else if (GetKeyState(VK_SHIFT) < 0) - { - /* User pressed SHIFT */ - goto cleanup; - } + rc = ReadRegSzKey(WinLogonKey, L"IgnoreShiftOverride", &UserName); + if (rc == ERROR_SUCCESS) + { + if (wcscmp(AutoLogon, L"1") != 0 && GetKeyState(VK_SHIFT) < 0) + goto cleanup; + } + else if (GetKeyState(VK_SHIFT) < 0) + { + /* User pressed SHIFT */ + goto cleanup; + } - pgContext->AutoLogonState = AUTOLOGON_ONCE; - result = TRUE; - } - else /* pgContext->AutoLogonState == AUTOLOGON_ONCE */ - { - pgContext->AutoLogonState = AUTOLOGON_DISABLED; + pgContext->AutoLogonState = AUTOLOGON_ONCE; + result = TRUE; + } + else /* pgContext->AutoLogonState == AUTOLOGON_ONCE */ + { + pgContext->AutoLogonState = AUTOLOGON_DISABLED; - rc = ReadRegSzKey(WinLogonKey, L"DefaultUserName", &UserName); - if (rc != ERROR_SUCCESS) - goto cleanup; - rc = ReadRegSzKey(WinLogonKey, L"DefaultDomainName", &DomainName); - if (rc != ERROR_SUCCESS && rc != ERROR_FILE_NOT_FOUND) - goto cleanup; - rc = ReadRegSzKey(WinLogonKey, L"DefaultPassword", &Password); - if (rc != ERROR_SUCCESS) - goto cleanup; + rc = ReadRegSzKey(WinLogonKey, L"DefaultUserName", &UserName); + if (rc != ERROR_SUCCESS) + goto cleanup; + rc = ReadRegSzKey(WinLogonKey, L"DefaultDomainName", &DomainName); + if (rc != ERROR_SUCCESS && rc != ERROR_FILE_NOT_FOUND) + goto cleanup; + rc = ReadRegSzKey(WinLogonKey, L"DefaultPassword", &Password); + if (rc != ERROR_SUCCESS) + goto cleanup; - result = DoLoginTasks(pgContext, UserName, DomainName, Password); + result = DoLoginTasks(pgContext, UserName, DomainName, Password); - if (result == TRUE) - NotifyBootConfigStatus(TRUE); - } + if (result == TRUE) + NotifyBootConfigStatus(TRUE); + } cleanup: - if (WinLogonKey != NULL) - RegCloseKey(WinLogonKey); - HeapFree(GetProcessHeap(), 0, AutoLogon); - HeapFree(GetProcessHeap(), 0, AutoCount); - HeapFree(GetProcessHeap(), 0, IgnoreShiftOverride); - HeapFree(GetProcessHeap(), 0, UserName); - HeapFree(GetProcessHeap(), 0, DomainName); - HeapFree(GetProcessHeap(), 0, Password); - TRACE("DoAutoLogon(): AutoLogonState = %lu, returning %d\n", - pgContext->AutoLogonState, result); - return result; + if (WinLogonKey != NULL) + RegCloseKey(WinLogonKey); + HeapFree(GetProcessHeap(), 0, AutoLogon); + HeapFree(GetProcessHeap(), 0, AutoCount); + HeapFree(GetProcessHeap(), 0, IgnoreShiftOverride); + HeapFree(GetProcessHeap(), 0, UserName); + HeapFree(GetProcessHeap(), 0, DomainName); + HeapFree(GetProcessHeap(), 0, Password); + TRACE("DoAutoLogon(): AutoLogonState = %lu, returning %d\n", + pgContext->AutoLogonState, result); + return result; } /* @@ -674,32 +674,32 @@ cleanup: */ VOID WINAPI WlxDisplaySASNotice( - IN PVOID pWlxContext) + IN PVOID pWlxContext) { - PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; + PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; - TRACE("WlxDisplaySASNotice(%p)\n", pWlxContext); + TRACE("WlxDisplaySASNotice(%p)\n", pWlxContext); - if (GetSystemMetrics(SM_REMOTESESSION)) - { - /* User is remotely logged on. Don't display a notice */ - pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx, WLX_SAS_TYPE_CTRL_ALT_DEL); - return; - } + if (GetSystemMetrics(SM_REMOTESESSION)) + { + /* User is remotely logged on. Don't display a notice */ + pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx, WLX_SAS_TYPE_CTRL_ALT_DEL); + return; + } - if (DoAutoLogon(pgContext)) - { - /* Don't display the window, we want to do an automatic logon */ - pgContext->AutoLogonState = AUTOLOGON_ONCE; - pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx, WLX_SAS_TYPE_CTRL_ALT_DEL); - return; - } - else - pgContext->AutoLogonState = AUTOLOGON_DISABLED; + if (DoAutoLogon(pgContext)) + { + /* Don't display the window, we want to do an automatic logon */ + pgContext->AutoLogonState = AUTOLOGON_ONCE; + pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx, WLX_SAS_TYPE_CTRL_ALT_DEL); + return; + } + else + pgContext->AutoLogonState = AUTOLOGON_DISABLED; - pGinaUI->DisplaySASNotice(pgContext); + pGinaUI->DisplaySASNotice(pgContext); - TRACE("WlxDisplaySASNotice() done\n"); + TRACE("WlxDisplaySASNotice() done\n"); } /* @@ -707,40 +707,40 @@ WlxDisplaySASNotice( */ INT WINAPI WlxLoggedOutSAS( - IN PVOID pWlxContext, - IN DWORD dwSasType, - OUT PLUID pAuthenticationId, - IN OUT PSID pLogonSid, - OUT PDWORD pdwOptions, - OUT PHANDLE phToken, - OUT PWLX_MPR_NOTIFY_INFO pMprNotifyInfo, - OUT PVOID *pProfile) + IN PVOID pWlxContext, + IN DWORD dwSasType, + OUT PLUID pAuthenticationId, + IN OUT PSID pLogonSid, + OUT PDWORD pdwOptions, + OUT PHANDLE phToken, + OUT PWLX_MPR_NOTIFY_INFO pMprNotifyInfo, + OUT PVOID *pProfile) { - PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; - INT res; + PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; + INT res; - TRACE("WlxLoggedOutSAS()\n"); + TRACE("WlxLoggedOutSAS()\n"); - UNREFERENCED_PARAMETER(dwSasType); - UNREFERENCED_PARAMETER(pLogonSid); + UNREFERENCED_PARAMETER(dwSasType); + UNREFERENCED_PARAMETER(pLogonSid); - pgContext->pAuthenticationId = pAuthenticationId; - pgContext->pdwOptions = pdwOptions; - pgContext->pMprNotifyInfo = pMprNotifyInfo; - pgContext->pProfile = pProfile; + pgContext->pAuthenticationId = pAuthenticationId; + pgContext->pdwOptions = pdwOptions; + pgContext->pMprNotifyInfo = pMprNotifyInfo; + pgContext->pProfile = pProfile; - if (0 == GetSystemMetrics(SM_REMOTESESSION) && - DoAutoLogon(pgContext)) - { - /* User is local and registry contains information - * to log on him automatically */ - *phToken = pgContext->UserToken; - return WLX_SAS_ACTION_LOGON; - } + if (0 == GetSystemMetrics(SM_REMOTESESSION) && + DoAutoLogon(pgContext)) + { + /* User is local and registry contains information + * to log on him automatically */ + *phToken = pgContext->UserToken; + return WLX_SAS_ACTION_LOGON; + } - res = pGinaUI->LoggedOutSAS(pgContext); - *phToken = pgContext->UserToken; - return res; + res = pGinaUI->LoggedOutSAS(pgContext); + *phToken = pgContext->UserToken; + return res; } /* @@ -748,16 +748,16 @@ WlxLoggedOutSAS( */ int WINAPI WlxWkstaLockedSAS( - PVOID pWlxContext, - DWORD dwSasType) + PVOID pWlxContext, + DWORD dwSasType) { - PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; + PGINA_CONTEXT pgContext = (PGINA_CONTEXT)pWlxContext; - TRACE("WlxWkstaLockedSAS()\n"); + TRACE("WlxWkstaLockedSAS()\n"); - UNREFERENCED_PARAMETER(dwSasType); + UNREFERENCED_PARAMETER(dwSasType); - return pGinaUI->LockedSAS(pgContext); + return pGinaUI->LockedSAS(pgContext); } @@ -781,7 +781,7 @@ WlxDisplayLockedNotice(PVOID pWlxContext) */ BOOL WINAPI WlxIsLogoffOk( - PVOID pWlxContext) + PVOID pWlxContext) { TRACE("WlxIsLogoffOk()\n"); UNREFERENCED_PARAMETER(pWlxContext); @@ -790,14 +790,14 @@ WlxIsLogoffOk( BOOL WINAPI DllMain( - IN HINSTANCE hinstDLL, - IN DWORD dwReason, - IN LPVOID lpvReserved) + IN HINSTANCE hinstDLL, + IN DWORD dwReason, + IN LPVOID lpvReserved) { - UNREFERENCED_PARAMETER(lpvReserved); + UNREFERENCED_PARAMETER(lpvReserved); - if (dwReason == DLL_PROCESS_ATTACH) - hDllInstance = hinstDLL; + if (dwReason == DLL_PROCESS_ATTACH) + hDllInstance = hinstDLL; - return TRUE; + return TRUE; } diff --git a/reactos/dll/win32/msgina/msgina.h b/reactos/dll/win32/msgina/msgina.h index a9ab3e4fcc6..e79d40ee779 100644 --- a/reactos/dll/win32/msgina/msgina.h +++ b/reactos/dll/win32/msgina/msgina.h @@ -23,25 +23,25 @@ typedef struct { - HANDLE hWlx; - LPWSTR station; - PWLX_DISPATCH_VERSION_1_3 pWlxFuncs; - HANDLE hDllInstance; - HWND hStatusWindow; - DWORD AutoLogonState; + HANDLE hWlx; + LPWSTR station; + PWLX_DISPATCH_VERSION_1_3 pWlxFuncs; + HANDLE hDllInstance; + HWND hStatusWindow; + DWORD AutoLogonState; - /* Informations to be filled during logon */ - WCHAR UserName[256]; - WCHAR Domain[256]; - SYSTEMTIME LogonTime; - HANDLE UserToken; - PLUID pAuthenticationId; - PDWORD pdwOptions; - PWLX_MPR_NOTIFY_INFO pMprNotifyInfo; - PVOID *pProfile; + /* Informations to be filled during logon */ + WCHAR UserName[256]; + WCHAR Domain[256]; + SYSTEMTIME LogonTime; + HANDLE UserToken; + PLUID pAuthenticationId; + PDWORD pdwOptions; + PWLX_MPR_NOTIFY_INFO pMprNotifyInfo; + PVOID *pProfile; - /* Current logo to display */ - HBITMAP hBitmap; + /* Current logo to display */ + HBITMAP hBitmap; } GINA_CONTEXT, *PGINA_CONTEXT; extern HINSTANCE hDllInstance; @@ -57,23 +57,23 @@ typedef VOID (*PFGINA_DISPLAYLOCKEDNOTICE)(PGINA_CONTEXT); typedef struct _GINA_UI { - PFGINA_INITIALIZE Initialize; - PFGINA_DISPLAYSTATUSMESSAGE DisplayStatusMessage; - PFGINA_REMOVESTATUSMESSAGE RemoveStatusMessage; - PFGINA_DISPLAYSASNOTICE DisplaySASNotice; - PFGINA_LOGGEDONSAS LoggedOnSAS; - PFGINA_LOGGEDOUTSAS LoggedOutSAS; - PFGINA_LOCKEDSAS LockedSAS; - PFGINA_DISPLAYLOCKEDNOTICE DisplayLockedNotice; + PFGINA_INITIALIZE Initialize; + PFGINA_DISPLAYSTATUSMESSAGE DisplayStatusMessage; + PFGINA_REMOVESTATUSMESSAGE RemoveStatusMessage; + PFGINA_DISPLAYSASNOTICE DisplaySASNotice; + PFGINA_LOGGEDONSAS LoggedOnSAS; + PFGINA_LOGGEDOUTSAS LoggedOutSAS; + PFGINA_LOCKEDSAS LockedSAS; + PFGINA_DISPLAYLOCKEDNOTICE DisplayLockedNotice; } GINA_UI, *PGINA_UI; /* msgina.c */ BOOL DoLoginTasks( - IN OUT PGINA_CONTEXT pgContext, - IN PWSTR UserName, - IN PWSTR Domain, - IN PWSTR Password); + IN OUT PGINA_CONTEXT pgContext, + IN PWSTR UserName, + IN PWSTR Domain, + IN PWSTR Password); /* EOF */ diff --git a/reactos/dll/win32/msgina/stubs.c b/reactos/dll/win32/msgina/stubs.c index 19fd551e2b8..3223a52d689 100644 --- a/reactos/dll/win32/msgina/stubs.c +++ b/reactos/dll/win32/msgina/stubs.c @@ -22,20 +22,20 @@ ShellShutdownDialog( DWORD Unknown, BOOL bHideLogoff) { - UNREFERENCED_PARAMETER(hParent); - UNREFERENCED_PARAMETER(Unknown); - UNREFERENCED_PARAMETER(bHideLogoff); + UNREFERENCED_PARAMETER(hParent); + UNREFERENCED_PARAMETER(Unknown); + UNREFERENCED_PARAMETER(bHideLogoff); - /* Return values: - * 0x00: Cancelled/Help - * 0x01: Log off user - * 0x02: Shutdown - * 0x04: Reboot - * 0x10: Standby - * 0x40: Hibernate - */ - UNIMPLEMENTED; - return FALSE; + /* Return values: + * 0x00: Cancelled/Help + * 0x01: Log off user + * 0x02: Shutdown + * 0x04: Reboot + * 0x10: Standby + * 0x40: Hibernate + */ + UNIMPLEMENTED; + return FALSE; } @@ -44,12 +44,12 @@ ShellShutdownDialog( */ BOOL WINAPI WlxIsLockOk( - PVOID pWlxContext) + PVOID pWlxContext) { - UNREFERENCED_PARAMETER(pWlxContext); + UNREFERENCED_PARAMETER(pWlxContext); - UNIMPLEMENTED; - return TRUE; + UNIMPLEMENTED; + return TRUE; } @@ -58,11 +58,11 @@ WlxIsLockOk( */ VOID WINAPI WlxLogoff( - PVOID pWlxContext) + PVOID pWlxContext) { - UNREFERENCED_PARAMETER(pWlxContext); + UNREFERENCED_PARAMETER(pWlxContext); - UNIMPLEMENTED; + UNIMPLEMENTED; } @@ -71,13 +71,13 @@ WlxLogoff( */ VOID WINAPI WlxShutdown( - PVOID pWlxContext, - DWORD ShutdownType) + PVOID pWlxContext, + DWORD ShutdownType) { - UNREFERENCED_PARAMETER(pWlxContext); - UNREFERENCED_PARAMETER(ShutdownType); + UNREFERENCED_PARAMETER(pWlxContext); + UNREFERENCED_PARAMETER(ShutdownType); - UNIMPLEMENTED; + UNIMPLEMENTED; } @@ -86,18 +86,18 @@ WlxShutdown( */ BOOL WINAPI WlxGetStatusMessage( - PVOID pWlxContext, - DWORD *pdwOptions, - PWSTR pMessage, - DWORD dwBufferSize) + PVOID pWlxContext, + DWORD *pdwOptions, + PWSTR pMessage, + DWORD dwBufferSize) { - UNREFERENCED_PARAMETER(pWlxContext); - UNREFERENCED_PARAMETER(pdwOptions); - UNREFERENCED_PARAMETER(pMessage); - UNREFERENCED_PARAMETER(dwBufferSize); + UNREFERENCED_PARAMETER(pWlxContext); + UNREFERENCED_PARAMETER(pdwOptions); + UNREFERENCED_PARAMETER(pMessage); + UNREFERENCED_PARAMETER(dwBufferSize); - UNIMPLEMENTED; - return FALSE; + UNIMPLEMENTED; + return FALSE; } @@ -106,14 +106,14 @@ WlxGetStatusMessage( */ BOOL WINAPI WlxNetworkProviderLoad( - PVOID pWlxContext, - PWLX_MPR_NOTIFY_INFO pNprNotifyInfo) + PVOID pWlxContext, + PWLX_MPR_NOTIFY_INFO pNprNotifyInfo) { - UNREFERENCED_PARAMETER(pWlxContext); - UNREFERENCED_PARAMETER(pNprNotifyInfo); + UNREFERENCED_PARAMETER(pWlxContext); + UNREFERENCED_PARAMETER(pNprNotifyInfo); - UNIMPLEMENTED; - return FALSE; + UNIMPLEMENTED; + return FALSE; } @@ -122,11 +122,11 @@ WlxNetworkProviderLoad( */ VOID WINAPI WlxDisconnectNotify( - PVOID pWlxContext) + PVOID pWlxContext) { - UNREFERENCED_PARAMETER(pWlxContext); + UNREFERENCED_PARAMETER(pWlxContext); - UNIMPLEMENTED; + UNIMPLEMENTED; } @@ -135,13 +135,13 @@ WlxDisconnectNotify( */ BOOL WINAPI WlxGetConsoleSwitchCredentials( - PVOID pWlxContext, - PVOID pCredInfo) + PVOID pWlxContext, + PVOID pCredInfo) { - UNREFERENCED_PARAMETER(pWlxContext); - UNREFERENCED_PARAMETER(pCredInfo); + UNREFERENCED_PARAMETER(pWlxContext); + UNREFERENCED_PARAMETER(pCredInfo); - UNIMPLEMENTED; - return FALSE; + UNIMPLEMENTED; + return FALSE; } diff --git a/reactos/dll/win32/msgina/tui.c b/reactos/dll/win32/msgina/tui.c index 6ddb8da6114..81eaa70407a 100644 --- a/reactos/dll/win32/msgina/tui.c +++ b/reactos/dll/win32/msgina/tui.c @@ -11,255 +11,255 @@ WINE_DEFAULT_DEBUG_CHANNEL(msgina); static BOOL TUIInitialize( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - TRACE("TUIInitialize(%p)\n", pgContext); + TRACE("TUIInitialize(%p)\n", pgContext); - return AllocConsole(); + return AllocConsole(); } static BOOL TUIDisplayStatusMessage( - IN PGINA_CONTEXT pgContext, - IN HDESK hDesktop, - IN DWORD dwOptions, - IN PWSTR pTitle, - IN PWSTR pMessage) + IN PGINA_CONTEXT pgContext, + IN HDESK hDesktop, + IN DWORD dwOptions, + IN PWSTR pTitle, + IN PWSTR pMessage) { - static LPCWSTR newLine = L"\n"; - DWORD result; + static LPCWSTR newLine = L"\n"; + DWORD result; - TRACE("TUIDisplayStatusMessage(%ws)\n", pMessage); + TRACE("TUIDisplayStatusMessage(%ws)\n", pMessage); - UNREFERENCED_PARAMETER(pgContext); - UNREFERENCED_PARAMETER(hDesktop); - UNREFERENCED_PARAMETER(dwOptions); - UNREFERENCED_PARAMETER(pTitle); + UNREFERENCED_PARAMETER(pgContext); + UNREFERENCED_PARAMETER(hDesktop); + UNREFERENCED_PARAMETER(dwOptions); + UNREFERENCED_PARAMETER(pTitle); - return - WriteConsoleW( - GetStdHandle(STD_OUTPUT_HANDLE), - pMessage, - wcslen(pMessage), - &result, - NULL) && - WriteConsoleW( - GetStdHandle(STD_OUTPUT_HANDLE), - newLine, - wcslen(newLine), - &result, - NULL); + return + WriteConsoleW( + GetStdHandle(STD_OUTPUT_HANDLE), + pMessage, + wcslen(pMessage), + &result, + NULL) && + WriteConsoleW( + GetStdHandle(STD_OUTPUT_HANDLE), + newLine, + wcslen(newLine), + &result, + NULL); } static BOOL TUIRemoveStatusMessage( - IN PGINA_CONTEXT pgContext) + IN PGINA_CONTEXT pgContext) { - UNREFERENCED_PARAMETER(pgContext); + UNREFERENCED_PARAMETER(pgContext); - /* Nothing to do */ - return TRUE; + /* Nothing to do */ + return TRUE; } static BOOL DisplayResourceText( - IN UINT uIdResourceText, - IN BOOL AddNewLine) + IN UINT uIdResourceText, + IN BOOL AddNewLine) { - WCHAR Prompt[256]; - static LPCWSTR newLine = L"\n"; - DWORD count; + WCHAR Prompt[256]; + static LPCWSTR newLine = L"\n"; + DWORD count; - if (0 == LoadStringW(hDllInstance, uIdResourceText, Prompt, 256)) - return FALSE; - if (!WriteConsoleW( - GetStdHandle(STD_OUTPUT_HANDLE), - Prompt, wcslen(Prompt), - &count, NULL)) - { - return FALSE; - } - if (AddNewLine) - { - if (!WriteConsoleW( - GetStdHandle(STD_OUTPUT_HANDLE), - newLine, wcslen(newLine), - &count, NULL)) - { - return FALSE; - } - } - return TRUE; + if (0 == LoadStringW(hDllInstance, uIdResourceText, Prompt, 256)) + return FALSE; + if (!WriteConsoleW( + GetStdHandle(STD_OUTPUT_HANDLE), + Prompt, wcslen(Prompt), + &count, NULL)) + { + return FALSE; + } + if (AddNewLine) + { + if (!WriteConsoleW( + GetStdHandle(STD_OUTPUT_HANDLE), + newLine, wcslen(newLine), + &count, NULL)) + { + return FALSE; + } + } + return TRUE; } static VOID TUIDisplaySASNotice( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - TRACE("TUIDisplaySASNotice()\n"); + TRACE("TUIDisplaySASNotice()\n"); - UNREFERENCED_PARAMETER(pgContext); + UNREFERENCED_PARAMETER(pgContext); - DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE); - DisplayResourceText(IDS_PRESSCTRLALTDELETE, TRUE); + DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE); + DisplayResourceText(IDS_PRESSCTRLALTDELETE, TRUE); } static INT TUILoggedOnSAS( - IN OUT PGINA_CONTEXT pgContext, - IN DWORD dwSasType) + IN OUT PGINA_CONTEXT pgContext, + IN DWORD dwSasType) { - TRACE("TUILoggedOnSAS()\n"); + TRACE("TUILoggedOnSAS()\n"); - UNREFERENCED_PARAMETER(pgContext); + UNREFERENCED_PARAMETER(pgContext); - if (dwSasType != WLX_SAS_TYPE_CTRL_ALT_DEL) - { - /* Nothing to do for WLX_SAS_TYPE_TIMEOUT */ - return WLX_SAS_ACTION_NONE; - } + if (dwSasType != WLX_SAS_TYPE_CTRL_ALT_DEL) + { + /* Nothing to do for WLX_SAS_TYPE_TIMEOUT */ + return WLX_SAS_ACTION_NONE; + } - FIXME("FIXME: TUILoggedOnSAS(): Let's suppose the user wants to log off...\n"); - return WLX_SAS_ACTION_LOGOFF; + FIXME("FIXME: TUILoggedOnSAS(): Let's suppose the user wants to log off...\n"); + return WLX_SAS_ACTION_LOGOFF; } static BOOL ReadString( - IN UINT uIdResourcePrompt, - IN OUT PWSTR Buffer, - IN DWORD BufferLength, - IN BOOL ShowString) + IN UINT uIdResourcePrompt, + IN OUT PWSTR Buffer, + IN DWORD BufferLength, + IN BOOL ShowString) { - DWORD count, i; - WCHAR charToDisplay[] = { 0, UNICODE_NULL }; + DWORD count, i; + WCHAR charToDisplay[] = { 0, UNICODE_NULL }; - if (!SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), 0)) - return FALSE; + if (!SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), 0)) + return FALSE; - if (!FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE))) - return FALSE; + if (!FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE))) + return FALSE; - if (!DisplayResourceText(uIdResourcePrompt, FALSE)) - return FALSE; + if (!DisplayResourceText(uIdResourcePrompt, FALSE)) + return FALSE; - i = 0; - for (;;) - { - WCHAR readChar; - if (!ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), &readChar, 1, &count, NULL)) - return FALSE; - if (readChar == '\r' || readChar == '\n') - { - /* End of string */ - charToDisplay[0] = L'\n'; - WriteConsoleW( - GetStdHandle(STD_OUTPUT_HANDLE), - charToDisplay, - wcslen(charToDisplay), - &count, - NULL); - break; - } - if (ShowString) - { - /* Display the char */ - charToDisplay[0] = readChar; - WriteConsoleW( - GetStdHandle(STD_OUTPUT_HANDLE), - charToDisplay, - wcslen(charToDisplay), - &count, - NULL); - } - Buffer[i++] = readChar; - /* FIXME: buffer overflow if the user writes too many chars! */ - UNREFERENCED_PARAMETER(BufferLength); - /* FIXME: handle backspace */ - } - Buffer[i] = UNICODE_NULL; + i = 0; + for (;;) + { + WCHAR readChar; + if (!ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), &readChar, 1, &count, NULL)) + return FALSE; + if (readChar == '\r' || readChar == '\n') + { + /* End of string */ + charToDisplay[0] = L'\n'; + WriteConsoleW( + GetStdHandle(STD_OUTPUT_HANDLE), + charToDisplay, + wcslen(charToDisplay), + &count, + NULL); + break; + } + if (ShowString) + { + /* Display the char */ + charToDisplay[0] = readChar; + WriteConsoleW( + GetStdHandle(STD_OUTPUT_HANDLE), + charToDisplay, + wcslen(charToDisplay), + &count, + NULL); + } + Buffer[i++] = readChar; + /* FIXME: buffer overflow if the user writes too many chars! */ + UNREFERENCED_PARAMETER(BufferLength); + /* FIXME: handle backspace */ + } + Buffer[i] = UNICODE_NULL; - if (!ShowString) - { - /* Still display the \n */ - static LPCWSTR newLine = L"\n"; - DWORD result; - WriteConsoleW( - GetStdHandle(STD_OUTPUT_HANDLE), - newLine, - wcslen(newLine), - &result, - NULL); - } - return TRUE; + if (!ShowString) + { + /* Still display the \n */ + static LPCWSTR newLine = L"\n"; + DWORD result; + WriteConsoleW( + GetStdHandle(STD_OUTPUT_HANDLE), + newLine, + wcslen(newLine), + &result, + NULL); + } + return TRUE; } static INT TUILoggedOutSAS( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - WCHAR UserName[256]; - WCHAR Password[256]; + WCHAR UserName[256]; + WCHAR Password[256]; - TRACE("TUILoggedOutSAS()\n"); + TRACE("TUILoggedOutSAS()\n"); - /* Ask the user for credentials */ - if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE)) - return WLX_SAS_ACTION_NONE; - if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE)) - return WLX_SAS_ACTION_NONE; + /* Ask the user for credentials */ + if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE)) + return WLX_SAS_ACTION_NONE; + if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE)) + return WLX_SAS_ACTION_NONE; - if (DoLoginTasks(pgContext, UserName, NULL, Password)) - return WLX_SAS_ACTION_LOGON; - else - return WLX_SAS_ACTION_NONE; + if (DoLoginTasks(pgContext, UserName, NULL, Password)) + return WLX_SAS_ACTION_LOGON; + else + return WLX_SAS_ACTION_NONE; } static INT TUILockedSAS( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { - HANDLE hToken; - WCHAR UserName[256]; - WCHAR Password[256]; + HANDLE hToken; + WCHAR UserName[256]; + WCHAR Password[256]; - TRACE("TUILockedSAS()\n"); + TRACE("TUILockedSAS()\n"); - UNREFERENCED_PARAMETER(pgContext); + UNREFERENCED_PARAMETER(pgContext); - if (!DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE)) - return WLX_SAS_ACTION_UNLOCK_WKSTA; + if (!DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE)) + return WLX_SAS_ACTION_UNLOCK_WKSTA; - /* Ask the user for credentials */ - if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE)) - return WLX_SAS_ACTION_NONE; - if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE)) - return WLX_SAS_ACTION_NONE; + /* Ask the user for credentials */ + if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE)) + return WLX_SAS_ACTION_NONE; + if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE)) + return WLX_SAS_ACTION_NONE; - if (!LogonUserW(UserName, NULL, Password, - LOGON32_LOGON_UNLOCK, - LOGON32_PROVIDER_DEFAULT, - &hToken)) - { - TRACE("LogonUserW() failed\n"); - return WLX_SAS_ACTION_NONE; - } - CloseHandle(hToken); - return WLX_SAS_ACTION_UNLOCK_WKSTA; + if (!LogonUserW(UserName, NULL, Password, + LOGON32_LOGON_UNLOCK, + LOGON32_PROVIDER_DEFAULT, + &hToken)) + { + TRACE("LogonUserW() failed\n"); + return WLX_SAS_ACTION_NONE; + } + CloseHandle(hToken); + return WLX_SAS_ACTION_UNLOCK_WKSTA; } static VOID TUIDisplayLockedNotice( - IN OUT PGINA_CONTEXT pgContext) + IN OUT PGINA_CONTEXT pgContext) { } GINA_UI GinaTextUI = { - TUIInitialize, - TUIDisplayStatusMessage, - TUIRemoveStatusMessage, - TUIDisplaySASNotice, - TUILoggedOnSAS, - TUILoggedOutSAS, - TUILockedSAS, - TUIDisplayLockedNotice, + TUIInitialize, + TUIDisplayStatusMessage, + TUIRemoveStatusMessage, + TUIDisplaySASNotice, + TUILoggedOnSAS, + TUILoggedOutSAS, + TUILockedSAS, + TUIDisplayLockedNotice, };