Frage zu IOCTL
-
Hallo,
#include <windows.h> #include <winioctl.h> #include <iostream.h> int main(int argc, char* argv[]) { HANDLE hDevice = CreateFile("\\.\PHYSICALDRIVE0", 0, GENERIC_READ, NULL, OPEN_EXISTING, 0, NULL); DWORD OutBuffer[512]; DWORD tmp[256]; BOOL result = DeviceIoControl(hDevice, IOCTL_DISK_GET_DRIVE_LAYOUT, NULL, 0, OutBuffer, sizeof(OutBuffer), tmp , (LPOVERLAPPED) NULL); cout<<"ID:"<<result<<endl; return 0; }
Wie schreibe ich das resultat vom DeviceIoControl in das cout?
cout<<"ID:"<<result<<endl;
gibt mir immer einen zero Wert zurück.
2.)
Die Ausgabe sollte ja eine 8 stellige Zahl sein..
Ist es möglich die Ausgabe mit IOCTL_DISK_SET_DRIVE_LAYOUT zu ändern?Wäre gut wenn jemand vielleicht ein Beispiel hätte!
Mit freundlichen Grüßen,
Daniel
-
Hallo,
ich habe nie verstanden, warum irgendjemand cout verwendet
wenn es printf gibt. Klar, printf enthält ein paar Fallen die man
kennen muss aber sonst ist es die erste Wahl. Gerade die fehlende Formatierungsmöglichkeit zeigt, wie unbrauchbar cout ist.Benutze einfach printf und du kannst die Formatierung angeben.
Beispiele:
Hex-Zahl-ausgegeben : printf ("0x%08X", val);
Dezimalzahl ausgeben: printf ("%d", val);
String ausgeben : printf ("%s");
Mehr : printf ("Anfrage erhalten am %02d.%02d.%04d um %02d:%02d, %d User angemeldet.", tag, mon, jahr, std, min, user);Das einzige worauf du immer achten musst ist, das du die
gleiche Anzahl von Prozentzeichen und Parametern verwendest.
Gebe printf nie einen String direkt, sondern immer über %s.
cout ist in keiner Weise sicherer als printf.