搜尋子區塊
[與此頁面相關聯的功能 多媒體檔案 I/O是舊版功能。 來源讀取器已取代它。 來源讀取器 已針對 Windows 10 和 Windows 11 優化。 Microsoft強烈建議新程式碼盡可能使用 來源讀取器,而不是 多媒體檔案 I/O。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
下列範例會使用 mmioDescend 函式,在上一個範例的 “RIFF” 區塊中搜尋 “FMT” 區塊。
// Find the format chunk (form type "FMT"); it should be
// a subchunk of the "RIFF" parent chunk.
mmckinfoSubchunk.ckid = mmioFOURCC('f', 'm', 't', ' ');
if (mmioDescend(hmmio, &mmckinfoSubchunk, &mmckinfoParent,
MMIO_FINDCHUNK))
// Error, cannot find the "FMT" chunk.
else
// "FMT" chunk found.
若要搜尋 subchunk(也就是 “RIFF” 或 “LIST” 區塊以外的任何區塊),請在 mmioDescend 函式的 lpckParent 參數中識別其父區塊。
如果您未指定父區塊,則目前的檔案位置應該在區塊開頭,再呼叫 mmioDescend 函式。 如果您指定父區塊,目前的檔案位置可以是該區塊中的任何位置。
如果搜尋 subchunk 失敗,則目前檔案位置未定義。 您可以使用 mmioSeek 函式和 dwDataOffset 成員 MMCKINFO 結構,描述父區塊以回溯至父區塊開頭,如下列範例所示:
mmioSeek(hmmio, mmckinfoParent.dwDataOffset + 4, SEEK_SET);
因為 dwDataOffset 指定區塊數據部分開頭的位移,因此您必須搜尋超過 4 個字節 dwDataOffset,才能在表單類型之後設定檔案位置。