![]() |
Re: ISO-Image einer CDDA mit CreateFile und ReadFile möglic
Beim Lesen von Blockdevices muss die Leseposition eine Blockgrenze (bzw. der Anfang eines Blocks) sein, mittendrin anfangen zu lesen klappt nicht. Und weil in deiner Funktion oben (function ReadCDAudioSector) am Anfang mit CB_CDROMSECTOR gearbeitet wird, vermute ich mal dass da mit 2048 statt 2352 bzw. 2336 (je nach Trackmode) gerechnet wird - Der Lesezugriff schlägt dann auf die eine oder andere Art fehl. Beim direkten Lesen von USB-Devices muss darüber hinaus noch der Puffer im Speicher auf Speicherseiten aligned sein, so einen passend plazierten Puffer erhaelt man mittels VirtualAlloc. Ich hatte vor geraumer Zeit auch mal mit diesen Sourcen rumgespielt, dann aber irgendwann keine Zeit mehr gehabt, alles hinzubiegen.
|
Re: ISO-Image einer CDDA mit CreateFile und ReadFile möglic
Zitat:
Laut Muetze1 (ich hoffe er war es) könnte das daran liegen, daß zum Auslesen der Speicher in 'nem bestimmten Bereich ganz weit vorn im RAM liegen muß und demnach Windows wohl über 'nen eigenen Zwischenspeicher geht und dann die Daten erst und deinen Speicher rüberkopiert werden, wobei dort egal ist wo dieser Speicher rumliegt. Oder so in etwa ... jedenfalls geht es bei mir auch so, ohne aligned Speicher ... ist schon praktisch, wenn man da z.B. auch einfach etwas aus'm Stack nutzen kann und sich die Resourcenschutzblöcke, samt Speicherreservierung/-freigabe spart. :angel: Aber Schaden kann es ja nie :roll: |
Re: ISO-Image einer CDDA mit CreateFile und ReadFile möglic
Zitat:
Virtualisierungen im Sinne des V86 und Protected Modes gelten für die CPU und den Dingen die darauf ablaufen, der DMA Controller hängt aber ausserhalb der CPU im System und kümmert sich soweit selbstständig um die Datenübertragung kann nur mit physikalischen Adressen - und sein Register ist für diese beschränkt. |
Re: ISO-Image einer CDDA mit CreateFile und ReadFile möglic
Zitat:
Ich schau mal ob ich die Seite in der MSDN wiederfinde. Edit: Hier isses: [msdn]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/readfile.asp[/msdn] Allerdings hatte ich es etwas anders in Erinnerung, der Puffer muss sector-aligned sein. Da die Pagegröße praktisch immer ein Vielfaches der Sektorgröße ist, erfüllt das Alignment auf Pages den gleichen Zweck :) Zitat:
|
Re: ISO-Image einer CDDA mit CreateFile und ReadFile möglic
@Muetze1: OK, wenn man dat so sieht, dann könnte es hinkommen :wall:
Zitat:
Bei ReadFile/WriteFile und beim DMA-Trasfer ... was an Daten drin stand war eigentlich ganz OK :angel: |
Re: ISO-Image einer CDDA mit CreateFile und ReadFile möglic
Vielleicht hattest Du einfach nur Glück und Deine Puffer waren zufällig halt entsprechend aligned :) Zumindest unter W2K (hab es später nicht mehr auf XP getestet, da ich es für sinnvoller hielt, eine Lösung zu implementieren die unter beiden Systemen funktioniert...) gehts mit krummen Werten definitiv nicht gut. Von mir aus kann ich gerne mal den Source rauswühlen und Samples posten :)
|
Re: ISO-Image einer CDDA mit CreateFile und ReadFile möglic
Entschuldigung für die späte Antwort. Ich war ein paar Wochen auf Montage und hatte keinen Internetzugang.
Zitat:
Zitat:
FILE_FLAG_NO_BUFFERING werde ich mal versuchen, Zitat:
![]() In allen Sourcen, welche ich fand, wurde bei der Positionierung mit der Größe der Nutzdaten von Datensektoren gerechnet. Anschließend wird der Typ des Sektors eingestellt und die tatsächliche Größe der Nutzdaten gelesen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz