stringtranslate.com

Metarchivo de Windows

Windows Metafile ( WMF ) es un formato de archivo de imagen diseñado originalmente para Microsoft Windows en la década de 1990. El formato original de Windows Metafile no era independiente del dispositivo (aunque podía serlo más con encabezados de ubicación) y podía contener tanto gráficos vectoriales como componentes de mapa de bits . Actúa de manera similar a los archivos SVG . Los archivos WMF fueron reemplazados posteriormente por los archivos Enhanced Metafiles (EMF), que sí ofrecían independencia del dispositivo. Los archivos EMF se mejoraron a su vez mediante archivos EMF+ .

Básicamente, un metarchivo almacena una lista de registros que consiste en comandos de dibujo, definiciones de propiedades y objetos gráficos para mostrar una imagen en la pantalla. [1] Los comandos de dibujo utilizados están estrechamente relacionados con los comandos de la API de Interfaz de dispositivo gráfico (GDI) utilizada para dibujar en Microsoft Windows.

Existen tres tipos principales de metarchivos: un WMF es un formato de 16 bits introducido en Windows 3.0 . Es el formato vectorial nativo de las aplicaciones de Microsoft Office, como Word , PowerPoint y Publisher . A partir de 2023 , está disponible la revisión 17 de la especificación del formato de metarchivo de Windows. [2] Los archivos EMF, que reemplazaron a los archivos WMF, funcionan según el mismo principio, solo que es un formato de archivo de 32 bits que también permite la incrustación de datos privados dentro de registros de "comentarios". [3] EMF+ es una extensión de los archivos EMF y se incrusta en estos registros de comentarios, lo que permite imágenes y texto utilizando comandos, objetos y propiedades similares a Windows GDI+ . [4]

Historia

El formato de archivo WMF original de 16 bits se especificó en su totalidad en el volumen 4 de la documentación del SDK de Windows 3.1 de 1992 [5] (al menos si se combinaba con las descripciones de las funciones y estructuras individuales en los otros volúmenes), pero esa especificación era vaga en cuanto a algunos detalles. Estos manuales se publicaron como libros impresos disponibles en las librerías sin necesidad de firmar un acuerdo de licencia de usuario final (EULA) ni otras restricciones de licencia inusuales (solo una advertencia general de que, si se compraba como parte de un paquete de software, el software estaría sujeto a una).

Con el tiempo, la existencia de esa especificación histórica se olvidó en gran medida y algunas implementaciones alternativas recurrieron a la ingeniería inversa para averiguar el formato de archivo a partir de los archivos WMF existentes, lo que era difícil y propenso a errores. [6] En septiembre de 2006, Microsoft volvió a publicar la especificación del formato de archivo WMF en una forma más completa [7] en el contexto de la Promesa de Especificación Abierta de Microsoft , prometiendo no hacer valer los derechos de patente a los implementadores de formatos de archivo. [8]

Más tarde, Microsoft desaprobó los archivos WMF en favor de los archivos EMF de 32 bits , ya que los archivos WMF tenían problemas reales con la independencia del dispositivo, a pesar del uso de un encabezado de archivo "ubicable" que proporcionaba una independencia básica del dispositivo. Microsoft descubrió que los desarrolladores que usaban el formato estaban "[incrustando] comentarios de aplicación, ubicación o escala en los metarchivos... Otros añadían encabezados al metarchivo que proporcionaban información específica de la aplicación", lo que causaba importantes problemas de compatibilidad. [9] Por lo tanto, en 1992 con Windows NT 3.1 , Microsoft introdujo el formato de metarchivo mejorado (EMF) [10] , un formato que se basaba en la API de Win32 y con el que incorporaron la independencia del dispositivo. [11] [9] — estos también se conocían como metarchivos NT. [12] Con el lanzamiento de Windows XP y GDI+, el conjunto de registros tuvo que aumentar significativamente, por lo que Microsoft lanzó EMF+ como una extensión del formato de archivo EMF existente. [10] [13]

Estructura de metarchivo

Comparación de metarchivos de Windows: los archivos WMF pueden incluir registros EMF+

Los archivos WMF, EMF y EMF+ constan de una serie de registros que se reproducen para generar una salida gráfica. Algunos registros definen objetos que pueden especificar objetos gráficos utilizados para determinar cómo se deben dibujar los gráficos (por ejemplo, los lápices especifican el color y el ancho de las líneas). Cada uno de estos objetos se almacena en metarchivos y se colocan en una tabla de objetos, que realiza un seguimiento del uso de los objetos gráficos mientras se procesa el metarchivo. La tabla de objetos es una matriz asociativa de índices a estructuras de objetos gráficos definidas dentro del metarchivo.

Los archivos WMF y EMF manejan el procesamiento de objetos de manera diferente a los registros EMF+ en los archivos EMF. A medida que se procesa un archivo WMF y EMF, los registros se leen en una tabla de objetos una vez que se define un objeto. Si se elimina un objeto, se libera el objeto de la tabla y se puede reutilizar el identificador. Cabe destacar que un objeto no se utilizará hasta que se seleccione específicamente durante la reproducción de la grabación. [14] [15] Esto difiere para los archivos EMF+, que también utilizan una matriz asociativa a través de un mapa hash que registra el objeto junto con un identificador de objeto. Sin embargo, a diferencia de los archivos WMF y EMF que pueden eliminar un objeto, cuando se crea un nuevo objeto que tiene el mismo índice que un objeto existente, la entrada en la tabla se reemplaza con el nuevo objeto. Un archivo EMF tampoco necesita seleccionar específicamente un objeto antes de usarlo. [16]

FMI

Estructuras de metarchivos de Windows originales y colocables [17]

Los archivos WMF no fueron diseñados originalmente para ser independientes del dispositivo, lo que significa que un archivo no podía reproducirse en dispositivos de salida que difirieran del dispositivo original en el que se grabó el archivo. Aldus Corporation inventó una solución parcial a este problema , al agregar un encabezado "ubicable" adicional, llamado "encabezado APM", [18] que agregó un rectángulo delimitador, una versión del metarchivo, el tamaño del metarchivo, la cantidad de objetos en el metarchivo y el tamaño del registro individual más grande en el metarchivo. [19] [20] Esto fue incorporado más tarde al formato WMF por Microsoft , a partir de Windows 2000. [ 21]

Los archivos WMF están estructurados por una serie de registros, comenzando con una serie de registros de control: el registro de encabezado, [19] [22] el registro de ubicación opcional antes mencionado, [23] y finalizando con un registro de fin de archivo . [19] [24]

Los registros de control encapsulan los registros que forman la imagen en sí. Estos registros funcionan dentro de lo que se conoce como el contexto del dispositivo de reproducción , que es la colección de propiedades y objetos que forman el entorno gráfico de un dispositivo mientras el metarchivo se "reproduce" en este dispositivo de salida. [25]

Los registros que no sean registros de control se pueden agrupar en gran medida en registros de mapa de bits, registros de dibujo, registros de objetos, registros de estado y registros de escape.

Registros de mapa de bits

Los registros de mapa de bits administran y generan imágenes de mapa de bits .

Registros de dibujo

Los registros de dibujo producen salida gráfica.

Registros de objetos

Los registros de objetos crean y administran objetos gráficos. En los archivos WMF hay dos grandes categorías de objetos: objetos gráficos y objetos de estructura. Los objetos de estructura no se crean ni se eliminan explícitamente en un WMF, sino que son estructuras complejas. Por ejemplo, BitmapCoreHeader contiene información sobre las dimensiones y el formato de color de un mapa de bits independiente del dispositivo, [52] que es en sí mismo parte de un objeto DeviceIndependentBitmap. [53] Sin embargo, un objeto gráfico especifica parámetros para la salida de gráficos y, durante la reproducción del WMF, configura el contexto del dispositivo de reproducción. [54]

Los objetos gráficos pueden ser pinceles (definen el estilo, el color y el patrón de un pincel que define cómo pintar un área del gráfico), fuentes (definen propiedades que afectan cómo se muestra el texto), paletas (especifican colores como valores independientes del dispositivo, definidos por una aplicación), lápices (especifican los atributos gráficos de una línea) y regiones (que especifican segmentos de línea y curva que definen una forma). [54]

Registros estatales

Los registros de estado administran las propiedades gráficas del contexto del dispositivo de reproducción. [67]

Registros de escape

Registro de escape genérico de WMF

Los registros de escape son un medio para ampliar la funcionalidad del metarchivo a través de registros que no están definidos de otro modo como un tipo de registro WMF. Cada registro de escape contiene una función de registro, una función de escape y, potencialmente, datos de escape.

Los siguientes registros de escape forman un archivo WMF.

Se encontró una vulnerabilidad importante en los registros de escape alrededor del registro de escape Abort, que almacena el código del procedimiento de aborto dentro del propio registro. Esto afectó a los sistemas Windows (consulte CVE - 2005-4560) y al proyecto Wine (consulte CVE - 2006-0106). Según Secunia , "La vulnerabilidad se debe a un error en el manejo de los archivos Windows Metafile ('.wmf') que contienen registros 'Escape' SETABORTPROC especialmente diseñados. Dichos registros permiten que se ejecute una función arbitraria definida por el usuario cuando falla la representación de un archivo WMF". [142] Según la documentación del SDK de Windows 3.1, el escape SETABORTPROC quedó obsoleto y fue reemplazado por la función del mismo nombre en Windows 3.1, mucho antes de que se descubriera la vulnerabilidad de WMF. [143] Sin embargo, el código de escape obsoleto se mantuvo para la compatibilidad con programas de 16 bits escritos para (o al menos compatibles con versiones anteriores) Windows 3.0. Este cambio ocurrió aproximadamente al mismo tiempo que Microsoft estaba creando la reimplementación de 32 bits de GDI para Windows NT, y es probable que la vulnerabilidad haya ocurrido durante este esfuerzo.

Después de que Steve Gibson acusó a Microsoft de implementar deliberadamente una puerta trasera en su código, [144] [145] Mark Russinovich proporcionó una refutación y declaró que:

... las cosas eran diferentes cuando se diseñó el formato. En el modelo de memoria “grande” de Windows 3.1, el código es inherentemente independiente de la ubicación y Windows nunca fue parcheado, por lo que tanto Windows como una aplicación podían simplemente copiar una función de aplicación en el archivo WMF y asumir que funcionaría cuando la misma aplicación la reprodujera en una sesión de ejecución posterior. En cualquier caso, no está claro que los desarrolladores imaginaran que las aplicaciones crearan metarchivos en disco con procedimientos de cancelación. Además, como señaló Stephen Toulouse de Microsoft en la refutación de Microsoft a las afirmaciones de Steve, el panorama de seguridad a principios de los años 90 era muy diferente al de hoy y todo el código, incluido el almacenado en un archivo WMF, era inherentemente confiable. [146]

Peter Ferrie, de Symantec Security Response, EE.UU., también estuvo en desacuerdo con Gibson y señaló que:

Gibson afirmó que se crea un hilo para ejecutar el controlador SetAbortProc. De hecho, no se crea ningún hilo para ejecutar el controlador: es una devolución de llamada, que es llamada por el analizador, y el analizador tiene que esperar hasta que la devolución de llamada regrese, de lo contrario se pierde todo el objetivo de la función (abortar la impresión). Por su propia admisión, Gibson no leyó la documentación (de hecho, afirmó que no pudo encontrarla, aunque está disponible gratuitamente en el sitio web de Microsoft), y afirmó que el contexto del dispositivo no está disponible para el controlador de la función. Por supuesto, el contexto del dispositivo está disponible para el controlador de la función: es uno de los dos parámetros que se le pasan (ver arriba), y es necesario para abortar la impresión. Finalmente, Gibson afirmó que el flujo de control no podía regresar a Windows. Es simplemente una cuestión de que la función regrese y descarte los parámetros que se pasaron en la pila. Si el registro está bien formado, Windows continuará analizando el archivo, como antes. ... Gibson admite que estaba adivinando sobre varias cosas. Desgraciadamente, su suposición no fue acertada. Supongo que ahora sabemos más. [147]

Campo electromagnético

Encabezados de metarchivo mejorado de Windows

Los archivos EMF tienen tres versiones posibles de encabezados. Los encabezados originales son solo un contenedor para imágenes, la segunda y tercera versión encapsulan el encabezado original y contienen un registro de formato de píxel y compatibilidad con registros OpenGL, y la tercera versión encapsula la segunda extensión de encabezado y aumenta la precisión y la escalabilidad de los EMF, ya que agrega la capacidad de medir distancias de superficies de dispositivos utilizando el sistema métrico. [148]

Cada encabezado EMF comienza con un registro EMR_HEADER y registra las propiedades relevantes del dispositivo en el que se grabó la imagen del metarchivo. El encabezado EMF original tiene un encabezado de 80 bytes y una cadena de descripción de longitud variable opcional. [149] Otros metarchivos contienen campos de extensión, que encapsulan el encabezado original. EmfMetafileHeaderExtension1es un registro que se inserta directamente después del encabezado EMF original, especifica si hay un descriptor de formato de píxel y el desplazamiento hasta el objeto descriptor dentro del encabezado, así como un campo que especifica si existen registros OpenGL en el metarchivo. [150] El descriptor de formato de píxel especifica las capacidades de la superficie de dibujo y si un píxel está codificado en RGBA o es un índice en una tabla de colores. [151] EmfMetafileHeaderExtension2 es un registro que se inserta directamente después del EmfMetafileHeaderExtension1registro y contiene dos campos con los valores X e Y para medir la superficie del dispositivo en micrómetros. [152]

Al igual que los archivos WMF, los registros se pueden clasificar por función; sin embargo, existen más tipos de registros en los archivos EMF que en los archivos WMF. Los registros se pueden clasificar como registros de control, de mapa de bits, de recorte, de comentario, de dibujo, de escape, de creación de objetos, de manipulación de objetos, OpenGL, de corchetes de ruta, de estado y de transformación.

Campo electromagnético+

Con el lanzamiento de Windows XP , se introdujo el formato Enhanced Metafile Format Plus Extensions (EMF+). EMF+ proporciona una forma de serializar llamadas a la API GDI+ de la misma manera que WMF/EMF almacena llamadas a GDI.

También existen versiones comprimidas de Metarchivos de Windows conocidas como Metarchivo Comprimido de Windows (WMZ) y Metarchivo Comprimido Mejorado de Windows (EMZ), [153] que son básicamente archivos WMF y EMF comprimidos con gzip respectivamente.

Implementaciones

El formato WMF fue diseñado para ser ejecutado por la capa GDI de Windows con el fin de restaurar la imagen , pero como los archivos binarios WMF contienen la definición de las primitivas gráficas GDI que constituyen esta imagen, es posible diseñar bibliotecas alternativas que rendericen archivos binarios WMF o los conviertan en otros formatos gráficos.

Véase también

Referencias

  1. ^ Formato de metarchivo de Windows (PDF) , Microsoft, pág. 16
  2. ^ "[MS-WMF]: formato de metarchivo de Windows". MSDN . 2021-04-26 . Consultado el 2023-09-13 .
  3. ^ [MS-EMF]: Formato de metarchivo mejorado (PDF) , Microsoft, pág. 17
  4. ^ [MS-EMFPLUS]: Formato de metarchivo mejorado más extensiones (PDF) , Microsoft, pág. 19
  5. ^ Referencia para programadores de Microsoft Windows 3.1, volumen 4, recursos, Microsoft Press 1992, ISBN 1-55615-494-1 , capítulo 3, págs. 21-45 
  6. ^ Caolan McNamara. "Referencia de metarchivo de ventana (wmf)" . Consultado el 1 de junio de 2008. Estos códigos de operación no están implementados porque no sé qué son y no se conoce documentación al respecto .
  7. ^ "[MS-WMF]: Especificación del formato de metarchivo de Windows" . Consultado el 1 de junio de 2008 .
  8. ^ "Promesa de especificación abierta de Microsoft". Microsoft . Consultado el 1 de junio de 2008 .
  9. ^ ab Enhanced Metafiles in Win32, Microsoft Developer Network Technology Group, 10 de junio de 1993
  10. ^ abcdef Leonard, Sean (septiembre de 2016). «Windows Metafiles». Tipos de medios de imágenes de Windows. IETF . pág. 1. doi : 10.17487/RFC7903 . ISSN  2070-1721. RFC 7903 . Consultado el 8 de febrero de 2020 .
  11. ^ "EMF", FileFormat , Aspose Pty Ltd, 11 de octubre de 2019 , consultado el 20 de enero de 2020
  12. ^ Petzold, Charles (11 de octubre de 1994), "NT Metarchivos y objetos GDI", PC Magazine , págs. 343-347
  13. ^ Polyakov, Alex; Brusentsev, Vitaly (2005). Programación de gráficos con GDI+ y DirectX. A-List Publishing. pág. 68. ISBN 1-931769-39-7.
  14. ^ "3.1.4.1 Tabla de objetos WMF", [MS-WMF]: formato de metarchivo mejorado (PDF) , Microsoft, pág. 187
  15. ^ "3.1.1.1 Tabla de objetos EMF", [MS-EMF]: Especificación del formato de metarchivo de Windows (PDF) , Microsoft, págs. 212-214
  16. ^ [MS-EMFPLUS]: Formato de metarchivo mejorado más extensiones (PDF) , Microsoft, págs. 204-205
  17. ^ "Figura 1: Estructuras de los metarchivos de Windows originales y colocables", Windows Metafile Format (PDF) , Microsoft, pág. 17
  18. ^ Q66949: INFORMACIÓN: Funciones de metarchivo de Windows y metarchivos colocables de Aldus, Microsoft – vía KnowledgeBase Archive: Un archivo de los primeros archivos de KnowledgeBase de Microsoft
  19. ^ abc "1.3.1 Estructura del metarchivo", Formato de metarchivo de Windows (PDF) , Microsoft, pág. 17
  20. ^ "2.3.2.3 Registro META_PLACEABLE", Formato de metarchivo de Windows (PDF) , Microsoft, pág. 115
  21. ^ Formato de metarchivo de Windows (PDF) , Microsoft, pág. 55, <55> Sección 2.3.2.3: Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 y Windows 95: esta función no es compatible.
  22. ^ "2.3.2.2 Registro MTF_HEADERRECORD", Formato de metarchivo de Windows (PDF) , Microsoft, pág. 114
  23. ^ "2.3.2.2 Registro MTF_HEADERRECORD", Formato de metarchivo de Windows (PDF) , Microsoft, pág. 114
  24. ^ "2.3.2.1 Registro MTF_EOF", Formato de metarchivo de Windows (PDF) , Microsoft, pág. 114
  25. ^ "1.1 Glosario", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , Microsoft, pág. 13 , consultado el 24 de enero de 2020
  26. ^ "2.3.1.1 Registro META_BITBLT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 101-103 , consultado el 24 de enero de 2020
  27. ^ "2.3.1.2 Registro META_DIBBITBLT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , Microsoft, págs. 103-106 , consultado el 24 de enero de 2020
  28. ^ "2.3.1.3 Registro META_DIBSTRETCHBITBLT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , Microsoft, págs. 106-108 , consultado el 24 de enero de 2020
  29. ^ "2.3.1.4 Registro META_SETDIBTODEV", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , Microsoft, págs. 108-109 , consultado el 24 de enero de 2020
  30. ^ "2.3.1.5 Registro META_STRETCHBLT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , Microsoft, págs. 109-110 , consultado el 24 de enero de 2020
  31. ^ "2.3.1.6 Registro META_STRETCHDIB", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , Microsoft, págs. 103-106 , consultado el 24 de enero de 2020
  32. ^ "2.3.3.1 Registro META_ARC", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 101-103 , consultado el 24 de enero de 2020
  33. ^ "2.3.3.2 Registro META_CHORD", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 117-118 , consultado el 24 de enero de 2020
  34. ^ "2.3.3.3 Registro META_ELLIPSE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 119 , consultado el 24 de enero de 2020
  35. ^ "2.3.3.4 Registro META_EXTFLOODFILL", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 119-120 , consultado el 24 de enero de 2020
  36. ^ "2.3.3.5 Registro META_EXTTEXTOUT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 119-120 , consultado el 24 de enero de 2020
  37. ^ "2.3.3.6 Registro META_FILLREGION", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 121 , consultado el 24 de enero de 2020
  38. ^ "2.3.3.7 Registro META_FLOODFILL", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 119-120 , consultado el 24 de enero de 2020
  39. ^ "2.3.3.8 Registro META_FRAMEREGION", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 122-123 , consultado el 24 de enero de 2020
  40. ^ "2.3.3.9 Registro META_INVERTREGION", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 123 , consultado el 24 de enero de 2020
  41. ^ "2.3.3.10 Registro META_LINETO", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 123-124 , consultado el 24 de enero de 2020
  42. ^ "2.3.3.11 Registro META_PAINTREGION", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 124 , consultado el 24 de enero de 2020
  43. ^ "2.3.3.12 Registro META_PATBLT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 124-125 , consultado el 24 de enero de 2020
  44. ^ "2.3.3.13 Registro META_PIE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 125-126 , consultado el 24 de enero de 2020
  45. ^ "2.3.3.14 Registro META_POLYLINE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 126 , consultado el 24 de enero de 2020
  46. ^ "2.3.3.15 Registro META_POLYGON", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 127 , consultado el 24 de enero de 2020
  47. ^ "2.3.3.16 Registro META_POLYPOLYGON", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 127-128 , consultado el 24 de enero de 2020
  48. ^ "2.3.3.17 Registro META_RECTANGLE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 127-128 , consultado el 24 de enero de 2020
  49. ^ "2.3.3.18 Registro META_ROUNDRECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 128-129 , consultado el 24 de enero de 2020
  50. ^ "2.3.3.19 Registro META_SETPIXEL", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 129-130 , consultado el 24 de enero de 2020
  51. ^ "2.3.3.20 Registro META_TEXTOUT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 130 , consultado el 24 de enero de 2020
  52. ^ "2.2.2.2. Objeto BitmapCoreHeader", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 85 , consultado el 25 de enero de 2020
  53. ^ "2.2.2.9. Objeto DeviceIndependentBitmap", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 91 , consultado el 25 de enero de 2020
  54. ^ ab "2.2.1. Objetos gráficos", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 79 , consultado el 25 de enero de 2020
  55. ^ "2.3.4.1 Registro META_CREATEBRUSHINDIRECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 131-132 , consultado el 25 de enero de 2020
  56. ^ "2.3.4.2 Registro META_CREATEFONTINDIRECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 132 , consultado el 25 de enero de 2020
  57. ^ "2.3.4.4 Registro META_CREATEPATTERNBRUSH", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 133-135 , consultado el 25 de enero de 2020
  58. ^ "2.3.4.3 Registro META_CREATEPALETTE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 132-133 , consultado el 25 de enero de 2020
  59. ^ "2.3.4.5 Registro META_CREATEPENINDIRECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 134-135 , consultado el 25 de enero de 2020
  60. ^ "2.3.4.6 Registro META_CREATEREGION", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 135 , consultado el 25 de enero de 2020
  61. ^ "2.3.4.7 Registro META_DELETEOBJECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 135 , consultado el 25 de enero de 2020
  62. ^ "2.3.4.8 Registro META_CREATEBRUSHINDIRECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 135-136 , consultado el 25 de enero de 2020
  63. ^ "2.3.4.9 Registro META_DIBCREATEPATTERNBRUSH", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 136-137 , consultado el 25 de enero de 2020
  64. ^ "2.3.4.10 Registro META_SELECTCLIPREGION", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 137 , consultado el 25 de enero de 2020
  65. ^ "2.3.4.11 Registro META_SELECTOBJECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 137-138 , consultado el 25 de enero de 2020
  66. ^ "2.3.4.11 Registro META_SELECTPALETTE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 139 , consultado el 25 de enero de 2020
  67. ^ "2.3.5 Tipos de registros de estado", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 138 , consultado el 28 de enero de 2020
  68. ^ "2.3.5.1 Registro META_ANIMATEPALETTE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 140 , consultado el 28 de enero de 2020
  69. ^ "2.3.5.2 Registro META_EXCLUDECLIPRECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 140-141 , consultado el 28 de enero de 2020
  70. ^ "2.3.5.3 Registro META_INTERSECTCLIPRECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 141-142 , consultado el 28 de enero de 2020
  71. ^ "2.3.5.1 Registro META_MOVETO", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 142 , consultado el 28 de enero de 2020
  72. ^ "2.3.5.4 Registro META_OFFSETCLIPRGN", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 142-143 , consultado el 28 de enero de 2020
  73. ^ "2.3.5.5 Registro META_OFFSETVIEWPORTORG", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 143 , consultado el 28 de enero de 2020
  74. ^ "2.3.5.6 Registro META_OFFSETWINDOWORG", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 131-132 , consultado el 28 de enero de 2020
  75. ^ "2.3.5.7 Registro META_REALIZEPALETTE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 143-144 , consultado el 28 de enero de 2020
  76. ^ "2.3.5.8 Registro META_RESIZEPALETTE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 144 , consultado el 28 de enero de 2020
  77. ^ "2.3.5.9 Registro META_RESTOREDC", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 145 , consultado el 28 de enero de 2020
  78. ^ "2.3.5.10 Registro META_SAVEDC", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 145 , consultado el 28 de enero de 2020
  79. ^ "2.3.5.11 Registro META_SCALEVIEWPORTEXT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 145-146 , consultado el 28 de enero de 2020
  80. ^ "2.3.5.12 Registro META_SCALEWINDOWEXT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 146-147 , consultado el 28 de enero de 2020
  81. ^ "2.3.5.13 Registro META_SETBKCOLOR", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 147 , consultado el 28 de enero de 2020
  82. ^ "2.3.5.14 Registro META_SETBKMODE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 147-148 , consultado el 28 de enero de 2020
  83. ^ "2.3.5.15 Registro META_SETLAYOUT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 148 , consultado el 28 de enero de 2020
  84. ^ "2.3.5.16 Registro META_SETMAPMODE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 148-149 , consultado el 28 de enero de 2020
  85. ^ "2.3.5.17 Registro META_SETMAPPERFLAGS", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 131-132 , consultado el 28 de enero de 2020
  86. ^ "2.3.5.18 Registro META_ANIMATEPALETTE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 149 , consultado el 28 de enero de 2020
  87. ^ "2.3.5.19 Registro META_SETPALENTRIES", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 149-150 , consultado el 28 de enero de 2020
  88. ^ "2.3.5.20 Registro META_SETRELABS", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 150 , consultado el 28 de enero de 2020
  89. ^ "2.3.5.21 Registro META_SETROP2", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 151 , consultado el 28 de enero de 2020
  90. ^ "2.3.5.1 Registro META_SETSTRETCHBLTMODE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 151-152 , consultado el 28 de enero de 2020
  91. ^ "2.3.5.22 Registro META_SETTEXTALIGN", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 152 , consultado el 28 de enero de 2020
  92. ^ "2.3.5.1 Registro META_SETTEXTCHAREXTRA", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 152-153 , consultado el 28 de enero de 2020
  93. ^ "2.3.5.23 Registro META_SETTEXTCOLOR", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 153 , consultado el 28 de enero de 2020
  94. ^ "2.3.5.24 Registro META_SETTEXTJUSTIFICATION", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 153-154 , consultado el 28 de enero de 2020
  95. ^ "2.3.5.25 Registro META_SETVIEWPORTEXT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 154 , consultado el 28 de enero de 2020
  96. ^ "2.3.5.26 Registro META_SETVIEWPORTORG", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 154-155 , consultado el 28 de enero de 2020
  97. ^ "2.3.5.27 Registro META_SETWINDOWEXT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 155 , consultado el 28 de enero de 2020
  98. ^ "2.3.5.28 Registro META_SETWINDOWORG", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 155 , consultado el 28 de enero de 2020
  99. ^ "2.3.6.2. Registro ABORTDOC", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 158-159 , consultado el 28 de enero de 2020
  100. ^ "2.3.6.3. Registro BEGIN_PATH", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 159 , consultado el 28 de enero de 2020
  101. ^ "2.3.6.4. Registro CHECK_JPEGFORMAT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 159-160 , consultado el 28 de enero de 2020
  102. ^ "2.3.6.5. Registro CHECK_PNGFORMAT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 160 , consultado el 28 de enero de 2020
  103. ^ "2.3.6.6. Registro CLIP_TO_PATH", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , p. 160 , consultado el 28 de enero de 2020
  104. ^ "2.3.6.7. Registro CLOSE_CHANNEL", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 162 , consultado el 28 de enero de 2020
  105. ^ "2.3.6.8. Registro DOWNLOAD_FACE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 162-163 , consultado el 28 de enero de 2020
  106. ^ "2.3.6.9. Registro DOWNLOAD_HEADER", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 158-159 , consultado el 28 de enero de 2020
  107. ^ "2.3.6.10. Registro DRAW_PATTERNRECT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 163-164 , consultado el 28 de enero de 2020
  108. ^ "2.3.6.11. Registro ENCAPSULATED_POSTSCRIPT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 164 , consultado el 28 de enero de 2020
  109. ^ "2.3.6.12. Registro END_PATH", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 164-165 , consultado el 28 de enero de 2020
  110. ^ "2.3.6.13. Registro ENDDOC", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 165 , consultado el 28 de enero de 2020
  111. ^ "2.3.6.14. Registro EPS_PRINTING", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 165-166 , consultado el 28 de enero de 2020
  112. ^ "2.3.6.15. Registro EXTTEXTOUT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 166-167 , consultado el 28 de enero de 2020
  113. ^ "2.3.6.16. Registro GET_COLORTABLE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 167-168 , consultado el 28 de enero de 2020
  114. ^ "2.3.6.17. Registro GET_DEVICEUNITS", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 168 , consultado el 28 de enero de 2020
  115. ^ "2.3.6.18. Registro GET_EXTENDED_TEXTMETRICS", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 168-169 , consultado el 28 de enero de 2020
  116. ^ "2.3.6.19. Registro GET_FACENAME", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 169 , consultado el 28 de enero de 2020
  117. ^ "2.3.6.20. Registro GET_PAIRKERNTABLE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 169-170 , consultado el 28 de enero de 2020
  118. ^ "2.3.6.21. Registro GET_PHYSPAGESIZE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 170 , consultado el 28 de enero de 2020
  119. ^ "2.3.6.22. Registro GET_PRINTINGOFFSET", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 170-171 , consultado el 28 de enero de 2020
  120. ^ "2.3.6.23. Registro GET_PS_FEATURESETTING", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 171 , consultado el 28 de enero de 2020
  121. ^ "2.3.6.24. Registro GET_SCALINGFACTOR", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 171-172 , consultado el 28 de enero de 2020
  122. ^ "2.3.6.25. Registro META_ESCAPE_ENHANCED_METAFILE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 172-173 , consultado el 28 de enero de 2020
  123. ^ "2.3.6.26. Registro METAFILE_DRIVER", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 173-174 , consultado el 28 de enero de 2020
  124. ^ "2.3.6.27. Registro NEWFRAME", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 174-175 , consultado el 28 de enero de 2020
  125. ^ "2.3.6.28. Registro NEXTBAND", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 174-175 , consultado el 28 de enero de 2020
  126. ^ "2.3.6.29. Registro PASSTHROUGH", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 175 , consultado el 28 de enero de 2020
  127. ^ "2.3.6.30. Registro POSTSCRIPT_DATA", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 176 , consultado el 28 de enero de 2020
  128. ^ "2.3.6.31. Registro POSTSCRIPT_IDENTIFY", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 176-177 , consultado el 28 de enero de 2020
  129. ^ "2.3.6.32. Registro POSTSCRIPT_IGNORE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 177 , consultado el 28 de enero de 2020
  130. ^ "2.3.6.33. Registro POSTSCRIPT_INJECTION", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 177-178 , consultado el 28 de enero de 2020
  131. ^ "2.3.6.34. Registro POSTSCRIPT_PASSTHROUGH", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 178 , consultado el 28 de enero de 2020
  132. ^ "2.3.6.35. Registro OPEN_CHANNEL", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 179 , consultado el 28 de enero de 2020
  133. ^ "2.3.6.36. Registro QUERY_DIBSUPPORT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 179-180 , consultado el 28 de enero de 2020
  134. ^ "2.3.6.37. Registro QUERY_ESCSUPPORT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 180 , consultado el 28 de enero de 2020
  135. ^ "2.3.6.38. Registro SET_COLORTABLE", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 180-181 , consultado el 28 de enero de 2020
  136. ^ "2.3.6.39. Registro SET_COPYCOUNT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 181 , consultado el 28 de enero de 2020
  137. ^ "2.3.6.40. Registro SET_LINECAP", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 181-182 , consultado el 28 de enero de 2020
  138. ^ "2.3.6.41. Registro SET_LINEJOIN", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 182-183 , consultado el 28 de enero de 2020
  139. ^ "2.3.6.42. Registro SET_MITERLIMIT", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 183 , consultado el 28 de enero de 2020
  140. ^ "2.3.6.43. Registro SPCLPASSTHROUGH2", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , págs. 183-184 , consultado el 28 de enero de 2020
  141. ^ "2.3.6.44. Registro STARTDOC", [MS-WMF]: Especificación del formato de metarchivo de Windows (PDF) , pág. 184 , consultado el 28 de enero de 2020
  142. ^ "Ejecución de código arbitrario "SETABORTPROC" de Microsoft Windows WMF". Secunia . Aviso de Secunia: SA18255. Archivado desde el original el 2 de enero de 2006.
  143. ^ Escapes compatibles con Pscript, Microsoft , consultado el 28 de enero de 2020
  144. ^ "¿La puerta trasera de Windows MetaFile?". GRC Security Now! (Podcast). Gibson Research Corporation . 12 de enero de 2006. Consultado el 28 de enero de 2020 .
  145. ^ Gibson, Steve (12 de enero de 2006), "Re: No querrás perderte el Security Now! de esta noche, n.° 22", grc.news.feedback , consultado el 28 de enero de 2020
  146. ^ Russinovich, Mark (18 de enero de 2006), "Dentro de la puerta trasera de WMF", TechNet , Microsoft – vía Microsoft Tech Community
  147. ^ Ferrie, Peter (2 de febrero de 2006), Inside the Windows Meta File Format (PDF) , Virus Bulletin , archivado desde el original (PDF) el 16 de mayo de 2008 , consultado el 24 de enero de 2020 a través de Symantec
  148. ^ "1.3.1. Estructura de metarchivo", [MS-EMF]: Enhanced Metafile Format (PDF) , Microsoft, págs. 17-18
  149. ^ "2.3.4.2.1 Registro EmfMetafileHeader", [MS-EMF]: Formato de metarchivo mejorado (PDF) , Microsoft, pág. 120
  150. ^ "2.2.10 Objeto HeaderExtension1", [MS-EMF]: Formato de metarchivo mejorado (PDF) , Microsoft, págs. 57-58
  151. ^ "2.2.22 Objeto PixelFormatDescriptor", [MS-EMF]: Formato de metarchivo mejorado (PDF) , Microsoft, págs. 68-71
  152. ^ "2.3.4.2.3 Registro EmfMetafileHeaderExtension2", [MS-EMF]: Formato de metarchivo mejorado (PDF) , Microsoft, págs. 122-124
  153. ^ "Recibe un mensaje de error "Este archivo es un formato gráfico no compatible" cuando intenta insertar una imagen en una presentación de PowerPoint para Mac". Microsoft . Archivado desde el original el 19 de abril de 2014 . Consultado el 19 de abril de 2014 .

Enlaces externos