https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4296826c5882a245e103b…
commit 4296826c5882a245e103b28bb4e64371a0b01c97
Author: Pierre Schweitzer <pierre(a)reactos.org>
AuthorDate: Tue Dec 5 21:38:40 2017 +0100
[VCDCLI] Add support for UDF/Joliet hidding.
By providing /u or /j switch on mount, the virtual CD-ROM class driver
will break the associated signatures on read so that FSDs cannot recognize them any
longer.
---
.../rosapps/applications/cmdutils/vcdcli/vcdcli.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/modules/rosapps/applications/cmdutils/vcdcli/vcdcli.c
b/modules/rosapps/applications/cmdutils/vcdcli/vcdcli.c
index 315dc958bc..c3bcf0cc56 100644
--- a/modules/rosapps/applications/cmdutils/vcdcli/vcdcli.c
+++ b/modules/rosapps/applications/cmdutils/vcdcli/vcdcli.c
@@ -37,9 +37,11 @@ PrintUsage(int type)
else if (type == 1)
{
_ftprintf(stdout, _T("mount usage:\n"));
- _ftprintf(stdout, _T("\tmount <drive letter>
<path.iso>\n"));
+ _ftprintf(stdout, _T("\tmount <drive letter> <path.iso> [/u]
[/j]\n"));
_ftprintf(stdout, _T("\tMount the ISO image given in <path.iso> on the
previously created virtual drive <drive letter>\n"));
_ftprintf(stdout, _T("\t\tDo not use colon for drive letter\n"));
+ _ftprintf(stdout, _T("\t\tUse /u to make UDF volumes not appear as
such\n"));
+ _ftprintf(stdout, _T("\t\tUse /j to make Joliet volumes not appear as
such\n"));
}
else if (type == 2)
{
@@ -331,6 +333,7 @@ _tmain(int argc, const TCHAR *argv[])
}
else if (_tcscmp(argv[1], _T("mount")) == 0)
{
+ DWORD i;
HANDLE hFile;
WCHAR Letter;
UNICODE_STRING NtPathName;
@@ -377,7 +380,22 @@ _tmain(int argc, const TCHAR *argv[])
/* Copy it in the parameter structure */
_tcsncpy(MountParams.Path, NtPathName.Buffer, 255);
MountParams.Length = Min(NtPathName.Length, 255 * sizeof(WCHAR));
- MountParams.Flags = 0; /* FIXME */
+ MountParams.Flags = 0;
+
+ /* Do we have to suppress anything? */
+ for (i = 4; i < argc; ++i)
+ {
+ /* Make UDF uneffective */
+ if (_tcscmp(argv[i], _T("/u")) == 0)
+ {
+ MountParams.Flags |= MOUNT_FLAG_SUPP_UDF;
+ }
+ /* Make Joliet uneffective */
+ else if (_tcscmp(argv[i], _T("/j")) == 0)
+ {
+ MountParams.Flags |= MOUNT_FLAG_SUPP_JOLIET;
+ }
+ }
/* No longer needed */
RtlFreeHeap(RtlGetProcessHeap(), 0, NtPathName.Buffer);