Metarchivo de Windows

Formato de archivo para imágenes

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 [actualizar], 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

Metarchivo de Windows
Extensión de nombre de archivo
.wmf
Tipo de medio de Internet
imagen/wmf [10]
Identificador de tipo uniforme (UTI)com.microsoft.wmf [10]
Tipo de formatoGráficos vectoriales
Extendido aCampo electromagnético
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 .

NombreDescripción
META_BITBLTEspecifica cómo realizar una transferencia de bloques de bits . Estos registros pueden especificar un mapa de bits para utilizar como origen o una región. [26]
META_DIBBITBLTEspecifica cómo realizar una transferencia de bloques de bits de una imagen de mapa de bits independiente del dispositivo . Estos registros pueden especificar un mapa de bits para utilizar como origen o una región. [27]
META_DIBSTRETCHBITBLTEspecifica cómo realizar una transferencia de bloques de bits de una imagen de mapa de bits independiente del dispositivo, pero permite la expansión o contracción de la imagen. Estos registros pueden especificar un mapa de bits para utilizar como origen o una región. [28]
META_SETDIBTODEVEspecifica el color para establecer un bloque de píxeles en una imagen de mapa de bits independiente del dispositivo. Estos registros pueden especificar un mapa de bits para utilizar como origen o una región. [29]
META_STRETCHBLTEspecifica cómo realizar una transferencia de bloques de bits, pero permite la expansión o contracción de la imagen. [30]
META_STRETCHDIBEspecifica cómo realizar una transferencia de bloques de bits de una imagen de mapa de bits independiente del dispositivo, pero permite la expansión o contracción de la imagen. Estos registros pueden especificar un mapa de bits para utilizar como origen o una región. [31]

Registros de dibujo

Los registros de dibujo producen salida gráfica.

NombreDescripción
Arco metaDibuja un arco elíptico . [32]
META_ACORDEDibuja un acorde . [33]
META_ELIPSEDibuja un arco elíptico . [34]
META_EXTFLOODFILLRellena un área con un pincel. [35]
META_EXTEXTEXTOUT (Texto de salida meta_extensión)Dibujar texto con fuente, color de fondo y color de texto del contexto del dispositivo de reproducción. [36]
META_REGIÓN DE RELLENORellena una región con un pincel especificado. [37]
META_RELLENO DE INUNDACIÓNRellena un área con un pincel. [38]
REGIÓN DEL MARCO METADibuja un borde alrededor de una región de la página con un pincel. [39]
META_INVERTREGIONPinta una región del gráfico con colores invertidos. [40]
META_LINEADibuja una línea semiabierta desde la posición de dibujo definida en el contexto del dispositivo de reproducción hasta un punto especificado. [41]
REGIÓN DE PINTURA META_Pinte una región con el pincel actual especificado en el contexto del dispositivo de reproducción. [42]
META_PATBLTPinte una región con el pincel actual especificado en el contexto del dispositivo de reproducción y luego combine el color del pincel y los colores de la superficie mediante una operación rasterizada . [43]
META_PIEDibuje una cuña con forma de pastel delimitada por la intersección de una elipse y dos radiales: la línea se establece mediante el lápiz establecido a través del contexto del dispositivo de reproducción, y el área delimitada por la forma de pastel se rellena con el pincel actual del contexto del dispositivo de reproducción. [44]
META_POLILINEADibuja una serie de segmentos de línea conectando los puntos en una matriz especificada. [45]
META_POLÍGONOPinta un polígono que consta de dos o más vértices conectados por líneas rectas. El polígono se delinea con el lápiz y se rellena con el pincel y el modo de relleno de polígono que se definen en el contexto del dispositivo de reproducción. [46]
META_POLIPOLÍGONOPinta una serie de polígonos cerrados que pueden superponerse. Cada polígono se delinea con el lápiz y se rellena con el pincel y el modo de relleno de polígono que se definen en el contexto del dispositivo de reproducción. [47]
META_RECTANGLEPinta un rectángulo, que se delinea utilizando el lápiz y se rellena utilizando el pincel que está definido en el contexto del dispositivo de reproducción. [48]
META_REDONDEARPinta un rectángulo con esquinas redondeadas. El rectángulo se delinea con el lápiz y se rellena con el pincel definido en el contexto del dispositivo de reproducción. [49]
META_SETPIXELEstablece el píxel en las coordenadas especificadas con el color especificado. [50]
META_TEXTO_EXPOSICIÓNGenera una cadena de caracteres en la ubicación especificada utilizando la fuente, el color de fondo y el color del texto definidos en el contexto del dispositivo de reproducción. [51]

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]

NombreDescripción
META_CREATEBRUSHINDIRECTOCrea un objeto pincel a partir de un objeto LogBrush (pincel lógico). [55]
META_CREATEFONTINDIRECTCrea un objeto de pincel a partir de un objeto de fuente. [56]
META_CREARPALETACrea un objeto de paleta.
META_CREARCEPTÓN [57]Crea un objeto pincel a partir de un objeto LogBrush (pincel lógico). [58]
META_CREARPENINDIRECTOCrea un objeto de pluma. [59]
REGIÓN META_CREATERCrea un objeto de región. [60]
META_ELIMINAR OBJETOEliminar un objeto. [61]
META_CREATEBRUSHINDIRECTOCrea un objeto pincel a partir de un objeto LogBrush (pincel lógico). [62]
META_DIBCREATEPATTERNBRUSHCrea un objeto de pincel a partir de un mapa de bits independiente del dispositivo. [63]
META_SELECTCLIPREGIÓNEspecifica el objeto de región que será la región de recorte actual . [64]
META_SELECTOBJETOSelecciona el objeto que será el objeto actual para el contexto del dispositivo de reproducción, lo que funciona en todos los objetos gráficos excepto los objetos de paleta, que deben configurarse con META_SELECTPALETTE. [65]
PALETA META_SELECTSelecciona la paleta lógica para el contexto del dispositivo de reproducción. [66]

Registros estatales

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

NombreDescripción
PALETA META_ANIMADARedefine las entradas en la paleta lógica que se define en el contexto del dispositivo de reproducción con un objeto de paleta especificado. [68]
META_EXCLUDECLIPRECTEstablece la región de recorte que se define en el contexto del dispositivo de reproducción en la región de recorte existente menos un rectángulo especificado. [69]
META_INTERSECTCLIPRECTEstablece la región de recorte que se define en el contexto del dispositivo de reproducción en la intersección de la región de recorte existente y un rectángulo especificado. [70]
META_MOVETOEstablece la posición de salida en el contexto del dispositivo de reproducción en un punto especificado. [71]
META_OFFSETCLIPRGNMueve la región de recorte que está definida en el contexto del dispositivo de reproducción mediante desplazamientos especificados. [72]
META_OFFSETVIEWPORTORGMueve el origen de la ventana gráfica en el contexto del dispositivo de reproducción mediante desplazamientos horizontales y verticales especificados. [73]
META_OFFSETWINDOWORGMueve el origen de la ventana de salida en el contexto del dispositivo de reproducción mediante desplazamientos horizontales y verticales especificados. [74]
META_REALIZARPALETAAsigna entradas de la paleta lógica definida en el contexto del dispositivo de reproducción a la paleta del sistema. [75]
META_CAMBIAR TAMAÑO DE PALETARedefine el tamaño de la paleta lógica que se define en el contexto del dispositivo de reproducción. [76]
META_RESTOREDCRestaura el contexto del dispositivo de reproducción desde un contexto de dispositivo guardado previamente. [77]
META_SAVEDCGuarda el contexto del dispositivo de reproducción para su posterior recuperación. [78]
META_SCALEVIEWPORTEXTEscala las extensiones horizontales y verticales de la ventana gráfica que se define en el contexto del dispositivo de reproducción utilizando las proporciones formadas por los multiplicandos y divisores especificados. [79]
META_ESCALAVENTANAEXTERIOREscala las extensiones horizontales y verticales de la ventana de salida que se define en el contexto del dispositivo de reproducción utilizando las proporciones formadas por multiplicandos y divisores especificados. [80]
META_SETBKCOLOREstablece el color de fondo en el contexto del dispositivo de reproducción a un color especificado. [81]
META_SETBKMODEEstablece el modo de mezcla de fondo en el contexto del dispositivo de reproducción. [82]
META_SETLAYOUTDefine la orientación del diseño en el contexto del dispositivo de reproducción. [83]
META_SETMAPMODEDefine el modo de mapeo en el contexto del dispositivo de reproducción. [84]
META_SETMAPPERFLAGSDefine el algoritmo que utiliza el asignador de fuentes cuando asigna fuentes lógicas a fuentes físicas. [85]
META_SETPALENTRIESDefine valores de color RGB en un rango de entradas en la paleta lógica que se define en el contexto del dispositivo de reproducción. [86]
META_SETPOLYFILLMODEDefine el modo de relleno de polígonos en el contexto del dispositivo de reproducción para operaciones gráficas que rellenan polígonos. [87]
META_SETRELABSRegistro no utilizado. [88]
META_SETROP2Define el modo de mezcla de operaciones de trama de primer plano en el contexto del dispositivo de reproducción. [89]
META_SETSTRETCHBLTMODEDefine el modo de estiramiento de mapa de bits en el contexto del dispositivo de reproducción. [90]
META_SETTEXTALIGNDefine valores de alineación de texto en el contexto del dispositivo de reproducción. [91]
META_SETTEXTCHAREXTRADefine el espaciado entre caracteres para la justificación del texto en el contexto del dispositivo de reproducción. [92]
META_SETTEXTO COLORDefine el color de primer plano del texto en el contexto del dispositivo de reproducción. [93]
JUSTIFICACIÓN DEL TEXTO DEL SET META_SETDefine la cantidad de espacio que se debe agregar para dividir caracteres en una cadena de texto justificado. [94]
META_SETVIEWPORTEXTDefine las extensiones horizontales y verticales de la ventana gráfica en el contexto del dispositivo de reproducción. [95]
META_SETVIEWPORTORGDefine el origen de la ventana gráfica en el contexto del dispositivo de reproducción. [96]
META_SETWINDOWEXTDefine las extensiones horizontales y verticales de la ventana de salida en el contexto del dispositivo de reproducción. [97]
META_SETWINDOWORGDefine el origen de la ventana de salida en el contexto del dispositivo de reproducción. [98]

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.

NombreDescripción
ABORTODOCDetiene el procesamiento del documento actual. [99]
RUTA DE INICIOAbre un camino. [100]
COMPROBAR FORMATO JPEGDetermina si puede manejar la imagen JPEG dada . [101]
COMPROBAR_FORMATO_PNGDetermina si puede manejar la imagen PNG dada . [102]
CLIP_A_RUTAAplica una función a la ruta de recorte de PostScript actual . [103]
CERRAR CANALIgual que ENDDOC. [104]
DESCARGAR_CARAEstablece el nombre de la fuente en el dispositivo de salida. [105]
DESCARGAR_ENCABEZADODescarga conjuntos de procedimientos PostScript. [106]
DIBUJAR_PATRÓNDibuja un rectángulo con un patrón definido. [107]
POSTSCRIPCIÓN ENCAPSULADAEnvía datos PostScript encapsulados (EPS) arbitrarios directamente al controlador de impresora. [108]
FIN_RUTATermina un camino. [109]
FIN DOCNotifica al controlador de impresora que un nuevo trabajo de impresión está finalizando. [110]
IMPRESIÓN EPSIndica el inicio y el final de la impresión EPS. [111]
EXTRACCIÓN DE TEXTODibuja texto utilizando la fuente, el color de fondo y el color del texto actualmente seleccionados. [112]
OBTENER TABLA DE COLORESObtiene los valores de la tabla de colores del controlador de impresora. [113]
OBTENER_UNIDADES_DE_DISPOSITIVOObtiene las unidades del dispositivo configuradas actualmente en el dispositivo de salida. [114]
OBTENER MÉTRICAS DE TEXTO EXTENDIDASObtiene las métricas de texto extendidas que están configuradas actualmente en el controlador de impresora. [115]
Obtener nombre_caraObtiene el nombre de la fuente actualmente configurada en el dispositivo de salida. [116]
GET_PAIRKERNTABLEObtiene la tabla de interletraje de fuentes definida actualmente en el dispositivo de salida. [117]
OBTENER TAMAÑO DE PÁGINA PHYSPRecupera el tamaño de página física actualmente seleccionado en el dispositivo de salida. [118]
OBTENER DESVENTAJA DE IMPRESIÓNRecupera el desplazamiento desde la esquina superior izquierda de la página física donde comienza la impresión o el dibujo real. [119]
OBTENER CONFIGURACIÓN DE FUNCIONES DE PSConsulta al controlador de impresora para obtener información sobre las características PostScript compatibles con el dispositivo de salida. [120]
OBTENER FACTOR DE ESCALARecupera los factores de escala para el eje x y el eje y de una impresora. [121]
META_ESCAPE_METAFILE_MEJORADOSe utiliza para incrustar un metarchivo EMF dentro de un metarchivo WMF. [122]
CONTROLADOR DE METAFILEConsulta al controlador de impresora sobre su compatibilidad con metarchivos en el dispositivo de salida. [123]
NUEVO MARCONotifica al controlador de impresora que la aplicación ha terminado de escribir en una página. [124]
BANDA SIGUIENTENotifica al controlador de impresora que la aplicación ha terminado de escribir en una banda. [125]
PASO A TRAVÉSPasa datos arbitrarios al controlador de impresora. [126]
DATOS DE LA POSTDATAEnvía datos PostScript arbitrarios al dispositivo de salida. [127]
IDENTIFICACIÓN DE POSTDATAEstablece el controlador de impresora en modo centrado en PostScript o en GDI. [128]
POSTDATA_IGNORARNotifica al dispositivo de salida que ignore los datos PostScript. [129]
INYECCIÓN DE POSTDATAInserta un bloque de datos sin procesar en una secuencia PostScript. [130]
PASO A TRAVÉS DE POSTSCRIPTEnvía datos arbitrarios directamente a un controlador de impresora, que se espera que procese estos datos solo cuando está en modo PostScript. [131]
CANAL ABIERTOActúa de la misma manera que STARTDOC, con un documento y un nombre de archivo de salida NULL, y datos en modo sin procesar. [132]
CONSULTA_DIBSUPPORTConsulta al controlador de impresora sobre su compatibilidad con DIB en el dispositivo de salida. [133]
CONSULTA_ESC SOPORTEConsulta al controlador de impresora para determinar si una función de escape WMF específica es compatible con el dispositivo de salida. [134]
CONJUNTO_TABLA_COLORABLEEstablece valores de la tabla de colores. [135]
ESTABLECER_CONTADOR_DE_COPIASEstablece el número de copias. [136]
ESTABLECER_CAPITULO_DE_LÍNEAEspecifica el modo de final de línea que se utilizará al dibujar en el dispositivo de salida. [137]
ESTABLECER UNIÓN DE LÍNEAEspecifica el modo de unión de líneas que se utilizará al dibujar en el dispositivo de salida. [138]
ESTABLECER_LIMITE_DE_MITEREstablece el límite para la longitud de las uniones en inglete que se utilizarán al dibujar en el dispositivo de salida. [139]
PASO A TRAVÉS DE SPCC2Permite que los documentos incluyan procedimientos privados y otros datos arbitrarios en los documentos. [140]
DOCUMENTO DE INICIONotifica al controlador de impresora que se está iniciando un nuevo trabajo de impresión. [141]

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. Lamentablemente, su suposición fue errónea. Supongo que ahora sabemos más. [147]

Campo electromagnético

Metarchivo mejorado
Extensión de nombre de archivo
.fem
Tipo de medio de Internet
imagen/fem [10]
Identificador de tipo uniforme (UTI)com.microsoft.emf [10]
Tipo de formatoGráficos vectoriales
Extendido desdeFMI
Extendido aCampo 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 .
  • Especificación del formato de metarchivo de Windows de Microsoft
  • Metarchivos – Aplicaciones de Windows
  • Resumen de formatos de archivo en fileformat.info
  • Preguntas frecuentes sobre metarchivos de Windows
Obtenido de "https://es.wikipedia.org/w/index.php?title=Metarchivo_de_Windows&oldid=1247814550"