ASF 파일을 인덱싱하려면
[Windows Media Format 11 SDK 이 페이지와 연결된 기능은 레거시 기능입니다. 원본 판독기 는 및 싱크 작성기 로 대체되었습니다. 원본 판독기 및 싱크 기록기 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 원본 판독기 및 싱크 기록기 사용하는 것이 좋습니다. 가능한 경우 레거시 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;
이 예제에서는 MyCallback이라는 개체를 통해 OnStatus 콜백의 구현에 액세스한다고 가정합니다. 이 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;
관련 항목