IAMErrorLog 구현
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
[이 API는 지원되지 않으며 나중에 변경되거나 사용할 수 없습니다.]
IAMErrorLog 인터페이스에는 단일 메서드인 LogError가 포함되어 있습니다. 메서드에 대한 매개 변수에는 발생한 오류에 대한 정보가 포함됩니다.
STDMETHODIMP LogError(
LONG Severity, // Reserved. Do not use.
BSTR ErrorString, // Description.
LONG ErrorCode, // Error code.
HRESULT hresult, // HRESULT that caused the error.
VARIANT *pExtraInfo); // Extra information about the error.
오류 코드 및 오류 문자열은 DirectShow Editing Services에 의해 정의됩니다. 오류 목록은 렌더링 오류를 참조하세요.
pExtraInfo 매개 변수에는 오류에 대한 추가 정보를 포함하는 VARIANT 형식에 대한 포인터가 포함되어 있습니다. VARIANT의 데이터 형식 및 내용은 발생한 특정 오류에 따라 달라집니다. 예를 들어 잘못된 파일 이름으로 인해 오류가 발생한 경우 VARIANT는 잘못된 파일 이름을 가진 문자열입니다. 일부 오류에는 추가 정보가 없으므로 pExtraInfo 는 NULL일 수 있습니다. 다음 코드에서는 데이터 형식을 나타내는 VARIANT의 vt 멤버를 테스트하고 그에 따라 메시지의 형식을 지정하는 방법을 보여 있습니다.
if( pExtraInfo ) // Report extra information, if any.
{
printf("\tExtra info: ");
if( pExtraInfo->vt == VT_BSTR ) // Extra info is a BSTR.
{
UINT len = SysStringLen(pExtraInfo->bstrVal);
char *szExtra = new char[len];
if (szExtra != NULL)
{
// Note - If the BSTR contains embedded NULL characters, this
// will only pick up the first sub-string.
WideCharToMultiByte(CP_ACP, 0, pExtraInfo->bstrVal, -1,
szExtra, len, 0, 0);
printf("%s\n", szExtra);
delete [] szExtra;
}
}
else if( pExtraInfo->vt == VT_I4 ) // Extra info is an integer.
printf("%d\n", pExtraInfo->lVal);
else if( pExtraInfo->vt == VT_R8 ) // Extra info is floating-point.
printf("%f\n", pExtraInfo->dblVal);
}
참고
가 가리키는 VARIANT를 해제하지 마세요.
레이블 | 값 |
---|---|
|
. 또한 VARIANT는 메서드가 반환된 후 유효하지 않으므로 나중에 참조하지 마세요.
관련 항목