Seite 3 von 3
Re: RAW-Zugriffe
Verfasst: 25.08.2013 05:09
von maupa
Ich habe doch aber noch eine Frage die ich alleine nicht lösen kann, wahrscheinlich wieder Brett vor dem Kopf.
Wenn ich mehr lesen will Logo man vergrößert dem Buffer und so weiter.
Aber irgendwann ist Ende von Speicher.
Wie kann ich ReadFile_ sagen das er die Nächten 1024 Byte lesen soll.
So als Beispiel will ich 16 Gigabyte Auslesen hab aber nur 4 Gigabyte Speicher.
Oder ich will nur ein bestimmten Bereich lesen.. Hat da wer eine Lösung für wie ich direkt dahin lesen kann?
Danke
MAUPA
Re: RAW-Zugriffe
Verfasst: 25.08.2013 10:00
von _JON_
Du müsst einfach nur die Leseposition ändern.
Code: Alles auswählen
Import "kernel32.lib"
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
SetFilePointerEx_.l(*hFile, liDistanceToMove.q, *lpNewFilePointer, dwMoveMethod.l) As "SetFilePointerEx"
CompilerElse
SetFilePointerEx_.l(*hFile, liDistanceToMove.q, *lpNewFilePointer, dwMoveMethod.l) As "_SetFilePointerEx@20"
CompilerEndIf
EndImport
;Springe 8 KB weiter
SetFilePointerEx_(*hFile, 8192, 0, 0)
;Lese die nächsten 8 KB
ReadFile_(*hFile, *Buffer, 8192, @NumberRead, 0)
Re: RAW-Zugriffe
Verfasst: 25.08.2013 15:03
von maupa
Hl,
wen *Buffer anzeigen will bekomme ich dem fehler:
Die angegebene Speicherposition ist nicht gültig für das Lesen.
Gruß
MAUPA
Re: RAW-Zugriffe
Verfasst: 25.08.2013 19:22
von Andreas21
So wird das nicht gehen:
Code: Alles auswählen
Import "kernel32.lib"
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
SetFilePointerEx_.l(*hFile, liDistanceToMove.q, *lpNewFilePointer, dwMoveMethod.l) As "SetFilePointerEx"
CompilerElse
SetFilePointerEx_.l(*hFile, liDistanceToMove.q, *lpNewFilePointer, dwMoveMethod.l) As "_SetFilePointerEx@20"
CompilerEndIf
EndImport
;Springe 8 KB weiter
SetFilePointerEx_(*hFile, 8192, 0, 0)
;Lese die nächsten 8 KB
ReadFile_(*hFile, *Buffer, 8192, @NumberRead, 0)
ShowMemoryViewer(*Buffer, 1024)
Sondern so:
Code: Alles auswählen
Define *hFile, NumberRead.l, *Buffer
Import "kernel32.lib"
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
SetFilePointerEx_.l(*hFile, liDistanceToMove.q, *lpNewFilePointer, dwMoveMethod.l) As "SetFilePointerEx"
CompilerElse
SetFilePointerEx_.l(*hFile, liDistanceToMove.q, *lpNewFilePointer, dwMoveMethod.l) As "_SetFilePointerEx@20"
CompilerEndIf
EndImport
*hFile = CreateFile_("\\.\\C:", #GENERIC_READ, #FILE_SHARE_READ | #FILE_SHARE_WRITE, 0, #OPEN_EXISTING, #FILE_ATTRIBUTE_NORMAL, 0)
If *hFile = #INVALID_HANDLE_VALUE : End "" : EndIf
SetFilePointerEx_(*hFile, 8192, 0, 0)
*Buffer = AllocateMemory(1024)
ReadFile_(*hFile, *Buffer, 1024, @NumberRead, 0)
CloseHandle_(*hFile)
ShowMemoryViewer(*Buffer, 1024)
Re: RAW-Zugriffe
Verfasst: 25.08.2013 19:55
von maupa
danke funktioniert Klasse
Gruß
maupa