ñòàòüèGNU Free Documentation License ìàòåðèàëû âçÿòû èç Âèêèïåäèè Ñòàòüÿ áûëà èçìåíåíà. Îðèãèíàë ñòàòüè.

GDI

Ìàòåðèàë èç Ýíöèêëîïåäèè â ñâîáîäíîé ýíöèêëîïåäèè
Ïåðåéòè ê: íàâèãàöèÿ, ïîèñê

GDI (Graphics Device Interface, Graphical Device Interface) â îäèí èç òð¸õ îñíîâíûõ êîìïîíåíòîâ èëè «ïîäñèñòåì», âìåñòå ñ ÿäðîì è Windows API ñîñòàâëÿþùèõ ïîëüçîâàòåëüñêèé èíòåðôåéñ (îêîííûé ìåíåäæåð GDI) Microsoft Windows.

GDI â ýòî èíòåðôåéñ Windows äëÿ ïðåäñòàâëåíèÿ ãðàôè÷åñêèõ îáúåêòîâ è ïåðåäà÷è èõ íà óñòðîéñòâà îòîáðàæåíèÿ, òàêèå êàê ìîíèòîðû è ïðèíòåðû.

GDI îòâå÷àåò çà îòðèñîâêó ëèíèé è êðèâûõ, îòîáðàæåíèå øðèôòîâ è îáðàáîòêó ïàëèòðû. Îí íå îòâå÷àåò çà îòðèñîâêó îêîí, ìåíþ è ò. ï., ýòà çàäà÷à çàêðåïëåíà çà ïîëüçîâàòåëüñêîé ïîäñèñòåìîé, ðàñïîëàãàþùåéñÿ â user32.dll è îñíîâûâàþùåéñÿ íà GDI. GDI âûïîëíÿåò òå æå ôóíêöèè, ÷òî è QuickDraw â Mac OS.

Îäíî èç ïðåèìóùåñòâ èñïîëüçîâàíèÿ GDI âìåñòî ïðÿìîãî äîñòóïà ê îáîðóäîâàíèþ â ýòî óíèôèêàöèÿ ðàáîòû ñ ðàçëè÷íûìè óñòðîéñòâàìè. Èñïîëüçóÿ GDI, ìîæíî îäíèìè è òåìè æå ôóíêöèÿìè ðèñîâàòü íà ðàçíûõ óñòðîéñòâàõ, òàêèõ êàê ýêðàí èëè ïðèíòåð, ïîëó÷àÿ íà íèõ ïðàêòè÷åñêè îäèíàêîâûå èçîáðàæåíèÿ. Ýòà âîçìîæíîñòü ëåæèò â öåíòðå âñåõ WYSIWYG-ïðèëîæåíèé äëÿ Windows.

Ïðîñòûå èãðû, êîòîðûå íå òðåáóþò áûñòðîé ãðàôèêè, ìîãóò èñïîëüçîâàòü GDI. Îäíàêî GDI íå îáåñïå÷èâàåò êà÷åñòâåííîé àíèìàöèè, ïîñêîëüêó â í¸ì íåò âîçìîæíîñòè ñèíõðîíèçàöèè ñ êàäðîâûì áóôåðîì. Òàêæå, â GDI íåò ðàñòåðèçàöèè äëÿ îòðèñîâêè 3D-ãðàôèêè. Ñîâðåìåííûå èãðû èñïîëüçóþò DirectX èëè OpenGL, ÷òî äà¸ò ïðîãðàììèñòàì äîñòóï ê áîëüøåìó êîëè÷åñòâó àïïàðàòíûõ âîçìîæíîñòåé.

Ñîäåðæàíèå

[ïðàâèòü] Êðàòêîå îïèñàíèå

Äëÿ îïðåäåëåíèÿ àòðèáóòîâ òåêñòà è èçîáðàæåíèÿ, êîòîðûå âûâîäÿòñÿ íà ýêðàí èëè ïðèíòåð, èñïîëüçóåòñÿ ïðîãðàììíûé îáúåêò ïîä íàçâàíèåì «êîíòåêñò óñòðîéñòâà» (Device Context, DC). DC, êàê è áîëüøèíñòâî îáúåêòîâ GDI, èíêàïñóëèðóåò ïîäðîáíîñòè ðåàëèçàöèè è äàííûå â ñåáå è ê íèì íåëüçÿ ïîëó÷èòü ïðÿìîé äîñòóï.

Äëÿ ëþáîãî ðèñîâàíèÿ íóæåí îáúåêò HDC (õýíäë DC). Ïðè âûâîäå íà ïðèíòåð HDC ïîëó÷àåòñÿ âûçîâîì CreateDC, è íà íåì çîâóòñÿ ñïåöèàëüíûå ôóíêöèè äëÿ ïåðåõîäà íà íîâóþ ñòðàíèöó ïå÷àòàåìîãî äîêóìåíòà. Ïðè âûâîäå íà ýêðàí òàêæå ìîæíî èñïîëüçîâàòü CreateDC, íî ýòî ïðèâåäåò ê ðèñîâàíèþ ïîâåðõ âñåõ îêîí âíå èõ ãðàíèö, ïîòîìó îáû÷íî äëÿ ðèñîâàíèÿ íà ýêðàíå èñïîëüçóþòñÿ âûçîâû GetDC è BeginPaint, ïðèíàäëåæàùèå óæå íå GDI, à USER, è âîçâðàùàþùèå êîíòåêñò, ññûëàþùèéñÿ íà ðåãèîí îòñå÷åíèÿ îêíà.

Ôóíêöèîíàë:

  • âûâîä îäíèìè è òåìè æå âûçîâàìè íà ýêðàí, ïðèíòåð, «ýêðàí â ïàìÿòè» (äîñòóïíûé ïðèëîæåíèþ ïî óêàçàòåëþ è ñîçäàííûé èì bitmap â ïàìÿòè, òàêæå âîçìîæíî âûäåëåíèå bitmapîâ â ïàìÿòè âèäåîêàðòû â CreateCompatibleBitmap â è ðèñîâàíèå íà íèõ, òàêèå áèòîâûå êàðòû íå äîñòóïíû ïî óêàçàòåëþ, íî äàëüíåéøàÿ ïåðåðèñîâêà ñ íèõ íà ôèçè÷åñêèé ýêðàí ïðîèñõîäèò î÷åíü áûñòðî áåç íàãðóçêè ïðîöåññîðà è øèíû, è îñîáåííî áûñòðî â ñëó÷àå Remote Desktop).
  • âûâîä â ìåòàôàéë â çàïîìèíàíèå ïîñëåäîâàòåëüíîñòè êîìàíä ðèñîâàíèÿ â ôàéëå, ìîæíî ïðîèãðàòü çàíîâî, âåêòîðíûé ãðàôè÷åñêèé ôàéë .wmf åñòü èìåííî ýòîò ìåòàôàéë ñ íåáîëüøèì äîïîëíèòåëüíûì çàãîëîâêîì â íà÷àëå.
  • âûâîä òåêñòà ðàçëè÷íûìè øðèôòàìè, â ò. ÷. TrueType è OpenType, à òàêæå øðèôòàìè, âøèòûìè â ïðèíòåð (ïðè èçîáðàæåíèè äîêóìåíòà íà ýêðàíå èñïîëüçóåòñÿ áëèæàéøèé ïîõîæèé ïðîãðàììíî ðåàëèçîâàííûé øðèôò). Áóêâû âñåãäà çàëèâàþòñÿ îäíèì öâåòîì («òåêóùèé öâåò»), ïðîìåæóòêè ìåæäó íèìè ëèáî îñòàþòñÿ ïðîçðà÷íûìè, ëèáî æå çàëèâàþòñÿ äðóãèì öâåòîì («òåêóùèé öâåò ôîíà»). Íå ïîääåðæèâàåòñÿ ðàñïîëîæåíèå áóêâ ïî êðèâîé.
  • áîãàòûé íàáîð îïåðàöèé ñ bitmapàìè, âêëþ÷àÿ ìàñøòàáèðîâàíèå, àâòîìàòè÷åñêîå ïðåîáðàçîâàíèå èç ñòàíäàðòíûõ ôîðìàòîâ â òåêóùèé ôîðìàò ýêðàíà áåç óñèëèé ñî ñòîðîíû ïðîãðàììèñòà (StretchDIBits), ðèñîâàíèå íà bitmapàõ íåñêîëüêèõ ñòàíäàðòíûõ ôîðìàòîâ, íàõîäÿùèõñÿ â ïàìÿòè, è îãðîìíîå êîëè÷åñòâî ëîãè÷åñêèõ îïåðàöèé êîìáèíèðîâàíèÿ öâåòîâ 2 bitmapîâ â óæå èìåþùåãîñÿ íà óñòðîéñòâå íàçíà÷åíèÿ è âíîâü ðèñóåìîãî.
  • áîãàòûé íàáîð îïåðàöèé âåêòîðíîé ãðàôèêè (ïðèìåðíî òîò æå, ÷òî â PostScript, íî èñïîëüçóåòñÿ äðóãîé âèä ñïëàéíîâ). Ïðîâîäèìàÿ ëèíèÿ èìååò àòðèáóòû â òîëùèíó, ðèñóíîê ïóíêòèðà è öâåò (ñîáðàíû âìåñòå â ò. í. îáúåêòå PEN) è ñïîñîá ñãëàæèâàíèÿ óãëîâ ìíîãîóãîëüíèêîâ. Çàëèâêà ìîæåò áûòü îäíîöâåòíîé, îäíîé èç ñòàíäàðòíûõ øòðèõîâîê èëè æå bitmapîì 8 íà 8 (ýòè àòðèáóòû ñîáðàíû â «îáúåêòå BRUSH»). Â Windows NT òàêæå ïîÿâèëèñü ñïëàéíû Áåçüå.
  • âñå öâåòà â âûçîâàõ â âñåãäà â RGB, íåçàâèñèìî îò ñèñòåìû öâåòîâ òåêóùåãî óñòðîéñòâà. Èñêëþ÷åíèå â îòäåëüíûå ïèêñåëû âíóòðè bitmapîâ, êîòîðûå ìîãóò áûòü è â âèäå, îïðåäåëåííîì óñòðîéñòâîì.
  • ïîääåðæêà ðåãèîíîâ îòñå÷åíèÿ è âñåõ îñíîâíûõ ëîãè÷åñêèõ îïåðàöèé íàä íèìè. Êîîðäèíàòû â íèõ â 16-áèòíûå öåëûå (÷òî îãðàíè÷èâàëî ðàçìåð ýêðàíà Windows, äàæå äîâîëüíî ïîçäíèõ âåðñèé, äî 32K ïèêñåëîâ).
  • ïîääåðæêà ìàòðèöû ïîâîðîòîâ/ðàñòÿæåíèé â World Transform, íå ïîääåðæèâàåòñÿ äëÿ ðåãèîíîâ îòñå÷åíèÿ, òîëüêî äëÿ âåêòîðíîé ãðàôèêè.

[ïðàâèòü] Ðåàëèçàöèÿ

 Windows 9x è áîëåå ðàííèõ ðåàëèçîâàíà â 16-áèòíîé GDI.DLL, êîòîðàÿ â ñâîþ î÷åðåäü ïîäãðóæàåò âûïîëíåííûé â âèäå DLL äðàéâåð âèäåîêàðòû. Äðàéâåð âèäåîêàðòû ïåðâîíà÷àëüíî è áûë îáÿçàí ðåàëèçîâàòü âîîáùå âñå ðèñîâàíèå, â ò. ÷. ðèñîâàíèå íà bitmapàõ â ïàìÿòè â ôîðìàòå ýêðàíà. Ïîçæå ïîÿâèëàñü DIBENG.DLL, â êîòîðîé áûëî ðåàëèçîâàíî ðèñîâàíèå íà bitmapàõ ñòàíäàðòíûõ ôîðìàòîâ, äðàéâåð áûë îáÿçàí ïðîïóñêàòü â íåå âñå âûçîâû, êðîìå òåõ, äëÿ êîòîðûõ îí çàäåéñòâîâàë àïïàðàòíûé óñêîðèòåëü âèäåîêàðòû.

Äðàéâåð ïðèíòåðà ïîäãðóæàëñÿ òàêèì æå îáðàçîì è èìåë òîò æå èíòåðôåéñ «ñâåðõó», íî «ñíèçó» îí âìåñòî ðèñîâàíèÿ â ïàìÿòè/íà àïïàðàòóðå ãåíåðèðîâàë ïîñëåäîâàòåëüíîñòè êîìàíä ïðèíòåðà è îòñûëàë èõ â îáúåêò Job. Ýòè êîìàíäû êàê ïðàâèëî áûëè ëèáî áèíàðíûå è íå ÷èòàåìûå ÷åëîâåêîì, ëèáî PostScript.

 Windows NT GDI áûëà ïîëíîñòüþ ïåðåïèñàíà ñ íóëÿ çàíîâî, ïðè÷åì íà Ñè++ (ïî ñëóõàì, ó Microsoft òîãäà íå áûëî êîìïèëÿòîðà ýòîãî ÿçûêà è îíè èñïîëüçîâàëè cfront). API äëÿ ïðèëîæåíèé íå èçìåíèëñÿ (êðîìå äîáàâëåíèÿ êðèâûõ Áåçüå), äëÿ äðàéâåðîâ â îáåðòêè íà ÿçûêå Ñè âîêðóã ðåàëèçîâàííûõ íà Ñè++ âíóòðåííîñòåé (âðîäå BRUSHOBJ_pvGetRbrush).

Ñàìà GDI áûëà ðàçìåùåíà ñíà÷àëà â WINSRV.DLL â ïðîöåññå CSRSS.EXE, íà÷èíàÿ ñ NT4 â â win32k.sys. Äðàéâåðû çàãðóæàëèñü òóäà æå. DIBENG.DLL áûëà ïåðåïèñàíà çàíîâî è ïåðåíåñåíà òóäà æå êàê ñîâîêóïíîñòü âûçîâîâ EngXxx - EngTextOut è äðóãèå. Ëîãèêà âçàèìîäåéñòâèÿ äðàéâåðà-GDI-DIBENG îñòàëàñü ïðèìåðíî òà æå.

GDI32.DLL â ðåæèìå ïîëüçîâàòåëÿ ðåàëèçîâàíà êàê íàáîð ñïåöèàëüíûõ ñèñòåìíûõ âûçîâîâ, âåäóùèõ â win32k.sys (äî NT4 â êàê îáåðòêè âîêðóã âûçîâà CsrClientCallServer, ïîñûëàâøåãî ñîîáùåíèå â CSRSS.EXE).

 Windows Vista ïîÿâèëàñü ìîäåëü äðàéâåðîâ WDDM, â êîòîðîé áûëà îòìåíåíà âîçìîæíîñòü èñïîëüçîâàíèÿ àïïàðàòóðû äâóõìåðíîé ãðàôèêè. Ïðè èñïîëüçîâàíèè WDDM âñå GDI-ïðèëîæåíèÿ (ò. å. âñå îáû÷íûå ñèñòåìíûå ÷àñòè Windows UI â çàãîëîâêè è ðàìêè îêîí, ðàáî÷èé ñòîë, òàñêáàð è äðóãîå) èñïîëüçóþò GDI-äðàéâåð cdd.dll (Canonical Display Driver), êîòîðûé ðèñóåò íà íåêîòîðûõ bitmapàõ â ïàìÿòè, ñâîèõ äëÿ êàæäîãî îêíà (ñîäåðæèìîå îêíà ñòàëî çàïîìèíàòüñÿ â ïàìÿòè, äî òîãî Windows íèêîãäà òàê íå äåëàëà è âñåãäà ïåðåðèñîâûâàëà îêíà çàíîâî, êðîìå íåêèõ ñïåöèàëüíûõ îêîí ñ ôëàãîì CS_SAVEBITS). Èçîáðàæåíèÿ èç cdd.dll èçâëåêàþòñÿ ïðîöåññîì dwm.exe (Desktop Window Manager), êîòîðûé ÿâëÿåòñÿ Direct3D-ïðèëîæåíèåì è îòðèñîâûâàåò «êàðòèíêè îêîí» íà ôèçè÷åñêîì ýêðàíå ÷åðåç Direct3D.

Ñàì æå WDDM-äðàéâåð ïîääåðæèâàåò òîëüêî DirectDraw è Direct3D è íå èìååò îòíîøåíèÿ íè ê GDI, íè ê win32k.sys, ñîïðÿãàÿñü ñ ìîäóëåì dxgkrnl.sys â ÿäðå.

[ïðàâèòü] Êðèòèêà

Êðàéíå ñèëüíî êðèòèêóåòñÿ ïîäñèñòåìà ïå÷àòè Windows, îñîáåííî â ñëó÷àå ñðàâíåíèÿ åå ñ CUPS.

Ïðè÷èíû: áèíàðíûé ôîðìàò ïîòîêà çàäàíèÿ ïå÷àòè (â CUPS ýòî PostScript), è ðåàëèçàöèÿ îáðàáîòêè ýòîãî ïîòîêà â âèäå íåñêîëüêèõ DLL âíóòðè îäíîãî ïðîöåññà SPOOLSV.EXE (CUPS âìåñòî ýòîãî èñïîëüçóåò îáû÷íûé êîíâåéåð èç íåñêîëüêèõ ïðîöåññîâ âðîäå pstoraster | rastertoepson | parallel, êîòîðûé ìîæíî ïðè æåëàíèè çàïóñòèòü èç îáû÷íîãî UNIX shell). Òàêèì îáðàçîì, CUPS ïîääåðæèâàåò ðàçðàáîòêó ôèëüòðîâ çàäàíèé ïå÷àòè (íàïðèìåð, äëÿ ïëàòíûõ ïðèíòåðîâ â îòåëÿõ) äàæå íà ñêðèïòîâûõ ÿçûêàõ âðîäå Perl.

Îäíàêî òóò ðå÷ü ñêîðåå î êîìïîíåíòàõ, ëåæàùèõ íèæå GDI.

Îäíàêî CUPS èìååò ñåðü¸çíûå ïðîáëåìû ñ ïîääåðæêîé WinPrinterîâ âðîäå âñåõ äåøåâûõ ëàçåðíûõ ïðèíòåðîâ Hewlett-Packard. Òàê êàê îíè íå ïîääåðæèâàþò ñòàíäàðòíûé ôîðìàò PCL, äëÿ íèõ íàäî ñòàâèòü îãðîìíûå, ñëîæíûå â íàñòðîéêàõ è ïîñòðîåíèè ïàêåòû, òàêèå êàê HP OfficeJet (ïîðò "hpoj" âî FreeBSD). Ïðè ýòîì CUPS ïðåêðàñíî ïîääåðæèâàåò ñòðóéíûå ïðèíòåðû, äîðîãèå ìîäåëè ëàçåðíûõ ïðèíòåðîâ Hewlett-Packard è ïðèíòåðû PostScript.

[ïðàâèòü] Ïðèìåðíûå àíàëîãè

Íèæíèå óðîâíè òåõíîëîãèè X11, èñïîëüçóåìîé â UNIX-ïîäîáíûõ ÎÑ, òàêèõ êàê Linux.

Ïðè ýòîì X11 áåäíåå âîçìîæíîñòÿìè, ÷åì GDI (íàïðèìåð, åñòü ïðîáëåìû ñ ïîääåðæêîé íåçàâèñèìûõ îò óñòðîéñòâà öâåòîâ), è äëÿ ïîëó÷åíèÿ ïîëíîãî àíàëîãà GDI íåîáõîäèìî äîáàâèòü åùå ðÿä áèáëèîòåê, òàêèõ êàê SDL.

[ïðàâèòü] GDI+

Microsoft Windows GDI+
Êîìïîíåíò Microsoft Windows
Äåòàëè
Ïîñòàâëÿåòñÿ ñ

Windows XP
Windows Server 2003
Windows Vista Starter

Òàêæå äîñòóïåí äëÿ

Windows NT 4.0 SP6
Windows 2000
Windows 9x

Çàìåíÿåò

Microsoft Windows GDI

Çàìåí¸í íà

Desktop Window Manager

Ñâÿçàííûå êîìïîíåíòû

Luna

Ñ âûõîäîì Windows XP ïîÿâèëñÿ ïîòîìîê ïîäñèñòåìû, GDI+, îñíîâàííîé íà C++[1].

GDI+ ÿâëÿåòñÿ óëó÷øåííîé ñðåäîé äëÿ 2D-ãðàôèêè, â êîòîðóþ äîáàâëåíû òàêèå âîçìîæíîñòè, êàê ñãëàæèâàíèå ëèíèé (antialiasing), èñïîëüçîâàíèå êîîðäèíàò ñ ïëàâàþùåé òî÷êîé, ãðàäèåíòíàÿ çàëèâêà, âíóòðåííÿÿ ïîääåðæêà òàêèõ ãðàôè÷åñêèõ ôîðìàòîâ, êàê JPEG è PNG, êóäà ëó÷øàÿ ïîääåðæêà ðåãèîíîâ îòñå÷åíèÿ ñ âîçìîæíîñòüþ èñïîëüçîâàòü â íèõ êîîðäèíàòû ñ ïëàâàþùåé òî÷êîé (à íå 16-áèòíûå öåëûå) è ïðèìåíåíèÿ ê íèì World Transform, ïðåîáðàçîâàíèÿ äâóìåðíûõ ìàòðèö è ò. ï. GDI+ èñïîëüçóåò ARGB-öâåòà. Ýòè âîçìîæíîñòè èñïîëüçóþòñÿ â ïîëüçîâàòåëüñêîì èíòåðôåéñå Windows XP, à èõ ïðèñóòñòâèå â áàçîâîì ãðàôè÷åñêîì ñëîå îáëåã÷àåò èñïîëüçîâàíèå ñèñòåì âåêòîðíîé ãðàôèêè, òàêèõ êàê Flash èëè SVG.

Äèíàìè÷åñêèå áèáëèîòåêè GDI+ ìîãóò ðàñïðîñòðàíÿòüñÿ âìåñòå ñ ïðèëîæåíèÿìè äëÿ èñïîëüçîâàíèÿ â ïðåäûäóùèõ âåðñèÿõ Windows.

GDI+ ñõîæ ñ ïîäñèñòåìîé Quartz 2D ó Apple è áèáëèîòåêàìè ñ îòêðûòûì êîäîì libart è Cairo.

GDI+ åñòü íå áîëåå ÷åì íàáîð îáåðòîê íàä îáû÷íîé GDI.  Windows 7 ïîÿâèëñÿ íîâûé API Direct2D, êîòîðûé åñòü ïðèìåðíî òî æå, íî ðåàëèçîâàí «ñâåðõó äîíèçó» âïëîòü äî äðàéâåðà âèäåîêàðòû (òî÷íåå, èñïîëüçóåò íåêèå âîçìîæíîñòè Direct3D â ýòîì äðàéâåðå), è ìîæåò èñïîëüçîâàòü àïïàðàòíîå óñêîðåíèå â ò. å. òðåõìåðíûé âèäåîïðîöåññîð äëÿ ðèñîâàíèÿ íåêîòîðûõ äâóõìåðíûõ îáúåêòîâ (antialiasing è ò. ä.)

[ïðàâèòü] Óÿçâèìîñòè

14 ñåíòÿáðÿ 2004 ãîäà áûëà îáíàðóæåíà óÿçâèìîñòü â GDI+ è äðóãèõ ãðàôè÷åñêèõ API, ñâÿçàííàÿ ñ îøèáêîé â êîäå áèáëèîòåêè JPEG. Ýòà îøèáêà ïîçâîëÿëà âûïîëíèòü ïðîèçâîëüíûé êîä íà ëþáîé ñèñòåìå Windows. Ïàò÷ äëÿ èñïðàâëåíèÿ óÿçâèìîñòè áûë âûïóùåí 12 îêòÿáðÿ 2004 ãîäà[2].

[ïðàâèòü] Ïðèìå÷àíèÿ

  1. â‘ GDI+ Flat API  (àíãë.). MSDN Library. Microsoft. Àðõèâèðîâàíî èç ïåðâîèñòî÷íèêà 3 ìàðòà 2012. Ïðîâåðåíî 31 îêòÿáðÿ 2009.
    Ïîäñèñòåìà GDI+ äîñòóïíà êàê «ïëîñêèé» íàáîð èç 600 ôóíêöèé, ðåàëèçîâàííûõ â gdiplus.dll. Ýòè ôóíêöèè «îá¸ðíóòû» â 40 êëàññîâ C++. Microsoft íå ïëàíèðóåò îêàçûâàòü ïîääåðæêó äëÿ êîäà, êîòîðûé îáðàùàåòñÿ ê ïëîñêîìó íàáîðó íàïðÿìóþ, à íå ÷åðåç êëàññû è ìåòîäû C++. .NET Framework ïðåäëàãàåò íàáîð àëüòåðíàòèâíûõ C++ îá¸ðòî÷íûõ êëàññîâ, âõîäÿùèõ â ïðîñòðàíñòâî èìåí System.Drawing.
  2. â‘ MS04-028: Buffer overrun in JPEG processing (GDI+) could allow code execution

[ïðàâèòü] Ññûëêè


Èñòî÷íèê â «/w/index.php?title=GDI&oldid=42312462»
Ïðîñòðàíñòâà èì¸í

Âàðèàíòû
Äåéñòâèÿ