Bagikan melalui


Untuk Mengindeks File ASF

[Fitur yang terkait dengan halaman ini, Windows Media Format 11 SDK, adalah fitur warisan. Ini telah digantikan oleh Pembaca Sumber dan Penulis Sink. Pembaca Sumber dan Penulis Sink telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan Pembaca Sumber dan Penulis Sink alih-alih Windows Media Format 11 SDK, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Proses pengindeksan file ASF sangat sederhana. Lakukan panggilan ke IWMIndexer::StartIndexing dan berikan nama file. Pengindeks melakukan sisanya. Panggilan ke StartIndexing tidak sinkron, jadi status harus dipantau menggunakan panggilan balik OnStatus .

Kode berikut menunjukkan cara mengindeks file ASF. Jika Anda ingin mengonfigurasi pengindeks sebelum mengindeks file, Anda harus menyertakan kode dari contoh yang disertakan dalam Untuk Mengonfigurasi Pengindeks.

Untuk contoh ini, handel yang menunjuk ke peristiwa harus dibuat sebagai variabel global sehingga akan dapat diakses oleh panggilan balik. Deklarasi berikut akan muncul dalam cakupan global.

HANDLE g_hEvent = NULL;

Dalam skenario yang lebih realistis, penanganan aktivitas harus menjadi anggota data kelas yang berisi panggilan balik dan logika untuk memulai pengindeks.

Pengindeks mengirimkan beberapa peristiwa ke panggilan balik OnStatus setelah panggilan ke IWMIndexer::StartIndexing. Anda dapat menjebaknya sesuai kebutuhan untuk aplikasi Anda. Minimal, Anda perlu menjebak WMT_CLOSED, yang dikirim saat pengindeksan selesai. Gunakan logika berikut dalam sakelar pesan dalam implementasi panggilan balik OnStatus Anda.

// 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;

Untuk contoh ini diasumsikan bahwa implementasi panggilan balik OnStatus Anda diakses melalui objek yang disebut MyCallback. Untuk informasi selengkapnya tentang menggunakan peristiwa dan panggilan balik dengan SDK ini, lihat Menggunakan Metode Panggilan Balik.

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;

Antarmuka IWMIndexer

Untuk Mengonfigurasi Pengindeks

WMCreateIndexer

Bekerja dengan Indeks