Thứ Ba, 21 tháng 2, 2012

Như vậy khi một file được tạo ra mà tên file của nó không tuân theo chuẩn đặt tên của DOS thì Windows98 sẽ tạo thêm một tên file nữa theo chuẩn về tên file của hệ điều hành DOS. Windows98 thực hiện điều này như sau:can dien tu
·              Lấy 6 ký tự đầu tiên (không kể kí tự trắng và những dấu chấm phụ) của tên dài, chuyển chúng sang dạng viết hoa (nếu cần).sinh nhật vui vẻ va mang trinhdo choi tinh ducam dao gia phau thuat tham my 
·              Nối thêm 2 kí tự “~1” vào sau 6 kí tự trên để có được tên file theo chuẩn của hệ điều hành DOS, nếu tên file này đã tồn tại thì windows98 sẽ dùng 2 kí tự “~2”, và cứ như thế windows98 có thể thêm vào các kí tự “~3”, “~4”, vv sao cho đảm bảo tên file không trùng nhau trong cùng một thư mục.
Ví dụ:  Có 2 tên file dài:   Lap trinh huong doi tuong    (file 1)
                                      Lap trinh huong thanh phan          (file 2)
Thì windows98 tạo ra 2 tên file theo chuẩn MS_DOS như sau:
LAPTRI~1          (file 1)                  
LAPTRI~2          (file 2)
Để lưu trữ thông tin về một file có tên file dài hệ điều hành windows98 sử dụng các entry liên tiếp nhau trong bảng thư mục, các entry này được bố trí như sau:
·              Một entry đầu tiên dùng để lưu trữ tên file theo chuẩn của DOS và các thông tin khác, cấu trúc của entry này hoàn toàn tương tự như hình trên.
·              Một hoặc nhiều entry kế tiếp sau đó để lưu tên file dài, số lượng các entry này phụ thuộc vào số kí tự của tên file (mỗi entry chứa được 13 kí tự Unicode= 26byte).
Ví dụ: một file có tên file gồm 28 kí tự thì windows98 sẽ dùng 4 entry: một entry dùng để lưu tên file theo chuẩn MS_DOS, 3 entry còn lại dùng để lưu tên file dài, trong đó 2 entry đầu chứa 26 kí tự (13x2) đầu, entry cuối cùng chứa 2 kí tự còn lại của tên file.
Hình 4.14 cho thấy cấu trúc của một entry trong bảng thư mục gốc của windows98 dùng cho tên file dài:







·              Trường Sequence: chiếm 1 byte dùng để ghi thứ tự của các entry chứa tên file dài, nếu là entry cuối cùng thì thứ tự này sẽ được cộng thêm 64 đơn vị để đánh đấu đây là entry cuối cùng của một file, theo ví dụ trên thì trường Sequence của các entry lần lược là: 1, 2 và 67 (3+64).     
·              Trường Attributes: chiếm 1 byte, chứa giá trị 0Fh, đây là dấu hiệu để phân biệt giữa entry chứa tên file theo chuẩn DOS với các entry chứa tên file dài. Hệ điều hành DOS và các tiện ích về file của DOS sẽ bỏ qua (không nhận ra) các entry này.
·              Trường Checksum: chiếm 1 byte, dùng để ghi nhận các tình huống sau: một chương trình Windows98 tạo ra một file với 1 tên dài, máy tính được Reboot để chạy với hệ điều hành DOS hoặc Windows 3, một chương trình cũ xóa tên file DOS từ thư mục nhưng không xóa tên file dài đứng trước nó (vì không hiểu về nó), vv.
Với 1 byte cho checksum Windows 98 có thể ghi nhận 256 tình huống khác nhau, mỗi tình huống tương ứng với một mã nào đó. Hiện nay chúng tôi chưa có tài liệu mô tả về đầy đủ về checksum nên chúng tôi không thể trình bày nhiều hơn nữa về checksum ở đây. 
·              10 byte sau trường Sequence, 12 byte sau trường Checksum và 4 byte cuối cùng dùng để lưu trử 13 kí tự trong phần tên file dài (vì windows98 sử dụng mã Unicode nên mỗi ký tự chiếm 2 byte).
Chú ý: Theo hệ điều hành DOS và windows3.1 thì byte đầu tiên của một entry trong bảng thư mục gốc phải là một trong các chữ cái hoặc một số kí tự đặc biệt nào đó, chứ không thể là các giá trị số. Nên DOS, windows3.1 và các chương trình trên nó không nhận ra các entry của tên file dài theo kiểu windows98 là điều tất nhiên.
Hình vẽ sau đây minh họa cho việc lưu trữ  tên file dài trong bảng thư mục của file có tên: “Nguyen Le Tram Uyen Va Tram Thanh”.
67










A
0
C

0


m



T

h

a

K
n
h





2










A
0
C












0
r          a
m



U

y

e

K
n


V
a

T
1










A
0
C

0
r
a
N

g

u

y

e

K
n       

L
e

T
N










A
N
S
Creation
Time
Last Acc

Upp
Last
write
Low
Size
G
U
Y
E
N
~
1



T
































 Hình 4.15: