https://git.reactos.org/?p=reactos.git;a=commitdiff;h=64657051c3cb60f1997ff…
commit 64657051c3cb60f1997ffa6c6dfda57adffc7547
Author: Katayama Hirofumi MZ <katayama.hirofumi.mz(a)gmail.com>
AuthorDate: Sat Nov 18 23:55:08 2017 +0900
[SHELL32] CDrivesFolder: Implement the eject and disconnect menu items. CORE-13841
- The items are shown only for the drives where they are applicable.
- May not work fully yet due to bugs in the drivers.
---
dll/win32/shell32/folders/CDrivesFolder.cpp | 185 ++++++++++++++++++++++++++--
dll/win32/shell32/lang/bg-BG.rc | 8 ++
dll/win32/shell32/lang/ca-ES.rc | 8 ++
dll/win32/shell32/lang/cs-CZ.rc | 8 ++
dll/win32/shell32/lang/da-DK.rc | 8 ++
dll/win32/shell32/lang/de-DE.rc | 8 ++
dll/win32/shell32/lang/el-GR.rc | 8 ++
dll/win32/shell32/lang/en-GB.rc | 8 ++
dll/win32/shell32/lang/en-US.rc | 8 ++
dll/win32/shell32/lang/es-ES.rc | 8 ++
dll/win32/shell32/lang/fi-FI.rc | 8 ++
dll/win32/shell32/lang/fr-FR.rc | 8 ++
dll/win32/shell32/lang/he-IL.rc | 8 ++
dll/win32/shell32/lang/hu-HU.rc | 8 ++
dll/win32/shell32/lang/it-IT.rc | 8 ++
dll/win32/shell32/lang/ja-JP.rc | 8 ++
dll/win32/shell32/lang/ko-KR.rc | 8 ++
dll/win32/shell32/lang/nl-NL.rc | 8 ++
dll/win32/shell32/lang/no-NO.rc | 8 ++
dll/win32/shell32/lang/pl-PL.rc | 8 ++
dll/win32/shell32/lang/pt-BR.rc | 8 ++
dll/win32/shell32/lang/pt-PT.rc | 8 ++
dll/win32/shell32/lang/ro-RO.rc | 8 ++
dll/win32/shell32/lang/ru-RU.rc | 8 ++
dll/win32/shell32/lang/sk-SK.rc | 8 ++
dll/win32/shell32/lang/sl-SI.rc | 8 ++
dll/win32/shell32/lang/sq-AL.rc | 8 ++
dll/win32/shell32/lang/sv-SE.rc | 8 ++
dll/win32/shell32/lang/tr-TR.rc | 8 ++
dll/win32/shell32/lang/uk-UA.rc | 8 ++
dll/win32/shell32/lang/zh-CN.rc | 8 ++
dll/win32/shell32/lang/zh-TW.rc | 8 ++
dll/win32/shell32/shresdef.h | 8 ++
33 files changed, 429 insertions(+), 12 deletions(-)
diff --git a/dll/win32/shell32/folders/CDrivesFolder.cpp
b/dll/win32/shell32/folders/CDrivesFolder.cpp
index 7a088248c9..a708dc4d49 100644
--- a/dll/win32/shell32/folders/CDrivesFolder.cpp
+++ b/dll/win32/shell32/folders/CDrivesFolder.cpp
@@ -4,6 +4,7 @@
* Copyright 1997 Marcus Meissner
* Copyright 1998, 1999, 2002 Juergen Schmied
* Copyright 2009 Andrew Hill
+ * Copyright 2017 Katayama Hirofumi MZ
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -57,6 +58,89 @@ static int iDriveTypeIds[7] = { IDS_DRIVE_FIXED, /* DRIVE_UNKNOWN
*/
* IShellFolder implementation
*/
+#define RETRY_COUNT 3
+#define RETRY_SLEEP 250
+static BOOL TryToLockOrUnlockDrive(HANDLE hDrive, BOOL bLock)
+{
+ DWORD dwError, dwBytesReturned;
+ DWORD dwCode = (bLock ? FSCTL_LOCK_VOLUME : FSCTL_UNLOCK_VOLUME);
+ for (DWORD i = 0; i < RETRY_COUNT; ++i)
+ {
+ if (DeviceIoControl(hDrive, dwCode, NULL, 0, NULL, 0, &dwBytesReturned,
NULL))
+ return TRUE;
+
+ dwError = GetLastError();
+ if (dwError == ERROR_INVALID_FUNCTION)
+ break; /* don't sleep if function is not implemented */
+
+ Sleep(RETRY_SLEEP);
+ }
+ SetLastError(dwError);
+ return FALSE;
+}
+
+// NOTE: See also
https://support.microsoft.com/en-us/help/165721/how-to-ejecting-removable-m…
+static BOOL DoEjectDrive(const WCHAR *physical, UINT nDriveType, INT *pnStringID)
+{
+ /* GENERIC_WRITE isn't needed for umount */
+ DWORD dwAccessMode = GENERIC_READ;
+ DWORD dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
+
+ HANDLE hDrive = CreateFile(physical, dwAccessMode, dwShareMode, 0, OPEN_EXISTING, 0,
NULL);
+ if (hDrive == INVALID_HANDLE_VALUE)
+ return FALSE;
+
+ BOOL bResult, bNeedUnlock = FALSE;
+ DWORD dwBytesReturned, dwError = NO_ERROR;
+ PREVENT_MEDIA_REMOVAL removal;
+ do
+ {
+ bResult = TryToLockOrUnlockDrive(hDrive, TRUE);
+ if (!bResult)
+ {
+ dwError = GetLastError();
+ *pnStringID = IDS_CANTLOCKVOLUME; /* Unable to lock volume */
+ break;
+ }
+ bResult = DeviceIoControl(hDrive, FSCTL_DISMOUNT_VOLUME, NULL, 0, NULL, 0,
&dwBytesReturned, NULL);
+ if (!bResult)
+ {
+ dwError = GetLastError();
+ *pnStringID = IDS_CANTDISMOUNTVOLUME; /* Unable to dismount volume */
+ bNeedUnlock = TRUE;
+ break;
+ }
+ removal.PreventMediaRemoval = FALSE;
+ bResult = DeviceIoControl(hDrive, IOCTL_STORAGE_MEDIA_REMOVAL, &removal,
sizeof(removal), NULL,
+ 0, &dwBytesReturned, NULL);
+ if (!bResult)
+ {
+ *pnStringID = IDS_CANTEJECTMEDIA; /* Unable to eject media */
+ dwError = GetLastError();
+ bNeedUnlock = TRUE;
+ break;
+ }
+ bResult = DeviceIoControl(hDrive, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0,
&dwBytesReturned, NULL);
+ if (!bResult)
+ {
+ *pnStringID = IDS_CANTEJECTMEDIA; /* Unable to eject media */
+ dwError = GetLastError();
+ bNeedUnlock = TRUE;
+ break;
+ }
+ } while (0);
+
+ if (bNeedUnlock)
+ {
+ TryToLockOrUnlockDrive(hDrive, FALSE);
+ }
+
+ CloseHandle(hDrive);
+
+ SetLastError(dwError);
+ return bResult;
+}
+
HRESULT CALLBACK DrivesContextMenuCallback(IShellFolder *psf,
HWND hwnd,
IDataObject *pdtobj,
@@ -70,6 +154,8 @@ HRESULT CALLBACK DrivesContextMenuCallback(IShellFolder *psf,
PIDLIST_ABSOLUTE pidlFolder;
PUITEMID_CHILD *apidl;
UINT cidl;
+ UINT nDriveType;
+ DWORD dwFlags;
HRESULT hr = SH_GetApidlFromDataObject(pdtobj, &pidlFolder, &apidl,
&cidl);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
@@ -82,35 +168,110 @@ HRESULT CALLBACK DrivesContextMenuCallback(IShellFolder *psf,
_ILFreeaPidl(apidl, cidl);
return E_FAIL;
}
+ nDriveType = GetDriveTypeA(szDrive);
+ GetVolumeInformationA(szDrive, NULL, 0, NULL, NULL, &dwFlags, NULL, 0);
+
+// custom command IDs
+#define CMDID_FORMAT 1
+#define CMDID_EJECT 2
+#define CMDID_DISCONNECT 3
if (uMsg == DFM_MERGECONTEXTMENU)
{
QCMINFO *pqcminfo = (QCMINFO *)lParam;
- DWORD dwFlags;
- if (GetVolumeInformationA(szDrive, NULL, 0, NULL, NULL, &dwFlags, NULL, 0))
+ UINT idCmdFirst = pqcminfo->idCmdFirst;
+ if (!(dwFlags & FILE_READ_ONLY_VOLUME) && nDriveType !=
DRIVE_REMOTE)
{
- /* Disable format if read only */
- if (!(dwFlags & FILE_READ_ONLY_VOLUME) && GetDriveTypeA(szDrive)
!= DRIVE_REMOTE)
- {
- _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, 0,
MFT_SEPARATOR, NULL, 0);
- _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE,
pqcminfo->idCmdFirst++, MFT_STRING, MAKEINTRESOURCEW(IDS_FORMATDRIVE), MFS_ENABLED);
- }
+ /* add separator and Format */
+ UINT idCmd = idCmdFirst + CMDID_FORMAT;
+ _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, 0,
MFT_SEPARATOR, NULL, 0);
+ _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, idCmd,
MFT_STRING, MAKEINTRESOURCEW(IDS_FORMATDRIVE), MFS_ENABLED);
+ }
+ if (nDriveType == DRIVE_REMOVABLE || nDriveType == DRIVE_CDROM)
+ {
+ /* add separator and Eject */
+ UINT idCmd = idCmdFirst + CMDID_EJECT;
+ _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, 0,
MFT_SEPARATOR, NULL, 0);
+ _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, idCmd,
MFT_STRING, MAKEINTRESOURCEW(IDS_EJECT), MFS_ENABLED);
+ }
+ if (nDriveType == DRIVE_REMOTE)
+ {
+ /* add separator and Disconnect */
+ UINT idCmd = idCmdFirst + CMDID_DISCONNECT;
+ _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, 0,
MFT_SEPARATOR, NULL, 0);
+ _InsertMenuItemW(pqcminfo->hmenu, pqcminfo->indexMenu++, TRUE, idCmd,
MFT_STRING, MAKEINTRESOURCEW(IDS_DISCONNECT), MFS_ENABLED);
}
+
+ pqcminfo->idCmdFirst += 3;
}
else if (uMsg == DFM_INVOKECOMMAND)
{
+ WCHAR wszBuf[4] = L"A:\\";
+ wszBuf[0] = (WCHAR)szDrive[0];
+
+ INT nStringID = 0;
+ DWORD dwError = NO_ERROR;
+
if (wParam == DFM_CMD_PROPERTIES)
{
- WCHAR wszBuf[4];
- wcscpy(wszBuf, L"A:\\");
- wszBuf[0] = (WCHAR)szDrive[0];
if (!SH_ShowDriveProperties(wszBuf, pidlFolder, apidl))
+ {
hr = E_FAIL;
+ dwError = ERROR_CAN_NOT_COMPLETE;
+ nStringID = IDS_CANTSHOWPROPERTIES;
+ }
}
else
{
- SHFormatDrive(hwnd, szDrive[0] - 'A', SHFMT_ID_DEFAULT, 0);
+ if (wParam == CMDID_FORMAT)
+ {
+ /* do format */
+ DWORD dwRet = SHFormatDrive(hwnd, szDrive[0] - 'A',
SHFMT_ID_DEFAULT, 0);
+ switch (dwRet)
+ {
+ case SHFMT_ERROR: case SHFMT_CANCEL: case SHFMT_NOFORMAT:
+ hr = E_FAIL;
+ break;
+ }
+ }
+ else if (wParam == CMDID_EJECT)
+ {
+ /* do eject */
+ WCHAR physical[10];
+ wsprintfW(physical, _T("\\\\.\\%c:"), szDrive[0]);
+
+ if (DoEjectDrive(physical, nDriveType, &nStringID))
+ {
+ SHChangeNotify(SHCNE_MEDIAREMOVED, SHCNF_PATHW | SHCNF_FLUSHNOWAIT,
wszBuf, NULL);
+ }
+ else
+ {
+ dwError = GetLastError();
+ }
+ }
+ else if (wParam == CMDID_DISCONNECT)
+ {
+ /* do disconnect */
+ dwError = WNetCancelConnection2W(wszBuf, 0, FALSE);
+ if (dwError == NO_ERROR)
+ {
+ SHChangeNotify(SHCNE_DRIVEREMOVED, SHCNF_PATHW | SHCNF_FLUSHNOWAIT,
wszBuf, NULL);
+ }
+ else
+ {
+ nStringID = IDS_CANTDISCONNECT;
+ }
+ }
+ }
+
+ if (nStringID != 0)
+ {
+ /* show error message */
+ WCHAR szFormat[128], szMessage[128];
+ LoadStringW(shell32_hInstance, nStringID, szFormat, _countof(szFormat));
+ wsprintfW(szMessage, szFormat, dwError);
+ MessageBoxW(hwnd, szMessage, NULL, MB_ICONERROR);
}
}
diff --git a/dll/win32/shell32/lang/bg-BG.rc b/dll/win32/shell32/lang/bg-BG.rc
index 642206abbb..cf7d217fd6 100644
--- a/dll/win32/shell32/lang/bg-BG.rc
+++ b/dll/win32/shell32/lang/bg-BG.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Оразмеряване..."
IDS_RENAME "Преименуване"
IDS_PASTE "Вмъкване"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Файлове със значета (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Изпълними файлове (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Папка"
IDS_BAT_FILE "Пакетен файл на РеактОС"
IDS_CMD_FILE "Писание за управление на РеактОС"
diff --git a/dll/win32/shell32/lang/ca-ES.rc b/dll/win32/shell32/lang/ca-ES.rc
index 02bf0bcae6..a6c579e191 100644
--- a/dll/win32/shell32/lang/ca-ES.rc
+++ b/dll/win32/shell32/lang/ca-ES.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/cs-CZ.rc b/dll/win32/shell32/lang/cs-CZ.rc
index 4e37b93e44..0b7eb71c90 100644
--- a/dll/win32/shell32/lang/cs-CZ.rc
+++ b/dll/win32/shell32/lang/cs-CZ.rc
@@ -689,6 +689,8 @@ BEGIN
IDS_FORMATDRIVE "Formátovat..."
IDS_RENAME "Přejmenovat"
IDS_PASTE "Vložit"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Složku '%1' nebylo možné vytvořit"
IDS_CREATEFOLDER_CAPTION "Složku nebylo možné vytvořit"
@@ -782,6 +784,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Soubory ikon (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Spustitelné soubory (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Složka"
IDS_BAT_FILE "ReactOS dávkový soubor"
IDS_CMD_FILE "ReactOS příkazový skript"
diff --git a/dll/win32/shell32/lang/da-DK.rc b/dll/win32/shell32/lang/da-DK.rc
index 34566694be..c72a856a9d 100644
--- a/dll/win32/shell32/lang/da-DK.rc
+++ b/dll/win32/shell32/lang/da-DK.rc
@@ -689,6 +689,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -782,6 +784,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/de-DE.rc b/dll/win32/shell32/lang/de-DE.rc
index 574e48e01a..bd80efef09 100644
--- a/dll/win32/shell32/lang/de-DE.rc
+++ b/dll/win32/shell32/lang/de-DE.rc
@@ -684,6 +684,8 @@ BEGIN
IDS_FORMATDRIVE "Formatieren..."
IDS_RENAME "Umbenennen"
IDS_PASTE "Einfügen"
+ IDS_EJECT "Auswerfen"
+ IDS_DISCONNECT "Trennen"
IDS_CREATEFOLDER_DENIED " Der Ordner kann nicht erstellt werden
'%1'"
IDS_CREATEFOLDER_CAPTION " Der Ordner kann nicht erstellt werden."
@@ -777,6 +779,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Symboldateien (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Alle Dateien (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Programme (*.exe)\0*.exe\0Alle Dateien (*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Sperren des Volumes nicht möglich (Fehlercode: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Ausbinden des Volumes nicht möglich (Fehlercode:
%lu)."
+ IDS_CANTEJECTMEDIA "Auswerfen des Mediums nicht möglich (Fehlercode:
%lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Fehlercode: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Dateiordner"
IDS_BAT_FILE "ReactOS-Stapelverarbeitungsdatei"
IDS_CMD_FILE "ReactOS-Befehlsskript"
diff --git a/dll/win32/shell32/lang/el-GR.rc b/dll/win32/shell32/lang/el-GR.rc
index f49f1c2333..2980b1d270 100644
--- a/dll/win32/shell32/lang/el-GR.rc
+++ b/dll/win32/shell32/lang/el-GR.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/en-GB.rc b/dll/win32/shell32/lang/en-GB.rc
index 9ea6c41dc0..44fcc213ff 100644
--- a/dll/win32/shell32/lang/en-GB.rc
+++ b/dll/win32/shell32/lang/en-GB.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/en-US.rc b/dll/win32/shell32/lang/en-US.rc
index 4bbc8ac521..adc28545c3 100644
--- a/dll/win32/shell32/lang/en-US.rc
+++ b/dll/win32/shell32/lang/en-US.rc
@@ -684,6 +684,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -777,6 +779,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/es-ES.rc b/dll/win32/shell32/lang/es-ES.rc
index 9ef9bc00ff..7d69400e43 100644
--- a/dll/win32/shell32/lang/es-ES.rc
+++ b/dll/win32/shell32/lang/es-ES.rc
@@ -685,6 +685,8 @@ BEGIN
IDS_FORMATDRIVE "Formatear..."
IDS_RENAME "Renombrar"
IDS_PASTE "Insertar"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -778,6 +780,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Archivos de icono (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Todos los archivos (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Programas (*.exe)\0*.exe\0Todos los archivos
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Directorio"
IDS_BAT_FILE "Archivo por lotes de ReactOS"
IDS_CMD_FILE "Script de comandos ReactOS"
diff --git a/dll/win32/shell32/lang/fi-FI.rc b/dll/win32/shell32/lang/fi-FI.rc
index 3e97c26eaa..bf35e972eb 100644
--- a/dll/win32/shell32/lang/fi-FI.rc
+++ b/dll/win32/shell32/lang/fi-FI.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/fr-FR.rc b/dll/win32/shell32/lang/fr-FR.rc
index 16126e1686..16aaf76420 100644
--- a/dll/win32/shell32/lang/fr-FR.rc
+++ b/dll/win32/shell32/lang/fr-FR.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Formater..."
IDS_RENAME "Renommer"
IDS_PASTE "Insérer"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Impossible de créer le dossier '%1'"
IDS_CREATEFOLDER_CAPTION "Impossible de créer un dossier"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Fichiers d'icônes (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Fichiers exécutables (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Dossier"
IDS_BAT_FILE "Fichier Batch ReactOS"
IDS_CMD_FILE "Script de commandes ReactOS"
diff --git a/dll/win32/shell32/lang/he-IL.rc b/dll/win32/shell32/lang/he-IL.rc
index 73cef872b0..39d3d6c48e 100644
--- a/dll/win32/shell32/lang/he-IL.rc
+++ b/dll/win32/shell32/lang/he-IL.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "אתחול..."
IDS_RENAME "שנה שם"
IDS_PASTE "הכנס"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/hu-HU.rc b/dll/win32/shell32/lang/hu-HU.rc
index 423519e25e..8ef8d4ec9d 100644
--- a/dll/win32/shell32/lang/hu-HU.rc
+++ b/dll/win32/shell32/lang/hu-HU.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/it-IT.rc b/dll/win32/shell32/lang/it-IT.rc
index e7feca35ea..bc88f8b998 100644
--- a/dll/win32/shell32/lang/it-IT.rc
+++ b/dll/win32/shell32/lang/it-IT.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Formatta..."
IDS_RENAME "Rinomina"
IDS_PASTE "Inserisci"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icone (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Tutti i file (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "File eseguibili (*.exe)\0*.exe\0Tutti i file
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Cartella"
IDS_BAT_FILE "File Batch ReactOS"
IDS_CMD_FILE "Script di comandi ReactOS"
diff --git a/dll/win32/shell32/lang/ja-JP.rc b/dll/win32/shell32/lang/ja-JP.rc
index e0b9518f33..b375c2a3df 100644
--- a/dll/win32/shell32/lang/ja-JP.rc
+++ b/dll/win32/shell32/lang/ja-JP.rc
@@ -680,6 +680,8 @@ BEGIN
IDS_FORMATDRIVE "フォーマット..."
IDS_RENAME "名前の変更"
IDS_PASTE "挿入"
+ IDS_EJECT "取り出し"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "フォルダ '%1' を作成できません"
IDS_CREATEFOLDER_CAPTION "フォルダを作成できません"
@@ -773,6 +775,12 @@ BEGIN
IDS_PICK_ICON_FILTER "アイコンファイル (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "実行可能 ファイル (*.exe)\0*.exe\0All Files (*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "フォルダ"
IDS_BAT_FILE "ReactOS バッチ ファイル"
IDS_CMD_FILE "ReactOS コマンド スクリプト"
diff --git a/dll/win32/shell32/lang/ko-KR.rc b/dll/win32/shell32/lang/ko-KR.rc
index bf9d287530..204655eddd 100644
--- a/dll/win32/shell32/lang/ko-KR.rc
+++ b/dll/win32/shell32/lang/ko-KR.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/nl-NL.rc b/dll/win32/shell32/lang/nl-NL.rc
index 78a25cbb69..3777c458c3 100644
--- a/dll/win32/shell32/lang/nl-NL.rc
+++ b/dll/win32/shell32/lang/nl-NL.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/no-NO.rc b/dll/win32/shell32/lang/no-NO.rc
index fedc83209f..656dd8683e 100644
--- a/dll/win32/shell32/lang/no-NO.rc
+++ b/dll/win32/shell32/lang/no-NO.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Formatering..."
IDS_RENAME "Endre navn"
IDS_PASTE "Sett inn"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Ikon Fil (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Kjørbare filer (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Mappe"
IDS_BAT_FILE "ReactOS Batch fil"
IDS_CMD_FILE "ReactOS Kommando skript"
diff --git a/dll/win32/shell32/lang/pl-PL.rc b/dll/win32/shell32/lang/pl-PL.rc
index 7327fbae2e..192b706f7f 100644
--- a/dll/win32/shell32/lang/pl-PL.rc
+++ b/dll/win32/shell32/lang/pl-PL.rc
@@ -687,6 +687,8 @@ BEGIN
IDS_FORMATDRIVE "Formatuj..."
IDS_RENAME "Zmień nazwę"
IDS_PASTE "Włóż"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Nie mogę utworzyć folderu '%1'"
IDS_CREATEFOLDER_CAPTION "Nie mogę utworzyć folderu"
@@ -780,6 +782,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Pliki ikon (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Wszystkie pliki (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Programy (*.exe)\0*.exe\0Wszystkie pliki
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Katalog"
IDS_BAT_FILE "Plik wsadowy ReactOS"
IDS_CMD_FILE "Skrypt konsoli ReactOS"
diff --git a/dll/win32/shell32/lang/pt-BR.rc b/dll/win32/shell32/lang/pt-BR.rc
index 363c7859c9..c7a47b1877 100644
--- a/dll/win32/shell32/lang/pt-BR.rc
+++ b/dll/win32/shell32/lang/pt-BR.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Formatar..."
IDS_RENAME "Renomear"
IDS_PASTE "Inserir"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Arquivos de Ícone (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Arquivos Executáveis (*.exe)\0*.exe\0Todos os arquivos
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Pasta"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/pt-PT.rc b/dll/win32/shell32/lang/pt-PT.rc
index e3524050fb..8fc7335f23 100644
--- a/dll/win32/shell32/lang/pt-PT.rc
+++ b/dll/win32/shell32/lang/pt-PT.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Formatar..."
IDS_RENAME "Renaomear"
IDS_PASTE "Inserir"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Impossivel de Criar Pasta '%1'"
IDS_CREATEFOLDER_CAPTION "Impossivel de Criar Pasta"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Ficheiros de Ícones (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Ficheiros Executáveis (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Pasta"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/ro-RO.rc b/dll/win32/shell32/lang/ro-RO.rc
index aa794089a9..05813a94dc 100644
--- a/dll/win32/shell32/lang/ro-RO.rc
+++ b/dll/win32/shell32/lang/ro-RO.rc
@@ -685,6 +685,8 @@ BEGIN
IDS_FORMATDRIVE "F&ormatare…"
IDS_RENAME "Rede&numește"
IDS_PASTE "&Lipește"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Nu poate fi creat un dosar cu numele „%1”"
IDS_CREATEFOLDER_CAPTION "Nu poate fi creat dosar"
@@ -778,6 +780,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Fișiere pictogramă (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Orice fișier (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Fișiere executabile (*.exe)\0*.exe\0Orice fișier
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Dosar"
IDS_BAT_FILE "Fișier de comenzi ReactOS"
IDS_CMD_FILE "Script de comenzi ReactOS"
diff --git a/dll/win32/shell32/lang/ru-RU.rc b/dll/win32/shell32/lang/ru-RU.rc
index 803ba702fd..5c424adadf 100644
--- a/dll/win32/shell32/lang/ru-RU.rc
+++ b/dll/win32/shell32/lang/ru-RU.rc
@@ -685,6 +685,8 @@ BEGIN
IDS_FORMATDRIVE "Форматировать..."
IDS_RENAME "Переименовать"
IDS_PASTE "Вставить"
+ IDS_EJECT "Извлечь"
+ IDS_DISCONNECT "Отсоединить"
IDS_CREATEFOLDER_DENIED "Невозможно создать папку '%1'"
IDS_CREATEFOLDER_CAPTION "Невозможно создать папку"
@@ -778,6 +780,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Файлы значков (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Все файлы (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Исполняемые файлы (*.exe)\0*.exe\0Все файлы
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Не удалось заблокировать том (код ошибки: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Не удалось размонтировать том (код ошибки: %lu)."
+ IDS_CANTEJECTMEDIA "Не удалось извлечь носитель (код ошибки: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Папка с файлами"
IDS_BAT_FILE "Пакетный файл ReactOS"
IDS_CMD_FILE "Командный скрипт ReactOS"
diff --git a/dll/win32/shell32/lang/sk-SK.rc b/dll/win32/shell32/lang/sk-SK.rc
index 70894c80b0..bcc759b9ed 100644
--- a/dll/win32/shell32/lang/sk-SK.rc
+++ b/dll/win32/shell32/lang/sk-SK.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Formátovať..."
IDS_RENAME "Premenovať"
IDS_PASTE "Vložiť"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Súbory ikon (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Všetky súbory (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Spustiteľné súbory (*.exe)\0*.exe\0Všetky súbory
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Priečinok"
IDS_BAT_FILE "Dávkový súbor systému ReactOS"
IDS_CMD_FILE "Príkazový skript systému ReactOS"
diff --git a/dll/win32/shell32/lang/sl-SI.rc b/dll/win32/shell32/lang/sl-SI.rc
index f0a5b186a0..ea4b4218c1 100644
--- a/dll/win32/shell32/lang/sl-SI.rc
+++ b/dll/win32/shell32/lang/sl-SI.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Rename"
IDS_PASTE "Paste"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/lang/sq-AL.rc b/dll/win32/shell32/lang/sq-AL.rc
index c12d2611d8..eced885141 100644
--- a/dll/win32/shell32/lang/sq-AL.rc
+++ b/dll/win32/shell32/lang/sq-AL.rc
@@ -687,6 +687,8 @@ BEGIN
IDS_FORMATDRIVE "Format..."
IDS_RENAME "Riemërto"
IDS_PASTE "Fut"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -780,6 +782,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Ikonë Programi (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0T'gjith Dokumentat (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Dokumente Ekzekutues (*.exe)\0*.exe\0T'gjith
Dokumentat (*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Dosje"
IDS_BAT_FILE "ReactOS Dokument Batch"
IDS_CMD_FILE "ReactOS Skript Komande"
diff --git a/dll/win32/shell32/lang/sv-SE.rc b/dll/win32/shell32/lang/sv-SE.rc
index e9c4590073..f2f4641a87 100644
--- a/dll/win32/shell32/lang/sv-SE.rc
+++ b/dll/win32/shell32/lang/sv-SE.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Formatera..."
IDS_RENAME "Byt namn"
IDS_PASTE "Klistra in"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Kunde inte skapa mappen '%1'"
IDS_CREATEFOLDER_CAPTION "Kunde inte skapa mapp"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Ikoner (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Alla filer (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Körbara filer (*.exe)\0*.exe\0Alla filer
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Mapp"
IDS_BAT_FILE "ReactOS Batch-fil"
IDS_CMD_FILE "ReactOS Kommandoradsskript"
diff --git a/dll/win32/shell32/lang/tr-TR.rc b/dll/win32/shell32/lang/tr-TR.rc
index 8d23faf0cd..a7aeae86c5 100644
--- a/dll/win32/shell32/lang/tr-TR.rc
+++ b/dll/win32/shell32/lang/tr-TR.rc
@@ -685,6 +685,8 @@ BEGIN
IDS_FORMATDRIVE "Biçimlendir..."
IDS_RENAME "Yeniden Adlandır"
IDS_PASTE "Yapıştır"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED """%1"" dizini
oluşturulamıyor."
IDS_CREATEFOLDER_CAPTION "Dizin Oluşturulamıyor"
@@ -778,6 +780,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Simge Kütükleri (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Tüm Kütükler (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Çalıştırılabilir Kütükler (*.exe)\0*.exe\0Tüm Kütükler
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Dizin"
IDS_BAT_FILE "ReactOS Toplu İş Kütüğü"
IDS_CMD_FILE "ReactOS Komut Betiği"
diff --git a/dll/win32/shell32/lang/uk-UA.rc b/dll/win32/shell32/lang/uk-UA.rc
index 434f55458c..114a03432e 100644
--- a/dll/win32/shell32/lang/uk-UA.rc
+++ b/dll/win32/shell32/lang/uk-UA.rc
@@ -683,6 +683,8 @@ BEGIN
IDS_FORMATDRIVE "Форматувати..."
IDS_RENAME "Перейменувати"
IDS_PASTE "Вставити"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -776,6 +778,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Файли значків (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0Всі Файли (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Виконувані файли (*.exe)\0*.exe\0Всі Файли
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Папка"
IDS_BAT_FILE "Пакетний файл ReactOS"
IDS_CMD_FILE "Командний скрипт ReactOS"
diff --git a/dll/win32/shell32/lang/zh-CN.rc b/dll/win32/shell32/lang/zh-CN.rc
index 4d579987f6..7c40bed54b 100644
--- a/dll/win32/shell32/lang/zh-CN.rc
+++ b/dll/win32/shell32/lang/zh-CN.rc
@@ -690,6 +690,8 @@ BEGIN
IDS_FORMATDRIVE "格式..."
IDS_RENAME "重命名"
IDS_PASTE "贴上"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -783,6 +785,12 @@ BEGIN
IDS_PICK_ICON_FILTER "图标文件 (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "可执行文件 (*.exe)\0*.exe\0All Files (*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "文件夹"
IDS_BAT_FILE "ReactOS 批处理文件"
IDS_CMD_FILE "ReactOS 命令脚本"
diff --git a/dll/win32/shell32/lang/zh-TW.rc b/dll/win32/shell32/lang/zh-TW.rc
index eecd735d4b..6fb5a237ac 100644
--- a/dll/win32/shell32/lang/zh-TW.rc
+++ b/dll/win32/shell32/lang/zh-TW.rc
@@ -691,6 +691,8 @@ BEGIN
IDS_FORMATDRIVE "格式化..."
IDS_RENAME "重新命名"
IDS_PASTE "插入"
+ IDS_EJECT "Eject"
+ IDS_DISCONNECT "Disconnect"
IDS_CREATEFOLDER_DENIED "Unable to create the folder '%1'"
IDS_CREATEFOLDER_CAPTION "Unable to create folder"
@@ -784,6 +786,12 @@ BEGIN
IDS_PICK_ICON_FILTER "Icon Files (*.ico, *.icl, *.exe,
*.dll)\0*.ico;*.icl;*.exe;*.dll\0All Files (*.*)\0*.*\0"
IDS_OPEN_WITH_FILTER "Executable Files (*.exe)\0*.exe\0All Files
(*.*)\0*.*\0"
+ IDS_CANTLOCKVOLUME "Unable to lock volume (Error Code: %lu)."
+ IDS_CANTDISMOUNTVOLUME "Unable to dismount volume (Error Code: %lu)."
+ IDS_CANTEJECTMEDIA "Unable to eject media (Error Code: %lu)."
+ IDS_CANTSHOWPROPERTIES "Unable to show properties (Error Code: %lu)."
+ IDS_CANTDISCONNECT "Unable to disconnect (Error Code: %lu)."
+
IDS_DIRECTORY "Folder"
IDS_BAT_FILE "ReactOS Batch File"
IDS_CMD_FILE "ReactOS Command Script"
diff --git a/dll/win32/shell32/shresdef.h b/dll/win32/shell32/shresdef.h
index 417759e82e..5b607a6943 100644
--- a/dll/win32/shell32/shresdef.h
+++ b/dll/win32/shell32/shresdef.h
@@ -134,6 +134,11 @@
#define IDS_RECYCLEBIN_LOCATION 153
#define IDS_RECYCLEBIN_DISKSPACE 154
#define IDS_OPEN_WITH_FILTER 155
+#define IDS_CANTLOCKVOLUME 156
+#define IDS_CANTDISMOUNTVOLUME 157
+#define IDS_CANTEJECTMEDIA 158
+#define IDS_CANTSHOWPROPERTIES 159
+#define IDS_CANTDISCONNECT 160
/* Friendly File Type Names */
#define IDS_DIRECTORY 200
@@ -206,6 +211,9 @@
#define IDS_FILEOOP_FROM 337
#define IDS_FILEOOP_PREFLIGHT 338
+#define IDS_EJECT 339
+#define IDS_DISCONNECT 340
+
#define IDS_MENU_EMPTY 34561
/* Note: those strings are referenced from the registry */