"DeviceIoControl" - IOCTL_DISK_GROW_PARTITION
-
hey,
ich möchte gerne die virtuelle größe meines datenträgers erweitern - dazu habe ich folgendes probiert:
#define _WIN32_WINNT 0x0500 #include <Windows.h> #include <iostream> #include <conio.h> int main() { DISK_GROW_PARTITION dgp; dgp.BytesToGrow.HighPart = 500; dgp.PartitionNumber = 0; HANDLE handle = CreateFile("\\\\.\\H:", GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); DWORD dwBytesReturned; DeviceIoControl(handle, IOCTL_DISK_GROW_PARTITION, &dgp, sizeof(dgp), NULL, 0, &dwBytesReturned, NULL); printf("Handle: %d\nDeviceIoControl returned bytes:%d\nGetLastError:%d", handle, dwBytesReturned, GetLastError()); CloseHandle(handle); getch(); return 0; }Resultat:
Handle: 4084
DeviceIoControl returned bytes:-858993460
GetLastError:5habe ich irgendetwas bei CreateFile verbockt?
danke & lg
-
Wo fragst Du denn hier den Rückgabewert von DeviceIoControl ab?
Ansonsten: VS: Tools|Error Lookup
-
Jochen Kalmbach schrieb:
Wo fragst Du denn hier den Rückgabewert von DeviceIoControl ab?
Ansonsten: VS: Tools|Error Lookuphey,
DeviceIoControl returnt 0.
Was der error-code 5 bedeutet hatte ich schon rausgebracht --> zugriff verweigert. - deshalb bin ich auf die idee gekommen, dass ich etwas bei createfile verbockt hab.lg
-
Hi,
ich denke du musst den CreateFile auf das Drive Device machen nicht auf das Volume!CreateFile(dHanlde, "\\.\\PhysicalDrive0", ...)...

-
Hallo
Deine CreateFile sollte so aussehen:
hDevice = CreateFile("\\.\\PhysicalDriveX",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, 0);Du kannst nicht eine Overlapped (FILE_FLAG_OVERLAPPED) in die CreateFile nehmen wenn du diese nicht in der DeviceIoControl funktion verwendest.
Nähere Infos findest du im MSDN ! :xmas1: