A while ago I had an Intel Matrix RAID-1 pair of drives that got broken. One of them turned “red” and – since both drives were only a few serial numbers apart – the other was giving issues the moment I tried fiddling with it.
These actions failed:
Windows image backup – would end up with a “blue” screen indicating Windows 10 had a problem and was trying to collect data
Paragon HDM
Migrating the OS to a brand new RAID-1 set
P2V
Disk2vhd would hang at the 100% completion mark
What had succeeded was a regular Windows backup (a non-image one).
This is what I finally did to get it working again:
Kill disk2vhd after it hung a few hours at the 100% completion mark
Verify with
Mark the VHD file as online using diskpart (first atach the vdisk, select disk, then mark it online)
Verify with chkdsk that the image was in fact without problems
Detach the VHD file using diskpart
Copy the VHD file to a HDD that Paragon HDM would recognise
Use Paragon HDM to perform a V2P copy
Paragon expects a .VD file, but if you ask it to use all file types, it does recognise that VHD files contain disk images
Even when the Delphi team was large, the documentation was lacking, so with the reduced Delphi team size, I don’t have high expectations of the below to get fixed.
But since much of the post Delphi 7 run-time library looks a lot like the .NET core, you can usually fallback to the Microsoft documentation.
I knew that methods on interfaces were not compatible with the procedure of object (like [WayBack] TProc)or function of object construct, but they are also not compatible with the reference to procedure or reference to function construct.
It’s not nearly as good as the one by Uwe Raabe, but I didn’t really update this code for about a decade as it has functioned well for me in the current state: in 2009 it was like [WayBack] bo library – Source Code.
A couple of years ago I wrote a two-part article about a dataset enumerator: A Magical Gathering – Part 1 and Part 2. Well, things evolved a bit since then and I wondered how one would implement something similar given the current features of Delphi. Actually I am following here a suggestion from commenter Alan Clark.
So for now it’s just to document that my enumerator is there and that it works as intended.
It taught me that CreateFileA and CreateFileW (the ANSI and Unicode versions of [WayBack] CreateFile function (Windows)) accept a FILE_FLAG_DELETE_ON_CLOSE parameter, so as soon as you close the handle, Windows will dispose of the file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Because the CLR is a managed environment there are several components within the runtime that need to be initialised before any of your code can be executed. This post will take a look at the EE (Execution Engine) start-up routine and examine the initialisation process in detail.
Lots of interesting stuff happening before your code even gets executed. Many of the pieces can log.