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
RAW-Zugriffe
Re: RAW-Zugriffe
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)
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Re: RAW-Zugriffe
Hl,
wen *Buffer anzeigen will bekomme ich dem fehler:
Die angegebene Speicherposition ist nicht gültig für das Lesen.
Gruß
MAUPA
wen *Buffer anzeigen will bekomme ich dem fehler:
Die angegebene Speicherposition ist nicht gültig für das Lesen.
Gruß
MAUPA
-
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Re: RAW-Zugriffe
So wird das nicht gehen:
Sondern so:
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)
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)
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Re: RAW-Zugriffe
danke funktioniert Klasse
Gruß
maupa
Gruß
maupa