Метафайл Windows
Метафайл Windows ( WMF ) — это формат файлов изображений, первоначально разработанный для Microsoft Windows в 1990-х годах. Исходный формат метафайла Windows не был независимым от устройства (хотя его можно было сделать в большей степени с помощью заголовков размещения) и может содержать как векторную графику , так и растровые компоненты. Он действует аналогично файлам SVG . Файлы WMF позже были заменены расширенными метафайлами (файлами EMF), которые обеспечивали независимость от устройства. Файлы EMF затем были улучшены с помощью файлов EMF+ .
По сути, метафайл хранит список записей, состоящий из команд рисования, определений свойств и графических объектов для отображения изображения на экране. [ 1 ] Используемые команды рисования тесно связаны с командами интерфейса графического устройства (GDI), API используемыми для рисования в Microsoft Windows.
Существует три основных типа метафайлов: WMF — это 16-битный формат, представленный в Windows 3.0 . Это собственный векторный формат для приложений Microsoft Office , таких как Word , PowerPoint и Publisher . По состоянию на 2023 год [update]доступна версия 17 спецификации формата метафайла Windows. [ 2 ] Файлы EMF, пришедшие на смену файлам WMF, работают по тому же принципу, только это 32-битный формат файлов, который также позволяет встраивать личные данные в записи «комментариев». [ 3 ] EMF+ — это расширение файлов EMF, встроенное в эти записи комментариев, позволяющее использовать изображения и текст с использованием команд, объектов и свойств, аналогичных Windows GDI+ . [ 4 ]
История
[ редактировать ]Исходный 16-битный формат файла WMF был полностью указан в томе 4 документации Windows 3.1 SDK 1992 года. [ 5 ] (по крайней мере, в сочетании с описаниями отдельных функций и структур в других томах), но в этой спецификации были расплывчаты некоторые детали. Эти руководства были опубликованы в виде печатных книг, доступных в книжных магазинах, без необходимости ознакомления с лицензионным соглашением или другими необычными лицензионными ограничениями (просто общее предупреждение о том, что, если оно приобретено как часть пакета программного обеспечения, на программное обеспечение распространяется одно из них).
Со временем о существовании этой исторической спецификации в значительной степени забыли, и некоторые альтернативные реализации прибегли к обратному проектированию, чтобы определить формат файла из существующих файлов WMF, что было сложно и подвержено ошибкам. [ 6 ] В сентябре 2006 года Microsoft снова опубликовала спецификацию формата файлов WMF в более полной форме. [ 7 ] в контексте обещания Microsoft по открытой спецификации , обещая не заявлять патентные права разработчикам форматов файлов. [ 8 ]
Позже Microsoft отказалась от файлов WMF в пользу 32-битных файлов EMF, поскольку у файлов WMF были реальные проблемы с независимостью от устройства, несмотря на использование «размещаемого» заголовка файла, который обеспечивал базовую независимость от устройства. Microsoft обнаружила, что разработчики, использующие этот формат, «[встраивали] комментарии о приложении, местоположении или масштабировании в метафайлы... Другие добавляли в метафайл заголовки, которые предоставляли различную информацию, специфичную для приложения», что вызывало серьезные проблемы с совместимостью. [ 9 ] Таким образом, в 1992 году с Windows NT 3.1 Microsoft представила формат расширенного метафайла (EMF). [ 10 ] — формат, основанный на API Win32 и обеспечивающий независимость от устройства. [ 11 ] [ 9 ] — они также были известны как метафайлы NT. [ 12 ] С выпуском Windows XP и GDI+ набор записей пришлось значительно увеличить, и поэтому Microsoft выпустила EMF+ как расширение существующего формата файлов EMF. [ 10 ] [ 13 ]
Структура метафайла
[ редактировать ]
Файлы WMF, EMF и EMF+ состоят из серии записей, которые воспроизводятся для получения графического вывода. Некоторые записи определяют объекты, которые могут указывать графические объекты, используемые для определения того, как следует рисовать графику (например, ручки определяют цвет и ширину линий). Каждый из этих объектов хранится в метафайлах и помещается в таблицу объектов, которая отслеживает использование графических объектов при обработке метафайла. Таблица объектов представляет собой ассоциативный массив индексов структур графических объектов, определенных в метафайле.
Файлы WMF и EMF обрабатывают объекты иначе, чем записи EMF+ в файлах EMF. Во время обработки файлов WMF и EMF записи считываются в таблицу объектов после определения объекта. Если объект удаляется, он удаляется из таблицы, и идентификатор можно использовать повторно. Примечательно, что объект не будет использоваться до тех пор, пока он не будет специально выбран во время воспроизведения записи. [ 14 ] [ 15 ] Это отличается от файлов EMF+, которые также используют ассоциативный массив через хэш-карту , записывающую объект вместе с идентификатором объекта. Однако в отличие от файлов WMF и EMF, которые могут удалять объект, при создании нового объекта с тем же индексом, что и у существующего объекта, запись в таблице заменяется новым объектом. Файл EMF также не требует специального выбора объекта перед его использованием. [ 16 ]
ВМФ
[ редактировать ]Расширение имени файла |
.wmf |
---|---|
Тип интернет-СМИ |
изображение/wmf [ 10 ] |
Единый идентификатор типа (UTI) | com.microsoft.wmf [ 10 ] |
Тип формата | Векторная графика |
Распространено на | ЭДС |

Файлы WMF изначально не были предназначены для независимости от устройства, а это означает, что файл не мог быть воспроизведен на устройствах вывода, которые отличались от исходного устройства, на котором файл был записан. Частичное решение этой проблемы было изобретено корпорацией Aldus , которая добавила дополнительный «размещаемый» заголовок, называемый «заголовком APM», [ 18 ] который добавил ограничивающий прямоугольник, версию метафайла, размер метафайла, количество объектов в метафайле и размер самой большой отдельной записи в метафайле. [ 19 ] [ 20 ] Позже это было включено в формат WMF компанией Microsoft , начиная с Windows 2000 . [ 21 ]
Файлы WMF структурированы серией записей, начиная с ряда управляющих записей: записи заголовка, [ 19 ] [ 22 ] вышеупомянутая необязательная размещаемая запись, [ 23 ] и завершается окончанием записи файла . [ 19 ] [ 24 ]
В управляющие записи инкапсулированы записи, составляющие само изображение. Эти записи работают в так называемом контексте устройства воспроизведения , который представляет собой набор свойств и объектов, составляющих графическую среду устройства, когда метафайл «воспроизводится» на этом устройстве вывода. [ 25 ]
Записи, отличные от управляющих записей, можно в основном сгруппировать в записи растровых изображений, записи чертежей, записи объектов, записи состояний и escape-записи.
Растровые записи
[ редактировать ]и выводят Записи растровых изображений управляют растровыми изображениями их .
Имя | Описание |
---|---|
МЕТА_BITBLT | Указывает, как выполнить передачу битовых блоков . Эти записи могут указывать растровое изображение, которое будет использоваться в качестве источника или региона. [ 26 ] |
META_DIBBITBLT | Указывает, как выполнить передачу битовых блоков аппаратно-независимого растрового изображения. Эти записи могут указывать растровое изображение, которое будет использоваться в качестве источника или региона. [ 27 ] |
META_DIBSTRETCHBITBLT | Указывает, как выполнить передачу битовых блоков аппаратно-независимого растрового изображения, но позволяет расширять или сжимать изображение. Эти записи могут указывать растровое изображение, которое будет использоваться в качестве источника или региона. [ 28 ] |
META_SETDIBTODEV | Указывает цвет для установки блока пикселей в аппаратно-независимом растровом изображении. Эти записи могут указывать растровое изображение, которое будет использоваться в качестве источника или региона. [ 29 ] |
META_STRETCHBLT | Указывает, как выполнять передачу битовых блоков, но позволяет расширять или сжимать изображение. [ 30 ] |
META_STRETCHDIB | Указывает, как выполнить передачу битовых блоков аппаратно-независимого растрового изображения, но позволяет расширять или сжимать изображение. Эти записи могут указывать растровое изображение, которое будет использоваться в качестве источника или региона. [ 31 ] |
Рисование записей
[ редактировать ]Записи чертежей производят графический вывод.
Имя | Описание |
---|---|
МЕТА_ARC | Рисует эллиптическую дугу . [ 32 ] |
МЕТА_CHORD | Рисует аккорд . [ 33 ] |
МЕТА_ELLIPSE | Рисует эллиптическую дугу . [ 34 ] |
META_EXTFLOODFILL | Заполняет область кистью. [ 35 ] |
МЕТА_EXTTEXTOUT | Нарисуйте текст с использованием шрифта, цвета фона и цвета текста контекста устройства воспроизведения. [ 36 ] |
META_FILEREGION | Заполняет область указанной кистью. [ 37 ] |
META_FLOODFILL | Заполняет область кистью. [ 38 ] |
META_FRAMEREGION | Рисует рамку вокруг области страницы с помощью кисти. [ 39 ] |
META_INVERTREGION | Закрашивает область изображения инвертированными цветами. [ 40 ] |
META_LINETO | Рисует полуоткрытую линию от позиции рисования, определенной в контексте устройства воспроизведения, до указанной точки. [ 41 ] |
META_PAINTREGION | Нарисуйте область текущей кистью, указанной в контексте устройства воспроизведения. [ 42 ] |
МЕТА_PATBLT | Нарисуйте область текущей кистью, указанной в контексте устройства воспроизведения, а затем объедините цвет кисти и цвет(а) поверхности с помощью растровой операции . [ 43 ] |
МЕТА_ПИЕ | Нарисуйте сектор в форме круга, ограниченный пересечением эллипса и двух радиалов — линия задается с помощью пера, установленного в контексте устройства воспроизведения, а область, ограниченная формой круга, заполняется текущей кистью устройства воспроизведения. контекст. [ 44 ] |
МЕТА_ПОЛИЛИНИЯ | Рисует серию отрезков линий, соединяя точки в указанном массиве. [ 45 ] |
МЕТА_ПОЛИГОН | Рисует многоугольник , состоящий из двух или более вершин, соединенных прямыми линиями. Многоугольник обрисовывается с помощью пера и заполняется с помощью кисти и режима заливки многоугольника, которые определены в контексте устройства воспроизведения. [ 46 ] |
МЕТА_ПОЛИГОЛИГОН | Рисует серию замкнутых многоугольников, которые могут перекрываться. Каждый многоугольник обрисовывается с помощью пера и заполняется с помощью кисти и режима заливки многоугольника, которые определены в контексте устройства воспроизведения. [ 47 ] |
МЕТА_RECTANGLE | Рисует прямоугольник, который обводится пером и заполняется кистью, а также заполняется кистью, определенной в контексте устройства воспроизведения. [ 48 ] |
МЕТА_ROUNDRECT | Рисует прямоугольник с закругленными углами. Прямоугольник обводится пером, заполняется кистью и заполняется кистью, определенной в контексте устройства воспроизведения. [ 49 ] |
META_SETPIXEL | Устанавливает пикселю в указанных координатах указанный цвет. [ 50 ] |
МЕТА_ТЕКСТОУТ | Выводит строку символов в указанном месте, используя шрифт, цвет фона и цвет текста, определенные в контексте устройства воспроизведения. [ 51 ] |
Записи объектов
[ редактировать ]Записи объектов создают графические объекты и управляют ими. В файлах WMF есть две большие категории объектов: графические объекты и объекты структуры. Объекты структуры не создаются и не удаляются в WMF явным образом, они представляют собой не сложные структуры. Например, BitmapCoreHeader содержит информацию о размерах и цветовом формате аппаратно-независимого растрового изображения. [ 52 ] который сам по себе является частью объекта DeviceIndependentBitmap. [ 53 ] Однако графический объект определяет параметры вывода графики, а во время воспроизведения WMF он устанавливает контекст устройства воспроизведения. [ 54 ]
Графическими объектами могут быть кисти (определяют стиль, цвет и рисунок кисти, определяющие способ закрашивания области изображения), шрифты (определяют свойства, влияющие на отображение текста), палитры (определяют цвета как значения, независимые от устройства), определяемые приложением), перья (определяют графические атрибуты линии) и регионы (которые определяют сегменты линий и кривых, определяющие форму). [ 54 ]
Имя | Описание |
---|---|
META_CREATEBRUSHINDIRECT | Создает объект кисти из объекта LogBrush (логическая кисть). [ 55 ] |
META_CREATEFONTINDIRECT | Создает объект кисти из объекта шрифта. [ 56 ] |
META_CREATEPALETTE | Создает объект палитры. |
META_CREATEPATTERNBRUSH [ 57 ] | Создает объект кисти из объекта LogBrush (логическая кисть). [ 58 ] |
META_CREATEPENINDIRECT | Создает объект пера. [ 59 ] |
META_CREATEREGION | Создает объект региона. [ 60 ] |
МЕТА_DELETEOBJECT | Удалить объект. [ 61 ] |
META_CREATEBRUSHINDIRECT | Создает объект кисти из объекта LogBrush (логическая кисть). [ 62 ] |
META_DIBCREATEPATTERNBRUSH | Создает объект кисти из аппаратно-независимого растрового изображения. [ 63 ] |
META_SELECTCLIPREGION | Указывает объект региона, который будет текущим регионом отсечения . [ 64 ] |
МЕТА_SELECTOBJECT | Выбирает объект, который будет текущим объектом для контекста устройства воспроизведения, который работает со всеми графическими объектами, кроме объектов палитры, которые должны быть установлены с помощью META_SELECTPALETTE. [ 65 ] |
META_SELECTPALETTE | Выбирает логическую палитру для контекста устройства воспроизведения. [ 66 ] |
Государственные записи
[ редактировать ]Записи состояния управляют графическими свойствами контекста устройства воспроизведения. [ 67 ]
Имя | Описание |
---|---|
МЕТА_ANIMATEPALETTE | Переопределяет записи в логической палитре, которая определена в контексте устройства воспроизведения с указанным объектом палитры. [ 68 ] |
META_EXCLUDECLIPRECT | Устанавливает область отсечения, определенную в контексте устройства воспроизведения, как существующую область отсечения за вычетом указанного прямоугольника. [ 69 ] |
МЕТА_ИНТЕРСЕКТКЛИПРЕКТ | Устанавливает область отсечения, определенную в контексте устройства воспроизведения, на пересечение существующей области отсечения и заданного прямоугольника. [ 70 ] |
МЕТА_MOVETO | Устанавливает позицию вывода в контексте устройства воспроизведения в указанную точку. [ 71 ] |
META_OFFSETCLIPRGN | Перемещает область отсечения, определенную в контексте устройства воспроизведения, на указанные смещения. [ 72 ] |
META_OFFSETVIEWPORTORG | Перемещает начало области просмотра в контексте устройства воспроизведения на указанные смещения по горизонтали и вертикали. [ 73 ] |
META_OFFSETWINDOWORG | Перемещает начало окна вывода в контексте устройства воспроизведения на указанные смещения по горизонтали и вертикали. [ 74 ] |
META_REALIZEPALETTE | Сопоставляет записи из логической палитры, определенной в контексте устройства воспроизведения, с системной палитрой. [ 75 ] |
META_RESIZEPALETTE | Переопределяет размер логической палитры, определенной в контексте устройства воспроизведения. [ 76 ] |
META_RESTOREDC | Восстанавливает контекст устройства воспроизведения из ранее сохраненного контекста устройства. [ 77 ] |
WHEN_SAVEDC | Сохраняет контекст устройства воспроизведения для последующего извлечения. [ 78 ] |
META_SCALEVIEWPORTEXT | Масштабирует горизонтальные и вертикальные размеры области просмотра, определенные в контексте устройства воспроизведения, с использованием коэффициентов, образованных указанными множимыми и делителями. [ 79 ] |
META_SCALEWINDOWEXT | Масштабирует горизонтальные и вертикальные размеры выходного окна, определенного в контексте устройства воспроизведения, с использованием соотношений, образованных указанными множимыми и делителями. [ 80 ] |
META_SETBKCOLOR | Устанавливает цвет фона в контексте устройства воспроизведения на указанный цвет. [ 81 ] |
META_SETBKMODE | Устанавливает режим фонового микширования в контексте устройства воспроизведения. [ 82 ] |
META_SETLAYOUT | Определяет ориентацию макета в контексте устройства воспроизведения. [ 83 ] |
META_SETMAPMODE | Определяет режим сопоставления в контексте устройства воспроизведения. [ 84 ] |
META_SETMAPPERFLAGS | Определяет алгоритм, который использует средство сопоставления шрифтов при сопоставлении логических шрифтов с физическими шрифтами. [ 85 ] |
META_SETPALENTRIES | Определяет значения цвета RGB в диапазоне записей логической палитры, которая определена в контексте устройства воспроизведения. [ 86 ] |
META_SETPOLYFILLMODE | Определяет режим заполнения многоугольников в контексте устройства воспроизведения для графических операций, заполняющих многоугольники. [ 87 ] |
META_SETRELABS | Неиспользованная запись. [ 88 ] |
META_SETROP2 | Определяет режим микширования растровых операций переднего плана в контексте устройства воспроизведения. [ 89 ] |
META_SETSTRETCHBLTMODE | Определяет режим растяжения растрового изображения в контексте устройства воспроизведения. [ 90 ] |
META_SETTEXTALIGN | Определяет значения выравнивания текста в контексте устройства воспроизведения. [ 91 ] |
META_SETTEXTCHAREXTRA | Определяет межсимвольный интервал для выравнивания текста в контексте устройства воспроизведения. [ 92 ] |
META_SETTEXTCOLOR | Определяет цвет переднего плана текста в контексте устройства воспроизведения. [ 93 ] |
МЕТА_SETTEXTJUSTIFICATION | Определяет объем места, добавляемого для разрыва символов в строке выровненного текста. [ 94 ] |
META_SETVIEWPORTTEXT | Определяет горизонтальные и вертикальные размеры области просмотра в контексте устройства воспроизведения. [ 95 ] |
META_SETVIEWPORTORG | Определяет начало области просмотра в контексте устройства воспроизведения. [ 96 ] |
META_SETWINDOWEXT | Определяет горизонтальные и вертикальные размеры окна вывода в контексте устройства воспроизведения. [ 97 ] |
META_SETWINDOWORG | Определяет начало окна вывода в контексте устройства воспроизведения. [ 98 ] |
Побег записи
[ редактировать ]
Escape-записи — это средство расширения функциональности метафайла с помощью записей, которые иначе не определены как тип записи WMF. Каждая escape-запись содержит функцию записи, escape-функцию и потенциально escape-данные.
Следующие escape-записи составляют файл WMF.
Имя | Описание |
---|---|
АБОРТДОК | Останавливает обработку текущего документа. [ 99 ] |
BEGIN_PATH | Открывает путь. [ 100 ] |
CHECK_JPEGFORMAT | Определяет, может ли он обрабатывать данное изображение JPEG . [ 101 ] |
ПРОВЕРИТЬ_PNGFORMAT | Определяет, может ли он обрабатывать данное изображение PNG . [ 102 ] |
CLIP_TO_PATH | Применяет функцию к текущему контуру обрезки PostScript . [ 103 ] |
ЗАКРЫТЬ_КАНАЛ | То же, что и ЭНДДОК. [ 104 ] |
СКАЧАТЬ_FACE | Устанавливает имя шрифта на устройстве вывода. [ 105 ] |
СКАЧАТЬ_HEADER | Загружает наборы процедур PostScript. [ 106 ] |
DRAW_PATTERNRECT | Рисует прямоугольник с определенным узором. [ 107 ] |
ENCAPSULATED_POSTSCRIPT | Отправляет произвольные инкапсулированные данные PostScript (EPS) непосредственно в драйвер принтера. [ 108 ] |
END_PATH | Завершает путь. [ 109 ] |
ЭНДДОК | Уведомляет драйвер принтера об окончании нового задания печати. [ 110 ] |
EPS_PRINTING | Указывает начало и конец печати EPS. [ 111 ] |
EXTTEXTOUT | Рисует текст, используя текущий выбранный шрифт, цвет фона и цвет текста. [ 112 ] |
GET_COLORTABLE | Получает значения таблицы цветов из драйвера принтера. [ 113 ] |
GET_DEVICEUNITS | Получает единицы измерения устройства, настроенные в данный момент на устройстве вывода. [ 114 ] |
GET_EXTENDED_TEXTMETRICS | Получает расширенные текстовые метрики, которые в данный момент настроены в драйвере принтера. [ 115 ] |
GET_FACENAME | Получает имя шрифта, настроенное в данный момент на устройстве вывода. [ 116 ] |
GET_PAIRKERNTABLE | Получает таблицу кернов шрифтов, определенную в данный момент на устройстве вывода. [ 117 ] |
GET_PHYSPAGESIZE | Получает физический размер страницы, выбранный в данный момент на устройстве вывода. [ 118 ] |
GET_PRINTINGOFFSET | Получает смещение от верхнего левого угла физической страницы, где начинается фактическая печать или рисование. [ 119 ] |
GET_PS_FEATURESETTING | Запрашивает у драйвера принтера информацию о функциях PostScript, поддерживаемых устройством вывода. [ 120 ] |
GET_SCALINGFACTOR | Получает коэффициенты масштабирования для осей X и Y принтера. [ 121 ] |
META_ESCAPE_ENHANCED_METAFILE | Используется для встраивания метафайла EMF в метафайл WMF. [ 122 ] |
METAFILE_DRIVER | Запрашивает драйвер принтера о поддержке метафайлов на устройстве вывода. [ 123 ] |
НЬЮФРЕЙМ | Уведомляет драйвер принтера о том, что приложение завершило запись на страницу. [ 124 ] |
NEXTBAND | Уведомляет драйвер принтера о том, что приложение завершило запись в полосу. [ 125 ] |
ПЕРЕХОД | Передаёт произвольные данные драйверу принтера. [ 126 ] |
POSTSCRIPT_DATA | Отправляет произвольные данные PostScript на устройство вывода. [ 127 ] |
POSTSCRIPT_IDENTIFY | Устанавливает драйвер принтера в режим, ориентированный на PostScript или GDI. [ 128 ] |
POSTSCRIPT_IGNORE | Уведомляет устройство вывода о необходимости игнорировать данные PostScript. [ 129 ] |
POSTSCRIPT_INJECTION | Вставляет блок необработанных данных в поток PostScript. [ 130 ] |
POSTSCRIPT_PASSTHROUGH | Отправляет произвольные данные непосредственно драйверу принтера, который должен обрабатывать эти данные только в режиме PostScript. [ 131 ] |
ОТКРЫТЫЙ_КАНАЛ | Действует так же, как STARTDOC, с NULL-документом и именем выходного файла, а также данными в необработанном режиме. [ 132 ] |
QUERY_DIBSUPPORT | Запрашивает драйвер принтера о поддержке DIB на устройстве вывода. [ 133 ] |
QUERY_ESCSUPPORT | Запрашивает драйвер принтера, чтобы определить, поддерживается ли определенная escape-функция WMF на устройстве вывода. [ 134 ] |
SET_COLORTABLE | Устанавливает значения таблицы цветов. [ 135 ] |
SET_COPYCOUNT | Устанавливает количество копий. [ 136 ] |
SET_LINECAP | Указывает режим окончания строки, используемый при рисовании на устройстве вывода. [ 137 ] |
SET_LINEJOIN | Указывает режим соединения линий, используемый при рисовании на устройстве вывода. [ 138 ] |
SET_MITERLIMIT | Устанавливает предел длины соединений под углом, используемых при рисовании на устройстве вывода. [ 139 ] |
SPCLPASSTHROUGH2 | Позволяет документам включать в документы частные процедуры и другие произвольные данные. [ 140 ] |
СТАРТДОК | Уведомляет драйвер принтера о начале нового задания печати. [ 141 ] |
В escape-записях была обнаружена серьезная уязвимость, связанная с escape-записью Abort, которая хранит код процедуры прерывания внутри самой записи. Это затронуло системы Windows (см. CVE — 2005-4560 ) и проект Wine (см. CVE — 2006-0106 ). По словам Secunia , «Уязвимость возникает из-за ошибки в обработке файлов метафайлов Windows ('.wmf'), содержащих специально созданные записи SETABORTPROC 'Escape'. Такие записи позволяют выполнять произвольную определяемую пользователем функцию при рендеринге файл WMF не работает». [ 142 ] Согласно документации Windows 3.1 SDK, escape-последовательность SETABORTPROC была устаревшей и заменена одноименной функцией в Windows 3.1 задолго до того, как была обнаружена уязвимость WMF. [ 143 ] Однако устаревший escape-код был сохранен для совместимости с 16-битными программами, написанными для Windows 3.0 (или, по крайней мере, обратно совместимыми с ней). Это изменение произошло примерно в то же время, когда Microsoft создавала 32-разрядную версию GDI для Windows NT, и вполне вероятно, что уязвимость возникла во время этих усилий.
После того, как Стив Гибсон обвинил Microsoft в намеренном внедрении бэкдора в свой код, [ 144 ] [ 145 ] Марк Руссинович дал опровержение и заявил, что:
...когда был разработан формат, все было по-другому. В модели «большой» памяти Windows 3.1 код по своей сути не зависит от местоположения, и Windows никогда не подвергалась исправлениям, поэтому и Windows, и приложение могли просто скопировать функцию приложения в файл WMF и предположить, что она будет работать при воспроизведении одним и тем же приложением в более поздний сеанс запуска. В любом случае, неясно, предполагали ли разработчики приложения, создающие метафайлы на диске с процедурами прерывания. Кроме того, как отметил Стивен Тулуза из Microsoft в опровержении утверждений Стива, среда безопасности в начале 1990-х сильно отличалась от сегодняшней, и весь код, включая тот, который хранился в файле WMF, по своей сути был доверенным. [ 146 ]
Питер Ферри из Symantec Security Response, США, также не согласился с Гибсоном, отметив, что:
Гибсон утверждал, что создается поток для запуска обработчика SetAbortProc. На самом деле для запуска обработчика не создается поток — это обратный вызов, который вызывается парсером, и парсеру приходится ждать, пока обратный вызов вернется, иначе весь смысл функции (прервать печать) теряется. . По его собственному признанию, Гибсон не читал документацию (фактически он утверждал, что не смог ее найти, хотя она находится в свободном доступе на веб-сайте Microsoft), а также утверждал, что контекст устройства недоступен обработчику функции. . Конечно, контекст устройства доступен обработчику функции — это один из двух передаваемых ему параметров (см. выше), и он необходим для прерывания печати. Наконец, Гибсон заявил, что поток управления не может вернуться в Windows. Это просто вопрос того, что функция возвращает и отбрасывает параметры, переданные в стек. Если запись имеет правильный формат, Windows продолжит анализировать файл, как и раньше. ... Гибсон признается, что догадывался о многом. К сожалению, он плохо угадал. Думаю, теперь мы знаем лучше. [ 147 ]
ЭДС
[ редактировать ]Расширение имени файла |
.ЭДС |
---|---|
Тип интернет-СМИ |
изображение/ЭДС [ 10 ] |
Единый идентификатор типа (UTI) | com.microsoft.emf [ 10 ] |
Тип формата | Векторная графика |
Расширено с | ВМФ |
Распространено на | ЭДС+ |

Файлы EMF имеют три возможных версии заголовков. Исходные заголовки представляют собой просто контейнер для изображений, вторая и третья версии инкапсулируют исходный заголовок и содержат запись формата пикселей и поддержку записей OpenGL, а третья версия инкапсулирует второе расширение заголовка и повышает точность EMF и масштабируемость EMF, поскольку это добавляет возможность измерения расстояний поверхностей устройства в метрической системе. [ 148 ]
Каждый заголовок EMF начинается с записи EMR_HEADER и записывает соответствующие свойства устройства, на котором было записано изображение метафайла. Исходный заголовок EMF имеет заголовок длиной 80 байт и необязательную строку описания переменной длины. [ 149 ] Другие метафайлы содержат поля расширения, инкапсулирующие исходный заголовок. EmfMetafileHeaderExtension1
— это запись, которая вставляется непосредственно после исходного заголовка EMF, указывает, существует ли дескриптор формата пикселей и смещение объекта дескриптора в заголовке, а также поле, которое указывает, существуют ли записи OpenGL в метафайле. [ 150 ] Дескриптор формата пикселей определяет возможности поверхности рисования и то, кодируется ли пиксель в RGBA или является индексом в таблице цветов. [ 151 ] EmfMetafileHeaderExtension2
это запись, которая вставляется сразу после EmfMetafileHeaderExtension1
запись и содержит два поля со значениями X и Y для измерения поверхности устройства в микрометрах. [ 152 ]
Как и файлы WMF, записи можно классифицировать по функциям, однако в файлах EMF больше типов записей, чем в файлах WMF. Записи можно классифицировать как записи управления, растрового изображения, обрезки, комментария, рисования, экранирования, создания объекта, манипулирования объектом, OpenGL, скобки пути, записи состояния и преобразования.
ЭДС+
[ редактировать ]С выпуском Windows XP был представлен формат Enhanced Metafile Format Plus Extensions (EMF+). EMF+ предоставляет способ сериализации вызовов API GDI+ таким же образом, как WMF/EMF хранит вызовы GDI.
Существуют также сжатые версии метафайлов Windows, известные как сжатый метафайл Windows (WMZ) и сжатый расширенный метафайл Windows (EMZ). [ 153 ] которые по сути представляют собой файлы WMF и EMF, сжатые gzip соответственно.
Реализации
[ редактировать ]Формат WMF был разработан для выполнения слоем Windows GDI с целью восстановления изображения , но поскольку двоичные файлы WMF содержат определения графических примитивов GDI, составляющих это изображение, можно разработать альтернативные библиотеки, которые отображают двоичные файлы WMF. файлы или конвертировать их в другие графические форматы.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Формат метафайла Windows (PDF) , Microsoft, стр. 16
- ^ «[MS-WMF]: формат метафайла Windows» . MSDN . 26 апреля 2021 г. Проверено 13 сентября 2023 г.
- ^ [MS-EMF]: Расширенный формат метафайлов (PDF) , Microsoft, стр. 17
- ^ [MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions (PDF) , Microsoft, стр. 19
- ^ Справочник программистов Microsoft Windows 3.1, Ресурсы тома 4, Microsoft Press 1992, ISBN 1-55615-494-1 , глава 3, стр. 21–45.
- ^ Каолан Макнамара. «Справочник по метафайлам окон (wmf)» . Проверено 1 июня 2008 г.
Эти коды операций не реализованы, поскольку я не знаю, что они собой представляют, нет известной документации.
- ^ «[MS-WMF]: Спецификация формата метафайла Windows» . Проверено 1 июня 2008 г.
- ^ «Обещание Microsoft по открытой спецификации» . Майкрософт . Проверено 1 июня 2008 г.
- ^ Jump up to: а б Расширенные метафайлы в Win32 , группа Microsoft Developer Network Technology, 10 июня 1993 г.
- ^ Jump up to: а б с д и ж Леонард, Шон (сентябрь 2016 г.). «Метафайлы Windows» . Типы носителей изображений Windows . IETF . п. 1. дои : 10.17487/RFC7903 . ISSN 2070-1721 . РФК 7903 . Проверено 8 февраля 2020 г.
- ^ "EMF" , FileFormat , Aspose Pty Ltd, 11 октября 2019 г. , получено 20 января 2020 г.
- ^ Петцольд, Чарльз (11 октября 1994 г.), «Метафайлы NT и объекты GDI» , журнал PC Magazine , стр. 343–347.
- ^ Поляков, Алекс; Брусенцев, Виталий (2005). Графическое программирование с использованием GDI+ и DirectX . Издательство A-List. п. 68. ИСБН 1-931769-39-7 .
- ^ «3.1.4.1 Таблица объектов WMF», [MS-WMF]: расширенный формат метафайла (PDF) , Microsoft, стр. 187
- ^ «3.1.1.1 Таблица объектов EMF», [MS-EMF]: Спецификация формата метафайла Windows (PDF) , Microsoft, стр. 212–214.
- ^ [MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions (PDF) , Microsoft, стр. 204–205.
- ^ «Рисунок 1: Структуры исходных и размещаемых метафайлов Windows», Формат метафайла Windows (PDF) , Microsoft, стр. 17
- ^ Q66949: ИНФОРМАЦИЯ: Функции метафайлов Windows и размещаемые метафайлы Aldus , Microsoft – через Архив базы знаний: архив ранних версий базы знаний Microsoft
- ^ Jump up to: а б с «1.3.1 Структура метафайла», Формат метафайла Windows (PDF) , Microsoft, стр. 17
- ^ «2.3.2.3 Запись META_PLACEABLE», Формат метафайла Windows (PDF) , Microsoft, стр. 115
- ^ Формат метафайла Windows (PDF) , Microsoft, стр. 55,
<55> Раздел 2.3.2.3: Windows NT 3.1, Windows NT 3.5, Windows NT 3.51 и Windows 95: эта функция не поддерживается.
- ^ «2.3.2.2 Запись MTF_HEADERRECORD», Формат метафайла Windows (PDF) , Microsoft, стр. 114
- ^ «2.3.2.2 Запись MTF_HEADERRECORD», Формат метафайла Windows (PDF) , Microsoft, стр. 114
- ^ «2.3.2.1 Запись MTF_EOF», Формат метафайла Windows (PDF) , Microsoft, стр. 114
- ^ «1.1 Глоссарий», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , Microsoft, стр. 13 , получено 24 января 2020 г.
- ^ «2.3.1.1 Запись META_BITBLT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 101–103 , получено 24 января 2020 г.
- ^ «2.3.1.2 Запись META_DIBBITBLT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , Microsoft, стр. 103–106 , получено 24 января 2020 г.
- ^ «2.3.1.3 Запись META_DIBSTRETCHBITBLT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , Microsoft, стр. 106–108 , получено 24 января 2020 г.
- ^ «2.3.1.4 Запись META_SETDIBTODEV», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , Microsoft, стр. 108–109 , получено 24 января 2020 г.
- ^ «2.3.1.5 Запись META_STRETCHBLT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , Microsoft, стр. 109–110 , получено 24 января 2020 г.
- ^ «2.3.1.6 Запись META_STRETCHDIB», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , Microsoft, стр. 103–106 , получено 24 января 2020 г.
- ^ «2.3.3.1 Запись META_ARC», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 101–103 , получено 24 января 2020 г.
- ^ «2.3.3.2 Запись META_CHORD», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 117–118 , получено 24 января 2020 г.
- ^ «2.3.3.3 Запись META_ELLIPSE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 119 , получено 24 января 2020 г.
- ^ «2.3.3.4 Запись META_EXTFLOODFILL», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 119–120 , получено 24 января 2020 г.
- ^ «2.3.3.5 Запись META_EXTTEXTOUT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 119–120 , получено 24 января 2020 г.
- ^ «2.3.3.6 Запись META_FILLREGION», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 121 , получено 24 января 2020 г.
- ^ «2.3.3.7 Запись META_FLOODFILL», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 119–120 , получено 24 января 2020 г.
- ^ «2.3.3.8 Запись META_FRAMEREGION», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 122–123 , получено 24 января 2020 г.
- ^ «2.3.3.9 Запись META_INVERTREGION», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 123 , получено 24 января 2020 г.
- ^ «2.3.3.10 Запись META_LINETO», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 123–124 , получено 24 января 2020 г.
- ^ «2.3.3.11 Запись META_PAINTREGION», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 124 , получено 24 января 2020 г.
- ^ «2.3.3.12 Запись META_PATBLT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 124–125 , получено 24 января 2020 г.
- ^ «2.3.3.13 Запись META_PIE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 125–126 , получено 24 января 2020 г.
- ^ «2.3.3.14 Запись META_POLYLINE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 126 , получено 24 января 2020 г.
- ^ «2.3.3.15 Запись META_POLYGON», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 127 , получено 24 января 2020 г.
- ^ «2.3.3.16 Запись META_POLYPOLYGON», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 127–128 , получено 24 января 2020 г.
- ^ «2.3.3.17 Запись META_RECTANGLE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 127–128 , получено 24 января 2020 г.
- ^ «2.3.3.18 Запись META_ROUNDRECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 128–129 , получено 24 января 2020 г.
- ^ «2.3.3.19 Запись META_SETPIXEL», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 129–130 , получено 24 января 2020 г.
- ^ «2.3.3.20 Запись META_TEXTOUT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 130 , получено 24 января 2020 г.
- ^ «2.2.2.2. Объект BitmapCoreHeader», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 85 , получено 25 января 2020 г.
- ^ «2.2.2.9. Объект DeviceIndependentBitmap», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 91 , получено 25 января 2020 г.
- ^ Jump up to: а б «2.2.1. Графические объекты», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 79 , получено 25 января 2020 г.
- ^ «2.3.4.1 Запись META_CREATEBRUSHINDIRECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 131–132 , получено 25 января 2020 г.
- ^ «2.3.4.2 Запись META_CREATEFONTINDIRECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 132 , получено 25 января 2020 г.
- ^ «2.3.4.4 Запись META_CREATEPATTERNBRUSH», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 133–135 , получено 25 января 2020 г.
- ^ «2.3.4.3 Запись META_CREATEPALETTE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 132–133 , получено 25 января 2020 г.
- ^ «2.3.4.5 Запись META_CREATEPENINDIRECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 134–135 , получено 25 января 2020 г.
- ^ «2.3.4.6 Запись META_CREATEREGION», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 135 , получено 25 января 2020 г.
- ^ «2.3.4.7 Запись META_DELETEOBJECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 135 , получено 25 января 2020 г.
- ^ «2.3.4.8 Запись META_CREATEBRUSHINDIRECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 135–136 , получено 25 января 2020 г.
- ^ «2.3.4.9 Запись META_DIBCREATEPATTERNBRUSH», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 136–137 , получено 25 января 2020 г.
- ^ «2.3.4.10 Запись META_SELECTCLIPREGION», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 137 , получено 25 января 2020 г.
- ^ «2.3.4.11 Запись META_SELECTOBJECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 137–138 , получено 25 января 2020 г.
- ^ «2.3.4.11 Запись META_SELECTPALETTE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 139 , получено 25 января 2020 г.
- ^ «2.3.5 Типы записей состояния», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 138 , получено 28 января 2020 г.
- ^ «2.3.5.1 Запись META_ANIMATEPALETTE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 140 , получено 28 января 2020 г.
- ^ «2.3.5.2 Запись META_EXCLUDECLIPRECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 140–141 , получено 28 января 2020 г.
- ^ «2.3.5.3 Запись META_INTERSECTCLIPRECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 141–142 , получено 28 января 2020 г.
- ^ «2.3.5.1 Запись META_MOVETO», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 142 , получено 28 января 2020 г.
- ^ «2.3.5.4 Запись META_OFFSETCLIPRGN», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 142–143 , получено 28 января 2020 г.
- ^ «2.3.5.5 Запись META_OFFSETVIEWPORTORG», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 143 , получено 28 января 2020 г.
- ^ «2.3.5.6 Запись META_OFFSETWINDOWORG», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 131–132 , получено 28 января 2020 г.
- ^ «2.3.5.7 Запись META_REALIZEPALETTE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 143–144 , получено 28 января 2020 г.
- ^ «2.3.5.8 Запись META_RESIZEPALETTE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 144 , получено 28 января 2020 г.
- ^ «2.3.5.9 Запись META_RESTOREDC», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 145 , получено 28 января 2020 г.
- ^ «2.3.5.10 Запись META_SAVEDC», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 145 , получено 28 января 2020 г.
- ^ «2.3.5.11 Запись META_SCALEVIEWPORTEXT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 145–146 , получено 28 января 2020 г.
- ^ «2.3.5.12 Запись META_SCALEWINDOWEXT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 146–147 , получено 28 января 2020 г.
- ^ «2.3.5.13 Запись META_SETBKCOLOR», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 147 , получено 28 января 2020 г.
- ^ «2.3.5.14 Запись META_SETBKMODE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 147–148 , получено 28 января 2020 г.
- ^ «2.3.5.15 Запись META_SETLAYOUT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 148 , получено 28 января 2020 г.
- ^ «2.3.5.16 Запись META_SETMAPMODE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 148–149 , получено 28 января 2020 г.
- ^ «2.3.5.17 Запись META_SETMAPPERFLAGS», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 131–132 , получено 28 января 2020 г.
- ^ «2.3.5.18 Запись META_ANIMATEPALETTE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 149 , получено 28 января 2020 г.
- ^ «2.3.5.19 Запись META_SETPALENTRIES», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 149–150 , получено 28 января 2020 г.
- ^ «2.3.5.20 Запись META_SETRELABS», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 150 , получено 28 января 2020 г.
- ^ «2.3.5.21 Запись META_SETROP2», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 151 , получено 28 января 2020 г.
- ^ «2.3.5.1 Запись META_SETSTRETCHBLTMODE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 151–152 , получено 28 января 2020 г.
- ^ «2.3.5.22 Запись META_SETTEXTALIGN», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 152 , получено 28 января 2020 г.
- ^ «2.3.5.1 Запись META_SETTEXTCHAREXTRA», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 152–153 , получено 28 января 2020 г.
- ^ «2.3.5.23 Запись META_SETTEXTCOLOR», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 153 , получено 28 января 2020 г.
- ^ «2.3.5.24 Запись META_SETTEXTJUSTIFICATION», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 153–154 , получено 28 января 2020 г.
- ^ «2.3.5.25 Запись META_SETVIEWPORTEXT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 154 , получено 28 января 2020 г.
- ^ «2.3.5.26 Запись META_SETVIEWPORTORG», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 154–155 , получено 28 января 2020 г.
- ^ «2.3.5.27 Запись META_SETWINDOWEXT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 155 , получено 28 января 2020 г.
- ^ «2.3.5.28 Запись META_SETWINDOWORG», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 155 , получено 28 января 2020 г.
- ^ «2.3.6.2. Запись ABORTDOC», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 158–159 , получено 28 января 2020 г.
- ^ «2.3.6.3. Запись BEGIN_PATH», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 159 , получено 28 января 2020 г.
- ^ «2.3.6.4. Запись CHECK_JPEGFORMAT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 159–160 , получено 28 января 2020 г.
- ^ «2.3.6.5. Запись CHECK_PNGFORMAT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 160 , получено 28 января 2020 г.
- ^ «2.3.6.6. Запись CLIP_TO_PATH», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 160 , получено 28 января 2020 г.
- ^ «2.3.6.7. Запись CLOSE_CHANNEL», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 162 , получено 28 января 2020 г.
- ^ «2.3.6.8. Запись DOWNLOAD_FACE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 162–163 , получено 28 января 2020 г.
- ^ «2.3.6.9. Запись DOWNLOAD_HEADER», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 158–159 , получено 28 января 2020 г.
- ^ «2.3.6.10. Запись DRAW_PATTERNRECT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 163–164 , получено 28 января 2020 г.
- ^ «2.3.6.11. Запись ENCAPSULATED_POSTSCRIPT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 164 , получено 28 января 2020 г.
- ^ «2.3.6.12. Запись END_PATH», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 164–165 , получено 28 января 2020 г.
- ^ «2.3.6.13. Запись ENDDOC», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 165 , получено 28 января 2020 г.
- ^ «2.3.6.14. Запись EPS_PRINTING», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 165–166 , получено 28 января 2020 г.
- ^ «2.3.6.15. Запись EXTTEXTOUT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 166–167 , получено 28 января 2020 г.
- ^ «2.3.6.16. Запись GET_COLORTABLE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 167–168 , получено 28 января 2020 г.
- ^ «2.3.6.17. Запись GET_DEVICEUNITS», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 168 , получено 28 января 2020 г.
- ^ «2.3.6.18. Запись GET_EXTENDED_TEXTMETRICS», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 168–169 , получено 28 января 2020 г.
- ^ «2.3.6.19. Запись GET_FACENAME», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 169 , получено 28 января 2020 г.
- ^ «2.3.6.20. Запись GET_PAIRKERNTABLE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 169–170 , получено 28 января 2020 г.
- ^ «2.3.6.21. Запись GET_PHYSPAGESIZE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 170 , получено 28 января 2020 г.
- ^ «2.3.6.22. Запись GET_PRINTINGOFFSET», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 170–171 , получено 28 января 2020 г.
- ^ «2.3.6.23. Запись GET_PS_FEATURESETTING», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 171 , получено 28 января 2020 г.
- ^ «2.3.6.24. Запись GET_SCALINGFACTOR», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 171–172 , получено 28 января 2020 г.
- ^ «2.3.6.25. Запись META_ESCAPE_ENHANCED_METAFILE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 172–173 , получено 28 января 2020 г.
- ^ «2.3.6.26. Запись METAFILE_DRIVER», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 173–174 , получено 28 января 2020 г.
- ^ «2.3.6.27. Запись NEWFRAME», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 174–175 , получено 28 января 2020 г.
- ^ «2.3.6.28. Запись NEXTBAND», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 174–175 , получено 28 января 2020 г.
- ^ «2.3.6.29. ПЕРЕХОДНАЯ запись», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 175 , получено 28 января 2020 г.
- ^ «2.3.6.30. Запись POSTSCRIPT_DATA», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 176 , получено 28 января 2020 г.
- ^ «2.3.6.31. Запись POSTSCRIPT_IDENTIFY», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 176–177 , получено 28 января 2020 г.
- ^ «2.3.6.32. Запись POSTSCRIPT_IGNORE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 177 , получено 28 января 2020 г.
- ^ «2.3.6.33. Запись POSTSCRIPT_INJECTION», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 177–178 , получено 28 января 2020 г.
- ^ «2.3.6.34. Запись POSTSCRIPT_PASSTHROUGH», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 178 , получено 28 января 2020 г.
- ^ «2.3.6.35. Запись OPEN_CHANNEL», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 179 , получено 28 января 2020 г.
- ^ «2.3.6.36. Запись QUERY_DIBSUPPORT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 179–180 , получено 28 января 2020 г.
- ^ «2.3.6.37. Запись QUERY_ESCSUPPORT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 180 , получено 28 января 2020 г.
- ^ «2.3.6.38. Запись SET_COLORTABLE», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 180–181 , получено 28 января 2020 г.
- ^ «2.3.6.39. Запись SET_COPYCOUNT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 181 , получено 28 января 2020 г.
- ^ «2.3.6.40. Запись SET_LINECAP», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 181–182 , получено 28 января 2020 г.
- ^ «2.3.6.41. Запись SET_LINEJOIN», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 182–183 , получено 28 января 2020 г.
- ^ «2.3.6.42. Запись SET_MITERLIMIT», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 183 , получено 28 января 2020 г.
- ^ «2.3.6.43. Запись SPCLPASSTHROUGH2», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 183–184 , получено 28 января 2020 г.
- ^ «2.3.6.44. Запись STARTDOC», [MS-WMF]: Спецификация формата метафайла Windows (PDF) , стр. 184 , получено 28 января 2020 г.
- ^ «Выполнение произвольного кода Microsoft Windows WMF «SETABORTPROC»» . Секуния . Рекомендация Secunia: SA18255. Архивировано из оригинала 2 января 2006 года.
- ^ Escape с поддержкой Pscript , Microsoft , получено 28 января 2020 г.
- ^ «Бэкдор Windows MetaFile?» . GRC Безопасность сейчас! (Подкаст). Исследовательская корпорация Гибсон . 12 января 2006 года . Проверено 28 января 2020 г.
- ^ Гибсон, Стив (12 января 2006 г.), «Re: Вы не захотите пропустить сегодняшнюю программу «Безопасность сейчас!», № 22» , grc.news.feedback , получено 28 января 2020 г.
- ^ Руссинович, Марк (18 января 2006 г.), «Внутри бэкдора WMF» , TechNet , Microsoft – через Microsoft Tech Community
- ^ Ферри, Питер (2 февраля 2006 г.), Inside the Windows Meta File Format (PDF) , Virus Bulletin , заархивировано из оригинала (PDF) 16 мая 2008 г. , получено 24 января 2020 г. - через Symantec
- ^ «1.3.1. Структура метафайла», [MS-EMF]: расширенный формат метафайла (PDF) , Microsoft, стр. 17–18.
- ^ «2.3.4.2.1 Запись EmfMetafileHeader», [MS-EMF]: расширенный формат метафайла (PDF) , Microsoft, стр. 120
- ^ «2.2.10 Объект HeaderExtension1», [MS-EMF]: расширенный формат метафайла (PDF) , Microsoft, стр. 57–58.
- ^ «2.2.22 Объект PixelFormatDescriptor», [MS-EMF]: расширенный формат метафайла (PDF) , Microsoft, стр. 68–71.
- ^ «2.3.4.2.3 Запись EmfMetafileHeaderExtension2», [MS-EMF]: расширенный формат метафайла (PDF) , Microsoft, стр. 122–124.
- ^ «При попытке вставить изображение в презентацию PowerPoint для Mac вы получаете сообщение об ошибке «Этот файл имеет неподдерживаемый графический формат» . Майкрософт . Архивировано из оригинала 19 апреля 2014 г. Проверено 19 апреля 2014 г.