Compartir a través de


Estructura VIDEOMEMORY (ddrawint.h)

La estructura VIDEOMEMORY permite al controlador administrar su memoria de visualización en montones.

Sintaxis

typedef struct _VIDEOMEMORY {
  DWORD   dwFlags;
  FLATPTR fpStart;
  union {
    FLATPTR fpEnd;
    DWORD   dwWidth;
  };
  DDSCAPS ddsCaps;
  DDSCAPS ddsCapsAlt;
  union {
#if ...
    _VMEMHEAP        *lpHeap;
#else
    struct _VMEMHEAP *lpHeap;
#endif
    DWORD            dwHeight;
  };
} VIDEOMEMORY;

Miembros

dwFlags

Especifica un conjunto de marcas que describen esta sección concreta de memoria para mostrar. Este miembro puede ser un OR bit a bit de cualquiera de los valores siguientes:

Marca Significado
VIDMEM_ISLINEAR La memoria para mostrar es un bloque contiguo de memoria.
VIDMEM_ISRECTANGULAR La memoria de presentación es rectangular.
VIDMEM_ISHEAP Esta marca está reservada para uso del sistema y el controlador debe omitirla.
VIDMEM_ISNONLOCAL El montón reside en memoria no local (AGP).
VIDMEM_ISWC El controlador ha habilitado la combinación de escritura en la memoria para mostrar en este montón. La combinación de escritura es un modo de almacenamiento en caché especial en procesadores Pentium Pro que por lotes escribe en la misma línea de caché para que se puedan transferir en un solo reloj de bus. La combinación de escritura no conserva la ordenación de las escrituras, un equilibrio que suele ser aceptable para los búferes de fotogramas. Consulte la documentación de Intel para obtener más información sobre la combinación de escritura. Esta marca no se puede usar a menos que también se establezca la marca VIDMEM_ISNONLOCAL.
VIDMEM_HEAPDISABLED El entorno de ejecución de Microsoft DirectDraw usa esta marca para desactivar un montón cuando se ha producido un error en la inicialización del montón. Esto probablemente se produce con un montón de AGP. El controlador no debe establecer este bit.

fpStart

Apunta a la dirección inicial de un intervalo de memoria en el montón.

fpEnd

Apunta a la dirección final de un intervalo de memoria si el montón es lineal. Esta dirección es inclusiva, es decir, especifica la última dirección válida en el intervalo. Por lo tanto, el número de bytes especificados por fpStart y fpEnd es (fpEnd - fpStart + 1).

dwWidth

Especifica el ancho en bytes de la sección de memoria a la que apunta fpStart. Este miembro solo se debe usar para describir regiones de memoria rectangulares.

ddsCaps

Especifica una estructura DDSCAPS en la que el controlador devuelve las funciones para las que no se puede usar esta sección de memoria.

ddsCapsAlt

Especifica una estructura DDSCAPS en la que el controlador devuelve las funciones para las que no se puede usar este fragmento de memoria cuando no se encuentra ninguna otra memoria en el primer paso.

lpHeap

Reservado para uso del sistema y debe omitirlo el controlador.

dwHeight

Especifica el alto del fragmento de memoria al que apunta fpStart . Este miembro solo se debe usar para describir regiones de memoria rectangulares.

Comentarios

En Microsoft Windows 2000 y versiones posteriores, la estructura de datos se denomina VIDEOMEMORY y en Windows 98/Me la estructura de datos se denomina VIDMEM.

GDI asigna y pasa una matriz de estructuras VIDEOMEMORY a la segunda llamada de la función DrvGetDirectDrawInfo del controlador. El controlador debe rellenar los miembros adecuados de cada estructura para describir cada sección de memoria determinada. La lista proporciona una descripción completa de la memoria fuera de pantalla del controlador.

DirectDraw examina para asignar sus superficies en el orden en que se muestran los montones de memoria para mostrar. Los montones se administran en una matriz de estructuras VIDEOMEMORY. La memoria asignada primero será la memoria a la que se accede primero. La estructura VIDEOMEMORY configura determinados puntos de partida y determina la cantidad de memoria en la superficie y lo que no se puede hacer con la superficie. DirectDraw lo administra mediante la subalocalización y desasignación de memoria, es decir, la creación y destrucción de superficies bajo la jurisdicción de cada montón. Los límites físicos determinan cómo configurar estos atributos.

El administrador del montón de DirectDraw hace que dos pases a través de las estructuras VIDEOMEMORY. El miembro ddsCaps indica a DirectDraw para qué memoria del montón no se puede usar en el primer paso. Por ejemplo, si el montón era lo suficientemente grande como para un búfer de reserva, los sprites podrían excluirse de asignarse en el primer paso estableciendo la marca DSCAPS_OFFSCREENPLAIN en la estructura DDSCAPS . De este modo, otras superficies se rellenarían con sprites, al tiempo que conservaban el búfer de reserva para el volteo de página. El miembro ddsCapsAlt podría establecerse para permitir sprites en el segundo pase (quitando la marca DSCAPS_OFFSCREENPLAIN). Esto permite que los montones se usen preferentemente para su uso más alto y óptimo, sin descartar usos alternativos. Al elegir cuidadosamente el orden de asignación (por ejemplo, enumerando el búfer de reserva en último lugar), la necesidad de ordenar por ddsCaps y ddsCapsAlt a veces se puede eliminar.

Requisitos

   
Encabezado ddrawint.h (incluya Winddi.h)

Consulte también

DDSCAPS

DrvGetDirectDrawInfo