デルファイでは、論理ディスクドライブデバイス "C:\"からRawストリームとして直接CDを読み込むことができるかどうかを知りたいと思います。CDをファイルとして読むには?
有効なファイルハンドルが既にある場合は、TFileStreamを使用できたらいいですか?
デルファイでは、論理ディスクドライブデバイス "C:\"からRawストリームとして直接CDを読み込むことができるかどうかを知りたいと思います。CDをファイルとして読むには?
有効なファイルハンドルが既にある場合は、TFileStreamを使用できたらいいですか?
私の見解ではTFileStream
ではなくTHandleStream
を使用するのが最も簡単です。このように:
procedure ReadFirstSector;
var
Handle: THandle;
Stream: THandleStream;
Buffer: array [1..512] of Byte;
b: Byte;
begin
Handle := CreateFile('\\.\C:', GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if Handle=INVALID_HANDLE_VALUE then
RaiseLastOSError;
try
Stream := THandleStream.Create(Handle);
try
Stream.ReadBuffer(Buffer, SizeOf(Buffer));
for b in Buffer do
Writeln(AnsiChar(b));
finally
Stream.Free;
end;
finally
CloseHandle(Handle);
end;
end;
rawディスクアクセスを使用しているときは、セクタの正確倍数を読まなければならないことに注意してください。私がテストしたディスクのセクタは512バイトです。私は、CDディスクセクタが非常にうまく別のサイズになることを期待しています。
パターンは '\\。\ DRIVELETTER:'です、そうですか?私には特別な賛成をお願いします:私はネイティブスピーカーではありません。混乱していると私の投稿を改善するヒントを与えることができますか?(投稿されたらすぐにダウンワードのラインファイヤーの下にあった) – menjaraz
物理ボリュームの名前はここに記述されています:http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858.aspx#physical_disks_and_volumes私はあなたの投稿を理解するのに問題はありませんでした。時々あなたは何らかの知識が不足している可能性があるため、あなたが意味することを理解していない人々からダウンポートを取り上げることがあります。あなたはあまりそれについて行うことはできません。心配しないでください。私はあなたに今upvoteを与えるよ! –
@Davidそして答えが提供されていない情報に依存している場合、人々は不完全な質問を投票します。 –
-1あなたの質問は私にはあいまいです。あなたの質問を更新して、CD上のデータをどのように扱うかを言います。 –
@ Styne666:データにアクセスする前に、どうやってデータを扱うことができますか?私の強い確信は、論理的なファイルを使ってそれにアクセスすること(つまり、物理的なメディア全体として、私が意味することです)が行く方法です。 'データ'という用語を使用しても混乱しますが、これは人々にファイルシステムを考えるようになるかもしれません。 – menjaraz
それが私の要点です。 「CDをファイルとして読み込む」と言うのは曖昧です。質問が明確になるように**あいまいさはありません**。 –