Непонятна причина возникновения ошибки записи на раздел диска

Хотел проверить в виртуальной машине программку, написанную для проверки работоспособности кода, чтобы в дальнейшем сделать редактор диска. Сразу к сути: когда программа доходит до 200001 сектора в разделе, NtWriteFile возвращает -1073741811 и не перезаписывает сектора дальше. В чём я допустил ошибку?

Код:

BYTE ntBuff[512];
HANDLE hDevice = 0;
UNICODE_STRING uDevicePath;
LPCWSTR lpDevicePath = L"\\Device\\Harddiskvolume1";
IO_STATUS_BLOCK ioStats;
OBJECT_ATTRIBUTES objAttrs = { sizeof(OBJECT_ATTRIBUTES), 0, &uDevicePath, OBJ_CASE_INSENSITIVE, 0, 0 };
LONGLONG nextPartitionNumber = 1;
DWORD dwOut = 0;

RtlInitUnicodeString(&uDevicePath, lpDevicePath);
for (int i = 0; i < 512; i++) ntBuff[i] = 0xcf;
if (NtOpenFile(&hDevice, FILE_GENERIC_WRITE, &objAttrs, &ioStats, FILE_SHARE_VALID_FLAGS, FILE_SYNCHRONOUS_IO_NONALERT) != STATUS_SUCCESS)
{
    std::cout << "Cannot open device." << std::endl;
    getchar();
    return -1;
}
if (!DeviceIoControl(hDevice, FSCTL_LOCK_VOLUME, 0, 0, 0, 0, &dwOut, 0))
{
    std::cout << "Cannot lock device." << std::endl;
    NtClose(hDevice);
    getchar();
    return -2;
}
for (ULONGLONG i = 0; i < ULLONG_MAX; i++)
{
    NTSTATUS ntWrite = NtWriteFile(hDevice, 0, 0, 0, &ioStats, &ntBuff, 512, 0, 0);
    if(ntWrite != STATUS_SUCCESS)
    {
        std::cout << "Cannot write to device(" << ntWrite << ")" << std::endl;
        NtClose(hDevice);
        getchar();
        return -3;
    }
}

Я пробовал переключиться на второй раздел диска, но он попросту не открылся


Ответы (0 шт):