Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]
[Ten interfejs API nie jest obsługiwany i może zostać zmieniony lub niedostępny w przyszłości.]
InterfejsIAMErrorLogzawiera jedną metodę LogError. Parametry metody zawierają informacje o błędzie, który wystąpił.
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.
Kod błędu i ciąg błędu są definiowane przez usługi edycji DirectShow. Aby uzyskać listę błędów, zobacz Rendering Errors.
Parametr pExtraInfo zawiera wskaźnik typu VARIANT, który zawiera dodatkowe informacje o błędzie. Typ danych i zawartość WARIANTu zależą od określonego błędu, który wystąpił. Jeśli na przykład błąd został spowodowany nieprawidłową nazwą pliku, VARIANT jest ciągiem o złej nazwie pliku. Niektóre błędy nie zawierają dodatkowych informacji, więc pExtraInfo może być NULL. Poniższy kod pokazuje, jak przetestować vt elementu członkowskiego VARIANT, który wskazuje typ danych i odpowiednio sformatować komunikat.
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);
}
Notatka
Nie zwalniaj wariantu wskazanego przez
| Etykieta | Wartość |
|---|---|
|
. Ponadto wariant staje się nieprawidłowy po zakończeniu działania metody, więc nie odwołuj się do niego później.
Tematy pokrewne