https://git.reactos.org/?p=reactos.git;a=commitdiff;h=a5daa8894d05dae1c9e8b…
commit a5daa8894d05dae1c9e8ba075a49205384c0deb9
Author: Pierre Schweitzer <pierre(a)reactos.org>
AuthorDate: Mon Jun 10 14:49:50 2019 +0200
Commit: Pierre Schweitzer <pierre(a)reactos.org>
CommitDate: Mon Jun 10 14:49:50 2019 +0200
[NTOSKRNL] Implement SepCleanupLUIDDeviceMapDirectory
This will clean up all the links (drive letters) created
by an user on session deletion once LUID device maps are
in use
---
ntoskrnl/se/srm.c | 234 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 232 insertions(+), 2 deletions(-)
diff --git a/ntoskrnl/se/srm.c b/ntoskrnl/se/srm.c
index 9134ebadb5d..fc91cd1f1dc 100644
--- a/ntoskrnl/se/srm.c
+++ b/ntoskrnl/se/srm.c
@@ -413,8 +413,238 @@ NTSTATUS
SepCleanupLUIDDeviceMapDirectory(
PLUID LogonLuid)
{
- UNIMPLEMENTED;
- return STATUS_NOT_IMPLEMENTED;
+ BOOLEAN UseCurrentProc;
+ KAPC_STATE ApcState;
+ WCHAR Buffer[63];
+ UNICODE_STRING DirectoryName;
+ OBJECT_ATTRIBUTES ObjectAttributes;
+ NTSTATUS Status;
+ HANDLE DirectoryHandle, LinkHandle;
+ PHANDLE LinksBuffer;
+ POBJECT_DIRECTORY_INFORMATION DirectoryInfo;
+ ULONG LinksCount, LinksSize, DirInfoLength, ReturnLength, Context, CurrentLinks, i;
+ BOOLEAN RestartScan;
+
+ PAGED_CODE();
+
+ /* We need a logon LUID */
+ if (LogonLuid == NULL)
+ {
+ return STATUS_INVALID_PARAMETER;
+ }
+
+ /* Use current process */
+ UseCurrentProc = ObReferenceObjectSafe(PsGetCurrentProcess());
+ if (UseCurrentProc)
+ {
+ ObDereferenceObject(PsGetCurrentProcess());
+ }
+ /* Unless it's gone, then use system process */
+ else
+ {
+ KeStackAttachProcess(&PsInitialSystemProcess->Pcb, &ApcState);
+ }
+
+ /* Initialize our directory name */
+ _snwprintf(Buffer,
+ sizeof(Buffer) / sizeof(WCHAR),
+ L"\\Sessions\\0\\DosDevices\\%08x-%08x",
+ LogonLuid->HighPart,
+ LogonLuid->LowPart);
+ RtlInitUnicodeString(&DirectoryName, Buffer);
+
+ /* And open it */
+ InitializeObjectAttributes(&ObjectAttributes,
+ &DirectoryName,
+ OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,
+ NULL,
+ NULL);
+ Status = ZwOpenDirectoryObject(&DirectoryHandle,
+ DIRECTORY_QUERY,
+ &ObjectAttributes);
+ if (!NT_SUCCESS(Status))
+ {
+ if (!UseCurrentProc)
+ {
+ KeUnstackDetachProcess(&ApcState);
+ }
+
+ return Status;
+ }
+
+ /* Some initialization needed for browsing all our links... */
+ Context = 0;
+ DirectoryInfo = NULL;
+ DirInfoLength = 0;
+ /* In our buffer, we'll store at max 100 HANDLE */
+ LinksCount = 100;
+ CurrentLinks = 0;
+ /* Which gives a certain size */
+ LinksSize = LinksCount * sizeof(HANDLE);
+
+ /*
+ * This label is hit if we need to store more than a hundred
+ * of links. In that case, we jump here after having cleaned
+ * and deleted previous buffer.
+ * All handles have been already closed
+ */
+AllocateLinksAgain:
+ LinksBuffer = ExAllocatePoolWithTag(PagedPool, LinksSize, 'aHeS');
+ if (LinksBuffer == NULL)
+ {
+ /*
+ * Failure path: no need to clear handles:
+ * already closed and the buffer is already gone
+ */
+ ZwClose(DirectoryHandle);
+
+ /*
+ * On the first round, DirectoryInfo is NULL,
+ * if we grow LinksBuffer, it has been allocated
+ */
+ if (DirectoryInfo != NULL)
+ {
+ ExFreePoolWithTag(DirectoryInfo, 0);
+ }
+
+ if (!UseCurrentProc)
+ {
+ KeUnstackDetachProcess(&ApcState);
+ }
+
+ return STATUS_NO_MEMORY;
+ }
+
+ /*
+ * We always restart scan, but on the first loop
+ * if we couldn't fit everything in our buffer,
+ * then, we continue scan.
+ * But we restart if link buffer was too small
+ */
+ for (RestartScan = TRUE; ; RestartScan = FALSE)
+ {
+ /*
+ * Loop until our buffer is big enough to store
+ * one entry
+ */
+ while (TRUE)
+ {
+ Status = ZwQueryDirectoryObject(DirectoryHandle,
+ DirectoryInfo,
+ DirInfoLength,
+ TRUE,
+ RestartScan,
+ &Context,
+ &ReturnLength);
+ /* Only handle buffer growth in that loop */
+ if (Status != STATUS_BUFFER_TOO_SMALL)
+ {
+ break;
+ }
+
+ /* Get output length as new length */
+ DirInfoLength = ReturnLength;
+ /* Delete old buffer if any */
+ if (DirectoryInfo != NULL)
+ {
+ ExFreePoolWithTag(DirectoryInfo, 'bDeS');
+ }
+
+ /* And reallocate a bigger one */
+ DirectoryInfo = ExAllocatePoolWithTag(PagedPool, DirInfoLength, 'bDeS');
+ /* Fail if we cannot allocate */
+ if (DirectoryInfo == NULL)
+ {
+ Status = STATUS_INSUFFICIENT_RESOURCES;
+ break;
+ }
+ }
+
+ /* If querying the entry failed, quit */
+ if (!NT_SUCCESS(Status))
+ {
+ break;
+ }
+
+ /* We only look for symbolic links, the rest, we ignore */
+ if (wcscmp(DirectoryInfo->TypeName.Buffer, L"SymbolicLink"))
+ {
+ continue;
+ }
+
+ /* If our link buffer is out of space, reallocate */
+ if (CurrentLinks >= LinksCount)
+ {
+ /* First, close the links */
+ for (i = 0; i < CurrentLinks; ++i)
+ {
+ ZwClose(LinksBuffer[i]);
+ }
+
+ /* Allow 20 more HANDLEs */
+ LinksCount += 20;
+ CurrentLinks = 0;
+ ExFreePoolWithTag(LinksBuffer, 'aHeS');
+ LinksSize = LinksCount * sizeof(HANDLE);
+
+ /* And reloop again */
+ goto AllocateLinksAgain;
+ }
+
+ /* Open the found link */
+ InitializeObjectAttributes(&ObjectAttributes,
+ &DirectoryInfo->Name,
+ OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,
+ DirectoryHandle,
+ NULL);
+ if (NT_SUCCESS(ZwOpenSymbolicLinkObject(&LinkHandle,
+ SYMBOLIC_LINK_ALL_ACCESS,
+ &ObjectAttributes)))
+ {
+ /* If we cannot make it temporary, just close the link handle */
+ if (!NT_SUCCESS(ZwMakeTemporaryObject(LinkHandle)))
+ {
+ ZwClose(LinkHandle);
+ }
+ /* Otherwise, store it to defer deletion */
+ else
+ {
+ LinksBuffer[CurrentLinks] = LinkHandle;
+ ++CurrentLinks;
+ }
+ }
+ }
+
+ /* No more entries means we handled all links, that's not a failure */
+ if (Status == STATUS_NO_MORE_ENTRIES)
+ {
+ Status = STATUS_SUCCESS;
+ }
+
+ /* Close all the links we stored, this will like cause their deletion */
+ for (i = 0; i < CurrentLinks; ++i)
+ {
+ ZwClose(LinksBuffer[i]);
+ }
+ /* And free our links buffer */
+ ExFreePoolWithTag(LinksBuffer, 'aHeS');
+
+ /* Free our directory info buffer - it might be NULL if we failed realloc */
+ if (DirectoryInfo != NULL)
+ {
+ ExFreePoolWithTag(DirectoryInfo, 'bDeS');
+ }
+
+ /* Close our session directory */
+ ZwClose(DirectoryHandle);
+
+ /* And detach from system */
+ if (!UseCurrentProc)
+ {
+ KeUnstackDetachProcess(&ApcState);
+ }
+
+ return Status;
}
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f2f698587c0193c515326…
commit f2f698587c0193c515326bde163daa06084cf303
Author: Eric Kohl <eric.kohl(a)reactos.org>
AuthorDate: Sun Jun 9 22:42:10 2019 +0200
Commit: Eric Kohl <eric.kohl(a)reactos.org>
CommitDate: Sun Jun 9 22:42:10 2019 +0200
[MSGINA] Add missing logon restriction messages.
---
dll/win32/msgina/gui.c | 39 ++++++++++++++++++++++++++++-----------
dll/win32/msgina/lang/bg-BG.rc | 4 ++++
dll/win32/msgina/lang/cs-CZ.rc | 4 ++++
dll/win32/msgina/lang/de-DE.rc | 6 +++++-
dll/win32/msgina/lang/en-US.rc | 4 ++++
dll/win32/msgina/lang/es-ES.rc | 4 ++++
dll/win32/msgina/lang/fr-FR.rc | 4 ++++
dll/win32/msgina/lang/he-IL.rc | 4 ++++
dll/win32/msgina/lang/id-ID.rc | 4 ++++
dll/win32/msgina/lang/it-IT.rc | 4 ++++
dll/win32/msgina/lang/ja-JP.rc | 4 ++++
dll/win32/msgina/lang/no-NO.rc | 4 ++++
dll/win32/msgina/lang/pl-PL.rc | 4 ++++
dll/win32/msgina/lang/ro-RO.rc | 4 ++++
dll/win32/msgina/lang/ru-RU.rc | 4 ++++
dll/win32/msgina/lang/sk-SK.rc | 4 ++++
dll/win32/msgina/lang/sq-AL.rc | 4 ++++
dll/win32/msgina/lang/tr-TR.rc | 4 ++++
dll/win32/msgina/lang/uk-UA.rc | 4 ++++
dll/win32/msgina/lang/zh-CN.rc | 4 ++++
dll/win32/msgina/lang/zh-TW.rc | 4 ++++
dll/win32/msgina/resource.h | 4 ++++
22 files changed, 113 insertions(+), 12 deletions(-)
diff --git a/dll/win32/msgina/gui.c b/dll/win32/msgina/gui.c
index bf0a16057e..c542d86402 100644
--- a/dll/win32/msgina/gui.c
+++ b/dll/win32/msgina/gui.c
@@ -977,11 +977,11 @@ DoLogon(
else if (SubStatus == STATUS_ACCOUNT_LOCKED_OUT)
{
TRACE("Account locked!\n");
- pgContext->pWlxFuncs->WlxMessageBox(pgContext->hWlx,
- hwndDlg,
- L"Account locked!",
- L"Logon error",
- MB_OK | MB_ICONERROR);
+ ResourceMessageBox(pgContext,
+ hwndDlg,
+ MB_OK | MB_ICONERROR,
+ IDS_LOGONTITLE,
+ IDS_ACCOUNTLOCKED);
goto done;
}
else if ((SubStatus == STATUS_PASSWORD_MUST_CHANGE) ||
@@ -1024,14 +1024,32 @@ DoLogon(
IDS_LOGONTITLE,
IDS_ACCOUNTEXPIRED);
}
+ else if (SubStatus == STATUS_INVALID_LOGON_HOURS)
+ {
+ ResourceMessageBox(pgContext,
+ hwndDlg,
+ MB_OK | MB_ICONERROR,
+ IDS_LOGONTITLE,
+ IDS_INVALIDLOGONHOURS);
+ goto done;
+ }
+ else if (SubStatus == STATUS_INVALID_WORKSTATION)
+ {
+ ResourceMessageBox(pgContext,
+ hwndDlg,
+ MB_OK | MB_ICONERROR,
+ IDS_LOGONTITLE,
+ IDS_INVALIDWORKSTATION);
+ goto done;
+ }
else
{
TRACE("Other error!\n");
- pgContext->pWlxFuncs->WlxMessageBox(pgContext->hWlx,
- hwndDlg,
- L"Other error!",
- L"Logon error",
- MB_OK | MB_ICONERROR);
+ ResourceMessageBox(pgContext,
+ hwndDlg,
+ MB_OK | MB_ICONERROR,
+ IDS_LOGONTITLE,
+ IDS_ACCOUNTRESTRICTION);
goto done;
}
}
@@ -1041,7 +1059,6 @@ DoLogon(
goto done;
}
-
if (!CreateProfile(pgContext, UserName, Domain, Password))
{
ERR("Failed to create the profile!\n");
diff --git a/dll/win32/msgina/lang/bg-BG.rc b/dll/win32/msgina/lang/bg-BG.rc
index 3d60beef6c..9231ef9e57 100644
--- a/dll/win32/msgina/lang/bg-BG.rc
+++ b/dll/win32/msgina/lang/bg-BG.rc
@@ -203,6 +203,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "You are required to change your password at first logon."
IDS_PASSWORDEXPIRED "Your password has expired and must be changed."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/cs-CZ.rc b/dll/win32/msgina/lang/cs-CZ.rc
index ed00909155..f4e75e6c3a 100644
--- a/dll/win32/msgina/lang/cs-CZ.rc
+++ b/dll/win32/msgina/lang/cs-CZ.rc
@@ -208,6 +208,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "Při prvním přihlášení je nutné změnit heslo."
IDS_PASSWORDEXPIRED "Heslu vypršela platnost a musí být změněno."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/de-DE.rc b/dll/win32/msgina/lang/de-DE.rc
index 6d622924be..a727d6dbf2 100644
--- a/dll/win32/msgina/lang/de-DE.rc
+++ b/dll/win32/msgina/lang/de-DE.rc
@@ -199,10 +199,14 @@ BEGIN
IDS_PASSWORDCHANGED "Ihr Passwort wurde geändert."
IDS_LOGONTITLE "Anmeldemeldung"
IDS_LOGONWRONGUSERORPWD "Sie konnten nicht angemeldet werden. Prüfen Sie Benutzername und Domäne, und geben Sie das Passwort erneut ein. Bei Passworten wird Groß- und Kleinschreibung unterschieden."
- IDS_LOGONUSERDISABLED "Ihr Konto wurde deaktiviert. Wenden Sie sich an Ihren Systemadministrator."
+ IDS_LOGONUSERDISABLED "Ihr Konto wurde deaktiviert. Bitte wenden Sie sich an Ihren Systemadministrator."
IDS_PASSWORDMUSTCHANGE "Sie müssen Ihr Passwort bei der ersten Anmeldung ändern."
IDS_PASSWORDEXPIRED "Ihr Passwort ist abgelaufen und muss geändert werden."
IDS_ACCOUNTEXPIRED "Ihr Konto ist abgelaufen. Bitte wenden Sie sich an Ihren Systemadministrator."
+ IDS_ACCOUNTLOCKED "Sie können nicht angemeldet werden, da Ihr Konto deaktiviert wurde. Bitte wenden Sie sich an Ihren Systemadministrator."
+ IDS_INVALIDLOGONHOURS "Ihr Konto sieht es nicht vor, dass Sie sich zu dieser Zeit anmelden. Bitte versuchen Sie es später noch einmal."
+ IDS_INVALIDWORKSTATION "Ihr Konto sieht es nicht vor, dass Sie sich an diesem Computer anmelden. Bitte melden Sie sich an einem anderen Computer an."
+ IDS_ACCOUNTRESTRICTION "Wegen einer Kontenbeschränkung dürfen Sie sich nicht anmelden."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/en-US.rc b/dll/win32/msgina/lang/en-US.rc
index b043c356cd..8ef6da8293 100644
--- a/dll/win32/msgina/lang/en-US.rc
+++ b/dll/win32/msgina/lang/en-US.rc
@@ -204,6 +204,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "You are required to change your password at first logon."
IDS_PASSWORDEXPIRED "Your password has expired and must be changed."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/es-ES.rc b/dll/win32/msgina/lang/es-ES.rc
index c11e18434e..ead1e28bfe 100644
--- a/dll/win32/msgina/lang/es-ES.rc
+++ b/dll/win32/msgina/lang/es-ES.rc
@@ -211,6 +211,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "Es necesario cambiar la contraseña en el primer inicio de sesión."
IDS_PASSWORDEXPIRED "La contraseña ha expirado y debe cambiarse."
IDS_ACCOUNTEXPIRED "Su cuenta ha expirado. Contacte con su administrador del sistema."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/fr-FR.rc b/dll/win32/msgina/lang/fr-FR.rc
index 1ad151e67b..7e89bf8edf 100644
--- a/dll/win32/msgina/lang/fr-FR.rc
+++ b/dll/win32/msgina/lang/fr-FR.rc
@@ -203,6 +203,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "Vous devez changer votre mot de passe à la première connexion."
IDS_PASSWORDEXPIRED "Votre mot de passe a expiré et doit être changé."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/he-IL.rc b/dll/win32/msgina/lang/he-IL.rc
index 1e52496ebf..17f40ef209 100644
--- a/dll/win32/msgina/lang/he-IL.rc
+++ b/dll/win32/msgina/lang/he-IL.rc
@@ -203,6 +203,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "You are required to change your password at first logon."
IDS_PASSWORDEXPIRED "Your password has expired and must be changed."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/id-ID.rc b/dll/win32/msgina/lang/id-ID.rc
index 314e145ed2..9b61c66f96 100644
--- a/dll/win32/msgina/lang/id-ID.rc
+++ b/dll/win32/msgina/lang/id-ID.rc
@@ -203,6 +203,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "You are required to change your password at first logon."
IDS_PASSWORDEXPIRED "Your password has expired and must be changed."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/it-IT.rc b/dll/win32/msgina/lang/it-IT.rc
index d2c620c419..f633ef9a12 100644
--- a/dll/win32/msgina/lang/it-IT.rc
+++ b/dll/win32/msgina/lang/it-IT.rc
@@ -212,6 +212,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "Ti è chiesto di cambiare password al primo login."
IDS_PASSWORDEXPIRED "La tua password è scaduta e devi cambiarla."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/ja-JP.rc b/dll/win32/msgina/lang/ja-JP.rc
index 887e94034d..3082252bd1 100644
--- a/dll/win32/msgina/lang/ja-JP.rc
+++ b/dll/win32/msgina/lang/ja-JP.rc
@@ -203,6 +203,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "You are required to change your password at first logon."
IDS_PASSWORDEXPIRED "Your password has expired and must be changed."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/no-NO.rc b/dll/win32/msgina/lang/no-NO.rc
index 728fedd84b..34a6d3b1d4 100644
--- a/dll/win32/msgina/lang/no-NO.rc
+++ b/dll/win32/msgina/lang/no-NO.rc
@@ -203,6 +203,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "You are required to change your password at first logon."
IDS_PASSWORDEXPIRED "Your password has expired and must be changed."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/pl-PL.rc b/dll/win32/msgina/lang/pl-PL.rc
index c545cdcdc9..2c500b9c76 100644
--- a/dll/win32/msgina/lang/pl-PL.rc
+++ b/dll/win32/msgina/lang/pl-PL.rc
@@ -213,6 +213,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "Jesteś zobowiązany do zmiany hasła przy pierwszym logowaniu."
IDS_PASSWORDEXPIRED "Twoje hasło wygasło i musi zostać zmienione."
IDS_ACCOUNTEXPIRED "Twoje konto wygasło. Skontaktuj się z administratorem systemu."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/ro-RO.rc b/dll/win32/msgina/lang/ro-RO.rc
index 7288fc10f4..a2309de539 100644
--- a/dll/win32/msgina/lang/ro-RO.rc
+++ b/dll/win32/msgina/lang/ro-RO.rc
@@ -212,6 +212,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "Este imperativ să vă schimbați parola la prima autentificare."
IDS_PASSWORDEXPIRED "Parola v-a expirat și trebuie schimbată."
IDS_ACCOUNTEXPIRED "Contul v-a expirat, adresați-vă administratorului."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/ru-RU.rc b/dll/win32/msgina/lang/ru-RU.rc
index f30ff46fac..1359dad3d6 100644
--- a/dll/win32/msgina/lang/ru-RU.rc
+++ b/dll/win32/msgina/lang/ru-RU.rc
@@ -205,6 +205,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "Вы должны сменить пароль при следующем входе."
IDS_PASSWORDEXPIRED "Срок действия вашего пароля истек, необходимо его изменить."
IDS_ACCOUNTEXPIRED "Срок действия вашего аккаунта истек. Пожалуйста, обратитесь к системному администратору."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/sk-SK.rc b/dll/win32/msgina/lang/sk-SK.rc
index b19e3d4dd9..07c0c6093f 100644
--- a/dll/win32/msgina/lang/sk-SK.rc
+++ b/dll/win32/msgina/lang/sk-SK.rc
@@ -208,6 +208,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "You are required to change your password at first logon."
IDS_PASSWORDEXPIRED "Your password has expired and must be changed."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/sq-AL.rc b/dll/win32/msgina/lang/sq-AL.rc
index 87f81dd55d..1c763f3043 100644
--- a/dll/win32/msgina/lang/sq-AL.rc
+++ b/dll/win32/msgina/lang/sq-AL.rc
@@ -207,6 +207,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "You are required to change your password at first logon."
IDS_PASSWORDEXPIRED "Your password has expired and must be changed."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/tr-TR.rc b/dll/win32/msgina/lang/tr-TR.rc
index b7bed5c32a..208462e9b5 100644
--- a/dll/win32/msgina/lang/tr-TR.rc
+++ b/dll/win32/msgina/lang/tr-TR.rc
@@ -205,6 +205,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "İlk oturum açmada şifrenizi değiştirmeniz gerekir."
IDS_PASSWORDEXPIRED "Şifrenizin süresi doldu ve şifreniz değiştirilmelidir."
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/uk-UA.rc b/dll/win32/msgina/lang/uk-UA.rc
index 3068bb433c..24b64beb28 100644
--- a/dll/win32/msgina/lang/uk-UA.rc
+++ b/dll/win32/msgina/lang/uk-UA.rc
@@ -211,6 +211,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "Ви повинні змінити пароль при наступному вході."
IDS_PASSWORDEXPIRED "Термін дії вашого пароля закінчився, необхідно його змінити."
IDS_ACCOUNTEXPIRED "Термін дії вашого облікового запису минув. Будь ласка, зверніться до системного адміністратора."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/zh-CN.rc b/dll/win32/msgina/lang/zh-CN.rc
index 6357e23b6c..373d417b1e 100644
--- a/dll/win32/msgina/lang/zh-CN.rc
+++ b/dll/win32/msgina/lang/zh-CN.rc
@@ -206,6 +206,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "您需要更改您在首次登录的密码。"
IDS_PASSWORDEXPIRED "您的密码已过期,必须更改。"
IDS_ACCOUNTEXPIRED "您的帐户已过期。请咨询您的系统管理员。"
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/lang/zh-TW.rc b/dll/win32/msgina/lang/zh-TW.rc
index d088c985ea..d833852e1c 100644
--- a/dll/win32/msgina/lang/zh-TW.rc
+++ b/dll/win32/msgina/lang/zh-TW.rc
@@ -205,6 +205,10 @@ BEGIN
IDS_PASSWORDMUSTCHANGE "您需要更改您在首次登入的密碼。"
IDS_PASSWORDEXPIRED "您的密碼已過期,必須更改。"
IDS_ACCOUNTEXPIRED "Your account has expired. Please see your system administrator."
+ IDS_ACCOUNTLOCKED "Unable to log you on beacuse your account has been locked out. Please see your system administrator."
+ IDS_INVALIDLOGONHOURS "Your account has time restrictions that prevent you from logging on at this time. Please try again later."
+ IDS_INVALIDWORKSTATION "Your account is configured to prevent you from using this computer. Please try another computer."
+ IDS_ACCOUNTRESTRICTION "Unable to log you on because of an account restriction."
END
/* Shutdown Dialog Strings */
diff --git a/dll/win32/msgina/resource.h b/dll/win32/msgina/resource.h
index e23da85878..c7de8014b9 100644
--- a/dll/win32/msgina/resource.h
+++ b/dll/win32/msgina/resource.h
@@ -89,6 +89,10 @@
#define IDS_PASSWORDMUSTCHANGE 40018
#define IDS_PASSWORDEXPIRED 40019
#define IDS_ACCOUNTEXPIRED 40020
+#define IDS_ACCOUNTLOCKED 40021
+#define IDS_INVALIDLOGONHOURS 40022
+#define IDS_INVALIDWORKSTATION 40023
+#define IDS_ACCOUNTRESTRICTION 40024
#define IDS_SHUTDOWN_SHUTDOWN 50000
#define IDS_SHUTDOWN_LOGOFF 50001
https://git.reactos.org/?p=reactos.git;a=commitdiff;h=6fb3dcd312e72a5264398…
commit 6fb3dcd312e72a5264398f7640ac3bcf531637d3
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Sun Jun 9 19:05:24 2019 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Sun Jun 9 19:05:24 2019 +0200
[FASTFAT] Adjust the 'UnCleanCount', followng commit 9c3c0d12.
---
drivers/filesystems/fastfat/misc.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/filesystems/fastfat/misc.c b/drivers/filesystems/fastfat/misc.c
index b0721230cd..f3054633c5 100644
--- a/drivers/filesystems/fastfat/misc.c
+++ b/drivers/filesystems/fastfat/misc.c
@@ -130,7 +130,7 @@ VfatDispatchRequest(
break;
case IRP_MJ_WRITE:
- Status = VfatWrite (IrpContext);
+ Status = VfatWrite(IrpContext);
break;
case IRP_MJ_FILE_SYSTEM_CONTROL:
@@ -138,11 +138,11 @@ VfatDispatchRequest(
break;
case IRP_MJ_QUERY_INFORMATION:
- Status = VfatQueryInformation (IrpContext);
+ Status = VfatQueryInformation(IrpContext);
break;
case IRP_MJ_SET_INFORMATION:
- Status = VfatSetInformation (IrpContext);
+ Status = VfatSetInformation(IrpContext);
break;
case IRP_MJ_DIRECTORY_CONTROL:
@@ -439,9 +439,9 @@ VfatCheckForDismount(
* It seems to be related to the fact that the volume root directory as
* well as auxiliary data stream(s) are still opened, and only these are
* allowed to be opened at that moment. After analysis it appears that for
- * the ReactOS' fastfat, this number is equal to "3".
+ * the ReactOS' fastfat, this number is equal to "2".
*/
- UnCleanCount = 3;
+ UnCleanCount = 2;
/* Lock VPB */
IoAcquireVpbSpinLock(&OldIrql);