윈도 메타파일
Windows MetafileWMF(Windows Metafile)는 1990년대 마이크로소프트 윈도용으로 고안된 이미지 파일 형식이다.원래 Windows Metafile 형식은 장치에 독립적이지 않았으며(배치 헤더로 더 많이 만들 수는 있지만) 벡터 그래픽과 비트맵 구성 요소를 모두 포함할 수 있다.SVG 파일과 비슷한 방식으로 작동한다.WMF 파일은 나중에 장치 독립성을 제공하는 향상된 메타파일(EMF 파일)로 대체되었다.그런 다음 EMF 파일 자체는 EMF+ 파일을 통해 향상되었다.
본질적으로 메타파일은 화면에 이미지를 표시하기 위해 도면 명령, 속성 정의 및 그래픽 개체로 구성된 레코드 목록을 저장한다.[1]사용되는 도면 명령은 Microsoft Windows에서 도면에 사용되는 GDI(Graphics Device Interface) API의 명령과 밀접하게 관련되어 있다.
WMF는 윈도 3.0에 도입된 16비트 포맷이다.Word, PowerPoint, Publisher와 같은 Microsoft Office 응용 프로그램의 기본 벡터 형식이다.Windows Metafile Format 규격의 2017년[update] 개정판 14는 PDF로 온라인 읽기 또는 다운로드가 가능하며,[2] WMF 파일을 대체한 EMF 파일은 32비트 파일 형식만으로 동일한 원리로 작동하며, 이는 또한 "comment" 레코드 내에 개인 데이터를 내장할 수 있다.[3]EMF+는 EMF 파일의 확장자로, 이러한 주석 레코드에 내장되어 있어 Windows GDI+[4]와 유사한 명령어, 객체 및 속성을 사용하는 영상과 텍스트를 허용한다.
역사
원래의 16비트 WMF 파일 형식은 1992년 윈도 3.1 SDK 문서의[5] 볼륨 4(최소한 다른 볼륨의 개별 기능 및 구조에 대한 설명과 결합한 경우)에 완전히 명시되었지만, 그 규격은 몇 가지 세부 사항에 대해서는 모호했다.이러한 매뉴얼은 EULA나 기타 특이한 라이센싱 제한사항(소프트웨어 번들의 일부로 구입하면 소프트웨어가 하나의 대상이 된다는 일반적인 경고에 불과함)을 통해 클릭 없이 서점에서 구할 수 있는 인쇄 책자로 출판되었다.
시간이 지남에 따라 그러한 과거 규격의 존재는 대부분 잊혀졌고, 일부 대체 구현은 어렵고 오류가 발생하기 쉬운 기존 WMF 파일에서 파일 형식을 알아내기 위해 엔지니어링을 역방향으로 채택했다.[6]2006년 9월 마이크로소프트는 파일 형식 구현자에게 특허권을 주장하지 않겠다고 약속하면서 마이크로소프트 오픈 사양 약속의 맥락에서 다시 WMF 파일 형식 사양을 보다 완전한 형태로 발표했다[7].[8]
Microsoft는 나중에 기본 장치 독립성을 제공하는 "장소 이동 가능한" 파일 헤더를 사용함에도 불구하고 WMF 파일이 장치 독립성에 실질적인 문제를 가지고 있기 때문에 32비트 EMF 파일을 선호하는 WMF 파일을 더 이상 사용하지 않았다.마이크로소프트는 이 형식을 사용하는 개발자들이 메타파일에서 "응용프로그램, 위치, 또는 댓글 확장"이라는 것을 발견했다.다른 이들은 다양한 애플리케이션별 정보를 제공하는 메타파일(metafile)에 헤더를 추가하여 주요 호환성 문제를 야기했다.[9]따라서, 1992년 윈도우 NT 3.1과 함께 마이크로소프트는 Win32 API에 기반하고 그들이 장치 독립성에 내장한 형식인 향상된 메타파일 형식(EMF)[10]을 도입했다.[11][9]— 이것들은 NT 메타파일이라고도 알려져 있다.[12]윈도 XP와 GDI+의 출시로 레코드 세트를 대폭 늘려야 했고, 그래서 마이크로소프트는 기존 EMF 파일 포맷의 확장으로 EMF+를 출시했다.[10][13]
메타파일 구조
WMF, EMF, EMF+ 파일은 모두 그래픽 출력을 생성하기 위해 재생되는 일련의 레코드로 구성된다.일부 레코드는 그래픽을 그리는 방법을 결정하는 데 사용되는 그래픽 객체를 지정할 수 있는 객체를 정의한다(예: 펜은 선의 색과 폭을 지정한다).이 물체들은 각각 메타파일에 저장되어 개체 테이블로 배치되는데, 이 테이블은 메타파일을 처리하는 동안 그래픽 물체의 사용을 추적한다.객체 테이블은 메타파일 내에서 정의된 그래픽 객체 구조와 인덱스의 연관 배열이다.
WMF와 EMF 파일은 EMF 파일의 EMF+ 레코드와 다르게 객체 처리를 처리한다.WMF와 EMF 파일이 처리되고 있을 때, 객체가 정의되면 레코드가 객체 테이블로 읽힌다.객체가 삭제되면 객체가 테이블에서 해제되고 식별자를 재사용할 수 있다.특히, 레코드 재생 중에 특별히 선택될 때까지는 객체를 사용하지 않는다.[14][15]이는 EMF+ 파일에 따라 달라지며, EMF+ 파일도 개체 식별자와 함께 개체를 기록하는 해시맵을 통해 연관 배열을 사용한다.그러나 객체를 삭제할 수 있는 WMF나 EMF 파일과 달리 기존 객체와 동일한 인덱스를 가진 새 객체가 생성되면 표의 항목이 새 객체로 대체된다.또한 EMF 파일은 사용하기 전에 특별히 개체를 선택할 필요가 없다.[16]
WMF
WMF 파일은 원래 장치에 독립적으로 설계되지 않았는데, 이는 파일이 기록된 원래 장치와 다른 출력 장치에 파일을 재생할 수 없다는 것을 의미한다.이 문제에 대한 부분적인 해결책은 알두스 사에 의해 발명되었는데, 그는 "APM 헤더"[18]라고 불리는 추가 "위치가 가능한" 헤더를 추가했고, 이 헤더는 바운드 수정 가능, 메타파일 버전, 메타파일 내의 물체 수, 메타파일에서 가장 큰 단일 기록의 크기를 추가했다.[19][20]이것은 나중에 마이크로소프트에 의해 WMF 포맷으로 통합되었고, 윈도 2000에서 시작되었다.[21]
WMF 파일은 헤더 레코드,[19][22] 전술한 옵션 위치 가능 레코드 등 다수의 제어 레코드로 시작하여 일련의 레코드로 구성되며, 파일 레코드의 끝에 의해 종료된다.[19][24]
관제기록에 의해 캡슐화된 것은 이미지 자체를 구성하는 기록이다.이러한 레코드는 재생 장치 컨텍스트라고 알려진 내에서 작동하는데, 이는 메타파일이 이 출력 장치에 "재생"되고 있을 때 장치의 그래픽 환경을 구성하는 속성 및 개체의 모음입니다.[25]
제어 기록 이외의 기록은 크게 비트맵 기록, 도면 기록, 객체 기록, 주 기록 및 탈출 기록으로 분류할 수 있다.
비트맵 레코드
비트맵 레코드는 비트맵 이미지를 관리하고 출력한다.
이름 | 설명 |
---|---|
META_BITBLT | 비트 블록 전송을 수행하는 방법을 지정하십시오.이러한 레코드는 소스 또는 영역으로 사용할 비트맵을 지정할 수 있다.[26] |
메타_DIBBITBLT | 장치 독립적인 비트맵 이미지를 비트 블록 전송하는 방법을 지정하십시오.이러한 레코드는 소스 또는 영역으로 사용할 비트맵을 지정할 수 있다.[27] |
메타_DIBSTRETHBITBLT | 장치 독립적인 비트맵 이미지를 비트 블록 전송하는 방법을 지정하지만 이미지를 확장하거나 축소할 수 있다.이러한 레코드는 소스 또는 영역으로 사용할 비트맵을 지정할 수 있다.[28] |
메타_SETDIBTODEV | 장치 독립적인 비트맵 이미지에서 픽셀 블록을 설정할 색상을 지정하십시오.이러한 레코드는 소스 또는 영역으로 사용할 비트맵을 지정할 수 있다.[29] |
메타_STRETHBLT | 비트 블록 전송을 수행하는 방법을 지정하지만 이미지를 확장하거나 축소할 수 있다.[30] |
메타_STRETHDIB | 장치 독립적인 비트맵 이미지를 비트 블록 전송하는 방법을 지정하지만 이미지를 확장하거나 축소할 수 있다.이러한 레코드는 소스 또는 영역으로 사용할 비트맵을 지정할 수 있다.[31] |
도면 레코드
드로잉 레코드는 그래픽 출력을 생성한다.
이름 | 설명 |
---|---|
META_ARC | 타원 호를 그린다.[32] |
META_CHORD | 화음을 그리다.[33] |
메타_엘리페 | 타원 호를 그린다.[34] |
메타_EXTFLUDFLUDFLUDFill | 브러시로 영역을 채운다.[35] |
Meta_EXTTEXTOUT | 재생 장치 컨텍스트의 글꼴, 배경색 및 텍스트 색상으로 텍스트를 그리십시오.[36] |
메타_필레지온 | 지정된 브러시로 영역을 채운다.[37] |
메타_FLUDFEL | 브러시로 영역을 채운다.[38] |
메타_프레임레지온 | 브러시를 사용하여 페이지 영역 주위에 테두리를 그린다.[39] |
Meta_Invertregion | 반전된 색상으로 그래픽 영역을 그린다.[40] |
메타_리네토 | 재생 장치 컨텍스트에 정의된 그리기 위치에서 지정된 지점으로 반쯤 열린 선을 그린다.[41] |
메타_페인트레지온 | 재생 장치 컨텍스트에 지정된 현재 브러시로 영역을 그리십시오.[42] |
메타_PATBLT | 재생 장치 컨텍스트에 지정된 현재 브러시로 영역을 도색한 다음 래스터 작업을 사용하여 브러시 색상과 표면 색상을 조합하십시오.[43] |
메타_PIE | 타원과 두 개의 방사형의 교차점에 의해 둘러싸인 파이 모양의 쐐기를 그리십시오. 선은 재생 장치 컨텍스트를 통해 펜 세트를 통해 설정되며, 파이 모양으로 경계된 영역은 재생 장치 컨텍스트의 현재 브러시에 의해 채워진다.[44] |
메타_POLYINE | 지정된 배열의 점을 연결하여 일련의 선 분열을 그린다.[45] |
메타_폴리곤 | 직선으로 연결된 두 개 이상의 정점으로 구성된 다각형을 그린다.폴리곤은 펜을 사용하여 윤곽을 나타내며 재생 장치 컨텍스트에 정의된 브러시와 폴리곤 채우기 모드를 사용하여 채운다.[46] |
메타_폴리폴리곤 | 겹칠 수 있는 닫힌 다각형 시리즈를 그린다.각 폴리곤은 펜을 사용하여 윤곽을 나타내고 재생 장치 컨텍스트에 정의된 브러시와 폴리곤 채우기 모드를 사용하여 채운다.[47] |
META_RORDangle | 직사각형을 그린다. 직사각형은 펜을 사용하여 윤곽을 나타내고 브러시를 사용하여 채우며 재생 장치 컨텍스트에 정의된 브러시를 사용하여 채운다.[48] |
META_RONGRET | 모서리가 둥근 직사각형을 그린다.직사각형은 펜을 사용하여 윤곽을 나타내고 브러시를 사용하여 채우며 재생 장치 컨텍스트에 정의된 브러시를 사용하여 채운다.[49] |
Meta_SETPIXEL | 지정된 좌표의 픽셀을 지정된 색상으로 설정한다.[50] |
META_TEXTOUT | 재생 장치 컨텍스트에 정의된 글꼴, 배경색 및 텍스트 색상을 사용하여 지정된 위치에 문자열을 출력한다.[51] |
객체 레코드
객체 레코드는 그래픽 객체를 생성하고 관리한다.WMF 파일에는 그래픽 개체와 구조 개체의 두 가지 범주가 있다.구조 객체는 WMF에서 명시적으로 생성되거나 삭제되는 것이 아니라 복잡한 구조 대신 생성된다.예를 들어 BitmapCoreHeader에는 장치 독립적인 비트맵의 치수 및 색상 형식에 대한 정보가 포함되어 있으며,[52] 비트맵은 장치 자체의 일부임독립 비트맵 개체.[53]그러나 그래픽 객체는 그래픽 출력에 대한 파라미터를 지정하고 WMF 재생 중에 재생 장치 컨텍스트를 설정한다.[54]
그래픽 오브젝트는 브러시(그래픽의 한 영역을 그리는 방법을 정의하는 브러시의 스타일, 색상 및 패턴을 정의함), 글꼴(텍스트 표시 방법에 영향을 미치는 속성을 정의함), 팔레트(색상을 장치 독립적 값으로 지정함, 응용 프로그램에서 정의함), 펜(선 그래픽 속성을 지정함), 영역(화면)이 될 수 있다.h 쉐이프를 정의하는 선 및 곡선 세그먼트 지정).[54]
이름 | 설명 |
---|---|
메타_CREATEBRIBRINDirect | LogBrush(논리적 브러시)[55] 개체에서 브러시 개체 생성 |
메타_CREATEFONTINDirect | 글꼴 [56]개체에서 브러시 개체 만들기 |
메타_CREATEPALET | 팔레트 객체를 작성한다. |
메타_CREATHPATTROBRY[57] | LogBrush(논리적 브러시)[58] 개체에서 브러시 개체 생성 |
메타_CREATEPENDirect | 펜 객체 작성.[59] |
메타_CREATEREGION | 영역 객체를 작성한다.[60] |
META_DELETE OBject | 개체를 삭제하십시오.[61] |
메타_CREATEBRIBRINDirect | LogBrush(논리적 브러시)[62] 개체에서 브러시 개체 생성 |
메타_DIBCREATE 패턴브러시 | 디바이스에 독립적인 비트맵에서 [63]브러시 개체 만들기 |
Meta_SELECTCLIPREGion | 현재 클리핑 영역이 될 영역 개체를 지정하십시오.[64] |
메타_SELECTOBLE | META_SELECTPALET로 설정해야 하는 팔레트 객체를 제외한 모든 그래픽 객체에 대해 작동하는 재생 장치 컨텍스트의 현재 객체가 될 객체를 선택한다.[65] |
메타_SELECTPLAET | 재생 장치 컨텍스트에 대한 논리 팔레트를 선택하십시오.[66] |
주 기록
상태 레코드는 재생 장치 컨텍스트의 그래픽 속성을 관리한다.[67]
이름 | 설명 |
---|---|
메타_애니마테팔레트 | 지정된 팔레트 객체를 사용하여 재생 장치 컨텍스트에 정의된 논리 팔레트의 항목을 다시 정의하십시오.[68] |
메타_EXCLIPRET | 재생 장치 컨텍스트에 정의된 클리핑 영역을 지정된 사각형을 뺀 기존 클리핑 영역으로 설정하십시오.[69] |
메타_인터섹트클립라이트 | 재생 장치 컨텍스트에 정의된 클리핑 영역을 기존 클리핑 영역과 지정된 사각형의 교차점으로 설정한다.[70] |
메타_무브토 | 재생 장치 컨텍스트의 출력 위치를 지정된 지점으로 설정한다.[71] |
메타_오프셋클립RGN | 재생 장치 컨텍스트에 정의된 클리핑 영역을 지정된 오프셋으로 이동하십시오.[72] |
Meta_OffsetVIEWPORTORG | 지정된 수평 및 수직 오프셋을 기준으로 재생 장치 컨텍스트에서 뷰포트 원점을 이동하십시오.[73] |
Meta_OffsetWINDOWORG | 지정된 수평 및 수직 오프셋을 사용하여 재생 장치 컨텍스트에서 출력 창 원점을 이동하십시오.[74] |
메타_리얼리제팔레트 | 재생 장치 [75]컨텍스트에 정의된 논리 팔레트에서 시스템 팔레트로 항목 매핑 |
Meta_RESIZEPALET | 재생 장치 컨텍스트에 정의된 논리 팔레트의 크기를 다시 정의하십시오.[76] |
META_RESTORC | 이전에 저장한 장치 컨텍스트에서 재생 장치 컨텍스트를 복원하십시오.[77] |
META_SAVEDC | 나중에 검색할 수 있도록 재생 장치 컨텍스트를 저장하십시오.[78] |
메타_스케일뷰포트EXT | 지정된 승수 및 구분자에 의해 형성된 비율을 사용하여 재생 장치 컨텍스트에 정의된 뷰포트의 수평 및 수직 범위를 스케일링한다.[79] |
메타_스케일윈도익스텍트 | 지정된 승수 및 디비시에 의해 형성된 비율을 사용하여 재생 장치 컨텍스트에 정의된 출력 창의 수평 및 수직 범위를 스케일링한다.[80] |
Meta_SETBK COLOR | 재생 장치 컨텍스트의 배경색을 지정된 색으로 설정한다.[81] |
메타_SETBKMODE | 재생 장치 컨텍스트에서 배경 혼합 모드를 설정하십시오.[82] |
메타_SETLAYOUT | 재생 장치 컨텍스트에서 레이아웃 방향을 정의하십시오.[83] |
메타_SETMAPMODE | 재생 장치 컨텍스트에서 매핑 모드를 정의하십시오.[84] |
Meta_SETAPPERFLAGS | 글꼴 매퍼가 논리 글꼴을 실제 글꼴에 매핑할 때 사용하는 알고리즘을 정의하십시오.[85] |
메타_세트팔렌트리 | 재생 장치 컨텍스트에 정의된 논리 팔레트의 항목 범위에서 RGB 색상 값을 정의하십시오.[86] |
Meta_SETPOLYFUMODE | 다각형을 채우는 그래픽 작업에 대해 재생 장치 컨텍스트에서 다각형 채우기 모드를 정의하십시오.[87] |
Meta_SETRELabs | 미사용 기록.[88] |
메타_SETROP2 | 재생 장치 컨텍스트에서 전경 래스터 작동 혼합 모드를 정의한다.[89] |
메타_SETSTRETHBLT 모드 | 재생 장치 컨텍스트에서 비트맵 스트레칭 모드를 정의하십시오.[90] |
메타_SETTEXTALING | 재생 장치 컨텍스트에서 텍스트 정렬 값을 정의하십시오.[91] |
메타_SETTEXTCHAREXTRA | 재생 장치 컨텍스트에서 텍스트 맞춤을 위한 문자 간 간격을 정의한다.[92] |
Meta_SETTEXT COLOR | 재생 장치 컨텍스트에서 텍스트 전경색을 정의한다.[93] |
Meta_SETTEXT Justification | 정당화된 텍스트 문자열에서 문자를 구분하기 위해 추가할 공간의 크기를 정의하십시오.[94] |
Meta_SETVIEWPORTEXT | 재생 장치 컨텍스트에서 뷰포트의 수평 및 수직 범위를 정의하십시오.[95] |
메타_SETVIEWPORTORG | 재생 장치 컨텍스트에서 뷰포트 원점을 정의하십시오.[96] |
메타_SETWINDOWNEXT | 재생 장치 컨텍스트에서 출력 창의 수평 및 수직 범위를 정의한다.[97] |
메타_SETWINDOWORG | 재생 장치 컨텍스트에서 출력 창 원점을 정의하십시오.[98] |
탈출 기록
탈출 기록은 WMF 기록 유형으로 달리 정의되지 않은 기록을 통해 메타파일 기능을 확장하는 수단이다.각 탈출 기록에는 기록 기능, 탈출 기능 및 잠재적으로 탈출 데이터가 포함되어 있다.
다음 탈출 기록은 WMF 파일을 구성한다.
이름 | 설명 |
---|---|
ARBECDOC | 현재 문서 처리를 중지한다.[99] |
BEGIN_PATH | 길을 열어준다.[100] |
Check_JPEG Format | 지정된 JPEG 영상을 처리할 수 있는지 여부를 결정한다.[101] |
Check_PNG Format | 지정된 PNG 이미지를 처리할 수 있는지 여부를 결정한다.[102] |
CLIP_TO_PATH | 현재 PostScript 클리핑 경로에 기능 적용.[103] |
닫기_채널 | ENDDOC와 동일하다.[104] |
다운로드_면 | 출력 장치의 글꼴 면 이름을 설정하십시오.[105] |
다운로드_머리글 | PostScript 절차의 다운로드 세트.[106] |
그리기_PATNATTREMENT | 정의된 패턴으로 직사각형을 그린다.[107] |
캡슐화_포스트스크립트 | 임의 캡슐화된 PostScript(EPS)[108] 데이터를 프린터 드라이버로 직접 전송 |
END_PATH | 길이 끝난다.[109] |
ENDOC | 프린터 드라이버에 새 인쇄 작업이 종료됨을 알린다.[110] |
EPS_PRINTING | EPS 인쇄의 시작과 끝을 표시한다.[111] |
EXTTEXTOUT | 현재 선택한 글꼴, 배경색 및 텍스트 색상을 사용하여 텍스트를 그린다.[112] |
GET_COLORTABLE | 프린터 드라이버에서 색상 테이블 값을 가져오십시오.[113] |
GET_DEVICEUNITS | 출력 장치에 현재 구성된 장치 단위를 가져오십시오.[114] |
GET_EXTED_텍스트 메트릭스 | 프린터 드라이버에 현재 구성된 확장 텍스트 메트릭을 가져오십시오.[115] |
GET_FACNAME | 출력 장치에 현재 구성된 글꼴 면 이름을 가져오십시오.[116] |
GET_PAERKERNTABLE | 출력 장치에 현재 정의된 글꼴 연석 테이블을 가져오십시오.[117] |
GET_PHYSPageSize | 출력 장치에서 현재 선택한 실제 페이지 크기를 검색하십시오.[118] |
GET_PrintingOFFSET | 실제 인쇄 또는 도면이 시작되는 실제 페이지의 왼쪽 상단 모서리에서 오프셋을 검색한다.[119] |
GET_PS_FEATURESSET | 출력 장치에서 지원되는 PostScript 기능에 대한 정보를 프린터 드라이버에 쿼리하십시오.[120] |
GET_SCALINGFACTOR | 프린터의 x축과 y축에 대한 스케일링 계수를 검색한다.[121] |
META_ESCAPE_ENUXED_메타파일 | WMF 메타파일 내에 EMF 메타파일 내장 시 사용.[122] |
메타파일_드라이버 | 프린터 드라이버에서 출력 장치의 메타파일에 대한 지원을 쿼리한다.[123] |
뉴프레임 | 프린터 드라이버에 응용 프로그램이 페이지에 쓰기를 마쳤음을 알린다.[124] |
넥스트밴드 | 응용 프로그램이 밴드에 쓰기를 마쳤음을 프린터 드라이버에 알린다.[125] |
패스스루 | 임의의 데이터를 프린터 드라이버로 전달한다.[126] |
포스트스크립트_DATA | 임의의 PostScript 데이터를 출력 장치로 전송.[127] |
POSTSCRIPT_IDENTIFY | 프린터 드라이버를 PostScript 중심 또는 GDI 중심 모드로 설정하십시오.[128] |
POSTSCRIPT_IGNORE | 출력 장치에 [129]PostScript 데이터를 무시하도록 알림 |
포스트스크립트_주입 | Raw data 블록을 PostScript 스트림에 삽입한다.[130] |
POSSCRIPT_PASSstrhrough | 임의 데이터를 프린터 드라이버로 직접 전송하며, PostScript 모드에 있을 때만 이 데이터를 처리할 것으로 예상된다.[131] |
개방_채널 | STARTDOC와 동일하게 작동하며, NULL 문서와 출력 파일 이름 및 원시 모드의 데이터를 사용한다.[132] |
쿼리_DIBSupport | 출력 장치의 DIB 지원에 대해 프린터 드라이버를 쿼리하십시오.[133] |
쿼리_ESCSupport | 출력 장치에서 특정 WMF 이스케이프 기능이 지원되는지 여부를 확인하기 위해 프린터 드라이버를 쿼리한다.[134] |
SET_COLORTABLE | 색상표 값을 설정한다.[135] |
SET_COPYCOUNT | 사본 수를 설정한다.[136] |
SET_LINECAP | 출력 장치에 대한 도면에 사용할 라인 끝내기 모드를 지정하십시오.[137] |
SET_LINEJOIN | 출력 장치에 대한 도면에 사용할 라인 결합 모드를 지정한다.[138] |
SET_MITERLIMIT | 출력 장치에 대한 도면에 사용할 miter 조인의 길이에 대한 한계를 설정한다.[139] |
SPCLPASSthrough2 | 문서에 개인 절차 및 기타 임의 데이터를 포함시킬 수 있도록 한다.[140] |
STARTDOC | 프린터 드라이버에 새 인쇄 작업이 시작됨을 알린다.[141] |
중단 절차 코드를 기록 자체 내에 저장하는 Abort 이스케이프 레코드 주변 탈출 기록에서 큰 취약성이 발견됐다.이는 Windows 시스템에 영향을 미쳤다(CVE- 참조).2005-4560) 및 와인 프로젝트(CVE-2006-0106 참조).세쿠니아에 따르면 "이 취약성은 특수하게 조작된 SETABORTPROC 'Escape' 레코드가 포함된 Windows Metafile 파일('wmf')의 처리 오류로 인해 발생한다.이러한 레코드는 WMF 파일의 렌더링이 실패할 때 임의의 사용자 정의 함수를 실행할 수 있게 해준다."[142]Windows 3.1 SDK 설명서에 따르면 SETABORTPROC 탈출은 WMF 취약성이 발견되기 훨씬 전인 Windows 3.1에서 폐기되고 동일한 이름의 기능으로 대체되었다.[143]그러나 폐기된 이스케이프 코드는 윈도우 3.0용으로 작성된(또는 최소한 역호환성) 16비트 프로그램과의 호환성을 위해 유지되었다.이러한 변경은 Microsoft가 Windows NT용 GDI의 32비트 재구성을 만들고 있을 때와 거의 동시에 일어났으며, 이러한 노력 중에 취약성이 발생했을 가능성이 높다.
스티브 깁슨이 마이크로소프트가 고의적으로 그들의 코드에 백도어를 구현했다고 비난한 후,[144][145] 마크 루시노비치는 반박을 제공했고, 다음과 같이 말했다.
...형식이 설계되었을 때는 달랐다.Windows 3.1에서 "대형" 메모리 모델 코드는 본질적으로 위치에 독립적이며 Windows는 패치되지 않았으므로 Windows와 애플리케이션 모두 애플리케이션 기능을 WMF 파일로 복사하여 나중에 실행 세션에서 동일한 애플리케이션에 의해 재생될 때 작동한다고 가정할 수 있다.어떤 경우든 개발자들이 중단 절차가 있는 온디스크 메타파일을 만드는 애플리케이션을 구상했다는 것은 분명하지 않다.또한 마이크로소프트의 스티븐 툴루즈가 스티브의 주장에 대한 마이크로소프트의 반박에서 지적했듯이, 1990년대 초의 보안 환경은 오늘날과 매우 달랐고 WMF 파일에 저장된 것을 포함한 모든 코드는 본질적으로 신뢰받았다.[146]
미국 Symantec Security Response의 Peter Ferrie도 깁슨에 동의하지 않았으며 다음과 같은 점에 주목했다.
깁슨은 SetAbortProc 핸들러를 실행하기 위한 스레드가 만들어졌다고 주장했다.사실 핸들러를 실행할 수 있는 스레드는 만들어지지 않는다 – 그것은 파서가 부르는 콜백이며, 파서는 콜백이 돌아올 때까지 기다려야 한다. 그렇지 않으면 (인쇄를 중단하기 위해) 기능의 전체 지점이 상실된다.깁슨은 자인(自人)에 의해 문서를 읽지 않았으며(사실 마이크로소프트의 웹 사이트에서 자유롭게 이용할 수 있지만 찾을 수 없다고 주장했으며, 기능 핸들러에게는 장치 컨텍스트가 제공되지 않는다고 주장했다.물론 기기 컨텍스트는 기능 핸들러에게 전달되는 두 가지 매개 변수 중 하나(위 참조)이며, 인쇄를 중단하기 위해 필요하다.마지막으로 깁슨은 제어 흐름이 윈도우로 돌아갈 수 없다고 주장했다.단순히 스택에 전달된 파라미터를 반환하고 폐기하는 기능의 문제일 뿐이다.레코드가 잘 형성되면 Windows는 이전과 같이 파일을 계속 구문 분석할 것이다...깁슨은 자신이 여러 가지 일을 추측하고 있었다는 것을 인정한다.불행히도 그는 어림짐작했다.이제 우리가 더 잘 알 것 같아.[147]
EMF
EMF 파일에는 가능한 세 가지 버전의 헤더가 있다.원본 헤더는 영상의 컨테이너일 뿐이고, 2차 및 3차 버전은 원본 헤더를 캡슐화하고, 픽셀 형식 레코드와 OpenGL 레코드를 지원하며, 3차 버전은 두 번째 헤더 확장자를 캡슐화하여 EMF 정확도와 EMF의 확장성을 높여 장치 거리 측정 기능을 추가한다.미터법을 사용하는 표면.[148]
각 EMF 헤더는 EMR_HEADER 레코드로 시작하고 메타파일 이미지가 기록된 장치의 관련 속성을 기록한다.원래 EMF 헤더에는 80바이트 헤더와 옵션 변수 길이 설명 문자열이 있다.[149]다른 메타파일에는 원래 헤더를 캡슐화하는 확장 필드가 있다. EmfMetafileHeaderExtension1
원본 EMF 헤더 바로 뒤에 삽입되는 레코드로서, 헤더 내에 픽셀 형식 설명자 및 설명자 객체에 대한 오프셋이 있는지 여부와 더불어, 메타파일 내에 OpenGL 레코드가 존재하는지 여부를 지정하는 필드다.[150]픽셀 형식 설명자는 도면 표면의 기능과 픽셀이 RGBA로 인코딩되는지 또는 색상으로 된 인덱스인지 여부를 지정한다.[151] EmfMetafileHeaderExtension2
다음에 바로 삽입되는 레코드EmfMetafileHeaderExtension1
기록하며, 마이크로미터 단위로 장치 표면을 측정하기 위한 X 및 Y 값이 있는 두 개의 필드를 포함한다.[152]
WMF 파일과 마찬가지로 레코드는 기능별로 분류할 수 있지만 EMF 파일에는 WMF 파일보다 레코드 유형이 더 많다.레코드는 컨트롤, 비트맵, 클리핑, 코멘트, 도면, 탈출, 객체 생성, 객체 조작, OpenGL, 경로 브래킷, 상태 및 변환 레코드로 분류할 수 있다.
EMF+
윈도 XP의 출시와 함께 향상된 메타파일 포맷 플러스 익스텐션(EMF+) 포맷이 도입되었다.EMF+는 WMF/EMF 스토어가 GDI에 전화를 거는 것과 같은 방식으로 GDI+ API에 대한 통화를 직렬화하는 방법을 제공한다.
압축된 Windows Metafile(WMZ)과 압축된 Windows Enhanced Metafile(EMZ)으로 알려진 Windows Metafiles의 압축 버전도 있는데,[153] 기본적으로 gzip 압축된 WMF와 EMF 파일이다.
구현
WMF 형식은 이미지를 복원하기 위해 Windows GDI 계층에 의해 실행되도록 설계되었지만, WMF 이진 파일이 이 이미지를 구성하는 GDI 그래픽 원시성의 정의를 포함하고 있기 때문에 WMF 이진 파일을 렌더링하거나 다른 그래픽 형식으로 변환하는 대체 라이브러리를 설계할 수 있다.
참고 항목
참조
- ^ Windows Metafile Format (PDF), Microsoft, p. 16
- ^ "[MS-WMF]: Windows Metafile Format". MSDN. 2015-06-30. Retrieved 2015-07-26.
- ^ [MS-EMF]: Enhanced Metafile Format (PDF), Microsoft, p. 17
- ^ [MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions (PDF), Microsoft, p. 19
- ^ Microsoft Windows 3.1 Programmers Reference, Volume 4 Resources, Microsoft Press 1992, ISBN 1-55615-494-1, 3장 21-45
- ^ Caolan McNamara. "Window Metafile (wmf) Reference". Retrieved 2008-06-01.
These opcodes are unimplemented, for the reason that i dont know what they are, no known documentation
- ^ "[MS-WMF]: Windows Metafile Format Specification". Retrieved 2008-06-01.
- ^ "Microsoft Open Specification Promise". Microsoft. Retrieved 2008-06-01.
- ^ a b Enhanced Metafiles in Win32, Microsoft Developer Network Technology Group, June 10, 1993
- ^ a b Leonard, Sean (September 2016). "Windows Metafiles". Windows Image Media Types. IETF. p. 1. doi:10.17487/RFC7903. ISSN 2070-1721. RFC 7903. Retrieved February 8, 2020.
- ^ "EMF", FileFormat, Aspose Pty Ltd, 11 October 2019, retrieved 2020-01-20
- ^ Petzold, Charles (October 11, 1994), "NT Metafiles and GDI Objects", PC Magazine, pp. 343–347
- ^ Polyakov, Alex; Brusentsev, Vitaly (2005). Graphics Programming with GDI+ & DirectX. A-List Publishing. p. 68. ISBN 1-931769-39-7.
- ^ "3.1.4.1 WMF Object Table", [MS-WMF]: Enhanced Metafile Format (PDF), Microsoft, p. 187
- ^ "3.1.1.1 EMF Object Table", [MS-EMF]: Windows Metafile Format Specification (PDF), Microsoft, p. 212-214
- ^ [MS-EMFPLUS]: Enhanced Metafile Format Plus Extensions (PDF), Microsoft, pp. 204–205
- ^ "Figure 1: Structures of original and placeable Windows metafiles", Windows Metafile Format (PDF), Microsoft, p. 17
- ^ Q66949: INFO: Windows Metafile Functions & Aldus Placeable Metafiles, Microsoft – via KnowledgeBase Archive: An Archive of Early Microsoft KnowledgeBase
- ^ a b c "1.3.1 Metafile Structure", Windows Metafile Format (PDF), Microsoft, p. 17
- ^ "2.3.2.3 META_PLACEABLE Record", Windows Metafile Format (PDF), Microsoft, p. 115
- ^ Windows Metafile Format (PDF), Microsoft, p. 55,
<55> Section 2.3.2.3: Windows NT 3.1, Windows NT 3.5, Windows NT 3.51, and Windows 95: This feature is not supported.
- ^ "2.3.2.2 MTF_HEADERRECORD Record", Windows Metafile Format (PDF), Microsoft, p. 114
- ^ "2.3.2.2 MTF_HEADERRECORD Record", Windows Metafile Format (PDF), Microsoft, p. 114
- ^ "2.3.2.1 MTF_EOF Record", Windows Metafile Format (PDF), Microsoft, p. 114
- ^ "1.1 Glossary", [MS-WMF]: Windows Metafile Format Specification (PDF), Microsoft, p. 13, retrieved 2020-01-24
- ^ "2.3.1.1 META_BITBLT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 101–103, retrieved 2020-01-24
- ^ "2.3.1.2 META_DIBBITBLT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), Microsoft, p. 103-106, retrieved 2020-01-24
- ^ "2.3.1.3 META_DIBSTRETCHBITBLT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), Microsoft, p. 106-108, retrieved 2020-01-24
- ^ "2.3.1.4 META_SETDIBTODEV Record", [MS-WMF]: Windows Metafile Format Specification (PDF), Microsoft, p. 108-109, retrieved 2020-01-24
- ^ "2.3.1.5 META_STRETCHBLT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), Microsoft, p. 109-110, retrieved 2020-01-24
- ^ "2.3.1.6 META_STRETCHDIB Record", [MS-WMF]: Windows Metafile Format Specification (PDF), Microsoft, p. 103-106, retrieved 2020-01-24
- ^ "2.3.3.1 META_ARC Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 101–103, retrieved 2020-01-24
- ^ "2.3.3.2 META_CHORD Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 117–118, retrieved 2020-01-24
- ^ "2.3.3.3 META_ELLIPSE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 119, retrieved 2020-01-24
- ^ "2.3.3.4 META_EXTFLOODFILL Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 119–120, retrieved 2020-01-24
- ^ "2.3.3.5 META_EXTTEXTOUT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 119–120, retrieved 2020-01-24
- ^ "2.3.3.6 META_FILLREGION Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 121, retrieved 2020-01-24
- ^ "2.3.3.7 META_FLOODFILL Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 119–120, retrieved 2020-01-24
- ^ "2.3.3.8 META_FRAMEREGION Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 122–123, retrieved 2020-01-24
- ^ "2.3.3.9 META_INVERTREGION Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 123, retrieved 2020-01-24
- ^ "2.3.3.10 META_LINETO Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 123–124, retrieved 2020-01-24
- ^ "2.3.3.11 META_PAINTREGION Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 124, retrieved 2020-01-24
- ^ "2.3.3.12 META_PATBLT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 124–125, retrieved 2020-01-24
- ^ "2.3.3.13 META_PIE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 125–126, retrieved 2020-01-24
- ^ "2.3.3.14 META_POLYLINE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 126, retrieved 2020-01-24
- ^ "2.3.3.15 META_POLYGON Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 127, retrieved 2020-01-24
- ^ "2.3.3.16 META_POLYPOLYGON Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 127–128, retrieved 2020-01-24
- ^ "2.3.3.17 META_RECTANGLE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 127–128, retrieved 2020-01-24
- ^ "2.3.3.18 META_ROUNDRECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 128–129, retrieved 2020-01-24
- ^ "2.3.3.19 META_SETPIXEL Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 129–130, retrieved 2020-01-24
- ^ "2.3.3.20 META_TEXTOUT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 130, retrieved 2020-01-24
- ^ "2.2.2.2. BitmapCoreHeader Object", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 85, retrieved 2020-01-25
- ^ "2.2.2.9. DeviceIndependentBitmap Object", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 91, retrieved 2020-01-25
- ^ a b "2.2.1. Graphics Objects", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 79, retrieved 2020-01-25
- ^ "2.3.4.1 META_CREATEBRUSHINDIRECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 131–132, retrieved 2020-01-25
- ^ "2.3.4.2 META_CREATEFONTINDIRECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 132, retrieved 2020-01-25
- ^ "2.3.4.4 META_CREATEPATTERNBRUSH Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 133–135, retrieved 2020-01-25
- ^ "2.3.4.3 META_CREATEPALETTE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 132–133, retrieved 2020-01-25
- ^ "2.3.4.5 META_CREATEPENINDIRECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 134–135, retrieved 2020-01-25
- ^ "2.3.4.6 META_CREATEREGION Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 135, retrieved 2020-01-25
- ^ "2.3.4.7 META_DELETEOBJECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 135, retrieved 2020-01-25
- ^ "2.3.4.8 META_CREATEBRUSHINDIRECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 135–136, retrieved 2020-01-25
- ^ "2.3.4.9 META_DIBCREATEPATTERNBRUSH Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 136–137, retrieved 2020-01-25
- ^ "2.3.4.10 META_SELECTCLIPREGION Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 137, retrieved 2020-01-25
- ^ "2.3.4.11 META_SELECTOBJECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 137–138, retrieved 2020-01-25
- ^ "2.3.4.11 META_SELECTPLAETTE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 139, retrieved 2020-01-25
- ^ "2.3.5 State Record Types", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 138, retrieved 2020-01-28
- ^ "2.3.5.1 META_ANIMATEPALETTE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 140, retrieved 2020-01-28
- ^ "2.3.5.2 META_EXCLUDECLIPRECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 140–141, retrieved 2020-01-28
- ^ "2.3.5.3 META_INTERSECTCLIPRECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 141–142, retrieved 2020-01-28
- ^ "2.3.5.1 META_MOVETO Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 142, retrieved 2020-01-28
- ^ "2.3.5.4 META_OFFSETCLIPRGN Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 142–143, retrieved 2020-01-28
- ^ "2.3.5.5 META_OFFSETVIEWPORTORG Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 143, retrieved 2020-01-28
- ^ "2.3.5.6 META_OFFSETWINDOWORG Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 131–132, retrieved 2020-01-28
- ^ "2.3.5.7 META_REALIZEPALETTE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 143–144, retrieved 2020-01-28
- ^ "2.3.5.8 META_RESIZEPALETTE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 144, retrieved 2020-01-28
- ^ "2.3.5.9 META_RESTOREDC Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 145, retrieved 2020-01-28
- ^ "2.3.5.10 META_SAVEDC Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 145, retrieved 2020-01-28
- ^ "2.3.5.11 META_SCALEVIEWPORTEXT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 145–146, retrieved 2020-01-28
- ^ "2.3.5.12 META_SCALEWINDOWEXT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 146–147, retrieved 2020-01-28
- ^ "2.3.5.13 META_SETBKCOLOR Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 147, retrieved 2020-01-28
- ^ "2.3.5.14 META_SETBKMODE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 147–148, retrieved 2020-01-28
- ^ "2.3.5.15 META_SETLAYOUT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 148, retrieved 2020-01-28
- ^ "2.3.5.16 META_SETMAPMODE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 148–149, retrieved 2020-01-28
- ^ "2.3.5.17 META_SETMAPPERFLAGS Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 131–132, retrieved 2020-01-28
- ^ "2.3.5.18 META_ANIMATEPALETTE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 149, retrieved 2020-01-28
- ^ "2.3.5.19 META_SETPALENTRIES Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 149–150, retrieved 2020-01-28
- ^ "2.3.5.20 META_SETRELABS Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 150, retrieved 2020-01-28
- ^ "2.3.5.21 META_SETROP2 Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 151, retrieved 2020-01-28
- ^ "2.3.5.1 META_SETSTRETCHBLTMODE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 151–152, retrieved 2020-01-28
- ^ "2.3.5.22 META_SETTEXTALIGN Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 152, retrieved 2020-01-28
- ^ "2.3.5.1 META_SETTEXTCHAREXTRA Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 152–153, retrieved 2020-01-28
- ^ "2.3.5.23 META_SETTEXTCOLOR Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 153, retrieved 2020-01-28
- ^ "2.3.5.24 META_SETTEXTJUSTIFICATION Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 153–154, retrieved 2020-01-28
- ^ "2.3.5.25 META_SETVIEWPORTEXT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 154, retrieved 2020-01-28
- ^ "2.3.5.26 META_SETVIEWPORTORG Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 154–155, retrieved 2020-01-28
- ^ "2.3.5.27 META_SETWINDOWEXT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 155, retrieved 2020-01-28
- ^ "2.3.5.28 META_SETWINDOWORG Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 155, retrieved 2020-01-28
- ^ "2.3.6.2. ABORTDOC Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 158–159, retrieved 2020-01-28
- ^ "2.3.6.3. BEGIN_PATH Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 159, retrieved 2020-01-28
- ^ "2.3.6.4. CHECK_JPEGFORMAT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 159–160, retrieved 2020-01-28
- ^ "2.3.6.5. CHECK_PNGFORMAT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 160, retrieved 2020-01-28
- ^ "2.3.6.6. CLIP_TO_PATH Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 160, retrieved 2020-01-28
- ^ "2.3.6.7. CLOSE_CHANNEL Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 162, retrieved 2020-01-28
- ^ "2.3.6.8. DOWNLOAD_FACE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 162–163, retrieved 2020-01-28
- ^ "2.3.6.9. DOWNLOAD_HEADER Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 158–159, retrieved 2020-01-28
- ^ "2.3.6.10. DRAW_PATTERNRECT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 163–164, retrieved 2020-01-28
- ^ "2.3.6.11. ENCAPSULATED_POSTSCRIPT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 164, retrieved 2020-01-28
- ^ "2.3.6.12. END_PATH Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 164–165, retrieved 2020-01-28
- ^ "2.3.6.13. ENDDOC Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 165, retrieved 2020-01-28
- ^ "2.3.6.14. EPS_PRINTING Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 165–166, retrieved 2020-01-28
- ^ "2.3.6.15. EXTTEXTOUT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 166–167, retrieved 2020-01-28
- ^ "2.3.6.16. GET_COLORTABLE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 167–168, retrieved 2020-01-28
- ^ "2.3.6.17. GET_DEVICEUNITS Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 168, retrieved 2020-01-28
- ^ "2.3.6.18. GET_EXTENDED_TEXTMETRICS Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 168–169, retrieved 2020-01-28
- ^ "2.3.6.19. GET_FACENAME Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 169, retrieved 2020-01-28
- ^ "2.3.6.20. GET_PAIRKERNTABLE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 169–170, retrieved 2020-01-28
- ^ "2.3.6.21. GET_PHYSPAGESIZE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 170, retrieved 2020-01-28
- ^ "2.3.6.22. GET_PRINTINGOFFSET Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 170–171, retrieved 2020-01-28
- ^ "2.3.6.23. GET_PS_FEATURESETTING Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 171, retrieved 2020-01-28
- ^ "2.3.6.24. GET_SCALINGFACTOR Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 171–172, retrieved 2020-01-28
- ^ "2.3.6.25. META_ESCAPE_ENHANCED_METAFILE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 172–173, retrieved 2020-01-28
- ^ "2.3.6.26. METAFILE_DRIVER Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 173–174, retrieved 2020-01-28
- ^ "2.3.6.27. NEWFRAME Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 174–175, retrieved 2020-01-28
- ^ "2.3.6.28. NEXTBAND Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 174–175, retrieved 2020-01-28
- ^ "2.3.6.29. PASSTHROUGH Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 175, retrieved 2020-01-28
- ^ "2.3.6.30. POSTSCRIPT_DATA Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 176, retrieved 2020-01-28
- ^ "2.3.6.31. POSTSCRIPT_IDENTIFY Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 176–177, retrieved 2020-01-28
- ^ "2.3.6.32. POSTSCRIPT_IGNORE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 177, retrieved 2020-01-28
- ^ "2.3.6.33. POSTSCRIPT_INJECTION Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 177–178, retrieved 2020-01-28
- ^ "2.3.6.34. POSTSCRIPT_PASSTHROUGH Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 178, retrieved 2020-01-28
- ^ "2.3.6.35. OPEN_CHANNEL Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 179, retrieved 2020-01-28
- ^ "2.3.6.36. QUERY_DIBSUPPORT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 179–180, retrieved 2020-01-28
- ^ "2.3.6.37. QUERY_ESCSUPPORT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 180, retrieved 2020-01-28
- ^ "2.3.6.38. SET_COLORTABLE Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 180–181, retrieved 2020-01-28
- ^ "2.3.6.39. SET_COPYCOUNT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 181, retrieved 2020-01-28
- ^ "2.3.6.40. SET_LINECAP Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 181–182, retrieved 2020-01-28
- ^ "2.3.6.41. SET_LINEJOIN Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 182–183, retrieved 2020-01-28
- ^ "2.3.6.42. SET_MITERLIMIT Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 183, retrieved 2020-01-28
- ^ "2.3.6.43. SPCLPASSTHROUGH2 Record", [MS-WMF]: Windows Metafile Format Specification (PDF), pp. 183–184, retrieved 2020-01-28
- ^ "2.3.6.44. STARTDOC Record", [MS-WMF]: Windows Metafile Format Specification (PDF), p. 184, retrieved 2020-01-28
- ^ "Microsoft Windows WMF "SETABORTPROC" Arbitrary Code Execution". Secunia. Secunia Advisory: SA18255. Archived from the original on January 2, 2006.
- ^ Pscript-Supported Escapes, Microsoft, retrieved 2020-01-28
- ^ "The Windows MetaFile Backdoor?". GRC Security Now! (Podcast). Gibson Research Corporation. January 12, 2006. Retrieved 2020-01-28.
- ^ Gibson, Steve (January 12, 2006), "Re: You won't want to miss tonight's Security Now!, #22", grc.news.feedback, retrieved 2020-01-28
- ^ Russinovich, Mark (January 18, 2006), "Inside the WMF Backdoor", TechNet, Microsoft – via Microsoft Tech Community
- ^ Ferrie, Peter (February 2, 2006), Inside the Windows Meta File Format (PDF), Virus Bulletin, retrieved 2020-01-24 – via Symantec
- ^ "1.3.1. Metafile Structure", [MS-EMF]: Enhanced Metafile Format (PDF), Microsoft, pp. 17–18
- ^ "2.3.4.2.1 EmfMetafileHeader Record", [MS-EMF]: Enhanced Metafile Format (PDF), Microsoft, p. 120
- ^ "2.2.10 HeaderExtension1 Object", [MS-EMF]: Enhanced Metafile Format (PDF), Microsoft, pp. 57–58
- ^ "2.2.22 PixelFormatDescriptor Object", [MS-EMF]: Enhanced Metafile Format (PDF), Microsoft, pp. 68–71
- ^ "2.3.4.2.3 EmfMetafileHeaderExtension2 Record", [MS-EMF]: Enhanced Metafile Format (PDF), Microsoft, pp. 122–124
- ^ "You receive a "This file is an unsupported graphic format" error message when you try to insert a picture into a PowerPoint for Mac presentation". Microsoft. Archived from the original on 2014-04-19. Retrieved 2014-04-19.