kennt sich jemand mit der Funktion ZwReadFile aus?

OP #4909973
Lesenswert?

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 !!
#4910826
Lesenswert?

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.
#4910848
Lesenswert?

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.
#4910849
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren