// DeviceIoControl allows program to access hidden area HANDLE OpenBlockDevice(const WCHAR *szDevName, bool fWrite) { HANDLE h = CreateFile(szDevName, fWrite ? GENERIC_WRITE : GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING | (fWrite ? FILE_FLAG_WRITE_THROUGH : 0), NULL); if (h != INVALID_HANDLE_VALUE) { // Disable volume boundary checks by FS DWORD dwBytes = 0; DeviceIoControl(h, FSCTL_ALLOW_EXTENDED_DASD_IO, NULL, 0, NULL, 0, &dwBytes, NULL); } return h; }