Usando os exemplos de código do SDK do Windows Media Format
[A funcionalidade associada a esta página, Windows Media Format 11 SDK, é uma funcionalidade herdada. Foi substituído por Source Reader e Sink Writer. Source Reader e Sink Writer foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize Source Reader e Sink Writer em vez de Windows Media Format 11 SDK, sempre que 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.]
Muitas das seções explicativas deste SDK incluem exemplos de código. Os exemplos são escritos para serem tão claros e concisos quanto possível. Ao ler os exemplos, você deve estar ciente das seguintes convenções.
Presume-se que todos os exemplos incluam windows.h e wmsdk.h. Quaisquer outros ficheiros de cabeçalho necessários são mencionados no texto explicativo.
A verificação de erros foi limitada a sair da função se ocorrer um erro. Em um aplicativo, você deve verificar se há códigos de erro específicos e fornecer algum tipo de relatório de erros.
Ao verificar valores de retorno de métodos ou funções que retornam um valor de HRESULT, você deve usar a macro FAILED para descobrir se o valor de retorno indica falha.
HRESULT hr; hr = SomeFunction(); if (FAILED(hr)) { // Check for specific error values. }
Muitos dos exemplos nesta documentação usam uma macro chamada GOTO_EXIT_IF_FAILED, que é definida no código a seguir.
#ifndef GOTO_EXIT_IF_FAILED #define GOTO_EXIT_IF_FAILED(hr) if(FAILED(hr)) goto Exit; #endif
Cada uma dessas funções de exemplo tem uma tag chamada "Exit:", após a qual todas as interfaces e memória alocadas na função são liberadas e o código de erro, se houver, é retornado.
Interfaces e memória são liberadas nos exemplos de código usando macros chamadas SAFE_RELEASE e SAFE_ARRAY_DELETE. Essas macros são definidas no seguinte código:
#ifndef SAFE_RELEASE #define SAFE_RELEASE(x) \ if(x != NULL) \ { \ x->Release(); \ x = NULL; \ } #endif #ifndef SAFE_ARRAY_DELETE #define SAFE_ARRAY_DELETE(x) \ if(x != NULL) \ { \ delete[] x; \ x = NULL; \ } #endif
Muitas vezes, você precisará incluir a lógica de um exemplo em outro exemplo para que o exemplo seja significativo. Nesses casos, um comentário TODO é incluído, com uma referência ao exemplo de código apropriado.
Para facilitar a leitura do código, nenhuma das funções de exemplo nesta documentação valida seus parâmetros de entrada. Se você copiar qualquer uma dessas funções em seu código, deverá validar todos os parâmetros de entrada.
Tópicos relacionados