다음을 통해 공유


ASF 파일을 인덱싱하려면

[이 페이지와 연결된 기능인 Windows Media Format 11 SDK는 레거시 기능입니다. 원본 판독기 및 싱크 작성기에 의해 대체되었습니다. 원본 판독기 및 싱크 작성기는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 소스 판독기 및 싱크 작성기를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

ASF 파일을 인덱싱하는 프로세스는 매우 간단합니다. IWMIndexer::StartIndexing을 호출하고 파일 이름을 전달합니다. 인덱서는 나머지를 수행합니다. StartIndexing에 대한 호출은 비동기이므로 OnStatus 콜백을 사용하여 상태 모니터링해야 합니다.

다음 코드에서는 ASF 파일을 인덱싱하는 방법을 보여줍니다. 파일을 인덱싱하기 전에 인덱서 구성을 하려면 인덱 서 구성에 포함된 예제의 코드를 포함해야 합니다.

이 예제에서는 콜백을 통해 액세스할 수 있도록 이벤트를 가리키는 핸들을 전역 변수로 만들어야 합니다. 다음 선언은 전역 scope 표시됩니다.

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;

IWMIndexer 인터페이스

인덱서 구성

WMCreateIndexer

인덱스 작업