├── .gitignore
├── BazisPortableCDBus
├── BazisPortableCDBus.cpp
├── BazisPortableCDBus.rc
├── BazisPortableCDBus.reg
├── BazisPortableCDBus.vcproj
├── BazisPortableCDBus.vcxproj
├── BazisPortableCDBus.vcxproj.filters
├── resource.h
├── stdafx.cpp
└── stdafx.h
├── BazisVirtualCDBus
├── BazisVirtualCDBus.Win32.vddklaunch
├── BazisVirtualCDBus.cpp
├── BazisVirtualCDBus.h
├── BazisVirtualCDBus.inf
├── BazisVirtualCDBus.rc
├── BazisVirtualCDBus.sln
├── BazisVirtualCDBus.vcproj
├── BazisVirtualCDBus.vcxproj
├── BazisVirtualCDBus.vcxproj.filters
├── DeviceControl.h
├── PersistentImageDatabase.cpp
├── PersistentImageDatabase.h
├── VirtualCDDevice.cpp
├── VirtualCDDevice.h
├── resource.h
├── stdafx.cpp
└── stdafx.h
├── DebugLogAnalyzer
├── DebugLogAnalyzer.csproj
├── DebugLogAnalyzer.sln
├── Form1.Designer.cs
├── Form1.cs
├── Form1.resx
├── ParsedLogFile.cs
├── Program.cs
└── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── DummySign.bat
├── ImageDump
├── ImageDump.cpp
├── ImageDump.sln
├── ImageDump.vcproj
├── ReadMe.txt
├── cdstruct.h
├── stdafx.cpp
├── stdafx.h
└── targetver.h
├── ImageFormats
├── CCDParser.cpp
├── CCDParser.h
├── CUEParser.cpp
├── CUEParser.h
├── Filesystems
│ ├── UDFHelpers.cpp
│ ├── UDFHelpers.h
│ ├── UDFStructures.h
│ ├── miniudf.cpp
│ └── miniudf.h
├── IMGParser.cpp
├── IMGParser.h
├── ImageFormats.cpp
├── ImageFormats.h
├── ImageFormats.vcxproj
├── ImageFormats.vcxproj.filters
├── ImageHelpers.h
├── MDS
│ ├── MDSFormats.h
│ ├── MDSParser.cpp
│ ├── MDSParser.h
│ └── MDSRecordSet.h
├── MultiTrackImage.h
├── NRG
│ ├── NRGParser.cpp
│ ├── NRGParser.h
│ ├── NRGRecordSet.h
│ └── NRGStructures.h
├── RawCDFormats.cpp
├── RawCDFormats.h
├── UDFAnalyzer.cpp
├── UDFAnalyzer.h
├── stdafx.cpp
└── stdafx.h
├── InstallerStub
├── CustomInstaller.cpp
├── CustomInstaller.h
├── InstallerStub.cpp
├── InstallerStub.h
├── InstallerStub.ico
├── InstallerStub.rc
├── InstallerStub.sln
├── InstallerStub.vcproj
├── InstallerStub.vcxproj
├── InstallerStub.vcxproj.filters
├── ReadMe.txt
├── box.ico
├── chbox.ico
├── compat.manifest
├── ico203.ico
├── installer.ico
├── resource.h
├── small.ico
├── stdafx.cpp
├── stdafx.h
├── targetver.h
├── versioninfo.h
├── wcd-icon.ico
└── wcd-icon128.bmp
├── LICENSE
├── Uninstall
├── ReadMe.txt
├── stdafx.cpp
├── stdafx.h
├── targetver.h
├── uninstall.cpp
├── uninstall.vcproj
├── uninstall.vcxproj
└── uninstall.vcxproj.filters
├── VirtualAutorunDisabler
├── ReadMe.txt
├── VirtualAutorunDisabler.cpp
├── VirtualAutorunDisabler.idl
├── VirtualAutorunDisabler.rc
├── VirtualAutorunDisabler.rgs
├── VirtualAutorunDisabler.vcproj
├── VirtualAutorunDisabler.vcxproj
├── VirtualAutorunDisabler.vcxproj.filters
├── VirtualAutorunDisablerPS.vcproj
├── VirtualAutorunDisablerPS.vcxproj
├── VirtualAutorunDisablerPS.vcxproj.filters
├── VirtualAutorunDisabler_p.c
├── VirtualAutorunDisablerps.def
├── VirtualAutorunDisablingMonitor.cpp
├── VirtualAutorunDisablingMonitor.h
├── VirtualAutorunDisablingMonitor.rgs
├── dlldata.c
├── resource.h
├── stdafx.cpp
├── stdafx.h
└── targetver.h
├── VirtualCDCtl
├── BadSectorDatabase.h
├── CDSpeed.cpp
├── CDSpeed.h
├── DriveReadingThread.cpp
├── DriveReadingThread.h
├── ReadMe.txt
├── VirtualCDClient.cpp
├── VirtualCDClient.h
├── VirtualCDCtl.vcxproj
├── VirtualCDCtl.vcxproj.filters
├── VirtualDriveClient.cpp
├── VirtualDriveClient.h
├── stdafx.cpp
├── stdafx.h
└── targetver.h
├── VirtualDriveManager
├── DriverInstaller.cpp
├── DriverInstaller.h
├── MainDlg.cpp
├── MainDlg.h
├── VirtualDriveManager.cpp
├── VirtualDriveManager.h
├── VirtualDriveManager.rc
├── VirtualDriveManager.vcproj
├── VirtualDriveManager.vcxproj
├── VirtualDriveManager.vcxproj.filters
├── res
│ └── VirtualDriveManager.ico
├── resource.h
├── stdafx.cpp
└── stdafx.h
├── WinCDEmu.sln
├── WinCDEmuContextMenu
├── ContextMenuBase.cpp
├── ContextMenuBase.h
├── DebugLog.h
├── DriveContextMenu.cpp
├── DriveContextMenu.h
├── DriveContextMenu.rgs
├── ReadMe.txt
├── TransparentMenuBitmap.cpp
├── TransparentMenuBitmap.h
├── VCDImgContextMenu.cpp
├── VCDImgContextMenu.h
├── VCDImgContextMenu.rgs
├── WinCDEmuContextMenu.cpp
├── WinCDEmuContextMenu.def
├── WinCDEmuContextMenu.idl
├── WinCDEmuContextMenu.rc
├── WinCDEmuContextMenu.rgs
├── WinCDEmuContextMenu.vcproj
├── WinCDEmuContextMenu.vcxproj
├── WinCDEmuContextMenu.vcxproj.filters
├── WinCDEmuContextMenu_p.c
├── dlldata.c
├── dlldatax.c
├── dlldatax.h
├── dllmain.cpp
├── dllmain.h
├── resource.h
├── stdafx.cpp
├── stdafx.h
└── targetver.h
├── _distr
├── VirtualCD.xit
├── drivers.xic
├── langfiles
│ ├── vmnt_Arabic.lng
│ ├── vmnt_Bengali.lng
│ ├── vmnt_Catalan.lng
│ ├── vmnt_Czech.lng
│ ├── vmnt_Farsi.lng
│ ├── vmnt_Indonesia.lng
│ ├── vmnt_Slovak.lng
│ ├── vmnt_Taiwan.lng
│ ├── vmnt_armenian.lng
│ ├── vmnt_bahasaindonesia.lng
│ ├── vmnt_bulgarian.lng
│ ├── vmnt_dansk.lng
│ ├── vmnt_dutch.lng
│ ├── vmnt_english.lng
│ ├── vmnt_estonian.lng
│ ├── vmnt_finnish.lng
│ ├── vmnt_french.lng
│ ├── vmnt_german.lng
│ ├── vmnt_greek.lng
│ ├── vmnt_hebrew.lng
│ ├── vmnt_hungarian.lng
│ ├── vmnt_italian.lng
│ ├── vmnt_japanese.lng
│ ├── vmnt_kannada.lng
│ ├── vmnt_korean.lng
│ ├── vmnt_kurdish.lng
│ ├── vmnt_lithuanian.lng
│ ├── vmnt_macedonian.lng
│ ├── vmnt_malay.lng
│ ├── vmnt_norsk.lng
│ ├── vmnt_norwegian.lng
│ ├── vmnt_polish.lng
│ ├── vmnt_portuguese.lng
│ ├── vmnt_portuguese_brazil.lng
│ ├── vmnt_romanian.lng
│ ├── vmnt_russian.lng
│ ├── vmnt_slovenian.lng
│ ├── vmnt_slovenscina.lng
│ ├── vmnt_spanish.lng
│ ├── vmnt_sr.lng
│ ├── vmnt_swedish.lng
│ ├── vmnt_ta.lng
│ ├── vmnt_turkish.lng
│ ├── vmnt_urdu.lng
│ ├── vmnt_uzbek.lng
│ ├── vmnt_zh_CN.lng
│ └── vmnt_zh_TW.lng
├── main.xic
├── make.bat
└── readme.txt
├── batchmnt
├── ReadMe.txt
├── batchmnt.cpp
├── batchmnt.rc
├── batchmnt.vcproj
├── batchmnt.vcxproj
├── batchmnt.vcxproj.filters
├── main.cpp
├── resource.h
├── stdafx.cpp
├── stdafx.h
└── targetver.h
├── readme.md
├── redist
├── cdrtools-3.01a25_mingw.patch
└── mkisofs.exe
├── vmnt
├── BadSectorDialog.h
├── BadSectorReportDialog.h
├── ContextMenuLabels.h
├── ISOBuildProgressDialog.cpp
├── ISOBuildProgressDialog.h
├── ISOProgressDialog.cpp
├── ISOProgressDialog.h
├── LetterSelectionDialog.cpp
├── LetterSelectionDialog.h
├── RegistryParams.h
├── SettingsDialog.cpp
├── SettingsDialog.h
├── TaskBarInterface.h
├── UACInvokerDialog.h
├── cd.ico
├── resource.h
├── stdafx.cpp
├── stdafx.h
├── versioninfo.h
├── vmnt.cpp
├── vmnt.rc
├── vmnt.vcproj
├── vmnt.vcxproj
├── vmnt.vcxproj.filters
└── wcd-icon.ico
└── wcdversion.h
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled Object files
2 | *.slo
3 | *.lo
4 | *.o
5 | *.obj
6 |
7 | # Precompiled Headers
8 | *.gch
9 | *.pch
10 |
11 | # Compiled Dynamic libraries
12 | *.so
13 | *.dylib
14 | *.dll
15 |
16 | # Fortran module files
17 | *.mod
18 |
19 | # Compiled Static libraries
20 | *.lai
21 | *.la
22 | *.a
23 | *.lib
24 |
25 | # Executables
26 | *.exe
27 | *.out
28 | *.app
29 | *.pdb
30 | *.exp
31 | Debug
32 | Release
33 | x64
34 | Debug (user-mode)
35 | Release (user-mode)
36 | DebugPS
37 | ReleasePS
38 | _distr/app
39 | _distr/drivers
40 | ipch
41 | *.sdf
42 | *.suo
43 | /VirtualAutorunDisabler/VirtualAutorunDisabler_i.c
44 | /VirtualAutorunDisabler/VirtualAutorunDisabler_i.h
45 | /VirtualAutorunDisabler/VirtualAutorunDisabler_p32.c
46 | /VirtualAutorunDisabler/VirtualAutorunDisabler_p64.c
47 | /WinCDEmuContextMenu/WinCDEmuContextMenu_i.c
48 | /WinCDEmuContextMenu/WinCDEmuContextMenu_i.h
49 | /WinCDEmuContextMenu/WinCDEmuContextMenu_p32.c
50 | /WinCDEmuContextMenu/WinCDEmuContextMenu_p64.c
51 | /AllModules
52 | /_distr/_drvinst.bzz
53 | /_distr/_drvinst.bzz.stat
54 | /_distr/drivers.bzz
55 | /_distr/drivers.bzz.stat
56 | /_distr/main.bzz
57 | /_distr/main.bzz.stat
58 | /vmnt/vmnt.lng
59 | /vmnt/vmnt_lng.cpp
60 | /vmnt/vmnt_lng.h
61 |
--------------------------------------------------------------------------------
/BazisPortableCDBus/BazisPortableCDBus.rc:
--------------------------------------------------------------------------------
1 | // Microsoft Visual C++ generated resource script.
2 | //
3 | #include "resource.h"
4 | #include "../wcdversion.h"
5 |
6 | #define APSTUDIO_READONLY_SYMBOLS
7 | /////////////////////////////////////////////////////////////////////////////
8 | //
9 | // Generated from the TEXTINCLUDE 2 resource.
10 | //
11 | #include "afxres.h"
12 |
13 | /////////////////////////////////////////////////////////////////////////////
14 | #undef APSTUDIO_READONLY_SYMBOLS
15 |
16 | /////////////////////////////////////////////////////////////////////////////
17 | // Russian resources
18 |
19 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
20 | #ifdef _WIN32
21 | LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
22 | #pragma code_page(1251)
23 | #endif //_WIN32
24 |
25 | #ifdef APSTUDIO_INVOKED
26 | /////////////////////////////////////////////////////////////////////////////
27 | //
28 | // TEXTINCLUDE
29 | //
30 |
31 | 1 TEXTINCLUDE
32 | BEGIN
33 | "resource.h\0"
34 | END
35 |
36 | 2 TEXTINCLUDE
37 | BEGIN
38 | "#include ""afxres.h""\r\n"
39 | "\0"
40 | END
41 |
42 | 3 TEXTINCLUDE
43 | BEGIN
44 | "\r\n"
45 | "\0"
46 | END
47 |
48 | #endif // APSTUDIO_INVOKED
49 |
50 |
51 | /////////////////////////////////////////////////////////////////////////////
52 | //
53 | // Version
54 | //
55 |
56 | VS_VERSION_INFO VERSIONINFO
57 | FILEVERSION WINCDEMU_VERSION
58 | PRODUCTVERSION WINCDEMU_VERSION
59 | FILEFLAGSMASK 0x17L
60 | #ifdef _DEBUG
61 | FILEFLAGS 0x1L
62 | #else
63 | FILEFLAGS 0x0L
64 | #endif
65 | FILEOS 0x4L
66 | FILETYPE 0x1L
67 | FILESUBTYPE 0x0L
68 | BEGIN
69 | BLOCK "StringFileInfo"
70 | BEGIN
71 | BLOCK "000004b0"
72 | BEGIN
73 | VALUE "Comments", COMMENTS_STR
74 | VALUE "CompanyName", COMPANY_STR
75 | VALUE "FileDescription", "Portable WinCDEmu driver"
76 | VALUE "FileVersion", WINCDEMU_VERSION_STR
77 | VALUE "LegalCopyright", COPYRIGHT_STR
78 | VALUE "LegalTrademarks", TRADEMARKS_STR
79 | VALUE "OriginalFilename", "BazisPortableCDBus.sys"
80 | VALUE "ProductName", PRODUCTNAME_STR
81 | VALUE "ProductVersion", WINCDEMU_VERSION_STR
82 | END
83 | END
84 | BLOCK "VarFileInfo"
85 | BEGIN
86 | VALUE "Translation", 0, 1200
87 | END
88 | END
89 |
90 | #endif // Russian resources
91 | /////////////////////////////////////////////////////////////////////////////
92 |
93 |
94 |
95 | #ifndef APSTUDIO_INVOKED
96 | /////////////////////////////////////////////////////////////////////////////
97 | //
98 | // Generated from the TEXTINCLUDE 3 resource.
99 | //
100 |
101 |
102 | /////////////////////////////////////////////////////////////////////////////
103 | #endif // not APSTUDIO_INVOKED
104 |
105 |
--------------------------------------------------------------------------------
/BazisPortableCDBus/BazisPortableCDBus.reg:
--------------------------------------------------------------------------------
1 | REGEDIT4
2 |
3 | [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BazisPortableCDBus]
4 | "ErrorControl"=dword:00000001
5 | "Start"=dword:00000001
6 | "Type"=dword:00000001
7 |
--------------------------------------------------------------------------------
/BazisPortableCDBus/BazisPortableCDBus.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {51fc1d0d-63e9-4403-ba04-922942b71767}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {b63ad6cb-0936-4710-807b-2f6c6e5791c2}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 |
14 |
15 | Source files
16 |
17 |
18 | Source files
19 |
20 |
21 | Source files
22 |
23 |
24 | Source files
25 |
26 |
27 | Source files
28 |
29 |
30 |
31 |
32 | Header files
33 |
34 |
35 | Header files
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/BazisPortableCDBus/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by BazisPortableCDBus.rc
4 |
5 | // Next default values for new objects
6 | //
7 | #ifdef APSTUDIO_INVOKED
8 | #ifndef APSTUDIO_READONLY_SYMBOLS
9 | #define _APS_NEXT_RESOURCE_VALUE 101
10 | #define _APS_NEXT_COMMAND_VALUE 40001
11 | #define _APS_NEXT_CONTROL_VALUE 1001
12 | #define _APS_NEXT_SYMED_VALUE 101
13 | #endif
14 | #endif
15 |
--------------------------------------------------------------------------------
/BazisPortableCDBus/stdafx.cpp:
--------------------------------------------------------------------------------
1 | //This file is used to build a precompiled header
2 | #include "stdafx.h"
--------------------------------------------------------------------------------
/BazisPortableCDBus/stdafx.h:
--------------------------------------------------------------------------------
1 | #include
--------------------------------------------------------------------------------
/BazisVirtualCDBus/BazisVirtualCDBus.Win32.vddklaunch:
--------------------------------------------------------------------------------
1 |
2 |
3 | vm://Win7x64
4 |
5 | %SystemRoot%\System32\Drivers\BazisVirtualCDBus.sys
6 | PnpEnableDisable
7 | root\BazisVirtualCDBus
8 | 0
9 | PnpEnableDisable
10 | root\BazisVirtualCDBus
11 | 0
12 | true
13 | AutoInstallInteractive
14 |
--------------------------------------------------------------------------------
/BazisVirtualCDBus/BazisVirtualCDBus.inf:
--------------------------------------------------------------------------------
1 | [Version]
2 | Signature="$WINDOWS NT$"
3 | Class=SCSIAdapter
4 | ClassGuid={4d36e97b-e325-11ce-bfc1-08002be10318}
5 | Provider=%BAZIS%
6 | DriverVer=06/02/2015, 4.01.0001
7 | CatalogFile=BazisVirtualCDBus.cat
8 |
9 | [DestinationDirs]
10 | DefaultDestDir = 12
11 |
12 | [SourceDisksNames.x86]
13 | 1 = %DiskId1%,,,
14 |
15 | [SourceDisksNames.amd64]
16 | 1 = %DiskId1%,,,
17 |
18 | [SourceDisksFiles.x86]
19 | BazisVirtualCDBus.sys = 1,\x86
20 |
21 | [SourceDisksFiles.amd64]
22 | BazisVirtualCDBus.sys = 1,\x64
23 |
24 | [Manufacturer]
25 | %BAZIS%=Standard, NTamd64
26 |
27 | [Standard]
28 | %BazisVirtualCDBus.DeviceDesc%=BazisVirtualCDBus_Device, root\BazisVirtualCDBus
29 |
30 | [Standard.NTamd64]
31 | %BazisVirtualCDBus.DeviceDesc%=BazisVirtualCDBus_Device, root\BazisVirtualCDBus
32 |
33 | [BazisVirtualCDBus_Device.NT]
34 | CopyFiles=Drivers_Dir
35 |
36 | [Drivers_Dir]
37 | BazisVirtualCDBus.sys,,,2
38 |
39 | ;-------------- Service installation
40 | [BazisVirtualCDBus_Device.NT.Services]
41 | AddService = BazisVirtualCDBus,%SPSVCINST_ASSOCSERVICE%, dev_Service_Inst
42 |
43 | ; -------------- busenum driver install sections
44 | [dev_Service_Inst]
45 | DisplayName = %dev.SVCDESC%
46 | ServiceType = 1 ; SERVICE_KERNEL_DRIVER
47 | StartType = 3 ; SERVICE_DEMAND_START
48 | ErrorControl = 1 ; SERVICE_ERROR_NORMAL
49 | ServiceBinary = %12%\BazisVirtualCDBus.sys
50 | LoadOrderGroup = Extended Base
51 |
52 |
53 | [Strings]
54 | SPSVCINST_ASSOCSERVICE= 0x00000002
55 | BAZIS = "SysProgs.org"
56 | DiskId1 = "WinCDEmu installation directory"
57 | BazisVirtualCDBus.DeviceDesc = "WinCDEmu Virtual Bus"
58 | dev.SVCDESC = "WinCDEmu Virtual Bus Driver"
59 |
--------------------------------------------------------------------------------
/BazisVirtualCDBus/BazisVirtualCDBus.rc:
--------------------------------------------------------------------------------
1 | // Microsoft Visual C++ generated resource script.
2 | //
3 | #include "resource.h"
4 | #include "../wcdversion.h"
5 |
6 | #define APSTUDIO_READONLY_SYMBOLS
7 | /////////////////////////////////////////////////////////////////////////////
8 | //
9 | // Generated from the TEXTINCLUDE 2 resource.
10 | //
11 | #include "afxres.h"
12 |
13 | /////////////////////////////////////////////////////////////////////////////
14 | #undef APSTUDIO_READONLY_SYMBOLS
15 |
16 | /////////////////////////////////////////////////////////////////////////////
17 | // Russian resources
18 |
19 | #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
20 | #ifdef _WIN32
21 | LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
22 | #pragma code_page(1251)
23 | #endif //_WIN32
24 |
25 | #ifdef APSTUDIO_INVOKED
26 | /////////////////////////////////////////////////////////////////////////////
27 | //
28 | // TEXTINCLUDE
29 | //
30 |
31 | 1 TEXTINCLUDE
32 | BEGIN
33 | "resource.h\0"
34 | END
35 |
36 | 2 TEXTINCLUDE
37 | BEGIN
38 | "#include ""afxres.h""\r\n"
39 | "\0"
40 | END
41 |
42 | 3 TEXTINCLUDE
43 | BEGIN
44 | "\r\n"
45 | "\0"
46 | END
47 |
48 | #endif // APSTUDIO_INVOKED
49 |
50 |
51 | /////////////////////////////////////////////////////////////////////////////
52 | //
53 | // Version
54 | //
55 |
56 | VS_VERSION_INFO VERSIONINFO
57 | FILEVERSION WINCDEMU_VERSION
58 | PRODUCTVERSION WINCDEMU_VERSION
59 | FILEFLAGSMASK 0x17L
60 | #ifdef _DEBUG
61 | FILEFLAGS 0x1L
62 | #else
63 | FILEFLAGS 0x0L
64 | #endif
65 | FILEOS 0x40000L
66 | FILETYPE 0x3L
67 | FILESUBTYPE 0x7L
68 | BEGIN
69 | BLOCK "StringFileInfo"
70 | BEGIN
71 | BLOCK "000004b0"
72 | BEGIN
73 | VALUE "Comments", COMMENTS_STR
74 | VALUE "CompanyName", COMPANY_STR
75 | VALUE "FileDescription", "WinCDEmu virtual CDROM bus"
76 | VALUE "FileVersion", WINCDEMU_VERSION_STR
77 | VALUE "LegalCopyright", COPYRIGHT_STR
78 | VALUE "LegalTrademarks", TRADEMARKS_STR
79 | VALUE "OriginalFilename", "BazisVirtualCD.sys"
80 | VALUE "ProductName", PRODUCTNAME_STR
81 | VALUE "ProductVersion", WINCDEMU_VERSION_STR
82 | END
83 | END
84 | BLOCK "VarFileInfo"
85 | BEGIN
86 | VALUE "Translation", 0x0, 1200
87 | END
88 | END
89 |
90 | #endif // Russian resources
91 | /////////////////////////////////////////////////////////////////////////////
92 |
93 |
94 |
95 | #ifndef APSTUDIO_INVOKED
96 | /////////////////////////////////////////////////////////////////////////////
97 | //
98 | // Generated from the TEXTINCLUDE 3 resource.
99 | //
100 |
101 |
102 | /////////////////////////////////////////////////////////////////////////////
103 | #endif // not APSTUDIO_INVOKED
104 |
105 |
--------------------------------------------------------------------------------
/BazisVirtualCDBus/BazisVirtualCDBus.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {c99487da-0622-4d89-bbe9-892755876729}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {8500b709-3730-4210-9550-0969d72db36c}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 |
14 |
15 | Source files
16 |
17 |
18 | Source files
19 |
20 |
21 | Source files
22 |
23 |
24 | Source files
25 |
26 |
27 |
28 |
29 | Header files
30 |
31 |
32 | Header files
33 |
34 |
35 | Header files
36 |
37 |
38 | Header files
39 |
40 |
41 | Header files
42 |
43 |
44 | Header files
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/BazisVirtualCDBus/DeviceControl.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #define IOCTL_PLUGIN_DEVICE CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x001,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
3 | #define IOCTL_PLUGOUT_DEVICE CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x002,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
4 | #define IOCTL_EJECT_DEVICE CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x003,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
5 | #define IOCTL_IS_DEVICE_PRESENT CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x004,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
6 |
7 | #define IOCTL_LIST_DEVICES CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x011,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
8 | #define IOCTL_PLUGIN_DEVICE_RETURN_WAITHANDLE CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x012,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
9 | #define IOCTL_QUERY_DRIVER_VERSION CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x013,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
10 | #define IOCTL_SOFT_PLUGOUT_DEVICE CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x019,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
11 |
12 | //#define WINCDEMU_DEBUG_LOGGING_SUPPORT
13 | #ifdef WINCDEMU_DEBUG_LOGGING_SUPPORT
14 | #define IOCTL_SET_DEBUG_LOG_DIR CTL_CODE(FILE_DEVICE_BUS_EXTENDER,0x021,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA)
15 | #endif
16 |
17 | #define IOCTL_VDEV_IS_AUTORUN_DISABLED CTL_CODE(FILE_DEVICE_VIRTUAL_DISK,0x014,METHOD_BUFFERED,FILE_READ_DATA)
18 | #define IOCTL_VDEV_GET_IMAGE_PATH CTL_CODE(FILE_DEVICE_VIRTUAL_DISK,0x015,METHOD_BUFFERED,FILE_READ_DATA)
19 | #define IOCTL_VDEV_GET_MMC_PROFILE CTL_CODE(FILE_DEVICE_VIRTUAL_DISK,0x016,METHOD_BUFFERED,FILE_READ_DATA)
20 | #define IOCTL_VDEV_SET_MMC_PROFILE CTL_CODE(FILE_DEVICE_VIRTUAL_DISK,0x018,METHOD_BUFFERED,FILE_READ_DATA)
21 | #define IOCTL_VDEV_MOUNT_IMAGE CTL_CODE(FILE_DEVICE_VIRTUAL_DISK,0x019,METHOD_BUFFERED,FILE_READ_DATA) //Data contains NULL-terminated path or empty string to unmount the image
22 |
23 | #include "../wcdversion.h"
24 | #define WINCDEMU_DRIVER_VERSION_CURRENT WINCDEMU_VER_INT
25 |
26 |
27 | struct VirtualCDRecord
28 | {
29 | unsigned DriveLetter;
30 | unsigned ImageNameOffset;
31 |
32 | unsigned short HandleCount, RefCount, DeviceRefCount, Reserved;
33 | };
34 |
35 | struct VirtualCDRecordHeader
36 | {
37 | enum {CurrentVersion = 2};
38 | unsigned Version;
39 | unsigned TotalSize;
40 | unsigned RecordCount;
41 | #pragma warning( push )
42 | #pragma warning( disable : 4200 )
43 | VirtualCDRecord Records[0];
44 | #pragma warning( pop )
45 | };
46 |
47 | #define MAX_STR_SIZE 512
48 | struct VirtualCDMountParams
49 | {
50 | wchar_t wszFilePath[MAX_STR_SIZE];
51 | unsigned StructureVersion;
52 | bool DisableAutorun;
53 | char SuggestedDriveLetter;
54 | bool KeepAfterRestart;
55 | unsigned short MMCProfile;
56 |
57 | enum {CurrentVersion = 4};
58 | };
59 |
60 | struct GUIDAndVersion
61 | {
62 | GUID Guid;
63 | unsigned Version;
64 | };
65 |
66 |
67 | // {6e1ec3ac-d9cc-423e-8862-bade124324c8}
68 | #ifdef SKIP_WINCDEMU_GUID_DEFINITION
69 | extern GUID GUID_BazisVirtualCDBus;
70 | extern GUID GUID_WinCDEmuDrive;
71 | #else
72 | GUID GUID_BazisVirtualCDBus = {0x6E1EC3AC, 0xd9cc, 0x423e, {0x88, 0x62, 0xba, 0xde, 0x12, 0x43, 0x24, 0xc8 } };
73 | GUID GUID_WinCDEmuDrive = { 0x98f41ee4, 0x819b, 0x46fb, { 0xb1, 0x40, 0xa7, 0xf6, 0x7c, 0x5b, 0xc0, 0x91 } };
74 | #endif
--------------------------------------------------------------------------------
/BazisVirtualCDBus/PersistentImageDatabase.cpp:
--------------------------------------------------------------------------------
1 | #include "stdafx.h"
2 | #include "PersistentImageDatabase.h"
3 | #include
4 |
5 | using namespace BazisLib;
6 | using namespace BazisLib::DDK;
7 |
8 | static const wchar_t wszImagePathKey[] = L"ImagePath";
9 | static const wchar_t wszSuggestedLetterKey[] = L"DriveLetter";
10 | static const wchar_t wszMMCProfile[] = L"MMCProfile";
11 | static const wchar_t wszLastMountStatusKey[] = L"LastAutoMountStatus";
12 |
13 | String PersistentImageDatabase::AddImage(const wchar_t *pImage, char suggestedDriveLetter, unsigned MMCProfile)
14 | {
15 | MutexLocker lck(m_Mutex);
16 | if (m_RegPath.empty())
17 | return String();
18 |
19 | RegistryKey key(m_RegPath.c_str());
20 | if (!key.Valid())
21 | return String();
22 |
23 | String subkeyName;
24 |
25 | for (int i = 0; i < 1000; i++)
26 | {
27 | subkeyName = key.EnumSubkey(i);
28 | if (subkeyName.empty())
29 | break;
30 |
31 | RegistryKey subKey = key[subkeyName.c_str()];
32 | if (!((String)subKey[wszImagePathKey]).icompare(pImage))
33 | break;
34 | }
35 |
36 | if (subkeyName.empty())
37 | for (int i = 0; i < 1000; i++)
38 | {
39 | wchar_t wszSubkey[32];
40 | swprintf(wszSubkey, L"%02d", i);
41 | RegistryKey subkey(key, wszSubkey, true);
42 | if (subkey.Valid())
43 | continue;
44 |
45 | subkeyName = wszSubkey;
46 | break;
47 | }
48 |
49 |
50 | RegistryKey subKey = key[subkeyName.c_str()];
51 | subKey[wszImagePathKey] = pImage;
52 | wchar_t wchLetter = suggestedDriveLetter;
53 | subKey[wszSuggestedLetterKey] = String(&wchLetter, 1);
54 | subKey[wszMMCProfile] = MMCProfile;
55 |
56 | return subkeyName;
57 | }
58 |
59 | std::list PersistentImageDatabase::LoadImageList()
60 | {
61 | MutexLocker lck(m_Mutex);
62 | std::list records;
63 | if (m_RegPath.empty())
64 | return records;
65 |
66 | RegistryKey key(m_RegPath.c_str());
67 | if (!key.Valid())
68 | return records;
69 |
70 | String subkeyName;
71 |
72 | for (int i = 0; i < 1000; i++)
73 | {
74 | subkeyName = key.EnumSubkey(i);
75 | if (subkeyName.empty())
76 | break;
77 |
78 | RegistryKey subKey = key[subkeyName.c_str()];
79 | ImageRecord rec;
80 |
81 | rec.ImagePath = subKey[wszImagePathKey];
82 | rec.Key = subkeyName;
83 | rec.DriveLetter = 0;
84 | String drvLetter = subKey[wszSuggestedLetterKey];
85 | if (drvLetter.length() >= 1)
86 | rec.DriveLetter = (char)drvLetter[0];
87 |
88 | rec.MMCProfile = subKey[wszMMCProfile];
89 |
90 | records.push_back(rec);
91 | }
92 |
93 | return records;
94 | }
95 |
96 | bool PersistentImageDatabase::RemoveImageByKey(const String &Key)
97 | {
98 | MutexLocker lck(m_Mutex);
99 | if (m_RegPath.empty())
100 | return false;
101 |
102 | RegistryKey key(m_RegPath.c_str());
103 | if (!key.Valid())
104 | return false;
105 |
106 | RegistryKey subKey = key[Key.c_str()];
107 | return subKey.DeleteSelf();
108 | }
109 |
110 | void PersistentImageDatabase::ReportMountStatus(const BazisLib::String &Key, NTSTATUS status)
111 | {
112 | MutexLocker lck(m_Mutex);
113 | if (m_RegPath.empty())
114 | return;
115 |
116 | RegistryKey key(m_RegPath.c_str());
117 | if (!key.Valid())
118 | return;
119 |
120 | RegistryKey subKey = key[Key.c_str()];
121 | subKey[wszLastMountStatusKey] = status;
122 | }
--------------------------------------------------------------------------------
/BazisVirtualCDBus/PersistentImageDatabase.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 | #include
4 | #include
5 | #include
6 |
7 | class PersistentImageDatabase : AUTO_OBJECT
8 | {
9 | private:
10 | BazisLib::String m_RegPath;
11 | BazisLib::Mutex m_Mutex;
12 |
13 | public:
14 | void SetRegistryPath(const BazisLib::TempString ®Path)
15 | {
16 | m_RegPath = regPath;
17 | }
18 |
19 | BazisLib::String AddImage(const wchar_t *pImage, char suggestedDriveLetter, unsigned MMCProfile);
20 | bool RemoveImageByKey(const BazisLib::String &Key);
21 |
22 | struct ImageRecord
23 | {
24 | BazisLib::String Key, ImagePath;
25 | char DriveLetter;
26 | unsigned short MMCProfile;
27 | };
28 |
29 | std::list LoadImageList();
30 | void ReportMountStatus(const BazisLib::String &Key, NTSTATUS status);
31 |
32 | };
33 |
34 |
--------------------------------------------------------------------------------
/BazisVirtualCDBus/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by BazisVirtualCDBus.rc
4 | //
5 |
6 | // Next default values for new objects
7 | //
8 | #ifdef APSTUDIO_INVOKED
9 | #ifndef APSTUDIO_READONLY_SYMBOLS
10 | #define _APS_NEXT_RESOURCE_VALUE 101
11 | #define _APS_NEXT_COMMAND_VALUE 40001
12 | #define _APS_NEXT_CONTROL_VALUE 1001
13 | #define _APS_NEXT_SYMED_VALUE 101
14 | #endif
15 | #endif
16 |
--------------------------------------------------------------------------------
/BazisVirtualCDBus/stdafx.cpp:
--------------------------------------------------------------------------------
1 | //This file is used to build a precompiled header
2 | #include "stdafx.h"
--------------------------------------------------------------------------------
/BazisVirtualCDBus/stdafx.h:
--------------------------------------------------------------------------------
1 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
2 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
3 | #endif
4 |
5 | #include
--------------------------------------------------------------------------------
/DebugLogAnalyzer/DebugLogAnalyzer.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 9.0.30729
7 | 2.0
8 | {6E9CC3A0-6F4C-4D8F-AD5D-344C1E608EF2}
9 | WinExe
10 | Properties
11 | DebugLogAnalyzer
12 | DebugLogAnalyzer
13 | v2.0
14 | 512
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | Form
44 |
45 |
46 | Form1.cs
47 |
48 |
49 |
50 |
51 |
52 | Form1.cs
53 |
54 |
55 | ResXFileCodeGenerator
56 | Resources.Designer.cs
57 | Designer
58 |
59 |
60 | True
61 | Resources.resx
62 |
63 |
64 | SettingsSingleFileGenerator
65 | Settings.Designer.cs
66 |
67 |
68 | True
69 | Settings.settings
70 | True
71 |
72 |
73 |
74 |
81 |
--------------------------------------------------------------------------------
/DebugLogAnalyzer/DebugLogAnalyzer.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 10.00
3 | # Visual Studio 2008
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DebugLogAnalyzer", "DebugLogAnalyzer.csproj", "{6E9CC3A0-6F4C-4D8F-AD5D-344C1E608EF2}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Any CPU = Debug|Any CPU
9 | Release|Any CPU = Release|Any CPU
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {6E9CC3A0-6F4C-4D8F-AD5D-344C1E608EF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
13 | {6E9CC3A0-6F4C-4D8F-AD5D-344C1E608EF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
14 | {6E9CC3A0-6F4C-4D8F-AD5D-344C1E608EF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
15 | {6E9CC3A0-6F4C-4D8F-AD5D-344C1E608EF2}.Release|Any CPU.Build.0 = Release|Any CPU
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/DebugLogAnalyzer/Form1.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DebugLogAnalyzer
2 | {
3 | partial class Form1
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.button1 = new System.Windows.Forms.Button();
32 | this.listBox1 = new System.Windows.Forms.ListBox();
33 | this.SuspendLayout();
34 | //
35 | // button1
36 | //
37 | this.button1.Location = new System.Drawing.Point(12, 373);
38 | this.button1.Name = "button1";
39 | this.button1.Size = new System.Drawing.Size(75, 23);
40 | this.button1.TabIndex = 0;
41 | this.button1.Text = "button1";
42 | this.button1.UseVisualStyleBackColor = true;
43 | this.button1.Click += new System.EventHandler(this.button1_Click);
44 | //
45 | // listBox1
46 | //
47 | this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
48 | | System.Windows.Forms.AnchorStyles.Left)
49 | | System.Windows.Forms.AnchorStyles.Right)));
50 | this.listBox1.FormattingEnabled = true;
51 | this.listBox1.Location = new System.Drawing.Point(12, 12);
52 | this.listBox1.Name = "listBox1";
53 | this.listBox1.Size = new System.Drawing.Size(319, 342);
54 | this.listBox1.TabIndex = 1;
55 | //
56 | // Form1
57 | //
58 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
59 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
60 | this.ClientSize = new System.Drawing.Size(691, 408);
61 | this.Controls.Add(this.listBox1);
62 | this.Controls.Add(this.button1);
63 | this.Name = "Form1";
64 | this.Text = "Form1";
65 | this.ResumeLayout(false);
66 |
67 | }
68 |
69 | #endregion
70 |
71 | private System.Windows.Forms.Button button1;
72 | private System.Windows.Forms.ListBox listBox1;
73 | }
74 | }
75 |
76 |
--------------------------------------------------------------------------------
/DebugLogAnalyzer/Form1.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Text;
7 | using System.Windows.Forms;
8 |
9 | namespace DebugLogAnalyzer
10 | {
11 | public partial class Form1 : Form
12 | {
13 | public Form1()
14 | {
15 | InitializeComponent();
16 | }
17 |
18 | private void button1_Click(object sender, EventArgs e)
19 | {
20 | ParsedLogFile logFile = new ParsedLogFile(@"C:\Users\Bazis\AppData\Roaming\WinCDEmu.debug\vcd00000.log");
21 | foreach (ParsedLogFile.Entry entry in logFile.Data)
22 | listBox1.Items.Add(entry);
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/DebugLogAnalyzer/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Windows.Forms;
4 |
5 | namespace DebugLogAnalyzer
6 | {
7 | static class Program
8 | {
9 | ///
10 | /// The main entry point for the application.
11 | ///
12 | [STAThread]
13 | static void Main()
14 | {
15 | Application.EnableVisualStyles();
16 | Application.SetCompatibleTextRenderingDefault(false);
17 | Application.Run(new Form1());
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/DebugLogAnalyzer/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("DebugLogAnalyzer")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Microsoft")]
12 | [assembly: AssemblyProduct("DebugLogAnalyzer")]
13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2011")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("8566c119-f3de-407e-b2ad-b20a031b6d9f")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/DebugLogAnalyzer/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:2.0.50727.4959
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DebugLogAnalyzer.Properties
12 | {
13 |
14 |
15 | ///
16 | /// A strongly-typed resource class, for looking up localized strings, etc.
17 | ///
18 | // This class was auto-generated by the StronglyTypedResourceBuilder
19 | // class via a tool like ResGen or Visual Studio.
20 | // To add or remove a member, edit your .ResX file then rerun ResGen
21 | // with the /str option, or rebuild your VS project.
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// Returns the cached ResourceManager instance used by this class.
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DebugLogAnalyzer.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// Overrides the current thread's CurrentUICulture property for all
56 | /// resource lookups using this strongly typed resource class.
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/DebugLogAnalyzer/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:2.0.50727.4959
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DebugLogAnalyzer.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/DebugLogAnalyzer/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/DummySign.bat:
--------------------------------------------------------------------------------
1 | @echo Warning: SIGN_RELEASE_BINARY not defined. %1 will not be signed.
--------------------------------------------------------------------------------
/ImageDump/ReadMe.txt:
--------------------------------------------------------------------------------
1 | ========================================================================
2 | CONSOLE APPLICATION : ImageDump Project Overview
3 | ========================================================================
4 |
5 | AppWizard has created this ImageDump application for you.
6 |
7 | This file contains a summary of what you will find in each of the files that
8 | make up your ImageDump application.
9 |
10 |
11 | ImageDump.vcproj
12 | This is the main project file for VC++ projects generated using an Application Wizard.
13 | It contains information about the version of Visual C++ that generated the file, and
14 | information about the platforms, configurations, and project features selected with the
15 | Application Wizard.
16 |
17 | ImageDump.cpp
18 | This is the main application source file.
19 |
20 | /////////////////////////////////////////////////////////////////////////////
21 | Other standard files:
22 |
23 | StdAfx.h, StdAfx.cpp
24 | These files are used to build a precompiled header (PCH) file
25 | named ImageDump.pch and a precompiled types file named StdAfx.obj.
26 |
27 | /////////////////////////////////////////////////////////////////////////////
28 | Other notes:
29 |
30 | AppWizard uses "TODO:" comments to indicate parts of the source code you
31 | should add to or customize.
32 |
33 | /////////////////////////////////////////////////////////////////////////////
34 |
--------------------------------------------------------------------------------
/ImageDump/stdafx.cpp:
--------------------------------------------------------------------------------
1 | // stdafx.cpp : source file that includes just the standard includes
2 | // ImageDump.pch will be the pre-compiled header
3 | // stdafx.obj will contain the pre-compiled type information
4 |
5 | #include "stdafx.h"
6 |
7 | // TODO: reference any additional headers you need in STDAFX.H
8 | // and not in this file
9 |
--------------------------------------------------------------------------------
/ImageDump/stdafx.h:
--------------------------------------------------------------------------------
1 | // stdafx.h : include file for standard system include files,
2 | // or project specific include files that are used frequently, but
3 | // are changed infrequently
4 | //
5 |
6 | #pragma once
7 |
8 | #include "targetver.h"
9 |
10 | #include
11 | #include
12 | #include
13 |
14 |
15 |
16 | // TODO: reference additional headers your program requires here
17 |
--------------------------------------------------------------------------------
/ImageDump/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // The following macros define the minimum required platform. The minimum required platform
4 | // is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run
5 | // your application. The macros work by enabling all features available on platform versions up to and
6 | // including the version specified.
7 |
8 | // Modify the following defines if you have to target a platform prior to the ones specified below.
9 | // Refer to MSDN for the latest info on corresponding values for different platforms.
10 | #ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista.
11 | #define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows.
12 | #endif
13 |
14 |
--------------------------------------------------------------------------------
/ImageFormats/CCDParser.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ImageFormats.h"
3 |
4 | namespace ImageFormats
5 | {
6 | class CCDParser : public AICDImageFormatParser
7 | {
8 | public:
9 | virtual ProbeResult Probe(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath, bool SecondPass);
10 | virtual ManagedPointer OpenImage(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath);
11 | };
12 | }
--------------------------------------------------------------------------------
/ImageFormats/CUEParser.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ImageFormats.h"
3 |
4 | namespace ImageFormats
5 | {
6 | class CUEParser : public AICDImageFormatParser
7 | {
8 | public:
9 | virtual ProbeResult Probe(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath, bool SecondPass);
10 | virtual ManagedPointer OpenImage(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath);
11 | };
12 | }
--------------------------------------------------------------------------------
/ImageFormats/Filesystems/UDFHelpers.cpp:
--------------------------------------------------------------------------------
1 | #include "stdafx.h"
2 | #include "UDFHelpers.h"
3 |
4 | static const unsigned short s_CRCTable[256] = {
5 | 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
6 | 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
7 | 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
8 | 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
9 | 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
10 | 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
11 | 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
12 | 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
13 | 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
14 | 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
15 | 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
16 | 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
17 | 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
18 | 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
19 | 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
20 | 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
21 | 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
22 | 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
23 | 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
24 | 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
25 | 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
26 | 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
27 | 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
28 | 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
29 | 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
30 | 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
31 | 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
32 | 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
33 | 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
34 | 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
35 | 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
36 | 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
37 | };
38 |
39 | unsigned short UDFHelpers::CRC16(const void *pData, size_t length)
40 | {
41 | unsigned short crc = 0;
42 | unsigned char *p = (unsigned char *)pData;
43 |
44 | while (length--)
45 | crc = s_CRCTable[(crc>>8 ^ *p++) & 0xff] ^ (crc<<8);
46 | return crc;
47 | }
48 |
49 | std::wstring UDFHelpers::UncompressUnicode(size_t numberOfBytes, const unsigned char *UDFCompressed)
50 | {
51 | unsigned int compID = UDFCompressed[0];
52 | wchar_t wch = 0;
53 |
54 | std::wstring result;
55 |
56 | if (compID != 8 && compID != 16)
57 | return result;
58 |
59 | size_t byteIndex = 1;
60 |
61 | while (byteIndex < numberOfBytes)
62 | {
63 | if (compID == 16)
64 | wch = UDFCompressed[byteIndex++] << 8;
65 | else
66 | wch = 0;
67 |
68 | if (byteIndex < numberOfBytes)
69 | wch |= UDFCompressed[byteIndex++];
70 |
71 | if (!wch)
72 | break;
73 |
74 | result.append(1, wch);
75 | wch = 0;
76 | }
77 | return result;
78 | }
--------------------------------------------------------------------------------
/ImageFormats/Filesystems/UDFHelpers.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include
3 |
4 |
5 | namespace UDFHelpers
6 | {
7 | unsigned short CRC16(const void *pData, size_t length);
8 | std::wstring UncompressUnicode(size_t numberOfBytes, const unsigned char *UDFCompressed);
9 |
10 | template static inline std::wstring UncompressUnicode(const unsigned char (&UDFCompressed)[_Len])
11 | {
12 | return UncompressUnicode(_Len, UDFCompressed);
13 | }
14 | }
--------------------------------------------------------------------------------
/ImageFormats/IMGParser.cpp:
--------------------------------------------------------------------------------
1 | #include "stdafx.h"
2 | #include "IMGParser.h"
3 | #include "RawCDFormats.h"
4 |
5 | using namespace ImageFormats;
6 | using namespace BazisLib;
7 |
8 | ProbeResult IMGParser::Probe( const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath, bool SecondPass )
9 | {
10 | if (!SecondPass)
11 | {
12 | if (!FileExtension.icompare(_T("bin")) || !FileExtension.icompare(_T("img")) || !FileExtension.icompare(_T("iso")))
13 | return NameOnlyMatch;
14 | else
15 | return ProbableMatch;
16 | }
17 | else
18 | {
19 | ASSERT(pFile);
20 | RawCDFormatDescriptor desc = {0,};
21 | if (DetectRawCDFormat(pFile, &desc))
22 | return ProbableMatch;
23 | else
24 | return NoMatch;
25 | }
26 | }
27 |
28 | ManagedPointer ImageFormats::IMGParser::OpenImage( const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath )
29 | {
30 | RawCDFormatDescriptor desc = {0,};
31 | if (!DetectRawCDFormat(pFile, &desc))
32 | return NULL;
33 | if (!desc.SectorSize)
34 | return NULL;
35 | return new IMGImage(pFile, &desc);
36 | }
--------------------------------------------------------------------------------
/ImageFormats/IMGParser.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "ImageFormats.h"
3 | #include "RawCDFormats.h"
4 |
5 | namespace ImageFormats
6 | {
7 | class IMGImage : public ParsedCDImageBase
8 | {
9 | private:
10 | RawCDFormatDescriptor m_FormatDescriptor;
11 |
12 | public:
13 | IMGImage(const ConstManagedPointer &pFile, RawCDFormatDescriptor *pDesc)
14 | : ParsedCDImageBase(pFile, (unsigned)((pFile->GetSize() - pDesc->InitialOffset) / pDesc->SectorSize) + 150)
15 | , m_FormatDescriptor(*pDesc)
16 | {
17 | }
18 |
19 | virtual size_t ReadSectorsBoundsChecked(unsigned FirstSector, void *pBuffer, unsigned SectorCount)
20 | {
21 | if (m_FormatDescriptor.SectorSize == CD_SECTOR_SIZE)
22 | {
23 | ULONGLONG offset = m_FormatDescriptor.InitialOffset + ((ULONGLONG)FirstSector) * CD_SECTOR_SIZE;
24 | if (m_pFile->Seek(offset, FileFlags::FileBegin) != offset)
25 | return 0;
26 | return m_pFile->Read(pBuffer, SectorCount * CD_SECTOR_SIZE);
27 | }
28 |
29 | for (unsigned i = 0; i < SectorCount; i++)
30 | if (!ReadSectorFromFile(m_FormatDescriptor.InitialOffset + ((ULONGLONG)(FirstSector + i)) * m_FormatDescriptor.SectorSize,
31 | pBuffer,
32 | i * CD_SECTOR_SIZE))
33 | return i * CD_SECTOR_SIZE;
34 | return SectorCount * CD_SECTOR_SIZE;
35 | }
36 |
37 | };
38 |
39 | class IMGParser : public AICDImageFormatParser
40 | {
41 | public:
42 | virtual ProbeResult Probe(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath, bool SecondPass);
43 | virtual ManagedPointer OpenImage(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath);
44 |
45 | };
46 | }
--------------------------------------------------------------------------------
/ImageFormats/ImageFormats.cpp:
--------------------------------------------------------------------------------
1 | #include "stdafx.h"
2 | #include "ImageFormats.h"
3 | #include "IMGParser.h"
4 | #include "NRG/NRGParser.h"
5 | #include "MDS/MDSParser.h"
6 | #include "CUEParser.h"
7 | #include "CCDParser.h"
8 |
9 | using namespace ImageFormats;
10 | using namespace BazisLib;
11 |
12 | ImageFormatDatabase::ImageFormatDatabase()
13 | {
14 | //m_RegisteredParsers[_T("iso")] = new ISOParser(); //IMG parser is more accurate
15 | m_RegisteredParsers[_T("img")] = new IMGParser();
16 | m_RegisteredParsers[_T("nrg")] = new NRGParser();
17 | m_RegisteredParsers[_T("mds")] = new MDSParser();
18 | m_RegisteredParsers[_T("cue")] = new CUEParser();
19 | m_RegisteredParsers[_T("ccd")] = new CCDParser();
20 | }
21 |
22 | ManagedPointer ImageFormatDatabase::FindParserByPrimaryFileExtension( const TempString &ParserName )
23 | {
24 | ParserMap::iterator it = m_RegisteredParsers.find(ParserName);
25 | if (it == m_RegisteredParsers.end())
26 | return NULL;
27 | return it->second;
28 | }
29 |
30 | ManagedPointer ImageFormatDatabase::OpenCDImage( const ConstManagedPointer &pFile, const String&FileName )
31 | {
32 | if (!pFile || !pFile->Valid())
33 | return NULL;
34 | ManagedPointer pParser;
35 | ProbeResult BestScore = NoMatch;
36 | TempString ext = Path::GetExtensionExcludingDot(FileName);
37 |
38 | //TODO: Implement third pass trying to detect internal FS structures
39 | for (int pass = 0; pass < 2; pass++)
40 | {
41 | for (ParserMap::iterator it = m_RegisteredParsers.begin(); it != m_RegisteredParsers.end(); it++)
42 | {
43 | ProbeResult score = it->second->Probe(ext, pFile, FileName, (pass != 0));
44 | if (score > BestScore)
45 | {
46 | BestScore = score;
47 | pParser = it->second;
48 | }
49 | }
50 |
51 | if (pParser)
52 | {
53 | if (pass)
54 | return pParser->OpenImage(ext, pFile, FileName);
55 |
56 | //Decide whether we need a second format detection pass
57 | ProbeResult score2 = pParser->Probe(ext, pFile, FileName, true);
58 | if (score2 >= SufficientMatchToSkipOthers)
59 | return pParser->OpenImage(ext, pFile, FileName);
60 | }
61 | }
62 |
63 | return NULL;
64 | }
65 |
66 | bool ImageFormats::ImageFormatDatabase::IsAValidCDImageName( const String&filePath )
67 | {
68 | TempString ext = Path::GetExtensionExcludingDot(filePath);
69 |
70 | for (ParserMap::iterator it = m_RegisteredParsers.begin(); it != m_RegisteredParsers.end(); it++)
71 | {
72 | if (it->second->Probe(ext, ManagedPointer(NULL), filePath, false) >= NameOnlyMatch)
73 | return true;
74 | }
75 | return false;
76 | }
--------------------------------------------------------------------------------
/ImageFormats/ImageHelpers.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | namespace ImageFormats
4 | {
5 | static inline unsigned char bcd2int8(unsigned char bcd)
6 | {
7 | if ((bcd >= 0xA0) || ((bcd & 0x0F) >= 0x0A))
8 | return bcd;
9 | return (((bcd & 0xF0) >> 4) * 10) + (bcd & 0x0F);
10 | }
11 |
12 | struct MSFAddress
13 | {
14 | UCHAR M;
15 | UCHAR S;
16 | UCHAR F;
17 |
18 | unsigned ToLBA()
19 | {
20 | return ((M * 60 + S) * 75 + F) - 150;
21 | }
22 |
23 | static inline MSFAddress MSF(UCHAR m, UCHAR s, UCHAR f)
24 | {
25 | MSFAddress addr = {m,s,f};
26 | return addr;
27 | }
28 |
29 | static inline MSFAddress FromLBA(unsigned LBA)
30 | {
31 | MSFAddress addr;
32 | LBA += 150;
33 | addr.F = (UCHAR)(LBA % 75);
34 | LBA /= 75;
35 | addr.S = (UCHAR)(LBA % 60);
36 | addr.M = (UCHAR)(LBA / 60);
37 | return addr;
38 | }
39 | };
40 |
41 | }
--------------------------------------------------------------------------------
/ImageFormats/MDS/MDSFormats.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../ImageHelpers.h"
3 |
4 | namespace ImageFormats
5 | {
6 | #pragma pack(push, 1)
7 |
8 | struct MDSHeader
9 | {
10 | UCHAR Signature[16]; /* "MEDIA DESCRIPTOR" */
11 | UCHAR Version[2]; /* Version ? */
12 | USHORT MediumType; /* Medium type */
13 | USHORT SessionCount; /* Number of sessions */
14 | USHORT unused1[2];
15 | USHORT BCALength; /* Length of BCA data (DVD-ROM) */
16 | unsigned unused2[2];
17 | unsigned BCAOffset; /* Offset to BCA data (DVD-ROM) */
18 | unsigned unused3[6]; /* Probably more offsets */
19 | unsigned DiskStructuresOffset; /* Offset to disc structures */
20 | unsigned unused4[3]; /* Probably more offsets */
21 | unsigned SessionsBlocksOffset; /* Offset to session blocks */
22 | unsigned DpmBlocksOffset; /* offset to DPM data blocks */
23 | unsigned EncryptionKeyOffset;
24 | }; /* length: 92 bytes */
25 |
26 | C_ASSERT(sizeof(MDSHeader) == 92);
27 |
28 | struct MDSSessionBlock
29 | {
30 | int SessionStart; /* Session's start address */
31 | int SessionEnd; /* Session's end address */
32 | USHORT SessionNumber; /* (Unknown) */
33 | UCHAR TotalBlockCount; /* Number of all data blocks. */
34 | UCHAR LeadInBlockCount; /* Number of lead-in data blocks */
35 | USHORT FirstTrack; /* Total number of sessions in image? */
36 | USHORT LastTrack; /* Number of regular track data blocks. */
37 | unsigned unused; /* (unknown) */
38 | unsigned TrackBlocksOffset; /* Offset of lead-in+regular track data blocks. */
39 | }; /* length: 24 bytes */
40 |
41 | C_ASSERT(sizeof(MDSSessionBlock) == 24);
42 |
43 | struct MDSTrackBlock
44 | {
45 | UCHAR Mode; /* Track mode */
46 | UCHAR SubchannelMode; /* Subchannel mode */
47 | UCHAR AdrCtk; /* Adr/Ctl */
48 | UCHAR unused1; /* Track flags? */
49 | UCHAR TrackNumber; /* Track number. (>0x99 is lead-in track) */
50 |
51 | unsigned unused2;
52 | MSFAddress MSF;
53 | unsigned ExtraOffset; /* Start offset of this track's extra block. */
54 | USHORT SectorSize; /* Sector size. */
55 |
56 | UCHAR unused3[18];
57 | unsigned StartSector; /* Track start sector (PLBA). */
58 | ULONGLONG StartOffset; /* Track start offset. */
59 | UCHAR Session; /* Session or index? */
60 | UCHAR unused4[3];
61 | unsigned FooterOffset; /* Start offset of footer. */
62 | UCHAR unused5[24];
63 | }; /* length: 80 bytes */
64 |
65 | C_ASSERT(sizeof(MDSTrackBlock) == 80);
66 |
67 | struct MDSTrackExtraBlock
68 | {
69 | unsigned Pregap; /* Number of sectors in pregap. */
70 | unsigned Length; /* Number of sectors in track. */
71 | }; /* length: 8 bytes */
72 |
73 | C_ASSERT(sizeof(MDSTrackExtraBlock) == 8);
74 |
75 | struct MDSFooter
76 | {
77 | unsigned FilenameOffset; /* Start offset of image filename. */
78 | unsigned WidecharFilename; /* Seems to be set to 1 if widechar filename is used */
79 | unsigned unused1;
80 | unsigned unused2;
81 | }; /* length: 16 bytes */
82 |
83 | C_ASSERT(sizeof(MDSFooter) == 16);
84 |
85 | #pragma pack(pop)
86 | }
--------------------------------------------------------------------------------
/ImageFormats/MDS/MDSParser.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../ImageFormats.h"
3 |
4 | namespace ImageFormats
5 | {
6 | class MDSParser : public AICDImageFormatParser
7 | {
8 | public:
9 | virtual ProbeResult Probe(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath, bool SecondPass);
10 | virtual ManagedPointer OpenImage(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath);
11 | };
12 | }
--------------------------------------------------------------------------------
/ImageFormats/MDS/MDSRecordSet.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sysprogs/WinCDEmu/07e0924d51f6e7fdfb316143de810be085123c6d/ImageFormats/MDS/MDSRecordSet.h
--------------------------------------------------------------------------------
/ImageFormats/NRG/NRGParser.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include "../ImageFormats.h"
3 |
4 | namespace ImageFormats
5 | {
6 | class NRGParser : public AICDImageFormatParser
7 | {
8 | public:
9 | virtual ProbeResult Probe(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath, bool SecondPass);
10 | virtual ManagedPointer OpenImage(const TempString &FileExtension, const ConstManagedPointer &pFile, const String&FullFilePath);
11 | };
12 | }
--------------------------------------------------------------------------------
/ImageFormats/NRG/NRGRecordSet.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 | #include