Compartir a través de


Uso de los ejemplos de código del SDK de Windows Media Format

[La característica asociada a esta página, WINDOWS Media Format 11 SDK, es una característica heredada. Se ha reemplazado por lector de origen y escritor receptor. Lector de origen y escritor receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use lector fuente y escritor receptor en lugar del SDK de Windows Media Format 11, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Muchas de las secciones explicativas de este SDK incluyen ejemplos de código. Los ejemplos se escriben para que sean lo más claros y concisos posible. Al leer los ejemplos, debe tener en cuenta las convenciones siguientes.

  • Se supone que todos los ejemplos incluyen windows.h y wmsdk.h. Cualquier otro archivo de encabezado necesario se menciona en el texto explicativo.

  • La comprobación de errores se ha restringido a interrumpir la función si se produce un error. En una aplicación, debe comprobar si hay códigos de error específicos y proporcionar algún tipo de notificación de errores.

    Al comprobar los valores devueltos de métodos o funciones que devuelven un valor HRESULT , debe usar la macro FAILED para detectar si el valor devuelto indica un error.

    HRESULT hr;
    hr = SomeFunction();
    if (FAILED(hr))
    {
       // Check for specific error values.
    }
    

    Muchos de los ejemplos de esta documentación usan una macro denominada GOTO_EXIT_IF_FAILED, que se define en el código siguiente.

    #ifndef GOTO_EXIT_IF_FAILED
    #define GOTO_EXIT_IF_FAILED(hr) if(FAILED(hr)) goto Exit;
    #endif
    

    Cada una de estas funciones de ejemplo tiene una etiqueta denominada "Exit:", después de la cual se liberan todas las interfaces y la memoria asignadas en la función y se devuelve el código de error, si existe.

  • Las interfaces y la memoria se liberan en los ejemplos de código mediante macros denominadas SAFE_RELEASE y SAFE_ARRAY_DELETE. Estas macros se definen en el código siguiente:

    #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
    
  • A menudo, deberá incluir la lógica de un ejemplo en otro ejemplo para que el ejemplo sea significativo. En esos casos, se incluye un comentario TODO, con una referencia al ejemplo de código adecuado.

  • Para facilitar la lectura del código, ninguna de las funciones de ejemplo de esta documentación valida sus parámetros de entrada. Si copia cualquiera de estas funciones en el código, debe validar los parámetros de entrada.

Introducción