2012-03-16 2 views
4

ISO 9660 파일 시스템에서 파일 읽기에 대해 this 문서를 읽었으며 파일을 메모리로 읽는 방법에 대해 혼란스러워합니다. 나는 루트 디렉토리가 PVD의 오프셋 156에 있다는 것을 알고 있는데, 루트 디렉토리에있는 파일을 찾는 데 어떻게 사용하겠습니까? 일단 파일 이름을 찾으면 파일이있는 주소를 어떻게 찾을 수 있습니까? 그래서 그것을 메모리에로드 할 수 있습니다 (int 0x13 AH = 42 사용)?ISO 9660 파일 시스템에 파일로드

답변

7

BIOS는 int로 13h를 직접 액세스 할 수있는 CD 드라이브를 만들지 않을 수 있습니다. 플로피 및 HDD 만 int 13h로 직접 액세스 할 수 있습니다. CD로 부팅 한 경우 (BIOS가 지원하는 경우), int 13h를 사용하여 CD에 액세스 할 수 있지만, 작동하도록 보장 된 유일한 옵션은 전체 CD가 아닌 에뮬레이션 모드입니다 부팅 이미지는 마치 FDD 또는 HDD 인 것처럼 설정됩니다 (이 경우 BIOS는 일반적으로 드라이브 번호 0 또는 80h를 에뮬레이트 된 디스크 AKA A:C:에 할당합니다). 이 문제에 대한 토론은 here입니다.

I/O 포트를 사용하여 CD에서 직접 데이터를 읽으려면 CD 드라이버를 작성해야 할 수 있습니다.

ISO9660의 경우 (오프셋 156에 있음)에서 Directory entry for the root directory을 읽을 필요가 있습니다. 그런 다음 Location of extent (LBA) (오프셋 2) 및 Data length (size of extent) (오프셋 10)에 Directory entry for the root directory에 관심이 있습니다. 이것들은 디렉토리 데이터 (파일/디렉토리 목록)의 위치와 그 크기를 알려줍니다.

이 목록은 기본적으로 길이가 가변적 인 동일한 디렉터리 항목 목록입니다 (변수 파일/디렉터리 이름 길이 및 패딩 때문에). 이 파일을 읽을 때 모든 항목 중 File flags을보고 파일 또는 디렉토리인지 확인해야합니다. 디렉토리이고 디렉토리에 액세스하려는 경우 반복적으로 전체 프로 시저를 반복합니다. 파일 인 경우 Location of extent (LBA) (오프셋 2) 및 Data length (size of extent) (오프셋 10)은 파일의 위치와 크기를 알려줍니다.

바라기를, 나는 나의 오래된 CD 부호가 유용하지 않기 때문에, 나는 이것을 망쳐 놓지 않았다.

위의 내용은 CD, 대부분의 CD를 읽어야하는 방법에 대한 설명입니다. FS는 불필요하게 일반적이고 복잡하며 모든 상황에서 올바르게 읽을 수없는 많은 기능과 옵션이 있습니다.

몇 가지 .iso 파일, 16 진수 편집기 및 계산기를 얻고 논리를 두 번 확인하고 파일 시스템을 더 잘 숙달하는 것이 좋습니다.

+0

감사합니다. 지금은 훨씬 더 의미가 있으며, 시간이 지나면 논리를 다시 확인합니다. – Codesmith