ich habe ein problem mit der funktion ZwReadFile! ( windows driver) code: //////////////////////////////////////////////////// //////////////////////////////////////////////////// NTSTATUS NtStatus = STATUS_SUCCESS; UNICODE_STRING uniName; OBJECT_ATTRIBUTES objAttr; HANDLE handle; IO_STATUS_BLOCK ioStatusBlock; ULONGLONG buffer; RtlInitUnicodeString(&uniName1, L"\\DosDevices\\C:\\test\\test.txt"); InitializeObjectAttributes(&objAttr, &uniName, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL); NtStatus = ZwCreateFile(&handle, GENERIC_READ, &objAttr, &ioStatusBlock, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); if (NT_SUCCESS(NtStatus)) { ZwReadFile(handle1, NULL, NULL, NULL, &ioStatusBlock, &buffer, 8, NULL, NULL); } ZwClose(handle); return 0; //////////////////////////////////////////// /////////////////////////////////////////////// wenn ich es so mache ist mein ULONGLONG buffer falsch!! ich bekomme einfach nicht die werte die in meinem test.txt stehen!!! aber waaaaarrrrruuuuummmmm ;) ich bin verzweifelt !! bitte helft mir !!
:
Verschoben durch Moderator
Was meinst du mit Werten, die in deinem text.txt stehen? Stehen das Zahlen als Dezimalzahl in ASCII drin? Ich sehe nirgendwo, dass du versuchst, eine Zahl zu parsen.
dort steht eine hex zahl drin!!!! die ich einer globalen variable übergeben will(&buffer)!! was meinst du mit parsen??? kannst du mir n beispiel geben wie du es machen würdest?? thx
:
Bearbeitet durch User
Andree S. schrieb: > dort steht eine hex zahl drin!!!! > > die ich einer globalen variable übergeben will(&buffer)!! > > was meinst du mit parsen??? > > kannst du mir n beispiel geben wie du es machen würdest?? > > thx Was ist denn genau der Inhalt des Text Files?
0x12345 aber auch wenn ich dort eine dezimal zahl rein schreibe z.b 12345 und sie mir ausgeben lasse ist sie falsch!!
Ein ULONGLONG ist 8 Byte lang, es müssen also mindestens 8 Byte in der Datei stehen, damit das funktioniert. Gib mal 8 Leerzeichen ein, dann müsste unabhängig von der Endianess der Wert 0x2020202020202020 (Dezimal 2314885530818453536) in der Variablen landen. Wenn das nicht das ist, was du brauchst, musst du halt noch an geeigneter Stelle konvertieren.
Andree S. schrieb: > NtStatus = ZwCreateFile(&handle, > GENERIC_READ, > &objAttr, &ioStatusBlock, > NULL, > FILE_ATTRIBUTE_NORMAL, > 0, > FILE_OPEN, > FILE_SYNCHRONOUS_IO_NONALERT, > NULL, 0); > > if (NT_SUCCESS(NtStatus)) { > > ZwReadFile(handle1, NULL, NULL, NULL, &ioStatusBlock, &buffer, 8, > NULL, NULL); Das handle das Dir ZwCreateFile übergibt, genau dieses musst Du in ZwReadFile benutzen, und kein anderes.
Außerdem reichen einzelne Satzzeichen an der jeweils passenden Stelle. Du stellst dich auch nicht auf den Marktplatz und schreist einfach rum. Ansonsten solltest du dich mit dem Unterschied zwischen Integern und Strings befassen. Eine Zahl (egal ob Hex oder Dezimal) in einer Textdatei ist nämlich kein Integer, sondern ein String.
Ja sry! habe mich verschrieben. das handle in ZwCreateFile ist handle und nicht handle1. aber trotzdem danke!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.