Convert tabs to spaces. No code changes!

svn path=/trunk/; revision=58963
This commit is contained in:
Eric Kohl 2013-05-06 21:43:03 +00:00
parent bfe3492dc4
commit c1d4f2f390
5 changed files with 1111 additions and 1111 deletions

View file

@ -11,222 +11,222 @@ WINE_DEFAULT_DEBUG_CHANNEL(msgina);
typedef struct _DISPLAYSTATUSMSG typedef struct _DISPLAYSTATUSMSG
{ {
PGINA_CONTEXT Context; PGINA_CONTEXT Context;
HDESK hDesktop; HDESK hDesktop;
DWORD dwOptions; DWORD dwOptions;
PWSTR pTitle; PWSTR pTitle;
PWSTR pMessage; PWSTR pMessage;
HANDLE StartupEvent; HANDLE StartupEvent;
} DISPLAYSTATUSMSG, *PDISPLAYSTATUSMSG; } DISPLAYSTATUSMSG, *PDISPLAYSTATUSMSG;
static BOOL static BOOL
GUIInitialize( GUIInitialize(
IN OUT PGINA_CONTEXT pgContext) IN OUT PGINA_CONTEXT pgContext)
{ {
TRACE("GUIInitialize(%p)\n", pgContext); TRACE("GUIInitialize(%p)\n", pgContext);
return TRUE; return TRUE;
} }
static INT_PTR CALLBACK static INT_PTR CALLBACK
StatusMessageWindowProc( StatusMessageWindowProc(
IN HWND hwndDlg, IN HWND hwndDlg,
IN UINT uMsg, IN UINT uMsg,
IN WPARAM wParam, IN WPARAM wParam,
IN LPARAM lParam) IN LPARAM lParam)
{ {
UNREFERENCED_PARAMETER(wParam); UNREFERENCED_PARAMETER(wParam);
switch (uMsg) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lParam; PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lParam;
if (!msg) if (!msg)
return FALSE; return FALSE;
msg->Context->hStatusWindow = hwndDlg; msg->Context->hStatusWindow = hwndDlg;
if (msg->pTitle) if (msg->pTitle)
SetWindowTextW(hwndDlg, msg->pTitle); SetWindowTextW(hwndDlg, msg->pTitle);
SetDlgItemTextW(hwndDlg, IDC_STATUSLABEL, msg->pMessage); SetDlgItemTextW(hwndDlg, IDC_STATUSLABEL, msg->pMessage);
SetEvent(msg->StartupEvent); SetEvent(msg->StartupEvent);
return TRUE; return TRUE;
} }
} }
return FALSE; return FALSE;
} }
static DWORD WINAPI static DWORD WINAPI
StartupWindowThread(LPVOID lpParam) StartupWindowThread(LPVOID lpParam)
{ {
HDESK hDesk; HDESK hDesk;
PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lpParam; PDISPLAYSTATUSMSG msg = (PDISPLAYSTATUSMSG)lpParam;
/* When SetThreadDesktop is called the system closes the desktop handle when needed /* 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 */ so we have to create a new handle because this handle may still be in use by winlogon */
if (!DuplicateHandle ( GetCurrentProcess(), if (!DuplicateHandle ( GetCurrentProcess(),
msg->hDesktop, msg->hDesktop,
GetCurrentProcess(), GetCurrentProcess(),
(HANDLE*)&hDesk, (HANDLE*)&hDesk,
0, 0,
FALSE, FALSE,
DUPLICATE_SAME_ACCESS)) DUPLICATE_SAME_ACCESS))
{ {
HeapFree(GetProcessHeap(), 0, lpParam); HeapFree(GetProcessHeap(), 0, lpParam);
return FALSE; return FALSE;
} }
if(!SetThreadDesktop(hDesk)) if(!SetThreadDesktop(hDesk))
{ {
HeapFree(GetProcessHeap(), 0, lpParam); HeapFree(GetProcessHeap(), 0, lpParam);
return FALSE; return FALSE;
} }
DialogBoxParam( DialogBoxParam(
hDllInstance, hDllInstance,
MAKEINTRESOURCE(IDD_STATUSWINDOW_DLG), MAKEINTRESOURCE(IDD_STATUSWINDOW_DLG),
GetDesktopWindow(), GetDesktopWindow(),
StatusMessageWindowProc, StatusMessageWindowProc,
(LPARAM)lpParam); (LPARAM)lpParam);
HeapFree(GetProcessHeap(), 0, lpParam); HeapFree(GetProcessHeap(), 0, lpParam);
return TRUE; return TRUE;
} }
static BOOL static BOOL
GUIDisplayStatusMessage( GUIDisplayStatusMessage(
IN PGINA_CONTEXT pgContext, IN PGINA_CONTEXT pgContext,
IN HDESK hDesktop, IN HDESK hDesktop,
IN DWORD dwOptions, IN DWORD dwOptions,
IN PWSTR pTitle, IN PWSTR pTitle,
IN PWSTR pMessage) IN PWSTR pMessage)
{ {
PDISPLAYSTATUSMSG msg; PDISPLAYSTATUSMSG msg;
HANDLE Thread; HANDLE Thread;
DWORD ThreadId; DWORD ThreadId;
TRACE("GUIDisplayStatusMessage(%ws)\n", pMessage); TRACE("GUIDisplayStatusMessage(%ws)\n", pMessage);
if (!pgContext->hStatusWindow) if (!pgContext->hStatusWindow)
{ {
msg = (PDISPLAYSTATUSMSG)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DISPLAYSTATUSMSG)); msg = (PDISPLAYSTATUSMSG)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DISPLAYSTATUSMSG));
if(!msg) if(!msg)
return FALSE; return FALSE;
msg->Context = pgContext; msg->Context = pgContext;
msg->dwOptions = dwOptions; msg->dwOptions = dwOptions;
msg->pTitle = pTitle; msg->pTitle = pTitle;
msg->pMessage = pMessage; msg->pMessage = pMessage;
msg->hDesktop = hDesktop; msg->hDesktop = hDesktop;
msg->StartupEvent = CreateEventW( msg->StartupEvent = CreateEventW(
NULL, NULL,
TRUE, TRUE,
FALSE, FALSE,
NULL); NULL);
if (!msg->StartupEvent) if (!msg->StartupEvent)
return FALSE; return FALSE;
Thread = CreateThread( Thread = CreateThread(
NULL, NULL,
0, 0,
StartupWindowThread, StartupWindowThread,
(PVOID)msg, (PVOID)msg,
0, 0,
&ThreadId); &ThreadId);
if (Thread) if (Thread)
{ {
CloseHandle(Thread); CloseHandle(Thread);
WaitForSingleObject(msg->StartupEvent, INFINITE); WaitForSingleObject(msg->StartupEvent, INFINITE);
CloseHandle(msg->StartupEvent); CloseHandle(msg->StartupEvent);
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
} }
if (pTitle) if (pTitle)
SetWindowTextW(pgContext->hStatusWindow, pTitle); SetWindowTextW(pgContext->hStatusWindow, pTitle);
SetDlgItemTextW(pgContext->hStatusWindow, IDC_STATUSLABEL, pMessage); SetDlgItemTextW(pgContext->hStatusWindow, IDC_STATUSLABEL, pMessage);
return TRUE; return TRUE;
} }
static BOOL static BOOL
GUIRemoveStatusMessage( GUIRemoveStatusMessage(
IN PGINA_CONTEXT pgContext) IN PGINA_CONTEXT pgContext)
{ {
if (pgContext->hStatusWindow) if (pgContext->hStatusWindow)
{ {
EndDialog(pgContext->hStatusWindow, 0); EndDialog(pgContext->hStatusWindow, 0);
pgContext->hStatusWindow = NULL; pgContext->hStatusWindow = NULL;
} }
return TRUE; return TRUE;
} }
static INT_PTR CALLBACK static INT_PTR CALLBACK
EmptyWindowProc( EmptyWindowProc(
IN HWND hwndDlg, IN HWND hwndDlg,
IN UINT uMsg, IN UINT uMsg,
IN WPARAM wParam, IN WPARAM wParam,
IN LPARAM lParam) IN LPARAM lParam)
{ {
UNREFERENCED_PARAMETER(hwndDlg); UNREFERENCED_PARAMETER(hwndDlg);
UNREFERENCED_PARAMETER(uMsg); UNREFERENCED_PARAMETER(uMsg);
UNREFERENCED_PARAMETER(wParam); UNREFERENCED_PARAMETER(wParam);
UNREFERENCED_PARAMETER(lParam); UNREFERENCED_PARAMETER(lParam);
return FALSE; return FALSE;
} }
static VOID static VOID
GUIDisplaySASNotice( 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 */ /* Display the notice window */
result = DialogBoxParam( result = DialogBoxParam(
pgContext->hDllInstance, pgContext->hDllInstance,
MAKEINTRESOURCE(IDD_NOTICE_DLG), MAKEINTRESOURCE(IDD_NOTICE_DLG),
GetDesktopWindow(), GetDesktopWindow(),
EmptyWindowProc, EmptyWindowProc,
(LPARAM)NULL); (LPARAM)NULL);
if (result == -1) if (result == -1)
{ {
/* Failed to display the window. Do as if the user /* Failed to display the window. Do as if the user
* already has pressed CTRL+ALT+DELETE */ * already has pressed CTRL+ALT+DELETE */
pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx, WLX_SAS_TYPE_CTRL_ALT_DEL); pgContext->pWlxFuncs->WlxSasNotify(pgContext->hWlx, WLX_SAS_TYPE_CTRL_ALT_DEL);
} }
} }
/* Get the text contained in a textbox. Allocates memory in pText /* Get the text contained in a textbox. Allocates memory in pText
* to contain the text. Returns TRUE in case of success */ * to contain the text. Returns TRUE in case of success */
static BOOL static BOOL
GetTextboxText( GetTextboxText(
IN HWND hwndDlg, IN HWND hwndDlg,
IN INT TextboxId, IN INT TextboxId,
OUT LPWSTR *pText) OUT LPWSTR *pText)
{ {
LPWSTR Text; LPWSTR Text;
int Count; int Count;
Count = GetWindowTextLength(GetDlgItem(hwndDlg, TextboxId)); Count = GetWindowTextLength(GetDlgItem(hwndDlg, TextboxId));
Text = HeapAlloc(GetProcessHeap(), 0, (Count + 1) * sizeof(WCHAR)); Text = HeapAlloc(GetProcessHeap(), 0, (Count + 1) * sizeof(WCHAR));
if (!Text) if (!Text)
return FALSE; return FALSE;
if (Count != GetWindowTextW(GetDlgItem(hwndDlg, TextboxId), Text, Count + 1)) if (Count != GetWindowTextW(GetDlgItem(hwndDlg, TextboxId), Text, Count + 1))
{ {
HeapFree(GetProcessHeap(), 0, Text); HeapFree(GetProcessHeap(), 0, Text);
return FALSE; return FALSE;
} }
*pText = Text; *pText = Text;
return TRUE; return TRUE;
} }
static VOID static VOID
@ -260,209 +260,209 @@ OnInitSecurityDlg(HWND hwnd,
static INT_PTR CALLBACK static INT_PTR CALLBACK
LoggedOnWindowProc( LoggedOnWindowProc(
IN HWND hwndDlg, IN HWND hwndDlg,
IN UINT uMsg, IN UINT uMsg,
IN WPARAM wParam, IN WPARAM wParam,
IN LPARAM lParam) IN LPARAM lParam)
{ {
switch (uMsg) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
OnInitSecurityDlg(hwndDlg, (PGINA_CONTEXT)lParam); OnInitSecurityDlg(hwndDlg, (PGINA_CONTEXT)lParam);
SetFocus(GetDlgItem(hwndDlg, IDNO)); SetFocus(GetDlgItem(hwndDlg, IDNO));
return TRUE; return TRUE;
} }
case WM_COMMAND: case WM_COMMAND:
{ {
switch (LOWORD(wParam)) switch (LOWORD(wParam))
{ {
case IDC_LOCK: case IDC_LOCK:
EndDialog(hwndDlg, WLX_SAS_ACTION_LOCK_WKSTA); EndDialog(hwndDlg, WLX_SAS_ACTION_LOCK_WKSTA);
return TRUE; return TRUE;
case IDC_LOGOFF: case IDC_LOGOFF:
EndDialog(hwndDlg, WLX_SAS_ACTION_LOGOFF); EndDialog(hwndDlg, WLX_SAS_ACTION_LOGOFF);
return TRUE; return TRUE;
case IDC_SHUTDOWN: case IDC_SHUTDOWN:
EndDialog(hwndDlg, WLX_SAS_ACTION_SHUTDOWN_POWER_OFF); EndDialog(hwndDlg, WLX_SAS_ACTION_SHUTDOWN_POWER_OFF);
return TRUE; return TRUE;
case IDC_TASKMGR: case IDC_TASKMGR:
EndDialog(hwndDlg, WLX_SAS_ACTION_TASKLIST); EndDialog(hwndDlg, WLX_SAS_ACTION_TASKLIST);
return TRUE; return TRUE;
case IDCANCEL: case IDCANCEL:
EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); EndDialog(hwndDlg, WLX_SAS_ACTION_NONE);
return TRUE; return TRUE;
} }
break; break;
} }
case WM_CLOSE: case WM_CLOSE:
{ {
EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); EndDialog(hwndDlg, WLX_SAS_ACTION_NONE);
return TRUE; return TRUE;
} }
} }
return FALSE; return FALSE;
} }
static INT static INT
GUILoggedOnSAS( GUILoggedOnSAS(
IN OUT PGINA_CONTEXT pgContext, IN OUT PGINA_CONTEXT pgContext,
IN DWORD dwSasType) IN DWORD dwSasType)
{ {
INT result; INT result;
TRACE("GUILoggedOnSAS()\n"); TRACE("GUILoggedOnSAS()\n");
if (dwSasType != WLX_SAS_TYPE_CTRL_ALT_DEL) if (dwSasType != WLX_SAS_TYPE_CTRL_ALT_DEL)
{ {
/* Nothing to do for WLX_SAS_TYPE_TIMEOUT ; the dialog will /* Nothing to do for WLX_SAS_TYPE_TIMEOUT ; the dialog will
* close itself thanks to the use of WlxDialogBoxParam */ * close itself thanks to the use of WlxDialogBoxParam */
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
} }
result = pgContext->pWlxFuncs->WlxSwitchDesktopToWinlogon( result = pgContext->pWlxFuncs->WlxSwitchDesktopToWinlogon(
pgContext->hWlx); pgContext->hWlx);
result = pgContext->pWlxFuncs->WlxDialogBoxParam( result = pgContext->pWlxFuncs->WlxDialogBoxParam(
pgContext->hWlx, pgContext->hWlx,
pgContext->hDllInstance, pgContext->hDllInstance,
MAKEINTRESOURCEW(IDD_LOGGEDON_DLG), MAKEINTRESOURCEW(IDD_LOGGEDON_DLG),
GetDesktopWindow(), GetDesktopWindow(),
LoggedOnWindowProc, LoggedOnWindowProc,
(LPARAM)pgContext); (LPARAM)pgContext);
if (result < WLX_SAS_ACTION_LOGON || if (result < WLX_SAS_ACTION_LOGON ||
result > WLX_SAS_ACTION_SWITCH_CONSOLE) result > WLX_SAS_ACTION_SWITCH_CONSOLE)
{ {
result = WLX_SAS_ACTION_NONE; result = WLX_SAS_ACTION_NONE;
} }
if (result == WLX_SAS_ACTION_NONE) if (result == WLX_SAS_ACTION_NONE)
{ {
result = pgContext->pWlxFuncs->WlxSwitchDesktopToUser( result = pgContext->pWlxFuncs->WlxSwitchDesktopToUser(
pgContext->hWlx); pgContext->hWlx);
} }
return result; return result;
} }
static INT_PTR CALLBACK static INT_PTR CALLBACK
LoggedOutWindowProc( LoggedOutWindowProc(
IN HWND hwndDlg, IN HWND hwndDlg,
IN UINT uMsg, IN UINT uMsg,
IN WPARAM wParam, IN WPARAM wParam,
IN LPARAM lParam) 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) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
/* FIXME: take care of DontDisplayLastUserName, NoDomainUI, ShutdownWithoutLogon */ /* FIXME: take care of DontDisplayLastUserName, NoDomainUI, ShutdownWithoutLogon */
pgContext = (PGINA_CONTEXT)lParam; pgContext = (PGINA_CONTEXT)lParam;
SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pgContext); SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pgContext);
SetFocus(GetDlgItem(hwndDlg, IDC_USERNAME)); SetFocus(GetDlgItem(hwndDlg, IDC_USERNAME));
pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
return TRUE; return TRUE;
} }
case WM_PAINT: case WM_PAINT:
{ {
PAINTSTRUCT ps; PAINTSTRUCT ps;
HDC hdc; HDC hdc;
if (pgContext->hBitmap) if (pgContext->hBitmap)
{ {
hdc = BeginPaint(hwndDlg, &ps); hdc = BeginPaint(hwndDlg, &ps);
DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP); DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP);
EndPaint(hwndDlg, &ps); EndPaint(hwndDlg, &ps);
} }
return TRUE; return TRUE;
} }
case WM_DESTROY: case WM_DESTROY:
{ {
DeleteObject(pgContext->hBitmap); DeleteObject(pgContext->hBitmap);
return TRUE; return TRUE;
} }
case WM_COMMAND: case WM_COMMAND:
{ {
switch (LOWORD(wParam)) switch (LOWORD(wParam))
{ {
case IDOK: case IDOK:
{ {
LPWSTR UserName = NULL, Password = NULL; LPWSTR UserName = NULL, Password = NULL;
INT result = WLX_SAS_ACTION_NONE; INT result = WLX_SAS_ACTION_NONE;
if (GetTextboxText(hwndDlg, IDC_USERNAME, &UserName) && *UserName == '\0') if (GetTextboxText(hwndDlg, IDC_USERNAME, &UserName) && *UserName == '\0')
break; break;
if (GetTextboxText(hwndDlg, IDC_PASSWORD, &Password) && if (GetTextboxText(hwndDlg, IDC_PASSWORD, &Password) &&
DoLoginTasks(pgContext, UserName, NULL, Password)) DoLoginTasks(pgContext, UserName, NULL, Password))
{ {
result = WLX_SAS_ACTION_LOGON; result = WLX_SAS_ACTION_LOGON;
} }
HeapFree(GetProcessHeap(), 0, UserName); HeapFree(GetProcessHeap(), 0, UserName);
HeapFree(GetProcessHeap(), 0, Password); HeapFree(GetProcessHeap(), 0, Password);
EndDialog(hwndDlg, result); EndDialog(hwndDlg, result);
return TRUE; return TRUE;
} }
case IDCANCEL: case IDCANCEL:
{ {
EndDialog(hwndDlg, WLX_SAS_ACTION_NONE); EndDialog(hwndDlg, WLX_SAS_ACTION_NONE);
return TRUE; return TRUE;
} }
case IDC_SHUTDOWN: case IDC_SHUTDOWN:
{ {
EndDialog(hwndDlg, WLX_SAS_ACTION_SHUTDOWN); EndDialog(hwndDlg, WLX_SAS_ACTION_SHUTDOWN);
return TRUE; return TRUE;
} }
} }
break; break;
} }
} }
return FALSE; return FALSE;
} }
static INT static INT
GUILoggedOutSAS( 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( result = pgContext->pWlxFuncs->WlxDialogBoxParam(
pgContext->hWlx, pgContext->hWlx,
pgContext->hDllInstance, pgContext->hDllInstance,
MAKEINTRESOURCEW(IDD_LOGGEDOUT_DLG), MAKEINTRESOURCEW(IDD_LOGGEDOUT_DLG),
GetDesktopWindow(), GetDesktopWindow(),
LoggedOutWindowProc, LoggedOutWindowProc,
(LPARAM)pgContext); (LPARAM)pgContext);
if (result >= WLX_SAS_ACTION_LOGON && if (result >= WLX_SAS_ACTION_LOGON &&
result <= WLX_SAS_ACTION_SWITCH_CONSOLE) result <= WLX_SAS_ACTION_SWITCH_CONSOLE)
{ {
WARN("WlxLoggedOutSAS() returns 0x%x\n", result); WARN("WlxLoggedOutSAS() returns 0x%x\n", result);
return result; return result;
} }
WARN("WlxDialogBoxParam() failed (0x%x)\n", result); WARN("WlxDialogBoxParam() failed (0x%x)\n", result);
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
} }
static INT static INT
GUILockedSAS( GUILockedSAS(
IN OUT PGINA_CONTEXT pgContext) IN OUT PGINA_CONTEXT pgContext)
{ {
TRACE("GUILockedSAS()\n"); TRACE("GUILockedSAS()\n");
UNREFERENCED_PARAMETER(pgContext); UNREFERENCED_PARAMETER(pgContext);
UNIMPLEMENTED; UNIMPLEMENTED;
return WLX_SAS_ACTION_UNLOCK_WKSTA; return WLX_SAS_ACTION_UNLOCK_WKSTA;
} }
@ -485,71 +485,71 @@ OnInitLockedDlg(HWND hwnd,
static INT_PTR CALLBACK static INT_PTR CALLBACK
LockedWindowProc( LockedWindowProc(
IN HWND hwndDlg, IN HWND hwndDlg,
IN UINT uMsg, IN UINT uMsg,
IN WPARAM wParam, IN WPARAM wParam,
IN LPARAM lParam) 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) switch (uMsg)
{ {
case WM_INITDIALOG: case WM_INITDIALOG:
{ {
pgContext = (PGINA_CONTEXT)lParam; pgContext = (PGINA_CONTEXT)lParam;
SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pgContext); SetWindowLongPtr(hwndDlg, GWL_USERDATA, (DWORD_PTR)pgContext);
pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR); pgContext->hBitmap = LoadImage(hDllInstance, MAKEINTRESOURCE(IDI_ROSLOGO), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR);
OnInitLockedDlg(hwndDlg, pgContext); OnInitLockedDlg(hwndDlg, pgContext);
return TRUE; return TRUE;
} }
case WM_PAINT: case WM_PAINT:
{ {
PAINTSTRUCT ps; PAINTSTRUCT ps;
HDC hdc; HDC hdc;
if (pgContext->hBitmap) if (pgContext->hBitmap)
{ {
hdc = BeginPaint(hwndDlg, &ps); hdc = BeginPaint(hwndDlg, &ps);
DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP); DrawStateW(hdc, NULL, NULL, (LPARAM)pgContext->hBitmap, (WPARAM)0, 0, 0, 0, 0, DST_BITMAP);
EndPaint(hwndDlg, &ps); EndPaint(hwndDlg, &ps);
} }
return TRUE; return TRUE;
} }
case WM_DESTROY: case WM_DESTROY:
{ {
DeleteObject(pgContext->hBitmap); DeleteObject(pgContext->hBitmap);
return TRUE; return TRUE;
} }
} }
return FALSE; return FALSE;
} }
static VOID static VOID
GUIDisplayLockedNotice( GUIDisplayLockedNotice(
IN OUT PGINA_CONTEXT pgContext) IN OUT PGINA_CONTEXT pgContext)
{ {
TRACE("GUIdisplayLockedNotice()\n"); TRACE("GUIdisplayLockedNotice()\n");
pgContext->pWlxFuncs->WlxDialogBoxParam( pgContext->pWlxFuncs->WlxDialogBoxParam(
pgContext->hWlx, pgContext->hWlx,
pgContext->hDllInstance, pgContext->hDllInstance,
MAKEINTRESOURCEW(IDD_LOCKED_DLG), MAKEINTRESOURCEW(IDD_LOCKED_DLG),
GetDesktopWindow(), GetDesktopWindow(),
LockedWindowProc, LockedWindowProc,
(LPARAM)pgContext); (LPARAM)pgContext);
} }
GINA_UI GinaGraphicalUI = { GINA_UI GinaGraphicalUI = {
GUIInitialize, GUIInitialize,
GUIDisplayStatusMessage, GUIDisplayStatusMessage,
GUIRemoveStatusMessage, GUIRemoveStatusMessage,
GUIDisplaySASNotice, GUIDisplaySASNotice,
GUILoggedOnSAS, GUILoggedOnSAS,
GUILoggedOutSAS, GUILoggedOutSAS,
GUILockedSAS, GUILockedSAS,
GUIDisplayLockedNotice, GUIDisplayLockedNotice,
}; };

File diff suppressed because it is too large Load diff

View file

@ -23,25 +23,25 @@
typedef struct typedef struct
{ {
HANDLE hWlx; HANDLE hWlx;
LPWSTR station; LPWSTR station;
PWLX_DISPATCH_VERSION_1_3 pWlxFuncs; PWLX_DISPATCH_VERSION_1_3 pWlxFuncs;
HANDLE hDllInstance; HANDLE hDllInstance;
HWND hStatusWindow; HWND hStatusWindow;
DWORD AutoLogonState; DWORD AutoLogonState;
/* Informations to be filled during logon */ /* Informations to be filled during logon */
WCHAR UserName[256]; WCHAR UserName[256];
WCHAR Domain[256]; WCHAR Domain[256];
SYSTEMTIME LogonTime; SYSTEMTIME LogonTime;
HANDLE UserToken; HANDLE UserToken;
PLUID pAuthenticationId; PLUID pAuthenticationId;
PDWORD pdwOptions; PDWORD pdwOptions;
PWLX_MPR_NOTIFY_INFO pMprNotifyInfo; PWLX_MPR_NOTIFY_INFO pMprNotifyInfo;
PVOID *pProfile; PVOID *pProfile;
/* Current logo to display */ /* Current logo to display */
HBITMAP hBitmap; HBITMAP hBitmap;
} GINA_CONTEXT, *PGINA_CONTEXT; } GINA_CONTEXT, *PGINA_CONTEXT;
extern HINSTANCE hDllInstance; extern HINSTANCE hDllInstance;
@ -57,23 +57,23 @@ typedef VOID (*PFGINA_DISPLAYLOCKEDNOTICE)(PGINA_CONTEXT);
typedef struct _GINA_UI typedef struct _GINA_UI
{ {
PFGINA_INITIALIZE Initialize; PFGINA_INITIALIZE Initialize;
PFGINA_DISPLAYSTATUSMESSAGE DisplayStatusMessage; PFGINA_DISPLAYSTATUSMESSAGE DisplayStatusMessage;
PFGINA_REMOVESTATUSMESSAGE RemoveStatusMessage; PFGINA_REMOVESTATUSMESSAGE RemoveStatusMessage;
PFGINA_DISPLAYSASNOTICE DisplaySASNotice; PFGINA_DISPLAYSASNOTICE DisplaySASNotice;
PFGINA_LOGGEDONSAS LoggedOnSAS; PFGINA_LOGGEDONSAS LoggedOnSAS;
PFGINA_LOGGEDOUTSAS LoggedOutSAS; PFGINA_LOGGEDOUTSAS LoggedOutSAS;
PFGINA_LOCKEDSAS LockedSAS; PFGINA_LOCKEDSAS LockedSAS;
PFGINA_DISPLAYLOCKEDNOTICE DisplayLockedNotice; PFGINA_DISPLAYLOCKEDNOTICE DisplayLockedNotice;
} GINA_UI, *PGINA_UI; } GINA_UI, *PGINA_UI;
/* msgina.c */ /* msgina.c */
BOOL BOOL
DoLoginTasks( DoLoginTasks(
IN OUT PGINA_CONTEXT pgContext, IN OUT PGINA_CONTEXT pgContext,
IN PWSTR UserName, IN PWSTR UserName,
IN PWSTR Domain, IN PWSTR Domain,
IN PWSTR Password); IN PWSTR Password);
/* EOF */ /* EOF */

View file

@ -22,20 +22,20 @@ ShellShutdownDialog(
DWORD Unknown, DWORD Unknown,
BOOL bHideLogoff) BOOL bHideLogoff)
{ {
UNREFERENCED_PARAMETER(hParent); UNREFERENCED_PARAMETER(hParent);
UNREFERENCED_PARAMETER(Unknown); UNREFERENCED_PARAMETER(Unknown);
UNREFERENCED_PARAMETER(bHideLogoff); UNREFERENCED_PARAMETER(bHideLogoff);
/* Return values: /* Return values:
* 0x00: Cancelled/Help * 0x00: Cancelled/Help
* 0x01: Log off user * 0x01: Log off user
* 0x02: Shutdown * 0x02: Shutdown
* 0x04: Reboot * 0x04: Reboot
* 0x10: Standby * 0x10: Standby
* 0x40: Hibernate * 0x40: Hibernate
*/ */
UNIMPLEMENTED; UNIMPLEMENTED;
return FALSE; return FALSE;
} }
@ -44,12 +44,12 @@ ShellShutdownDialog(
*/ */
BOOL WINAPI BOOL WINAPI
WlxIsLockOk( WlxIsLockOk(
PVOID pWlxContext) PVOID pWlxContext)
{ {
UNREFERENCED_PARAMETER(pWlxContext); UNREFERENCED_PARAMETER(pWlxContext);
UNIMPLEMENTED; UNIMPLEMENTED;
return TRUE; return TRUE;
} }
@ -58,11 +58,11 @@ WlxIsLockOk(
*/ */
VOID WINAPI VOID WINAPI
WlxLogoff( WlxLogoff(
PVOID pWlxContext) PVOID pWlxContext)
{ {
UNREFERENCED_PARAMETER(pWlxContext); UNREFERENCED_PARAMETER(pWlxContext);
UNIMPLEMENTED; UNIMPLEMENTED;
} }
@ -71,13 +71,13 @@ WlxLogoff(
*/ */
VOID WINAPI VOID WINAPI
WlxShutdown( WlxShutdown(
PVOID pWlxContext, PVOID pWlxContext,
DWORD ShutdownType) DWORD ShutdownType)
{ {
UNREFERENCED_PARAMETER(pWlxContext); UNREFERENCED_PARAMETER(pWlxContext);
UNREFERENCED_PARAMETER(ShutdownType); UNREFERENCED_PARAMETER(ShutdownType);
UNIMPLEMENTED; UNIMPLEMENTED;
} }
@ -86,18 +86,18 @@ WlxShutdown(
*/ */
BOOL WINAPI BOOL WINAPI
WlxGetStatusMessage( WlxGetStatusMessage(
PVOID pWlxContext, PVOID pWlxContext,
DWORD *pdwOptions, DWORD *pdwOptions,
PWSTR pMessage, PWSTR pMessage,
DWORD dwBufferSize) DWORD dwBufferSize)
{ {
UNREFERENCED_PARAMETER(pWlxContext); UNREFERENCED_PARAMETER(pWlxContext);
UNREFERENCED_PARAMETER(pdwOptions); UNREFERENCED_PARAMETER(pdwOptions);
UNREFERENCED_PARAMETER(pMessage); UNREFERENCED_PARAMETER(pMessage);
UNREFERENCED_PARAMETER(dwBufferSize); UNREFERENCED_PARAMETER(dwBufferSize);
UNIMPLEMENTED; UNIMPLEMENTED;
return FALSE; return FALSE;
} }
@ -106,14 +106,14 @@ WlxGetStatusMessage(
*/ */
BOOL WINAPI BOOL WINAPI
WlxNetworkProviderLoad( WlxNetworkProviderLoad(
PVOID pWlxContext, PVOID pWlxContext,
PWLX_MPR_NOTIFY_INFO pNprNotifyInfo) PWLX_MPR_NOTIFY_INFO pNprNotifyInfo)
{ {
UNREFERENCED_PARAMETER(pWlxContext); UNREFERENCED_PARAMETER(pWlxContext);
UNREFERENCED_PARAMETER(pNprNotifyInfo); UNREFERENCED_PARAMETER(pNprNotifyInfo);
UNIMPLEMENTED; UNIMPLEMENTED;
return FALSE; return FALSE;
} }
@ -122,11 +122,11 @@ WlxNetworkProviderLoad(
*/ */
VOID WINAPI VOID WINAPI
WlxDisconnectNotify( WlxDisconnectNotify(
PVOID pWlxContext) PVOID pWlxContext)
{ {
UNREFERENCED_PARAMETER(pWlxContext); UNREFERENCED_PARAMETER(pWlxContext);
UNIMPLEMENTED; UNIMPLEMENTED;
} }
@ -135,13 +135,13 @@ WlxDisconnectNotify(
*/ */
BOOL WINAPI BOOL WINAPI
WlxGetConsoleSwitchCredentials( WlxGetConsoleSwitchCredentials(
PVOID pWlxContext, PVOID pWlxContext,
PVOID pCredInfo) PVOID pCredInfo)
{ {
UNREFERENCED_PARAMETER(pWlxContext); UNREFERENCED_PARAMETER(pWlxContext);
UNREFERENCED_PARAMETER(pCredInfo); UNREFERENCED_PARAMETER(pCredInfo);
UNIMPLEMENTED; UNIMPLEMENTED;
return FALSE; return FALSE;
} }

View file

@ -11,255 +11,255 @@ WINE_DEFAULT_DEBUG_CHANNEL(msgina);
static BOOL static BOOL
TUIInitialize( 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 static BOOL
TUIDisplayStatusMessage( TUIDisplayStatusMessage(
IN PGINA_CONTEXT pgContext, IN PGINA_CONTEXT pgContext,
IN HDESK hDesktop, IN HDESK hDesktop,
IN DWORD dwOptions, IN DWORD dwOptions,
IN PWSTR pTitle, IN PWSTR pTitle,
IN PWSTR pMessage) IN PWSTR pMessage)
{ {
static LPCWSTR newLine = L"\n"; static LPCWSTR newLine = L"\n";
DWORD result; DWORD result;
TRACE("TUIDisplayStatusMessage(%ws)\n", pMessage); TRACE("TUIDisplayStatusMessage(%ws)\n", pMessage);
UNREFERENCED_PARAMETER(pgContext); UNREFERENCED_PARAMETER(pgContext);
UNREFERENCED_PARAMETER(hDesktop); UNREFERENCED_PARAMETER(hDesktop);
UNREFERENCED_PARAMETER(dwOptions); UNREFERENCED_PARAMETER(dwOptions);
UNREFERENCED_PARAMETER(pTitle); UNREFERENCED_PARAMETER(pTitle);
return return
WriteConsoleW( WriteConsoleW(
GetStdHandle(STD_OUTPUT_HANDLE), GetStdHandle(STD_OUTPUT_HANDLE),
pMessage, pMessage,
wcslen(pMessage), wcslen(pMessage),
&result, &result,
NULL) && NULL) &&
WriteConsoleW( WriteConsoleW(
GetStdHandle(STD_OUTPUT_HANDLE), GetStdHandle(STD_OUTPUT_HANDLE),
newLine, newLine,
wcslen(newLine), wcslen(newLine),
&result, &result,
NULL); NULL);
} }
static BOOL static BOOL
TUIRemoveStatusMessage( TUIRemoveStatusMessage(
IN PGINA_CONTEXT pgContext) IN PGINA_CONTEXT pgContext)
{ {
UNREFERENCED_PARAMETER(pgContext); UNREFERENCED_PARAMETER(pgContext);
/* Nothing to do */ /* Nothing to do */
return TRUE; return TRUE;
} }
static BOOL static BOOL
DisplayResourceText( DisplayResourceText(
IN UINT uIdResourceText, IN UINT uIdResourceText,
IN BOOL AddNewLine) IN BOOL AddNewLine)
{ {
WCHAR Prompt[256]; WCHAR Prompt[256];
static LPCWSTR newLine = L"\n"; static LPCWSTR newLine = L"\n";
DWORD count; DWORD count;
if (0 == LoadStringW(hDllInstance, uIdResourceText, Prompt, 256)) if (0 == LoadStringW(hDllInstance, uIdResourceText, Prompt, 256))
return FALSE; return FALSE;
if (!WriteConsoleW( if (!WriteConsoleW(
GetStdHandle(STD_OUTPUT_HANDLE), GetStdHandle(STD_OUTPUT_HANDLE),
Prompt, wcslen(Prompt), Prompt, wcslen(Prompt),
&count, NULL)) &count, NULL))
{ {
return FALSE; return FALSE;
} }
if (AddNewLine) if (AddNewLine)
{ {
if (!WriteConsoleW( if (!WriteConsoleW(
GetStdHandle(STD_OUTPUT_HANDLE), GetStdHandle(STD_OUTPUT_HANDLE),
newLine, wcslen(newLine), newLine, wcslen(newLine),
&count, NULL)) &count, NULL))
{ {
return FALSE; return FALSE;
} }
} }
return TRUE; return TRUE;
} }
static VOID static VOID
TUIDisplaySASNotice( 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_LOGGEDOUTSAS, TRUE);
DisplayResourceText(IDS_PRESSCTRLALTDELETE, TRUE); DisplayResourceText(IDS_PRESSCTRLALTDELETE, TRUE);
} }
static INT static INT
TUILoggedOnSAS( TUILoggedOnSAS(
IN OUT PGINA_CONTEXT pgContext, IN OUT PGINA_CONTEXT pgContext,
IN DWORD dwSasType) IN DWORD dwSasType)
{ {
TRACE("TUILoggedOnSAS()\n"); TRACE("TUILoggedOnSAS()\n");
UNREFERENCED_PARAMETER(pgContext); UNREFERENCED_PARAMETER(pgContext);
if (dwSasType != WLX_SAS_TYPE_CTRL_ALT_DEL) if (dwSasType != WLX_SAS_TYPE_CTRL_ALT_DEL)
{ {
/* Nothing to do for WLX_SAS_TYPE_TIMEOUT */ /* Nothing to do for WLX_SAS_TYPE_TIMEOUT */
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
} }
FIXME("FIXME: TUILoggedOnSAS(): Let's suppose the user wants to log off...\n"); FIXME("FIXME: TUILoggedOnSAS(): Let's suppose the user wants to log off...\n");
return WLX_SAS_ACTION_LOGOFF; return WLX_SAS_ACTION_LOGOFF;
} }
static BOOL static BOOL
ReadString( ReadString(
IN UINT uIdResourcePrompt, IN UINT uIdResourcePrompt,
IN OUT PWSTR Buffer, IN OUT PWSTR Buffer,
IN DWORD BufferLength, IN DWORD BufferLength,
IN BOOL ShowString) IN BOOL ShowString)
{ {
DWORD count, i; DWORD count, i;
WCHAR charToDisplay[] = { 0, UNICODE_NULL }; WCHAR charToDisplay[] = { 0, UNICODE_NULL };
if (!SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), 0)) if (!SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), 0))
return FALSE; return FALSE;
if (!FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE))) if (!FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)))
return FALSE; return FALSE;
if (!DisplayResourceText(uIdResourcePrompt, FALSE)) if (!DisplayResourceText(uIdResourcePrompt, FALSE))
return FALSE; return FALSE;
i = 0; i = 0;
for (;;) for (;;)
{ {
WCHAR readChar; WCHAR readChar;
if (!ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), &readChar, 1, &count, NULL)) if (!ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), &readChar, 1, &count, NULL))
return FALSE; return FALSE;
if (readChar == '\r' || readChar == '\n') if (readChar == '\r' || readChar == '\n')
{ {
/* End of string */ /* End of string */
charToDisplay[0] = L'\n'; charToDisplay[0] = L'\n';
WriteConsoleW( WriteConsoleW(
GetStdHandle(STD_OUTPUT_HANDLE), GetStdHandle(STD_OUTPUT_HANDLE),
charToDisplay, charToDisplay,
wcslen(charToDisplay), wcslen(charToDisplay),
&count, &count,
NULL); NULL);
break; break;
} }
if (ShowString) if (ShowString)
{ {
/* Display the char */ /* Display the char */
charToDisplay[0] = readChar; charToDisplay[0] = readChar;
WriteConsoleW( WriteConsoleW(
GetStdHandle(STD_OUTPUT_HANDLE), GetStdHandle(STD_OUTPUT_HANDLE),
charToDisplay, charToDisplay,
wcslen(charToDisplay), wcslen(charToDisplay),
&count, &count,
NULL); NULL);
} }
Buffer[i++] = readChar; Buffer[i++] = readChar;
/* FIXME: buffer overflow if the user writes too many chars! */ /* FIXME: buffer overflow if the user writes too many chars! */
UNREFERENCED_PARAMETER(BufferLength); UNREFERENCED_PARAMETER(BufferLength);
/* FIXME: handle backspace */ /* FIXME: handle backspace */
} }
Buffer[i] = UNICODE_NULL; Buffer[i] = UNICODE_NULL;
if (!ShowString) if (!ShowString)
{ {
/* Still display the \n */ /* Still display the \n */
static LPCWSTR newLine = L"\n"; static LPCWSTR newLine = L"\n";
DWORD result; DWORD result;
WriteConsoleW( WriteConsoleW(
GetStdHandle(STD_OUTPUT_HANDLE), GetStdHandle(STD_OUTPUT_HANDLE),
newLine, newLine,
wcslen(newLine), wcslen(newLine),
&result, &result,
NULL); NULL);
} }
return TRUE; return TRUE;
} }
static INT static INT
TUILoggedOutSAS( TUILoggedOutSAS(
IN OUT PGINA_CONTEXT pgContext) IN OUT PGINA_CONTEXT pgContext)
{ {
WCHAR UserName[256]; WCHAR UserName[256];
WCHAR Password[256]; WCHAR Password[256];
TRACE("TUILoggedOutSAS()\n"); TRACE("TUILoggedOutSAS()\n");
/* Ask the user for credentials */ /* Ask the user for credentials */
if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE)) if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE))
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE)) if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE))
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
if (DoLoginTasks(pgContext, UserName, NULL, Password)) if (DoLoginTasks(pgContext, UserName, NULL, Password))
return WLX_SAS_ACTION_LOGON; return WLX_SAS_ACTION_LOGON;
else else
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
} }
static INT static INT
TUILockedSAS( TUILockedSAS(
IN OUT PGINA_CONTEXT pgContext) IN OUT PGINA_CONTEXT pgContext)
{ {
HANDLE hToken; HANDLE hToken;
WCHAR UserName[256]; WCHAR UserName[256];
WCHAR Password[256]; WCHAR Password[256];
TRACE("TUILockedSAS()\n"); TRACE("TUILockedSAS()\n");
UNREFERENCED_PARAMETER(pgContext); UNREFERENCED_PARAMETER(pgContext);
if (!DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE)) if (!DisplayResourceText(IDS_LOGGEDOUTSAS, TRUE))
return WLX_SAS_ACTION_UNLOCK_WKSTA; return WLX_SAS_ACTION_UNLOCK_WKSTA;
/* Ask the user for credentials */ /* Ask the user for credentials */
if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE)) if (!ReadString(IDS_ASKFORUSER, UserName, 256, TRUE))
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE)) if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE))
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
if (!LogonUserW(UserName, NULL, Password, if (!LogonUserW(UserName, NULL, Password,
LOGON32_LOGON_UNLOCK, LOGON32_LOGON_UNLOCK,
LOGON32_PROVIDER_DEFAULT, LOGON32_PROVIDER_DEFAULT,
&hToken)) &hToken))
{ {
TRACE("LogonUserW() failed\n"); TRACE("LogonUserW() failed\n");
return WLX_SAS_ACTION_NONE; return WLX_SAS_ACTION_NONE;
} }
CloseHandle(hToken); CloseHandle(hToken);
return WLX_SAS_ACTION_UNLOCK_WKSTA; return WLX_SAS_ACTION_UNLOCK_WKSTA;
} }
static VOID static VOID
TUIDisplayLockedNotice( TUIDisplayLockedNotice(
IN OUT PGINA_CONTEXT pgContext) IN OUT PGINA_CONTEXT pgContext)
{ {
} }
GINA_UI GinaTextUI = { GINA_UI GinaTextUI = {
TUIInitialize, TUIInitialize,
TUIDisplayStatusMessage, TUIDisplayStatusMessage,
TUIRemoveStatusMessage, TUIRemoveStatusMessage,
TUIDisplaySASNotice, TUIDisplaySASNotice,
TUILoggedOnSAS, TUILoggedOnSAS,
TUILoggedOutSAS, TUILoggedOutSAS,
TUILockedSAS, TUILockedSAS,
TUIDisplayLockedNotice, TUIDisplayLockedNotice,
}; };