Lời giới thiệu
Phương tiện lưu trữ dữ liệu phổ biến nhất hiện nay là CD-ROM. Các nhà sản xuất máy tính hàng đầu cũng đã trang bị CD cho các máy tính PC. CD ngày nay đã đến với từng gia đình, mang lại cho người sử dụng rất nhiều tiện ích mutimedia.
Các nhà phát triển hệ thống đã điều chỉnh các ổ đĩa cứng với các phần mềm phù hợp để chạy trên đĩa CD. Các ứng dụng thấy được sự tiện lợi khi sử dụng đĩa CD cũng như thấy được khối lượng dữ liệu khổng lồ mà CD có khả năng lưu trữ.
Trong phần báo cáo
19 trang |
Chia sẻ: huyen82 | Lượt xem: 1416 | Lượt tải: 0
Tóm tắt tài liệu Tìm hiểu cách truy cập CDROM, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
này của chúng em, phần đầu chúng em trình bày về cơ sở lý thuyết về cấu trúc lưu trữ của ổ đĩa CD. Phần sau trên cơ sở những lý thuyết đó chúng em xây dựng chương trình để truy cập vào cấu trúc điều khiển của đĩa CD.
Báo cáo đề tài CDROM.
Khuôn dạng vật lý:
- CD-ROM được tổ chức như thế nào:Bề mặt có thể ghi của CD-ROM có thể được chia thành 3 phần:
+ Lead in: 4mm đầu tiên, chứa các bảng nội dung.
+ Data Area: có thể đạt tới 33 mm tuỳ thuộc vào số lượng dữ liệu.
+ Lead out: đánh dấu sự kết thúc của vùng dữ liệu, rộng khoảng 1mm.
Cấu trúc của đĩa CD
Thông tin được lưu trữ trên CD dưới dạng các pit (vết lõm) và các lands;CD được lưu trữ từ trong ra ngoài.
Vị trí của các pit và land trên CD-ROM
Các phương pháp lưu trữ dữ liệu CAV và CLV:
CAV (Constant Angular Velocity): tốc độ góc không đổi, ứng dụng trong đĩa cứng, tiến hành truy cập dữ liệu ở các tốc độ khác nhau, tuỳ theo khoảng cách của đầu từ đến trục ổ đĩa ở xa hay gần. Do đó thời gian khôI phục dữ liệu nhanh hơn khi đầu từ ở gần trục trung tâm, và trung gian khôI phục sẽ chậm dần khi đầu từ được chuyển từ trong ra ngoài.
CLV (Constant Linear Velocity):tốc độ tuyến tính không đổi, làm nhanh hoặc làm chậm tốc độ quay của đĩa để đảm bảo tốc độ đĩa ở điểm đọc luôn không đổi. Để đảm bảo tốc độ tuyến tính không đổi đĩa phải quay chậm hơn khi đọc hoặc ghi ở gần trục tâm.
Sự thay đổi tốc độ quay liên tục của đĩa CD là một trong những lý do làm cho thời gian truy cập trên CD ROM chậm hơn trên ổ cứng.
Các phương pháp lưu trữ thông tin trên đĩa từ
Lưu trữ các bit và các byte:
Bởi sự giới hạn về kỹ thuật, mỗi land (hoặc pit) có độ dài tối thiểu là 3 bit, và lớn nhất là 11 bit. Với giới hạn này ta không thể biểu diễn hai bit 1 liền nhau, cho nên không diễn tả hết được các hoán vị của 0 và 1, dẫn đến phải dùng lược đồ EFM (Eight-to-Fourteen Modulation).
Bảng EFM
Mỗi byte 8 bit thông thường giờ đây được chuyển thành byte với 14 chanel bit, và sự chuyển đổi này dựa vào một bảng là một phần của đơn vị điều khiển trên mọi ổ CD-ROM.
Nhưng còn vấn đề nữa đặt ra là nếu kết thúc của một byte là một chanel 1 và bắt đầu của byte tiếp theo là chanel 1 thì không thể thể hiện được, cho nên phải chèn thêm 3 bit được gọi là 3 bit trộn để tách biệt giữa các byte, dẫn đến một byte có 17 chanel bit.
Các frames:
Khối thông tin nhỏ nhất trên một CD được gọi là một frame.
Một frame bao gồm 24 byte.
Các sector:
CD Audio có thể đọc 75 sector/second.
Địa chỉ dữ liệu trên CD dựa trên cơ sở các đơn vị thời gian có dạng: minutes/seconds /sector.
Một sector được định dạng trên CD
Các subchannel:
Một subchannel là sự kết hợp của tất cả các bit trong cùng một vị trí củâ các byte điều khiển của các frame kế tiếp.
Luồng dữ liệu bao gồm các bit dữ liệu của 98 byte điều khiển trong một sector được gọi là P-channel, và tương tự các luồng dữ liệu được thiết lập từ bit thứ hai là Q-channel. Sáu bit tiếp theo lập nên sau kênh từ R đến W.
Minh hoạ một Subchannel
Subchannel P chỉ ra rằng music hay dữ liệu máy tính được tìm thấy trong một sector.
Subchannel Q chứa đựng các thông tin thời gian, nó có thể là thời gian tuyệt đối tính từ sự khởi đầu của CD (ATime ) hay là thời gian tính theo track.
Trong vùng Lead in, 72 bit của subchannel Q chứa đựng bảng nội dung 26 bit sử dụng cho đồng bộ và sửa lỗi.
Subchannel RàW chứa đựng dữ liệu đồng bộ và sữa lỗi.
Sửa Lỗi:
Có 2 x 39 Byte thông tin sửa lỗi trên mỗi Sector
Với CD Audio sử dụng kỹ thuật - Reed - Solomon - Code.
Với CD - ROM sử dụng - Cross Interleaved Reed Solomon Code
CIRC:
Sử dụng CIRC, với khuôn dạng CD - DA ta có tỷ lệ mắc lỗi là 1/108.
tỷ lệ vẫn cao đối với các dữ liệu quan trọng à có một khuôn dạng mới
Các khuôn dạng CD – ROM:
Xét mode 1: với việc giảm vùng data (2352 -> 2048 byte) và tăng thông tin sửa lỗi -> khả năng sinh lỗi giảm.
Làm việc với 2k data là dễ dàng nhất đối với lập trình viên -> dùng để lưu các thông tin quan trọng.
Xét mode 2: không thêm vào các tín hiệu sửa lỗi -> dùng lưu các thông tin không quan trọng (ví dụ ảnh).
Ưu điểm: tỷ lệ chuyển giao dữ liệu nhanh, ví dụ trong 1 giây.
chế độ 1: 75 x 2048 = 150 K
chế độ 2: 75 x 236 = 171 K
Mode 0: Sector rỗng, lấp đầy bởi 0
Khuôn dạng XA (Extended Architecture):
Chuẩn XA được phát triển để giải quyết một vấn đề đặc biệt cho các ứng dụng Multimedia. Ví dụ hiển thị văn bản trên màn hình trong khi đang chạy video và có nền của một bản nhạc, một ứng dụng phải đồng thời sử lý 3 luồng dữ liệu từ 3 file riêng biệt. Hơn nữa, ứng dụng phải thực hiện trong thời gian thực. Tuy nhiên với một CPU thì nó phải lặp đi lặp lại các công việc với các số lượng nhỏ dữ liệu của văn bản, video và music. Điều đó có nghĩa là CPU phải tải một phần file văn bản sau đó là một phần video, và cuối cùng là một phần của file music. Với khả năng truy cập chậm của CD - ROM thì thế giới muôn màu của Multimedia sẽ bị đổ sập nhanh chóng, video sẽ giật âm thanh bị méo và văn bản hiển thị không phù hợp.
Nét đặc trưng quan trọng của XA đó là khả năng chèn các Sector. Bởi kỹ thuật này mà CPU đọc cả 3 loại dữ liệu mà không phải di chuyển đầu dọc. Với kỹ thuật này, các Sector được lồng vào một file, ví dụ như 3 Sector văn bản bắt đầu một dãy tiếp theo là 4 Sectors video và tiếp theo là 3 Sector Audio. Bước này cứ lặp đi lặp lại cho tới khi cả 3 luồng dữ liệu đều hết.
XA flag trong Subheader của một Sector trong CD-ROM XA
High Sierra diễn tả khuôn dạng logic
Bây giờ ta sẽ đi tìm hiểu về các khuôn dạng logic - files và directorys.
Khuôn dạng HSG (High Sierra Group) nói về - Volume and File structure of compact Read only Optical Disk for Information Interchange.
ISO 9660 chấp nhận 99.5% sự đề xuất của HSG, điều khác biệt đó là cấu trúc các phần tử directory.
Logical Sectors
Kích thước của Sector logic HSG là 2048 byte (2k)
Mỗi Sector có một số duy nhất được gọi là Logical Sector Number (LSN)
Địa chỉ đầu tiên của LSN là 0 tương ứng với Sector vật lý tại địa chỉ 00:02:00, vì thế một số Sector vật lý đầu tiên hình thành 2s đầu tiên của CD không thể truy cập tại mức logic
Công thức chuyển đổi
LSN ( mm : ss : ff) = (mm*60 +ss)*75 - 150
Logical Blocks (LBN)
Đế dễ dàng cho việc xử lý các Sector logic có thể được chia thành các logical blocks (LBN)
LBN có thể là 512 byte, 1024 byte, hay 2048 byte.
LBN cũng được đánh số, ta lấy ví dụ với LBN = 512 byte
File và tên file
Các file HSG được lưu trữ dưới dạng một dãy liên tiếp các Logical blocks và được gọi là ‘extent’, vì thế ta sẽ không tìm thấy một bảng FAT trên CD-ROM, thay vào đó ta chỉ cần biết vị trí bắt đầu và độ dài của file là đủ.
Tên file HSG: 8 byte cho tên (chỉ chứa các ký tự hoa A-Z, các số 0-9 và dấu gạch dưới “_”) và 3 fbyte cho đuôi mở rộng.
Tên file ISO: 1 tên file có 32 ký tự có hoặc không có dấu chem.
Directory và SubDirectory
Cd có một thư mục gốc cho cấu trúc các file lưu trữ, thư mục gốc có thể có thư mục con, thư mục con có thể có thư mục con của nó, à cấp cao nhất là 8.
Thư mục gốc và tất cả các thư mục con của nó được lưu trữ như một file. Các file thư mục có thể được sắp xếp giữa các thư mục khác ở bất kỳ vị trí nào trên đĩa.
Offset
HSG field
Type
Meaning
ISO field
Type
00h
Len-dr
1 Byte
Độ dài các phần tử Direction (Byte)
=
01h
XAR-len
1Byte
Số lượng Sector logic dự trữ cho XAR
=
02h
Loc-ExtendI
1Word
Block logical đầu tiên của file tính theo Intel.
=
06h
Loc-ExtendM
1Word
Block logical đầu tiên của file tính theo Motorola.
=
0Ah
Data-len I
1Word
Độ dài file (Byte) tính theo Intel.
=
0Eh
Data-len M
1Word
Độ dài file (Byte) tính theo Motorola.
=
12h
Record time
6Byte
Ngày và thời gian của file
Record time
7Byte
18h
File flag HSG
1Byte
Các cờ của file HSG
19h
Reserver
1Byte
File flag ISO
1Byte
1Ah
Il-Size
1Byte
Số các sector liên tiếp trong việc ...
1Bh
Il-Skip
1Byte
1Ch
VSSN 1
1Word
Số Volume theo định dạng Intel.
1Eh
VSSN M
1Word
Số Volume theo định dạng Motorola.
20h
Len-fi
1Byte
Độ dài tên file.
21h
File-Id
nByte
Tên file, độ dài được xác định trong len-fi (32byte)
21h+n
Padding
1Byte
Fill Byte, khi trường kế tiếp không bắt đầu tại địa chỉ bộ nhớ even
Sys-data
nByte
Mọi thông tin ghi vào, từ chiều dài tên file (len-fi), chiều dài của trường fixed fiedls và toàn bộ chiều dài của thư mục vào (len-dr) có thể được tính toán.
Không có nhiều hơn 40 file trong một thư mục ố cho ta tìm kiếm một file nhanh chóng.
Vì có nhiều phần tử Directory nằm trong một sector logic nên chỉ cần đọc sector đầu tiên của một thư mục để tìm file mong muốn.
Bảng đường dẫn:
Cho ta tìm ra vị trí file một cách nhanh nhất.
Bảng đường dẫn chứa đựng tên của tất cả các thư mục và các thư mục con trên CD, nó cũng chứa chỉ số sector đầu tiên của file thư mục.
Có hai bản sao đường dẫn cho Intel và Motorola.
Extended Attribute Records (XAR):
Có bản ghi XAR cho người tạo ra file có khả năng lựa chọn các thông tin về file mà ta muốn, hình thành một kiểu hệ thống file hướng đối tượng.
Bên cạnh những thuộc tính được định nghĩa bởi người dùng, HSG có thể cung cấp một vài thuộc tính XAR như: Thẩm định quyền.
Volume:
Volume được hình thành bởi tất cả các file và các Directory lưu trữ trên CD.
HSG diễn tả Volume dựa trên hai thành phần: vùng hệ thống và vùng dữ liệu.
Vùng hệ thống chiếm giữ 16 Sector logic đầu tiên của CD (LSNO à LSN 15).
Standard Volume Descriptor: lưu giữ địa chỉ file directory với thư mục gốc và địa chỉ của Path table. Các tên của file CopyRight và Abstract file cũng được liệt kê ở đây, chúng nằm trong thư mục gốc. CopyRight cho biết thông tin về tác giả, Abstract file cho biết thông tin về nội dung của CD.
BootSector: bạn có thể đặt một boot sector ở đây nếu muốn đĩa CD trở thành một đĩa khởi động hệ thống.
Volume Sequential Terminal: chỉ ra lệnh kết thúc của CD.
Giới thiệu về ngắt 2Fh truy cập ổ đĩa CDROM:
Bảng liệt kê các chức năng của ngắt 2Fh truy cập CDROM:
AH
AL
Chức năng
15h
00h
Lấy số ổ đĩa CDROM trong hệ thống.
15h
01h
Lấy danh sách ổ đĩa CDROM.
15h
02h
Lấy tên file CopyRight
15h
03h
Lấy tên file Abstract
15h
04h
Lấy tên file Biblioghapic
15h
05h
Đọc nội dung bảng Volume.
15h
06h
Để dành (chưa dùng đến)
15h
07h
Để dành.
15h
08h
Đọc sector
15h
09h
Ghi sector
15h
0Ah
Để dành
15h
0Bh
Kiểm tra ổ đĩa CDROM
15h
0Ch
Lấy số hiệu phiên bản MSCDEX
15h
0Dh
Lấy các đơn vị của CD.
15h
0E/00h
Lấy mô tả tham chiếu Volume
15h
0E/01h
Thiết lập mô tả tham chiếu Volume
15h
0Fh
Đọc thư mục vào
15h
10h
Gửi truy vấn thiết bị
ý nghĩa của các thanh ghi sử dụng trong lời gọi ngăt 2Fh:
AH: Số hiệu chức năng của ngắt.
AL: Số hiệu hàm ngắt.
CX: Dùng cho các hàm chờ nhãn ổ đĩa CDROM được truy cập.
(0= A, 1 = B...).
ES:BX: Hàm chờ một con trỏ trỏ tới vùng đệm. ES chứa 8 bit cao, BX chứa 8 bit thấp.
DX: Với các hàm yêu cầu chính xác số lượng sector.
DI:SI: Với các hàm yêu cầu số sector,
CF: chỉ ra lỗi sau lời gọi ngắt (Nếu có).
AL: Mã lỗi trả về khi CF khác 0.
Một số hàm truy cập CDROM quan trọng:
Kiểm tra ổ đĩa CD-ROM (ngắt 2fh, hàm 15h, chức năng 00h):
(Trả về số lượng ổ CD mà MSCDEX có thể địa chỉ hoá trong thanh ghi BX).
Đầu vào:
AH=15H.
AL=00H.
Đầu ra:
BX= Số lượng ổ đĩa CDROM được quản lý.
CX = Nhãn ổ đĩa CDROM đầu tiên.
Lấy thông tin version của trình điều khiển MSCDEX đang sử dụng (ngắt 2fh, hàm 15h, chức năng 0Ch):
Đầu vào:
AH=15H.
AL=0CH.
Đầu ra:
BH= Giá trị phần nguyên của số hiệu phiên bản (ví dụ: version = 2.1 thì BH = 2 ).
BL = Giá trị phần thập phân của số hiệu phiên bản (BL = 1).
Xác định nhãn ổ đĩa CDROM (ngắt 2fh, hàm 15h, chức năng 0Dh):
Đầu vào:
AH=15H.
AL=0DH.
ES:BX = Con trỏ FAR trỏ tới vùng nhớ chứa thông tin về danh sách nhãn ổ CDROM.
Đầu ra:
ES:BX = con trỏ FAR trỏ tới vùng nhớ chứa thông tin về danh sách nhãn ổ CDROM.
Truy vấn ổ CDROM (ngắt 2fh, hàm 15h, chức năng 0Bh):
Đầu vào:
AH=15H.
AL=0BH.
CX=Nhãn ổ CDROM được truy cập (ví dụ: 0 = A; 1 = B...etc.)
Đầu ra:
AX = 0: Lỗi, đấy không phải là một ổ đĩa CDROM.
AX 0: Lỗi, đấy không phải là một ổ đĩa CDROM.
Đọc nội dung một Sector (ngắt 2fh, hàm 15h, chức năng 08h):
Đầu vào:
AH=15H.
AL=08H.
CX=Nhãn ổ CDROM được truy cập (ví dụ: 0 = A; 1 = B...etc.)
DX: Số sector cần đọc.
ES:BX= Con trỏ FAR trỏ tới vùng sector cần đọc
Đầu ra:
CF = 0: Đọc thành công.
CF = 1: Có lỗi.(nếu AL=15:Nhãn ổ CD không hợp lệ, AL=21: ổ chưa sẵn sàng)
Ghi Sector (ngắt 2fh, hàm 15h, chức năng 09h):
Đầu vào:
AH=15H.
AL=09H.
CX=Nhãn ổ CDROM được truy cập (ví dụ: 0 = A; 1 = B...etc.)
DX= Số sector cần ghi.
ES:BX= FAR trỏ tới vùng đệm chứa các sector cần ghi.
Đầu ra:
CF = 0: Đọc thành công.
CF = 1: Có lỗi.(nếu AL=15:Nhãn ổ CD không hợp lệ, AL=21: ổ chưa sẵn sàng)
Lưu ý: Mỗi Sector có 2048 byte nên vùng nhớ (buffer) phải đáp ứng đủ số bộ nhớ cho việc đọc ít nhất là 2048 byte để thực hiện thao tác đọc hoặc ghi sector.
Lấy thông tin về tên file CopyRight, Abstract, Bibliogragh :
Lấy tên file CopyRight (ngắt 2fh, hàm 15h, chức năng 02h):
CopyRight cho biết thông tin về tác giả của đĩa đang được quản lý.
Đầu vào:
AH=15H.
AL=02H.
CX=Nhãn ổ CDROM được truy cập (ví dụ: 0 = A; 1 = B...etc.)
ES:BX= FAR trỏ tới vùng đệm chứa tên file đọc được.
Đầu ra:
CF = 0: Đọc thành công.
CF = 1: Có lỗi.(nếu AL=15:Nhãn ổ CD không hợp lệ).
Lấy tên file Abstract (ngắt 2fh, hàm 15h, chức năng 03h):
Abstract file cho biết tổng quan về nội dung dữ liệu ghi trên đĩa.
Đầu vào:
AH=15H.
AL=03H.
CX=Nhãn ổ CDROM được truy cập (ví dụ: 0 = A; 1 = B...etc.)
ES:BX= FAR trỏ tới vùng đệm chứa tên file đọc được.
Đầu ra:
CF = 0: Đọc thành công.
CF = 1: Có lỗi.(nếu AL=15:Nhãn ổ CD không hợp lệ).
Lấy tên file tài liệu Biblioghraphic (ngắt 2fh, hàm 15h, chức năng 04h):
File Biblioghraphic cho ta biết thông tin về nguồn thông tin ghi trên đĩa.
Đầu vào:
AH=15H.
AL=04H.
CX=Nhãn ổ CDROM được truy cập (ví dụ: 0 = A; 1 = B...etc.)
ES:BX= FAR trỏ tới vùng đệm chứa tên file đọc được.
Đầu ra:
CF = 0: Đọc thành công.
CF = 1: Có lỗi.(nếu AL=15:Nhãn ổ CD không hợp lệ).
Đọc VTOC (ngắt 2fh, hàm 15h, chức năng 05h):
Đầu vào:
AH=15H.
AL=05H.
CX=Nhãn ổ CDROM được truy cập (ví dụ: 0 = A; 1 = B...etc.)
ES:BX= FAR trỏ tới vùng đệm chứa tên file đọc được.
Đầu ra:
CF = 0: Đọc thành công.
CF = 1: Có lỗi.(nếu AL=15:Nhãn ổ CD không hợp lệ).
Gửu yêu cầu đến trình điều khiển thiết bị (ngắt 2fh, hàm 15h, chức năng 10h):
Đầu vào:
AH=15H.
AL=10H.
CX=Nhãn ổ CDROM được truy cập (ví dụ: 0 = A; 1 = B...etc.)
ES:BX= FAR trỏ tới vùng đệm chứa yêu cầu cho thiết bị.
Đầu ra: (Không có)
Lấy thông tin của trình điều khiển ổ đĩa CDROM (ngắt 2fh, hàm 15h, chức năng 01h):
Đầu vào:
AH=15H.
AL=01H.
ES:BX= FAR trỏ tới vùng đệm chứa thông tin trả về.
Đầu ra: (Không có)
Trên đây là một số thông tin về các ngắt 2fh truy cập ổ đĩa CDROM.
Giới thiệu về chương trình:
Chương trình thực hiện một số chức năng truy cập CDROM sau:
Lấy số lượng ổ đĩa CDROM trên máy:
Lấy tên file CopyRight:
Lấy tên file Abstract:
Lấy tên file Bibliographic:
Đẩy ổ đĩa CD (Eject CDROM):
Đọc nội dung bảng Volume:
Đọc nội dung sector:
Hiển thị Directory:
Hiển thị Directory Entry:
Chạy Audio track:
Cài đặt chương trình
Cơ sở dữ liệu
const DevError=(1 shr 15);
Dev_readlong=128;
Devcmd_Seek=131;
Type
Requestheader = record
blength,bsubunit,bcommand:Byte;
Wstatus:Word;
bReserved:array[0..7] of Byte;
end;
ReadWriteL = record
reqhdr: requestHeader;
bAdressingMode:Byte;
lpTransferAdress:pointer;
wNumsec:word;
lStartingSector:longint;
bdataReadWritemode,binterleaveSize,
binterleaveskipfactor:Byte;
end;
SeekReq=record
Reqhdr:requestheader;
bAdressingMode:byte;
lpTranferAdress:Pointer;
WNumSec:Word;
LstartingSector:longint;
end;
IOCTLIO =record
reqhdr :requestheader;
bmediadescriptor:Byte;
lptranferAdress:Pointer;
wtransferCount,wstartingsectorno:word;
lpvolumeID:Pointer;
end;
cd_Eject=record
bcontrolBlockCode:Byte;
end;
reset=record
bcontrolBlockCode:byte;
end;
LockDoor=record
bcontrolBlockCode,block:byte;
end;
VolSize=record
bcontrolBlockCode:Byte;
lVolumeSize:Longint;
end;
Diskinfo=record
bcontrolblockCode,blowestTrack,
bHighestTrack:Byte;
bLeadOutTrack:longint;
end;
Tnoinfo=record
bcontrolBlockCode,bTrackNo:Byte;
lstartingPoint:longint;
bTrackControlInfo:Byte;
end;
dir_entry=record
loc_extent:longint;
lb_size:word;
data_len:word;
record_time : Array[0..6] of Byte;
file_flags,il_size,il_skip,len_fi,len_su,xar_len : Byte;
VSSN : Word;
file_id : Array[0..37] of Byte;
file_version : Word;
su_data : Array[0..219] of byte;
End;
Requestheader = record
blength,bsubunit,bcommand:Byte;
Wstatus:Word;
bReserved:array[0..7] of Byte;
end;
MSCDEX_DevStat = Record
bControlBlockCode : Byte; { = 6 }
lDeviceStatus : Longint; { after call contains the }
End;
IOCTLIO =record
reqhdr :requestheader;
bmediadescriptor:Byte;
lptranferAdress:Pointer;
wtransferCount,wstartingsectorno:word;
lpvolumeID:Pointer;
end;
const
struct_copy=true;
các hàm trong chương trình
Function Time2Frame( iMin,iSec,iFrame : Integer ):Longint;
Procedure Frame2Time( lFrame : Longint;
var Min, Sec, Frame : Integer );
Function Time2HSG( iMin, iSec, iFrame : Integer) : Longint;
Procedure REDBOOK2Time( lREDBOOK : Longint;
var Min, Sec, Frame : Integer );
Function REDBOOK2HSG( lREDBOOK : Longint ) : Longint;
var iMin, iSec, iFrame : Integer;
Function GetNumberOfDriveLetters( var Number,StartLetter :
Integer ) : Boolean
Function ReadVtoc(DrvLetter:integer;lpSector:Pointer;
LNumsec:integer):integer;
function Hex(hz:word):string;
procedure PrintSector(lpsector:pointer ;
iSize:Integer;
icols:integer;
iRows:integer);
function GetVersion:integer;
Function SendDeviceRequest(iDriver:integer;var
reqhdr:requestheader):integer;
function Readlong(iDriver:integer;iadressmode:integer;
istart:longint;inumsec:integer;
lpreadData:Pointer;iDataMode:integer):integer;
function Error(wstatus:word):boolean;
function ReadWritereq(iDrive,icommand:integer;
lpcontrolblock:Pointer;
iControlBlockSize:integer):integer;
Function Eject(iDrive:integer):integer;
function getVolumeSize(iDrive:integer;var
VS:VolSize):integer;
function GetaudioDiskInfo(iDrive:integer;var
DI:DiskInfo):integer;
function getAudiotrackInfo(iDrive:integer;itrackNo:integer;
var TI :TnoInfo ):integer;
function IntOut(z:integer;l:integer):string;
procedure PrintDiskTracks(idrive:integer);
function GetDirEntry(iDrive:Integer;iCopyFlag:
Boolean;PathName : String;
lpData : Pointer;var HSG : Integer ) : Boolean;
Procedure cd_PrintDirEntry( var DirEntry : DIR_ENTRY );
function cd_GetAudioDiskInfo( iCD_Drive_Letter : Integer;
var DI : MSCDEX_DiskInfo ) : Integer;
function cd_GetAudioTrackInfo( iCD_Drive_Letter : integer;
iTrackNo : Integer; var TI : MSCDEX_TnoInfo ) : Integer;
function cd_IsDataTrack( var TI : MSCDEX_TnoInfo ) : Boolean
Function cd_PlayAudio( iCD_Drive_Letter :Integer;iAdressMode
: Integer;
lStart : longint;lLen : Longint ) : Integer;
Function cd_StopAudio( iCD_Drive_Letter : Integer): Integer;
._.
Các file đính kèm theo tài liệu này:
- 25229.doc