FATFS

**檔案配置表**（英語：**File Allocation Table**，首字母縮略字：**FAT**），是一種由微軟發明並擁有部分專利 的檔案系統，供 MS-DOS 使用，也是所有非 NT 核心的 **Windows 系統**使用的檔案系統。

FAT 檔案系統考慮當時電腦效能有限，所以未被複雜化，因此幾乎所有個人電腦的作業系統都支援。這特性使它成為理想的軟碟和記憶卡檔案系統，也適合用作不同作業系統中的資料交流。

但 FAT 有一個嚴重的缺點：當檔案刪除後寫入新資料，FAT 不會將檔案整理成完整片段再寫入，長期使用後會使檔案資料變得逐漸分散，而減慢了讀寫速度。磁碟重組是一種解決方法，但必須經常磁碟重組來保持 FAT 檔案系統的效率。

## 歷史

FAT 檔案系統遵行已用了多年的軟體方法來進行規範。它在 1977 年由比爾・蓋茲和馬斯・麥當勞為了管理磁碟而發明，並在 1980 年被添・彼得遜的 86-DOS 作業系統採用。這也是 86-DOS 作業系統與 CP/M 作業系統最大的不同點，若非此項差異，86-DOS 作業系統與 CP/M 作業系統幾乎可說完全相同。

### FAT12

初期的 FAT 就是現在俗稱的 FAT12。作為軟碟的檔案系統，它有幾項限制：不支援分層性結構，叢集定址只有 12 位元（這使得控制 FAT 有些棘手）而且只支援最多 32M（216）的分割區。

當時入門級的磁碟是 5.25"、單面、40 磁軌、每個磁軌 8 個磁區、容量略少於 160KB。上面的限制超過了這個容量一個或幾個數量級，同時允許將所有的控制結構放在第一個磁軌，這樣在讀寫操作時移動磁頭。這些限制在隨後的幾年時間裡被逐步增大。

由於唯一的根目錄也必須放在第一個磁軌，能夠存放的檔案個數就限制在幾十個。

### 目錄

MS-DOS 2.0 為了支援以內建 10MB 硬碟為特色的 IBM PC XT，因此幾乎與該電腦同時在 1983 年初發布。它引進了層次目錄結構，除了允許更有效率地組織檔案外，目錄允許在硬碟上儲存更多的檔案，這是因為最大檔案個數不再受制於（仍然是固定且有限的）根目錄大小。這個數目現在能夠等同於叢集的數目（甚至更大，這是考慮到長度為 0 的檔案並不占據任何 FAT 叢集）。

FAT 本身的格式並沒有改變。PC XT 的 10MB 的硬碟有 4KB 大小的叢集。如果後來安裝了一個 20MB 的硬碟，並且使用 MS-DOS 2.0 格式化，最後的叢集大小將變為 8KB，硬碟容量將變為 15.9MB。

### FAT16 的開始

在 1984 年，IBM 發布 PC AT，內含一個 20MB 的硬碟。微軟公司也同步發布了 MS-DOS 3.0。叢集集位址增加至 16 位元，允許更大數量的叢集（最大 65,517），所以有更大的檔案系統大小。但是，最大數量磁區及最大分割區（相當於磁盤）的大小仍是 32MB。所以，儘管技術上已經是「FAT16」，這種格式並不是我們今天常見到的這個名字所代表的格式。在 MS-DOS 3.0 格式化一個 20 MB 的硬碟，這硬碟將不能被 MS-DOS 2.0 或之前的版本所存取。當然，MS-DOS 3.0 仍然可存取 MS-DOS 2.0 的格式（8KB 叢集的分割區）。

MS-DOS 3.0 也開始支援高密度 1.2MB 5.25" 磁碟，最著名的是每個磁軌有 15 個磁區，這樣就允許 FAT 有更大的空間。這或許促進了一個對於叢集大小的不確定的最佳化，叢集大小從 2 個磁區減到 1 個。這樣做的最後結果是高密度磁碟比舊的_雙密度_磁碟的速度大幅度降低。

### 擴充分割區和邏輯驅動器

除了改進 FAT 檔案系統本身的結構之外，另一個提高 FAT 儲存空間的方式是支援多個磁碟分割區。最初，受限於主開機紀錄中檔案配置表的固定結構一個硬碟最多只能切出多達 4 個分割區。然而，由於 DOS 設計要求只能有一個分割區標識為「活動的（Active）」，它也是主引導代碼啟動所用的分割區。使用 DOS 工具不可能建立幾個「主」DOS 分割區，並且第三方的工具也至少會警告這樣一個機制將與 DOS 不相容。

為了用一種相容的方式使用更多的分割區，一種新的分割區類型被開發出來（1986 年 1 月的 MS-DOS 3.2），_擴充分割區_它實際上是另外稱為_邏輯分割區_的一個容器。最初它裡面只允許有一個邏輯分割區、支援最大 64MB 的硬碟。在 MS-DOS 3.3（1987 年 8 月）這個限制更改到 24 個分割區；它可能來自於強制性的 C:-Z：的磁碟命名規則。邏輯分割區表使用盤上的資料結構來描述，可能是為了簡化編碼它與主開機紀錄非常相似，並且它們組織成類似於俄羅斯套娃那樣的結構。一顆硬碟中只能有一個擴充分割區。

在擴充分割區觀念匯入之前，一些硬碟控制器（當時採用獨立的硬碟控制卡，IDE 標準尚未出現）能夠將大硬碟顯示為兩個獨立的硬碟。

### 最終的 FAT16

1987 年 11 月，我們今天稱之為 _FAT_ 的格式最終到來，它在康柏 DOS 3.31 中去掉了磁碟磁區的 16 位元計數器。這個結果曾經一度被稱為 _DOS 3.31 大檔案系統_。儘管看起來磁碟上的變動很小，這個 DOS 的磁碟代碼都必須檢查並轉換到 32 位元的磁區數，由於它完全是 16 位元的組合語言這樣一個現實，這項工作就變得非常複雜。

1988 年，這項改進通過 MS-DOS 4.0 得到廣泛應用。現在分割區大小受限於每個叢集的 8 位元有符號磁區計數，它最大能達到 2 的 64 次方，對於一個常用的有 32KB 個叢集每磁區 512 位元組的硬碟來說，將 FAT16 分割區大小的「明顯」限制擴充到 2GB。在磁光碟媒體上，它能使用 1 或者 2KB 的磁區，這樣大小限制也就成比例地增大。

後來，Windows NT 通過將每個叢集的磁區數當作無符號數將最大的叢集大小增加到 64KB。然而這個格式與當時其它任何格式的 FAT 都不相容，並且這樣的操作會產生大量的內部碎片。Windows 98 也支援這種格式的讀寫操作，但是它的磁碟管理工具不支援這種格式。

### 長檔名（VFAT, LFN）

Windows 95 設計人員的一個使用者體驗目標就是：除了傳統的 8.3 檔名以外，在新作業系統中使用長檔名（LFN）。長檔名通過在目錄條目排列時，使用一個工作區來實現（參見下面）。按照 Windows 95VxD 裝置驅動程式的命名規則，這個新擴充的檔案系統通常稱為 VFAT。

有意思的是，VFAT 驅動在早於 Windows 95 的 Windows for Groups 3.11 中就已經出現，但它僅僅用於實現 32 位元檔案存取，一個繞過 DOS 的視窗內建高效能保護模式檔案管理系統，它能夠直接使用 BIOS 或者更好的 32 位元磁碟存取，如 Windows 內建的保護模式磁碟驅動程式。它是一個後門；微軟為 Windows for Groups 3.11 所作的廣告說 32 位元檔案存取基於「芝加哥專案的 32 位元檔案系統」。

在 Windows NT 中，FAT 檔案系統對於長檔名的支援從 3.5 版就已經開始了。在 MS-DOS 7.0 以後的版本中，則可使用類似 DOSLFN 這樣的軟體使得 DIR 等命令顯示出長檔名。

### FAT32

為了解決 FAT16 對於卷大小的限制同時讓 DOS 的真實模式在非必要情況下不減少可用常規記憶體狀況下處理這種格式，微軟公司決定實施新一代的 FAT，它被稱為 **FAT32**，帶有 32 位元的叢集數，目前用了其中的 28 位元。

理論上，這將支援總數達 268,435,438（<228）的叢集，允許磁碟容量達到 8TB。

FAT32 隨著 Windows 95 OSR2 發布，儘管需要重新格式化才能使用這種格式並且 DriveSpace 3（Windows 95 OSR2 和 Windows 98 所帶版本）從來都不支援這種格式。Windows 98 提供了一個工具用來在不遺失資料的情況下將現有的硬碟從 FAT16 轉到 FAT32 格式。在 NT 產品線上對於它的支援從 Windows 2000 開始。

Windows 2000 和 Windows XP 能夠讀寫任何大小的 FAT32 檔案系統，但是這些平台上的格式化程式只能建立最大 32GB 的 FAT32 檔案系統。Thompson and Thompson（2003）寫道「奇怪的是微軟公司說這種現象是故意設計的」 微軟公司知識庫文章 184006 的確是這麼說的，但是沒有提出任何關於這個限制的合理解釋。Peter Norton 的觀點是「微軟公司在有意地削弱 FAT32 檔案系統」。

### exFAT

在 Windows Embedded CE 6.0 中引入，Windows XP SP3 以及 Windows Vista SP1 也引入了 exFAT 的支援。在很多方面 exFAT 有了相當大的改進，特別適合用於快閃記憶體。

### 第三方支援

其它 IBM PC 的可選作業系統，如 Linux、FreeBSD 和 BeOS 都支援 FAT 格式，並且大部分都在相應的 Windows 版本發布以後很快就支援 VFAT 和 FAT32 格式。早期的 Linux 發布版本還包括稱為 UMSDOS 的格式，它是儲存在一個獨立的稱為--linux-.—— 的帶有 Unix 檔案屬性（如長檔名和存取許可）的 FAT。UMSDOS 在 VFAT 發布以後就不再使用。Linux 核心從 2.5.7 開始就禁止了這項功能。Mac OS X 作業系統在除啟動磁碟之外的其它卷上也支援 FAT 檔案系統。

### FAT 和其它資料流

FAT 檔案系統本身不是為支援 ADS 而設計的，但是一些高度依賴它們的作業系統創造出了不同的方法以在 FAT 驅動器上處理它們。這些方法或者在額外的檔案或路徑中儲存附加的資訊（Mac OS），或者給那些磁碟資料結構中以前沒有使用的變數賦予新的含義（OS/2 和 Windows NT）。第二種設計，儘管想像起來會更有效率，但是它們不能被不認識這種格式的工具複製或者備份；使用不能辨識這種格式的磁碟工具（如碎片整理或 CHKDSK）操控這些磁碟時可能會破壞這些資訊。

Mac OS 使用 PC Exchange 儲存不同的資料，檔案屬性和檔名存在一個名為 FINDER.DAT 的隱藏檔案中，資源分支（ADS）存在名為 RESSOURCE.FRK 的子目錄中，這些資料都存在使用它們的每個目錄中。從 PC Exchange 2.1 開始，它們將 Mac OS 的長檔名儲存為標準的 FAT 長檔名，並且將超過 31 個字元的 FAT 長檔名轉換為唯一的 31 字元能夠被 Macintosh 應用程式辨識的檔名。

Mac OS X 將元資料（資源分支、不同的 ADS、檔案屬性）儲存在與所有人相同並以「.\_」開始的名字的隱藏檔案中，並且 Finder 將一些資料夾和檔案元資料存在名為「.DS Store」的隱藏檔案中。

OS/2 高度依賴於擴充屬性（EA）並且將它們存在位於 FAT12 或 FAT16 的根目錄下名為「EA DATA. SF」的隱藏檔案中。這個檔案使用以前檔案（或者目錄）的目錄清單中的兩個保留位元組索引。在 FAT32 格式中，這些位元組中存有檔案或者目錄開始叢集號的高 16 位元，這樣就使它難於在 FAT32 上儲存 EA。擴充屬性可以通過 Workplace Shell 桌面、REXX 指令碼、許多系統圖形使用者介面和命令列工具（如 4OS2）來存取。

Windows NT 支援 HPFS、NTFS 和 FAT 中所有擴充屬性的處理（所用處理機制完全類似於 OS/2），但是不能處理其它一些存於 NTFS 驅動器的 ADS 資料。試圖從複製帶有與 NTFS 驅動器屬性不同擴充屬性的 ADS 到 FAT 驅動器將報告一個警告資訊提示 ADS 將會遺失。

Windows 2000 以後產品的處理類似於 Windows NT 但複製到 FAT32 時它們沒有顯示任何警告資訊直接丟棄擴充屬性（但報告其他像「Macintosh Finder Info」和「Macintosh Resource Fork」這些 ADS 引起的警告）。

### 前景

微軟公司最近獲得了 VFAT 和 FAT32 的專利（但沒有得到最初的 FAT 的專利），這引起了人們對於微軟將會對 Linux OS 發布和初始化他們產品的媒體廠商收取專利費的擔憂（參見下面的 FAT 授權協定）。儘管最初的裁定不利於微軟公司，但是微軟仍然取得了勝利並且得到了專利授權。

由於微軟公司已經宣布不再開發基於 MS-DOS 作業系統 Windows Me 的後續版本，所以不再有可能會有新版的 FAT。對於大多數用途來說，為 Windows NT 系列開發的 NTFS 檔案系統從效率、效能、安全性及可靠性來說都優於 FAT；它的主要缺點是小容量檔案所占的額外空間以及除了基於 NT 的 Windows 作業系統之外的很少有其他作業系統支援。由於確切的規範是微軟公司的商業秘密，這就使得使用一個 DOS 軟碟用於恢復目的很困難（根據微軟 MCSE 訓練教材說明此點是刻意保密，以確保 NTFS 檔案系統不易被盜取資料）。微軟公司提供了一個恢復介面來解決這個問題，由於安全的原因它嚴重限制了預設情況下它所能解決的問題。

FAT 仍然是移動媒體所常用的一種檔案系統（CD 和 DVD 是例外），軟碟使用的是 FAT12，其他多數活動媒體用的是 FAT32（如用於數位相機的快閃記憶卡和 USB 隨身碟，Windows 格式化的預設選項仍為 FAT32），除非其容量超出 FAT32 的限制。出於相容性和儲存空間利用率的考慮 FAT 仍然用在這些驅動器上，同時也是由於這些活動媒體上的檔案的許可更容易遇到麻煩而不是更重要這樣一個事實。

Windows 2000 和 XP 支援的 FAT32 格式化的限制是 32GB，這導致使用現代硬碟的使用者必須要麼使用 NTFS 要麼使用其它程式格式化驅動器。一個解決的辦法是使用從 Linux 移植到 Windows 平台的一個工具 mkdosfs。

## 設計

### 主磁碟結構

一個 FAT 檔案系統包括四個不同的部分。

1. **保留磁區**，位於最開始的位置。 第一個保留磁區是引導磁區（_分割區啟動記錄_）。它包括一個稱為_基本輸入輸出參數塊_的區域（包括一些基本的檔案系統資訊尤其是它的類型和其它指向其它磁區的指標），通常包括作業系統的啟動呼叫代碼。保留磁區的總數記錄在引導磁區中的一個參數中。引導磁區中的重要資訊可以被 DOS 和 OS/2 中稱為_驅動器參數塊_的作業系統結構存取。
2. **FAT 區域**。它包含有兩份_檔案配置表_，這是出於系統冗餘考慮，儘管它很少使用，即使是磁碟修復工具也很少使用它。它是分割區資訊的對映表，指示叢集是如何儲存的。
3. **根目錄區域**。它是在根目錄中儲存檔案和目錄資訊的_目錄表_。在 FAT32 下它可以存在分割區中的任何位置，但是在早期的版本中它永遠緊隨 _FAT 區域_之後。
4. **資料區域**。這是實際的檔案和目錄資料儲存的區域，它占據了分割區的絕大部分。通過簡單地在 FAT 中添加檔案連結的個數可以任意增加檔案大小和子目錄個數（只要有空叢集存在）。然而需要注意的是每個叢集只能被一個檔案占有，這樣的話如果在 32KB 大小的叢集中有一個 1KB 大小的檔案，那麼 31KB 的空間就浪費掉了。

### 啟動磁區

格式如下

這裡描述的啟動磁區能在如 OS/2 1.3 的啟動磁碟上看到。早期的版本使用一個較短的基本輸入輸出系統參數塊，它們的啟動代碼在前面開始（如 OS/2 1.1 中是偏移 0x2b）。

#### 例外情況

Apricot PC 的 MS-DOS 所用 FAT 的實現有一個不同的啟動磁區組織以使用電腦與 IBM 不相容的基本輸入輸出系統。跳轉指令和 OEM 名被省略並且 MS-DOS 檔案系統參數位於 0x50（在標準磁區中偏移為 0x0B - 0x17）。後來的 Apricot MS-DOS 版本除了 Apricot 特有的引導區之外也具有了讀寫標準啟動分割區的能力。

BBC Master 512 上的 DOS Plus 根本就不使用傳統的引導區。資料磁碟省略了引導區並且以一個單份的 FAT 開始（FAT 的第一個位元組用來確定磁碟容量），啟動磁碟使用一個包含啟動呼叫程式的小型 ADFS 檔案系統，後面跟隨一個單份的 FAT。

### 檔案配置表

一個分割區分成同等大小的**叢集**，也就是連續空間的小塊。叢集的大小隨著 FAT 檔案系統的類型以及分割區大小而不同，典型的叢集大小介於 2KB 到 32KB 之間。每個檔案根據它的大小可能占有一個或者多個叢集；這樣，一個檔案就由這些這些（稱為單向連結串列）叢集鏈所表示。然而，這些鏈並不一定一個接著一個在磁碟上儲存，它們經常是在整個資料區域_零散_的儲存。

**檔案配置表**（**FAT**）是對映到分割區每個叢集的條目列表。每個條目記錄下面五種資訊中的一種。

* 鏈中下一個叢集的位址
* 一個特殊的**叢集鏈結束符**（**EOC**，End Of Cluster-chain，或稱 End Of Chain）符號指示鏈的結束
* 一個特殊的符號標示壞叢集
* 一個特殊的符號標示保留叢集
* 0 來表示空閒叢集

每個版本的 FAT 檔案系統使用不同大小的 FAT 條目。這個大小已經由名字表示出來，例如 FAT16 檔案系統的每個條目使用 16 位元表示，32 位元檔案系統使用 32 位元表示。這個不同意味著 FAT32 系統的檔案配置表能比 FAT16 對映更多的叢集，它也允許 FAT32 有更大的分割區大小。這也使得 FAT32 比 FAT16 更能有效地利用磁碟空間，因為每個驅動器能夠定址更小的叢集，這也就意味著更少的空間浪費。

FAT 條目值：

注意 FAT32 隻使用 32 位元中的 28 位元。高 4 位元通常是 0 但它們是保留位，不要更改它們。在上面的表中它們用問號表示。

### 目錄表

**目錄表**是一個表示目錄的特殊類型檔案（現今通常稱為資料夾）。它裡面儲存的每個檔案或目錄使用表中的 32 位元組條目表示。每個條目記錄名字、副檔名、屬性（檔案、目錄、隱藏、唯讀、系統和卷）、建立的日期和時間、檔案／目錄資料第一個叢集的位址，最後是檔案／目錄的大小。

除了 FAT12 和 FAT16 檔案系統中的根目錄表占據特殊的_根目錄區域_位置之外，所有其它的目錄表都存在資料區域。

合法的 DOS 檔名包括下面一些字元：

* 大寫字母 A-Z
* 數字 0-9
* 空格（儘管結尾的空格被作為填充而不是檔名的一部分）
* ! # $ % & ( ) - @ ^ \_ ` { } ~ '
* 數值 128-255

DOS 檔名位於 OEM 字元集。

位於根目錄區域和子目錄區域的目錄條目都是下面的格式：

長檔名（LFN）使用一個技巧儲存在 FAT 檔案系統上 —— 在目錄表中添加假的條目。這些條目使用一個普通檔案無法使用的卷標屬性標識，普通檔案無法使用是由於它們被大多數舊的 MS-DOS 程式忽略。很顯然，一個只包含卷標的目錄被當作空卷，這樣就允許刪除；使用長檔名建立的檔案在從普通的 DOS 刪除就會發生這樣的情形。

校驗和也允許檢驗長檔名是否與 8.3 檔名匹配；當一個檔案刪除之後使用 DOS 在同一個目錄位置重新建立之後就會出現不匹配現象。校驗和使用下面的演算法計算。（注意 pFcbName 是指向如正常目錄條目中所顯示的檔名的指標，例如前八個字元是檔名，最後三個是副檔名。點是隱含的。檔名中沒有使用的空間將使用空格（ASCII 0x20）補齊。例如，「Readme.txt」將記錄為 "README TXT"。

舊版的 PC-DOS 錯誤地將根目錄中的長檔名當作卷標，這樣它們就會顯示錯誤的卷標。

每個假條目包含 13UTF-16 個字元（26 位元組），通過使用包含檔案大小或者時間記錄的區域獲得除了舊的 8+3 之外的另外 15 個位元組（但是出於安全和磁碟檢查工具的考慮開始叢集的區域沒有使用保留值為 0）。參見 8.3 中另外的解釋。

長檔名條目使用下面的格式：

如果一個檔名只包含小寫字母、或者是一個小寫字母的_名_加上大寫副檔名的混合或者與此相反，沒有特殊的字元並且滿足 8.3 的限制，在 Windows NT 上就不建立 VFAT 的條目。相反，在目錄條目的偏移 0x0c 處的沒有說明的位用來指示檔名全部或者部分是小寫字母。特別明確的是，位 4 意味著小寫字母的副檔名，位 3 意味著_名_是小寫字母，這樣就允許如「example.TXT」和「HELLO.txt」這樣的組合，但是不允許「Mixed.txt」這樣的組合。很少有作業系統支援這種功能。非 NT 的 Windows 版本當這個擴充使用時將把檔名當作大寫字母。預設情況下，Linux 的最近版本將認識這個擴充但是在寫時並不使用它。

#### 第三方擴充

在微軟公司添加長檔名和建立／存取時間戳之前，其它的作業系統使用目錄表位元組 0x0C-0x15 儲存其它的元資料。它們包括：

## FAT 授權

在二十世紀九十年代中期微軟公司申請並獲得了一系列的 FAT 檔案系統核心部分的專利。由於具有廣泛的相容性和易於理解，FAT 經常被選為用於數位相機和個人數位助理中快閃記憶體的資料交換格式。

2003 年 12 月 3 日微軟公司宣布使用 FAT 規範和「相關智慧型產權」將需要得到 授權，每個銷售單元支付 0.25 美元的著作權費，每個授權協定最多 250,000 美元的著作權費。

為了這個目的，微軟公司提及了四個關於 FAT 檔案系統的專利作為它的智慧財產權主張的基礎。所有這些與長檔名擴充有關的 FAT 首先出現在 Windows 95 中：

* 美國專利第 5,745,902 號 - 存取使用不同檔名格式的檔名的方法和系統。1992 年 7 月 6 日備案。這包括生成、聯絡一個 8.3 相容格式的短檔名和長檔名的方法（如「Microsoft.txt」和「MICROS~1.TXT」），以及列舉相互衝突的短檔名的方法（如「MICROS~2.TXT」和「MICROS~3.TXT」）。現在還不清楚這個專利是否覆蓋不具有顯式長檔名能力的 FAT 實現。Unix 檔案系統中的硬連結看起來不是先行者：從長檔名刪除一個 FAT 檔案也將刪除它的短檔名。將一個檔案重新命名為一個「短」檔名也將一致地更改長檔名；同樣，將一個檔案重新命名為「長」檔名也將重新生成一個「短」檔名。在 NTFS 中，硬連結和兩個名字是不同的概念，並且每個硬連結都有兩個名字。最後，在 API 的層面上，當在系統中進行目錄搜尋時兩個檔名都會出現；它們看起來不是兩個獨立的檔案並且它們也沒有有必要去「對映」確定同一個檔案。
* 美國專利第 5,579,517 號 - 長、短檔名公用的命名空間。1995 年 4 月 24 日備案。這包括將多個連續 8.3 目錄條目連結在一起支援長檔名的方法，其中一些條目特殊進行標記阻止可能引起混淆地早期的不支援長檔名的 FAT 實現。
  * 公共專利基金會成功地對這項專利發起了挑戰；這個專利申請由於所申請的技術在專利美國專利第 5,307,494 號和美國專利第 5,367,671 號中的 先期發現 在 2004 年 9 月 14 日被 駁回 （頁面存檔備份，存於網際網路檔案館）。這個決定後來在 2006 年 1 月 10 日被美國專利局所推翻。
* 美國專利第 5,758,352 號 - 長、短檔名公用的命名空間。1996 年 9 月 5 日備案。它非常類似於 5,579,517。
  * 公共專利基金會成功地對這項專利發起了挑戰；美國專利商標局基於 "the six assignees names were incorrect" （頁面存檔備份，存於網際網路檔案館） [2] 在 2005 年 10 月 5 日駁回了這項專利。這個決定也在後來的 2006 年 1 月 10 日被美國專利局推翻。
* 美國專利第 6,286,013 號 - 在作業系統中為長、短檔名提供一個公用的命名空間的方法和系統。1997 年 1 月 28 日備案。它所申請的內容包括 Windows 95、Windows 98 和 Windows Me 的長檔名提供給它們 MS-DOS 相容層所用的方法。它看起來不影響非微軟的 FAT 實現。

許多技術評論斷言這些專利僅僅涵蓋了支援長檔名的 FAT 實現，那些只使用短名字的移動固態媒體和消費裝置將不受影響。

另外，在微軟 2000 年 12 月 6 日出版的 "Microsoft Extensible Firmware Initiative FAT 32 File System Specification, FAT: General Overview of On-Disk Format"，微軟公司明確地給出了一些授權，許多讀者將它認為是微軟允許作業系統廠商實現 FAT。

### 控訴

由於人們廣泛要求重新審查這些專利，公眾專利基金會向美國專利及商標局（USPTO）提出了一些證據爭辯這些專利的有效性，其中包括全錄公司和 IBM 的早期參考資料。美國專利商標局承認這些證據提出了「可專利性的實質性的新問題」並且對於微軟公司 FAT 專利的有效性展開調查。

2004 年 9 月 30 日，美國專利商標局主要基於公共專利基金會所提供的證據駁回了美國專利第 5,579,517 號的專利主張。這個基金會的執行總裁 Dan Ravicher 說「現在專利局只不過是確認了我們已經知道了一段時間的事情，微軟公司的專利是假的。」

PUBPAT 的新聞發布會說，「微軟公司仍然有機會回應專利局的駁回。有代表性的是第三方的重新審查要求如 PUBPAT 提供的資料成功地減小了專利的範圍或者有 70% 的機會完全駁回專利。」

2005 年 10 月 5 日，專利局宣布隨著調查的深入它駁回了專利 5.579,517 的專利主張，另外它發現專利美國專利第 5,758,352 號有錯誤的專利受益人而無效。

最後在 2006 年 1 月 10 日，專利局裁定微軟公司的 FAT 系統的實現特點是「新穎和非顯然的」，推翻了早期的兩個非最終裁決。

## 註解

## 參見

* NTFS
* 檔案系統的對比
* 驅動器字母分配
* 軟體專利
* 檔案系統列表
* Rock Ridge 和 Joliet：象 FAT 上的 VFAT 一樣為 CD 添加長檔名的系統。

## 外部連結

* News article about final patent ruling
* Microsoft's statement on "FAT File System Technology and Patent License"
* FAT File System
* Slashdot discussion on Microsoft's claims of FAT-related patents （頁面存檔備份，存於網際網路檔案館）
* Microsoft Extensible Firmware Initiative FAT 32 File System Specification, FAT: General Overview of On-Disk Format
* Understanding FAT32 Filesystems (explained for embedded firmware developers) （頁面存檔備份，存於網際網路檔案館）
* Microsoft's war on GPL dealt patent setback （頁面存檔備份，存於網際網路檔案館）
* A Short History of MS-DOS，by Tim Paterson
* Detailed Explanation of FAT Boot Sector （頁面存檔備份，存於網際網路檔案館） - Microsoft Knowledge Base Article 140418
* At PUBPAT's Request, Patent Office Rejects Microsoft's FAT Patent: All Claims of Reynolds '517 Patent Ruled Invalid （頁面存檔備份，存於網際網路檔案館）
* Volume and file size limits of FAT filesystems