共用方式為


資源交換檔案格式服務

[與此頁面相關聯的功能 多媒體檔案 I/O是舊版功能。 來源讀取器已取代它。 來源讀取器 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式代碼盡可能使用 來源讀取器,而不是 多媒體檔案 I/O。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

多媒體檔案的慣用格式是資源交換檔格式 (RIFF)。 RIFF 檔案 I/O 函式會使用基本緩衝和未緩衝的檔案 I/O 服務。 您可以使用與其他檔案類型相同的方式開啟、讀取和寫入 RIFF 檔案。 如需 RIFF 的詳細資訊,請參閱 AVIFile 函式和巨集

RIFF 檔案會使用四個字元代碼來識別檔案元素。 這些代碼是32位數量,代表一到四個ASCII英數位元的序列,以空格字元填補右邊。 四個字元代碼的數據類型 FOURCC。 使用 mmioFOURCC 巨集,將四個字元轉換成四個字元的程式碼。 若要將 Null 終止的字串轉換成四個字元的程式代碼,請使用 mmioStringToFOURCC 函式。

RIFF 檔案的基本建置組塊是 區塊。 區塊是多媒體數據的邏輯單元,例如影片剪輯中的單一畫面。 每個區塊都包含下列欄位:

  • 指定區塊識別碼的四個字元程式代碼
  • 雙字值,指定區塊中的數據成員大小
  • 數據欄位

下圖顯示包含兩個子分頁的 「RIFF」 區塊。

包含兩個子分頁影像的 riff 區塊

另一個區塊中包含的區塊是 subchunk。 唯一允許包含子分頁的區塊是具有 「RIFF」 或 「LIST」 區塊識別碼的區塊。 包含另一個區塊的區塊稱為 父區塊。 RIFF 檔案中的第一個區塊必須是 「RIFF」 區塊。 檔案中所有其他區塊都是 「RIFF」 區塊的子區塊。

“RIFF” 區塊會在數據欄位的前四個字節中包含額外的欄位。 此額外欄位提供欄位 表單類型。 表單類型是四個字元的程式代碼,可識別儲存在檔案中的數據格式。 例如,Microsoft波浪音訊檔案的格式為 「WAVE」。

“LIST” 區塊也會在數據欄位的前四個字節中包含額外的欄位。 此額外欄位包含欄位 清單類型。 清單類型是識別清單內容的四個字元代碼。 例如,具有 「INFO」 清單類型的 「LIST」 區塊可以包含提供著作權和建立日期資訊的 「ICOP」 和 「ICRD」 區塊。 下圖顯示包含 「LIST」 區塊的 「RIFF」 區塊,以及另一個子分頁(“LIST” 區塊包含兩個子分頁)。

包含清單區塊映像的 riff 區塊

多媒體檔案 I/O 服務包含兩個函式,可用來在 RIFF 檔案中的區塊之間巡覽:mmioAscendmmioDescend。 您可以使用這些函式作為高階搜尋函式。 當您進入區塊時,檔案位置會設定為區塊的數據欄位(區塊開頭的 8 個字節)。 對於 「RIFF」 和 「LIST」 區塊,檔案位置會設定為表單類型或清單類型之後的位置(區塊開頭為 12 個字節)。 當您從區塊中遞增時,檔案位置會設定為區塊結尾之後的位置。

若要建立新的區塊,請使用 mmioCreateChunk 函式,在開啟的檔案中目前位置寫入區塊標頭。 mmioAscendmmioDescendmmioCreateChunk 函式會使用 MMCKINFO 結構來指定和擷取 “RIFF” 區塊的相關信息。