若要編製 ASF 檔案的索引
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器 和 匯出寫入器已經取代了它。 來源讀取器 和 接收寫入器 已針對 Windows 10 和 Windows 11 優化。 Microsoft 強烈建議新代碼盡可能使用 來源讀取器 和 匯入寫入器,而非 Windows Media Format 11 SDK。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
編製 ASF 檔案索引的程式非常簡單。 呼叫 IWMIndexer::StartIndexing 並傳遞檔名。 索引器會執行其餘作業。 StartIndexing 的呼叫是異步的,因此必須使用 OnStatus 回呼來監視狀態。
下列程式代碼示範如何編製 ASF 檔案的索引。 如果您要在編制檔案索引之前設定索引器,您必須包含 中所含範例的程式代碼,以設定索引器。
在此範例中,指向事件的句柄必須建立為全域變數,以便由回呼存取。 下列宣告應該會出現在全域範圍中。
HANDLE g_hEvent = NULL;
在更現實的案例中,事件句柄應該是類別的數據成員,其中包含回呼和啟動索引器邏輯。
索引器會在呼叫 IWMIndexer::StartIndexing之後,將數個事件傳送至 OnStatus 回呼。 您可以根據需求將其捕捉於應用程式中。 您至少需要捕捉WMT_CLOSED,因為這是在索引編製完成時傳送的訊息。 在您實作的 OnStatus 回呼中的訊息交換器中,使用以下邏輯。
// Inside the status switch statement.
case WMT_CLOSED:
// You may want to deal with the HRESULT value passed with the status.
// If you do, you should do it here.
// Signal the event.
SetEvent(g_hEvent);
break;
在此範例中,假設您實作的 OnStatus 回調是透過一個名為 MyCallback 的物件來存取。 如需有關如何與此 SDK 一起使用事件和回呼的詳細資訊,請參閱 使用回呼方法。
IWMIndexer* pMyIndexer = NULL;
HRESULT hr = S_OK;
WCHAR pwszFileName[] = L"C:\SomeFile.wmv";
// Initialize COM.
hr = CoInitialize(NULL);
// Create an event for asynchronous calls.
g_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
// Create an indexer.
hr = WMCreateIndexer(&pMyIndexer);
// TODO: Configure the indexer if needed. See To Configure the Indexer.
// Start the indexer.
hr = pMyIndexer->StartIndexing(pwszFileName, &MyCallback, NULL);
// Wait for the indexer to finish.
WaitForSingleObject(g_hEvent, INFINITE);
// Clean up.
pMyIndexer->Release();
pMyIndexer = NULL
CloseHandle(g_hEvent);
g_hEvent = NULL;
相關主題