SPTI

| コメント(0) | トラックバック(0)
関心があってISO吸い出し挑戦したのですが、HFS/HFS+とのハイブリッドのディスク(Toastで言うカスタムハイブリッド)に対してReadFile()を使うと、ISOファイルシステムに含まれる領域しか読み出せないのですね。

# 正確にはドライブをCreateFile()で開いてReadFile()

SPTI経由でREAD(10)を発行すれば全て読み出せました。

やり方が悪いのか、IOCTL_CDROM_READ_TOC_EXがDVDだと通らないので、TOC取得の段階からSPTIに手を染めざるを得なかったりしますが。

WDKのapi/ntddscsi.hやddk/scsi.hに多少の定義がありますが、単純にunsigned charで定義したCDB配列、というよりSCSI_PASS_THROUGH構造体のCdbメンバに直接代入した方が楽なようです。

さてこのREAD(10)というコマンド、SCSIの初期から存在しているのだそうで。DVD規格が策定される10年以上前のコマンドで読み出せるのは、規格の素性と実装屋の頑張りと、最初の人と当時の人が思われて感動します。

さらにREAD(10)の原型になったREAD(6)コマンドは、SASIから取り込まれたものだそうで、悠久の時を感じる物語。SASIの最大40MBなんて容量は、今ではHDDのキャッシュです。

SASIはSCSIに移行し、そのSCSIも個人向けからは姿を消しましたが、コマンド体系はATAPIに流用され、こうして今も隣にいるのです。

トラックバック(0)

トラックバックURL: https://mychro.mydns.jp/cgi-bin/mt/mt-tb.cgi/211

コメントする

アーカイブ

ウェブページ

Powered by Movable Type 5.2.13

ホームページ