Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
[Esta API não é suportada e pode ser alterada ou indisponível no futuro.]
A interface IAMErrorLog contém um único método, LogError. Os parâmetros para o método contêm informações sobre o erro que ocorreu.
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.
O código de erro e a cadeia de caracteres de erro são definidos pelos Serviços de Edição DirectShow. Para obter uma lista de erros, consulte Rendering Errors.
O parâmetro pExtraInfo contém um ponteiro para um tipo VARIANT que contém informações adicionais sobre o erro. O tipo de dados e o conteúdo da VARIANT dependem do erro específico que ocorreu. Por exemplo, se o erro foi causado por um nome de arquivo incorreto, o VARIANT é uma cadeia de caracteres com o nome de arquivo incorreto. Alguns erros não têm informações adicionais, portanto pExtraInfo pode ser NULL. O código a seguir mostra como testar o vt membro da VARIANT, que indica o tipo de dados, e formatar uma mensagem de acordo.
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);
}
Observação
Não liberte a VARIANTE apontada por
| Rótulo | Valor |
|---|---|
|
. Além disso, o VARIANT torna-se inválido depois que o método retorna, portanto, não faça referência a ele mais tarde.
Tópicos relacionados