共用方式為


索引器建立和設定

ASF 索引器 是 WMContainer 層元件,用來讀取或寫入進階系統格式 (ASF) 檔案中的 Index Objects。 本主題提供建立 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 檔案內搜尋

使用索引器撰寫新的索引