Directivas de control de errores de Direct2D
En este tema se describen las directivas de control de errores de Direct2D. Contiene las siguientes secciones:
- Uso de HRESULT
- Valor devuelto de funciones por lotes
- Entrada no válida
- NN y RECT de entrada mal ordenados
Uso de HRESULT
Si una función no está por lotes y puede tener un error en tiempo de ejecución, debe devolver HRESULT para indicar un error. Un error en tiempo de ejecución es cualquier error que no se puede evitar en tiempo de diseño, como la memoria insuficiente.
Valor devuelto de funciones por lotes
Las funciones por lotes de Direct2D son las funciones que se procesan como una sola unidad cuando se llama a EndDraw o Close . Son los comandos de dibujo entre BeginDraw y EndDraw o comandos en GeometrySink. Para estas funciones, los errores se notifican en el momento en que se completa el lote. El error se devuelve después de EndDraw para los comandos de dibujo y después de Cerrar para GeometrySink.
RenderTargets detiene el dibujo si se establece un estado de error, pero una aplicación puede llamar a Flush para restablecer el estado de error y reanudar el dibujo.
Las funciones Get y Set no tienen ningún valor devuelto. Sin embargo, si una función Set tiene una entrada no válida, la capa de depuración genera un mensaje. En este caso, no se establece ningún estado de error y la función Set no hace nada.
Entrada no válida
Desreferencias de Direct2D punteros de salida y parámetros necesarios que dan lugar a infracciones de acceso cuando los punteros no son válidos o NULL.
Puntero de salida
Direct2D desreferencia un puntero de salida y lo asigna a NULL inmediatamente después de escribir la función. Esto provoca una infracción de acceso si un llamador pasa NULL como puntero al valor devuelto. Esta directiva también se aplica a matrices de punteros. Para otros parámetros de salida, como una estructura, la desreferencia se produce más adelante y también produce una infracción de acceso. Sin embargo, hay algunos métodos que tienen punteros de salida opcionales (es decir, EndDraw, Flush) que no provocarán una infracción de acceso.
Parámetro obligatorio
Si null se pasa a cualquier función que requiera un valor válido, la función desreferencia el puntero incorrecto al principio da lugar a una infracción de acceso. Para los parámetros de entrada opcionales, NULL es un valor válido que da como resultado un valor predeterminado razonable.
NN y RECT de entrada mal ordenados
En Direct2D, NaN se considera una entrada válida y se ordenan los RECT de entrada mal ordenados.
NaN como entrada
NaN se considera una entrada válida, aunque normalmente da como resultado el primitivo que contiene el naN no dibujado. La API de Direct2D no proporciona filtrado explícito de NaN para validar la entrada.
RECT de entrada mal ordenados
Los RECT de entrada mal ordenados se ordenan para que se especifiquen correctamente las esquinas superior, izquierda e inferior derecha. Para la salida, los rectángulos vacíos tienen este aspecto: {Infinity, Infinity, FloatMax, FloatMax}.