Tìm hiểu cách truy cập CDROM

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

doc19 trang | Chia sẻ: huyen82 | Lượt xem: 1321 | Lượt tải: 0download
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:

  • doc25229.doc
Tài liệu liên quan