Version tab shell extension
A Windows shell extension that brings back the old familiar "Version" tab first introduced in Windows XP (which strangely disappeared in Windows 7).
Note: this .zip file contains not only the 32-bit and 64-bit DLLs but also the Visual Studio 2008 project itself used to build them with, and contains additional changes and enhancements that are not in the above mentioned Code Project article.
HashCheck shell extension
A Windows shell extension that provides a "Checksums" Properties tab that calulates various checksums for the selected file(s) or directory(s).
It is a heavily modified version of Kai Liu's original HashCheck code which can be found at http://code.kliu.org/hashcheck.The following is a brief summary of the modifications that I made above and beyond Kai Liu's original code:
- Fix tabbing and some indenting.
- Convert all C source modules to C++ and use pre-compiled headers.
- Replace use of hard-coded values with #define constants instead.
- Remove dead code and eliminate struct field duplication.
- Replace all __forceinline with just __inline. (It's unwise to try outsmarting the optimizer)
- Use CString where possible.
- Use Product/Version constants.
- Use memset instead of ZeroMemory.
- Compiler warning/errors override cleanup: fix "unsafe" warnings.
- Add helper and debugging functions and macros.
- Remove undocumented o/s calls (e.g. external 'qsort_s_uptr' library).
- Calculate CRC32 manually and replace all other hashing with native Windows Crypto API calls instead.
- Added SHA-256 (SHA-2) and SHA-512 support.
- Simplify/fix installation/uninstallation logic.
- Use new COvSeqFile OVERLAPPED Sequential File I/O class for speed:
- 300%+ increase in I/O throughput.
- 70%+ reduction in elapsed time.
(SCSI tape test utility)
This is a simple Windows SCSI tape test utility I wrote during my efforts to provide SCSI tape support in the Windows version of Hercules. It basically calls the same set of native Windows SCSI tape APIs that Hercules does. It's only a simple command-line utility, but it allows you to easily test the proper functioning of your Windows SCSI attached tape drive to make sure it's working properly before bothering to add it to your Hercules configuration file.
It allows you to do such simple things as read and write random or fixed-sized blocks of random data, fast-forward to the next or previous tapemark, back-space and forward-space block, write tapemarks, locate block, etc. It'll even display the data block it reads in either ASCII or EBCDIC too, so you can examine the data on an already existing tape you might already have.
It requires you to already have the tape drive properly installed on your Windows system of course so that Windows can 'see' it (i.e. you have to have the SCSI adapter and SCSI Tape device drivers already installed such that device 'Tape0' appears in your Windows device list), but as long as Windows can see it and ftape can access it, then the drive should be usable by Hercules.
Note: as far as I know pretty much any "true" (non-ASPI) SCSI Tape device driver can be used regardless of what model tape drive you have since all SCSI tape devices are required to support a minimum set of SCSI commands. The only exception I've found is, ironically, IBM's device drivers. They're purposely written to ONLY work with their own tape drives (the stinkers). For example, my own tape drive was a Fujitsu model M2488E SCSI attached 3480/3490E tape drive and I was using one of Sony's device drivers with it and it worked just fine.
Also note that while I say you need to use a non-ASPI driver in order for the drive to work with Hercules, please be aware that sometimes the "ASPI" software that comes with a tape drive also includes a device-driver for the tape drive itself, such that by installing whatever ASPI software may come with the tape drive, the needed non-ASPI device-driver also gets installed. That is to say, some "ASPI" software packages include not only a control DLL that allows their software to talk to the tape drive via ASPI, but which also includes the necessary device-driver for the tape drive itself (which the ASPI layer then simply talks to directly).
Thus even though I say you "must" use non-ASPI device-driver, that doesn't necessarily mean you cannot also install whatever ASPI software may have come with the drive. The two are not mutually exclusive from one another. They may both be installed if so desired, as long as by doing so the necessary non-ASPI device-driver for the tape drive also gets installed. The only time ASPI software cannot be used is when the software provides no other means to talk to the tape drive other than via ASPI. If your ASPI software requires that only ASPI be used to talk to the tape drive, then that would be the one situation where your ASPI software (drivers) would thus be incompatible with ftape/Hercules thereby requiring you to shop around for a different non-ASPI device-driver for your tape drive.
(Further note: ftape does NOT currently support (and neither does Hercules yet) doing any type of i/o to the medium changer device (i.e. the cartridge loader), but it's okay if the drive has one; it just can't be directly accessed by ftape nor Hercules, that's all; it'll still work though; you'll just have to do all that stuff manually yourself using the buttons on your tape drive's front panel).
The complete Visual Studio 2008 project source code is included with the product (since it is such a simple little program).
Changes new to version 1.7.3:
- Fix bug causing incorrect command-line '-f' (filename) argument processing.
- Large Block support (blocks up to 2MB in size)
- Each byte of a random block is now random.
- Report if running elevated or not.
- Project converted to VS2008.
Changes new to version 1.7.0:
- New project build system: NullSoft (NSIS) installation program.
- No standard Windows Help File yet, but I'm working on it!
- Fix ReadPos to return and display BOTH logical and physical (i.e. absolute) position values, and fix Locate to always use the LOGICAL position and not the physical (absolute) position like it was before! (I had it bass-ackwards! Oops! Sorry!)
- Try set-tape-margin anyway to possibly enable drive option.
Minimize Any Window to System Tray
This handy utility adds a new command called "Tray Me!" to each window's system menu allowing you to move any window from the screen (and thus your task bar) to the system tray instead.
It is basically a rewrite of Chau Nguyen's original CodeProject "Tray Icon" code but with all of the bugs fixed and and more explainatory comments added thus making it more reliable and hopefully a better sample to learn from.
Handy batch files and utilities
What might perhaps be the handiest of all the batch files are the 'fpath', 'finc', 'flib' and 'fall' batch files which provide an easy to read formatted display of your PATH, INCLUDE and LIB environment variables:C:\Users\Fish\Desktop> fall path= C:\Windows\system32 C:\Windows C:\Windows\System32\Wbem C:\Windows\System32\WindowsPowerShell\v1.0\ C:\Program Files\ooRexx C:\Windows\system32\config\systemprofile\.dnx\bin C:\Program Files\Microsoft DNX\Dnvm\ C:\Program Files\Microsoft SQL Server\130\Tools\Binn\ C:\Program Files\CMake\bin C:\Program Files\TortoiseGit\bin C:\Program Files\Git\cmd C:\Program Files (x86)\SoftDevLabs\FishLib C:\Program Files (x86)\SoftDevLabs\CTCI-WIN C:\Program Files (x86)\SoftDevLabs\HercGUI C:\Program Files (x86)\SoftDevLabs\HercPrt C:\bin lib= include= C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include C:\Users\Fish\Desktop>