共用方式為


索引子建立和設定

ASF 索引子 是 WMContainer 層元件,可用來以進階系統格式讀取或寫入索引物件 (ASF) 檔案。 本主題提供建立 Media Foundation 所提供的預設索引子物件的相關資訊。

如需 ASF 檔案結構的相關資訊,請參閱 ASF 檔案結構

若要建立和初始化 ASF 索引子

  1. 呼叫 MFCreateASFIndexer 函式,以接收索引 器物件的 IMFASFIndexer 指標。

  2. 呼叫 IMFASFIndexer::SetFlags 以指定索引子物件的讀取或寫入模式。 根據預設,索引子會設定為向前搜尋。

    使用 旗標
    閱讀 (向前搜尋) 零 (預設)
    讀取反向搜尋 () MFASF_INDEXER_READ_FOR_REVERSEPLAYBACK
    寫入 MFASF_INDEXER_WRITE_NEW_INDEX

     

    注意

    索引子的相同實例不能用於讀取和寫入。 您必須為其中一個或另一個設定索引子。

     

  3. 呼叫 IMFASFIndexer::Initialize ,藉由指定 ContentInfo 物件的 IMFASFContentInfo 指標來初始化索引子,以描述要寫入或讀取的檔案。 ContentInfo 物件包含構成 ASF 標頭物件的資訊。 索引子物件需要有效的 ContentInfo 物件,才能產生或讀取 ASF 檔案的索引項目目。

下列程式碼範例示範應用程式如何建立和初始化索引子物件,以使用特定的 ASF 內容。 ContentInfo 物件代表 ASF 標頭物件;內容會以位元組資料流程的形式傳遞。

HRESULT CreateASFIndexer(
    IMFASFContentInfo* pContentInfo, 
    DWORD dwFlags,
    IMFASFIndexer** ppIndexer
    )
{
    *ppIndexer = NULL;

    IMFASFIndexer *pIndexer = NULL;

    HRESULT hr = MFCreateASFIndexer(&pIndexer);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pIndexer->SetFlags(dwFlags);
    if (FAILED(hr))
    {
        goto done;
    }

    hr =  pIndexer->Initialize(pContentInfo);
    if (FAILED(hr))
    {
        goto done;
    }

    // Return the object to the caller.
    *ppIndexer = pIndexer;
    (*ppIndexer)->AddRef();

done:
    // Clean up.
    SafeRelease(&pIndexer);
    return hr;
}

ASF 索引子

使用索引子在 ASF 檔案內搜尋

使用索引子寫入新索引