4 * Copyright 2021 Jacek Caban for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 #define WIN32_NO_STATUS
28 #include "ddk/d3dkmthk.h"
29 #include "wow64win_private.h"
50 DWORD elpStyleEntry
[1];
56 TEXTMETRICW otmTextMetrics
;
58 PANOSE otmPanoseNumber
;
61 INT otmsCharSlopeRise
;
74 UINT otmusMinimumPPEM
;
75 POINT otmptSubscriptSize
;
76 POINT otmptSubscriptOffset
;
77 POINT otmptSuperscriptSize
;
78 POINT otmptSuperscriptOffset
;
79 UINT otmsStrikeoutSize
;
80 INT otmsStrikeoutPosition
;
81 INT otmsUnderscoreSize
;
82 INT otmsUnderscorePosition
;
87 } OUTLINETEXTMETRIC32
;
90 static DWORD
gdi_handle_type( HGDIOBJ obj
)
92 unsigned int handle
= HandleToUlong( obj
);
93 return handle
& NTGDI_HANDLE_TYPE_MASK
;
96 NTSTATUS WINAPI
wow64_NtGdiAbortDoc( UINT
*args
)
98 HDC hdc
= get_handle( &args
);
100 return NtGdiAbortDoc( hdc
);
103 NTSTATUS WINAPI
wow64_NtGdiAbortPath( UINT
*args
)
105 HDC hdc
= get_handle( &args
);
107 return NtGdiAbortPath( hdc
);
110 NTSTATUS WINAPI
wow64_NtGdiAddFontMemResourceEx( UINT
*args
)
112 void *ptr
= get_ptr( &args
);
113 DWORD size
= get_ulong( &args
);
114 void *dv
= get_ptr( &args
);
115 ULONG dv_size
= get_ulong( &args
);
116 DWORD
*count
= get_ptr( &args
);
118 return HandleToUlong( NtGdiAddFontMemResourceEx( ptr
, size
, dv
, dv_size
, count
));
121 NTSTATUS WINAPI
wow64_NtGdiAddFontResourceW( UINT
*args
)
123 const WCHAR
*str
= get_ptr( &args
);
124 ULONG size
= get_ulong( &args
);
125 ULONG files
= get_ulong( &args
);
126 DWORD flags
= get_ulong( &args
);
127 DWORD tid
= get_ulong( &args
);
128 void *dv
= get_ptr( &args
);
130 return NtGdiAddFontResourceW( str
, size
, files
, flags
, tid
, dv
);
133 NTSTATUS WINAPI
wow64_NtGdiAlphaBlend( UINT
*args
)
135 HDC hdc_dst
= get_handle( &args
);
136 int x_dst
= get_ulong( &args
);
137 int y_dst
= get_ulong( &args
);
138 int width_dst
= get_ulong( &args
);
139 int height_dst
= get_ulong( &args
);
140 HDC hdc_src
= get_handle( &args
);
141 int x_src
= get_ulong( &args
);
142 int y_src
= get_ulong( &args
);
143 int width_src
= get_ulong( &args
);
144 int height_src
= get_ulong( &args
);
145 DWORD blend_function
= get_ulong( &args
);
146 HANDLE xform
= get_handle( &args
);
148 return NtGdiAlphaBlend( hdc_dst
, x_dst
, y_dst
, width_dst
, height_dst
, hdc_src
,
149 x_src
, y_src
, width_src
, height_src
, blend_function
, xform
);
152 NTSTATUS WINAPI
wow64_NtGdiAngleArc( UINT
*args
)
154 HDC hdc
= get_handle( &args
);
155 INT x
= get_ulong( &args
);
156 INT y
= get_ulong( &args
);
157 DWORD radius
= get_ulong( &args
);
158 DWORD start_angle
= get_ulong( &args
);
159 DWORD sweep_angle
= get_ulong( &args
);
161 return NtGdiAngleArc( hdc
, x
, y
, radius
, start_angle
, sweep_angle
);
164 NTSTATUS WINAPI
wow64_NtGdiArcInternal( UINT
*args
)
166 UINT type
= get_ulong( &args
);
167 HDC hdc
= get_handle( &args
);
168 INT left
= get_ulong( &args
);
169 INT top
= get_ulong( &args
);
170 INT right
= get_ulong( &args
);
171 INT bottom
= get_ulong( &args
);
172 INT xstart
= get_ulong( &args
);
173 INT ystart
= get_ulong( &args
);
174 INT xend
= get_ulong( &args
);
175 INT yend
= get_ulong( &args
);
177 return NtGdiArcInternal( type
, hdc
, left
, top
, right
, bottom
, xstart
, ystart
, xend
, yend
);
180 NTSTATUS WINAPI
wow64_NtGdiBeginPath( UINT
*args
)
182 HDC hdc
= get_handle( &args
);
184 return NtGdiBeginPath( hdc
);
187 NTSTATUS WINAPI
wow64_NtGdiBitBlt( UINT
*args
)
189 HDC hdc_dst
= get_handle( &args
);
190 INT x_dst
= get_ulong( &args
);
191 INT y_dst
= get_ulong( &args
);
192 INT width
= get_ulong( &args
);
193 INT height
= get_ulong( &args
);
194 HDC hdc_src
= get_handle( &args
);
195 INT x_src
= get_ulong( &args
);
196 INT y_src
= get_ulong( &args
);
197 DWORD rop
= get_ulong( &args
);
198 DWORD bk_color
= get_ulong( &args
);
199 FLONG fl
= get_ulong( &args
);
201 return NtGdiBitBlt( hdc_dst
, x_dst
, y_dst
, width
, height
, hdc_src
,
202 x_src
, y_src
, rop
, bk_color
, fl
);
205 NTSTATUS WINAPI
wow64_NtGdiCloseFigure( UINT
*args
)
207 HDC hdc
= get_handle( &args
);
209 return NtGdiCloseFigure( hdc
);
212 NTSTATUS WINAPI
wow64_NtGdiCombineRgn( UINT
*args
)
214 HRGN dest
= get_handle( &args
);
215 HRGN src1
= get_handle( &args
);
216 HRGN src2
= get_handle( &args
);
217 INT mode
= get_ulong( &args
);
219 return NtGdiCombineRgn( dest
, src1
, src2
, mode
);
222 NTSTATUS WINAPI
wow64_NtGdiComputeXformCoefficients( UINT
*args
)
224 HDC hdc
= get_handle( &args
);
226 return NtGdiComputeXformCoefficients( hdc
);
229 NTSTATUS WINAPI
wow64_NtGdiCreateBitmap( UINT
*args
)
231 INT width
= get_ulong( &args
);
232 INT height
= get_ulong( &args
);
233 UINT planes
= get_ulong( &args
);
234 UINT bpp
= get_ulong( &args
);
235 const void *bits
= get_ptr( &args
);
237 return HandleToUlong( NtGdiCreateBitmap( width
, height
, planes
, bpp
, bits
));
240 NTSTATUS WINAPI
wow64_NtGdiCreateClientObj( UINT
*args
)
242 ULONG type
= get_ulong( &args
);
244 return HandleToUlong( NtGdiCreateClientObj( type
));
247 NTSTATUS WINAPI
wow64_NtGdiCreateCompatibleBitmap( UINT
*args
)
249 HDC hdc
= get_handle( &args
);
250 INT width
= get_ulong( &args
);
251 INT height
= get_ulong( &args
);
253 return HandleToUlong( NtGdiCreateCompatibleBitmap( hdc
, width
, height
));
256 NTSTATUS WINAPI
wow64_NtGdiCreateCompatibleDC( UINT
*args
)
258 HDC hdc
= get_handle( &args
);
260 return HandleToUlong( NtGdiCreateCompatibleDC( hdc
));
263 NTSTATUS WINAPI
wow64_NtGdiCreateDIBBrush( UINT
*args
)
265 const void *data
= get_ptr( &args
);
266 UINT coloruse
= get_ulong( &args
);
267 UINT size
= get_ulong( &args
);
268 BOOL is_8x8
= get_ulong( &args
);
269 BOOL pen
= get_ulong( &args
);
270 const void *client
= get_ptr( &args
);
272 return HandleToUlong( NtGdiCreateDIBBrush( data
, coloruse
, size
, is_8x8
, pen
, client
));
275 NTSTATUS WINAPI
wow64_NtGdiCreateDIBSection( UINT
*args
)
277 HDC hdc
= get_handle( &args
);
278 HANDLE section
= get_handle( &args
);
279 DWORD offset
= get_ulong( &args
);
280 const BITMAPINFO
*bmi
= get_ptr( &args
);
281 UINT usage
= get_ulong( &args
);
282 UINT header_size
= get_ulong( &args
);
283 ULONG flags
= get_ulong( &args
);
284 ULONG_PTR color_space
= get_ulong( &args
);
285 void *bits32
= get_ptr( &args
);
290 ret
= NtGdiCreateDIBSection( hdc
, section
, offset
, bmi
, usage
, header_size
,
291 flags
, color_space
, addr_32to64( &bits
, bits32
));
292 put_addr( bits32
, bits
);
293 return HandleToUlong( ret
);
296 NTSTATUS WINAPI
wow64_NtGdiCreateDIBitmapInternal( UINT
*args
)
298 HDC hdc
= get_handle( &args
);
299 INT width
= get_ulong( &args
);
300 INT height
= get_ulong( &args
);
301 DWORD init
= get_ulong( &args
);
302 const void *bits
= get_ptr( &args
);
303 const BITMAPINFO
*data
= get_ptr( &args
);
304 UINT coloruse
= get_ulong( &args
);
305 UINT max_info
= get_ulong( &args
);
306 UINT max_bits
= get_ulong( &args
);
307 ULONG flags
= get_ulong( &args
);
308 HANDLE xform
= get_handle( &args
);
310 HBITMAP ret
= NtGdiCreateDIBitmapInternal( hdc
, width
, height
, init
, bits
, data
,
311 coloruse
, max_info
, max_bits
, flags
, xform
);
312 return HandleToUlong( ret
);
315 NTSTATUS WINAPI
wow64_NtGdiCreateEllipticRgn( UINT
*args
)
317 INT left
= get_ulong( &args
);
318 INT top
= get_ulong( &args
);
319 INT right
= get_ulong( &args
);
320 INT bottom
= get_ulong( &args
);
322 return HandleToUlong( NtGdiCreateEllipticRgn( left
, top
, right
, bottom
));
325 NTSTATUS WINAPI
wow64_NtGdiCreateHalftonePalette( UINT
*args
)
327 HDC hdc
= get_handle( &args
);
329 return HandleToUlong( NtGdiCreateHalftonePalette( hdc
));
332 NTSTATUS WINAPI
wow64_NtGdiCreateHatchBrushInternal( UINT
*args
)
334 INT style
= get_ulong( &args
);
335 COLORREF color
= get_ulong( &args
);
336 BOOL pen
= get_ulong( &args
);
338 return HandleToULong( NtGdiCreateHatchBrushInternal( style
, color
, pen
));
341 NTSTATUS WINAPI
wow64_NtGdiCreateMetafileDC( UINT
*args
)
343 HDC hdc
= get_handle( &args
);
345 return HandleToUlong( NtGdiCreateMetafileDC( hdc
));
348 NTSTATUS WINAPI
wow64_NtGdiCreatePaletteInternal( UINT
*args
)
350 const LOGPALETTE
*palette
= get_ptr( &args
);
351 UINT count
= get_ulong( &args
);
353 return HandleToUlong( NtGdiCreatePaletteInternal( palette
, count
));
356 NTSTATUS WINAPI
wow64_NtGdiCreatePatternBrushInternal( UINT
*args
)
358 HBITMAP hbitmap
= get_handle( &args
);
359 BOOL pen
= get_ulong( &args
);
360 BOOL is_8x8
= get_ulong( &args
);
362 return HandleToUlong( NtGdiCreatePatternBrushInternal( hbitmap
, pen
, is_8x8
));
365 NTSTATUS WINAPI
wow64_NtGdiCreatePen( UINT
*args
)
367 INT style
= get_ulong( &args
);
368 INT width
= get_ulong( &args
);
369 COLORREF color
= get_ulong( &args
);
370 HBRUSH brush
= get_handle( &args
);
372 return HandleToUlong( NtGdiCreatePen( style
, width
, color
, brush
));
375 NTSTATUS WINAPI
wow64_NtGdiCreateRectRgn( UINT
*args
)
377 INT left
= get_ulong( &args
);
378 INT top
= get_ulong( &args
);
379 INT right
= get_ulong( &args
);
380 INT bottom
= get_ulong( &args
);
382 return HandleToUlong( NtGdiCreateRectRgn( left
, top
, right
, bottom
));
385 NTSTATUS WINAPI
wow64_NtGdiCreateRoundRectRgn( UINT
*args
)
387 INT left
= get_ulong( &args
);
388 INT top
= get_ulong( &args
);
389 INT right
= get_ulong( &args
);
390 INT bottom
= get_ulong( &args
);
391 INT ellipse_width
= get_ulong( &args
);
392 INT ellipse_height
= get_ulong( &args
);
394 return HandleToUlong( NtGdiCreateRoundRectRgn( left
, top
, right
, bottom
,
395 ellipse_width
, ellipse_height
));
398 NTSTATUS WINAPI
wow64_NtGdiCreateSolidBrush( UINT
*args
)
400 COLORREF color
= get_ulong( &args
);
401 HBRUSH brush
= get_handle( &args
);
403 return HandleToUlong( NtGdiCreateSolidBrush( color
, brush
));
406 NTSTATUS WINAPI
wow64_NtGdiDdDDICheckVidPnExclusiveOwnership( UINT
*args
)
408 const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP
*desc
= get_ptr( &args
);
410 return NtGdiDdDDICheckVidPnExclusiveOwnership( desc
);
413 NTSTATUS WINAPI
wow64_NtGdiDdDDICloseAdapter( UINT
*args
)
415 const D3DKMT_CLOSEADAPTER
*desc
= get_ptr( &args
);
417 return NtGdiDdDDICloseAdapter( desc
);
420 NTSTATUS WINAPI
wow64_NtGdiDdDDICreateDCFromMemory( UINT
*args
)
422 struct _D3DKMT_CREATEDCFROMMEMORY
433 } *desc32
= get_ptr( &args
);
435 D3DKMT_CREATEDCFROMMEMORY desc
;
438 if (!desc32
) return STATUS_INVALID_PARAMETER
;
439 desc
.pMemory
= UlongToPtr( desc32
->pMemory
);
440 desc
.Format
= desc32
->Format
;
441 desc
.Width
= desc32
->Width
;
442 desc
.Height
= desc32
->Height
;
443 desc
.Pitch
= desc32
->Pitch
;
444 desc
.hDeviceDc
= UlongToHandle( desc32
->hDeviceDc
);
445 desc
.pColorTable
= UlongToPtr( desc32
->pColorTable
);
447 if (!(status
= NtGdiDdDDICreateDCFromMemory( &desc
)))
449 desc32
->hDc
= HandleToUlong( desc
.hDc
);
450 desc32
->hBitmap
= HandleToUlong( desc
.hBitmap
);
455 NTSTATUS WINAPI
wow64_NtGdiDdDDICreateDevice( UINT
*args
)
459 D3DKMT_HANDLE hAdapter
;
460 D3DKMT_CREATEDEVICEFLAGS Flags
;
461 D3DKMT_HANDLE hDevice
;
462 ULONG pCommandBuffer
;
463 UINT CommandBufferSize
;
464 ULONG pAllocationList
;
465 UINT AllocationListSize
;
466 ULONG pPatchLocationList
;
467 UINT PatchLocationListSize
;
468 } *desc32
= get_ptr( &args
);
470 D3DKMT_CREATEDEVICE desc
;
473 if (!desc32
) return STATUS_INVALID_PARAMETER
;
474 desc
.hAdapter
= desc32
->hAdapter
;
475 desc
.Flags
= desc32
->Flags
;
476 desc
.pCommandBuffer
= UlongToPtr( desc32
->pCommandBuffer
);
477 desc
.CommandBufferSize
= desc32
->CommandBufferSize
;
478 desc
.pAllocationList
= UlongToPtr( desc32
->pAllocationList
);
479 desc
.AllocationListSize
= desc32
->AllocationListSize
;
480 desc
.pPatchLocationList
= UlongToPtr( desc32
->pPatchLocationList
);
481 desc
.PatchLocationListSize
= desc32
->PatchLocationListSize
;
482 if (!(status
= NtGdiDdDDICreateDevice( &desc
)))
483 desc32
->hDevice
= desc
.hDevice
;
487 NTSTATUS WINAPI
wow64_NtGdiDdDDIDestroyDCFromMemory( UINT
*args
)
493 } *desc32
= get_ptr( &args
);
494 D3DKMT_DESTROYDCFROMMEMORY desc
;
496 if (!desc32
) return STATUS_INVALID_PARAMETER
;
497 desc
.hDc
= UlongToHandle( desc32
->hDc
);
498 desc
.hBitmap
= UlongToHandle( desc32
->hBitmap
);
500 return NtGdiDdDDIDestroyDCFromMemory( &desc
);
503 NTSTATUS WINAPI
wow64_NtGdiDdDDIDestroyDevice( UINT
*args
)
505 const D3DKMT_DESTROYDEVICE
*desc
= get_ptr( &args
);
507 return NtGdiDdDDIDestroyDevice( desc
);
510 NTSTATUS WINAPI
wow64_NtGdiDdDDIEscape( UINT
*args
)
514 D3DKMT_HANDLE hAdapter
;
515 D3DKMT_HANDLE hDevice
;
516 D3DKMT_ESCAPETYPE Type
;
517 D3DDDI_ESCAPEFLAGS Flags
;
518 ULONG pPrivateDriverData
;
519 UINT PrivateDriverDataSize
;
520 D3DKMT_HANDLE hContext
;
521 } *desc32
= get_ptr( &args
);
524 if (!desc32
) return STATUS_INVALID_PARAMETER
;
525 desc
.hAdapter
= desc32
->hAdapter
;
526 desc
.hDevice
= desc32
->hDevice
;
527 desc
.Type
= desc32
->Type
;
528 desc
.Flags
= desc32
->Flags
;
529 desc
.pPrivateDriverData
= UlongToPtr( desc32
->pPrivateDriverData
);
530 desc
.PrivateDriverDataSize
= desc32
->PrivateDriverDataSize
;
531 desc
.hContext
= desc32
->hContext
;
533 return NtGdiDdDDIEscape( &desc
);
536 NTSTATUS WINAPI
wow64_NtGdiDdDDIOpenAdapterFromDeviceName( UINT
*args
)
538 struct _D3DKMT_OPENADAPTERFROMDEVICENAME
541 D3DKMT_HANDLE hAdapter
;
543 } *desc32
= get_ptr( &args
);
544 D3DKMT_OPENADAPTERFROMDEVICENAME desc
;
547 if (!desc32
) return STATUS_INVALID_PARAMETER
;
548 desc
.pDeviceName
= UlongToPtr( desc32
->pDeviceName
);
550 if (!(status
= NtGdiDdDDIOpenAdapterFromDeviceName( &desc
)))
552 desc32
->hAdapter
= desc
.hAdapter
;
553 desc32
->AdapterLuid
= desc
.AdapterLuid
;
558 NTSTATUS WINAPI
wow64_NtGdiDdDDIOpenAdapterFromHdc( UINT
*args
)
563 D3DKMT_HANDLE hAdapter
;
565 D3DDDI_VIDEO_PRESENT_SOURCE_ID VidPnSourceId
;
566 } *desc32
= get_ptr( &args
);
568 D3DKMT_OPENADAPTERFROMHDC desc
;
571 if (!desc32
) return STATUS_INVALID_PARAMETER
;
572 desc
.hDc
= UlongToHandle( desc32
->hDc
);
573 if (!(status
= NtGdiDdDDIOpenAdapterFromHdc( &desc
)))
575 desc32
->hAdapter
= desc
.hAdapter
;
576 desc32
->AdapterLuid
= desc
.AdapterLuid
;
577 desc32
->VidPnSourceId
= desc
.VidPnSourceId
;
582 NTSTATUS WINAPI
wow64_NtGdiDdDDIOpenAdapterFromLuid( UINT
*args
)
584 D3DKMT_OPENADAPTERFROMLUID
*desc
= get_ptr( &args
);
586 return NtGdiDdDDIOpenAdapterFromLuid( desc
);
589 NTSTATUS WINAPI
wow64_NtGdiDdDDIQueryAdapterInfo( UINT
*args
)
591 struct _D3DKMT_QUERYADAPTERINFO
593 D3DKMT_HANDLE hAdapter
;
594 KMTQUERYADAPTERINFOTYPE Type
;
595 ULONG pPrivateDriverData
;
596 UINT PrivateDriverDataSize
;
597 } *desc32
= get_ptr( &args
);
598 D3DKMT_QUERYADAPTERINFO desc
;
600 if (!desc32
) return STATUS_INVALID_PARAMETER
;
602 desc
.hAdapter
= desc32
->hAdapter
;
603 desc
.Type
= desc32
->Type
;
604 desc
.pPrivateDriverData
= UlongToPtr( desc32
->pPrivateDriverData
);
605 desc
.PrivateDriverDataSize
= desc32
->PrivateDriverDataSize
;
607 return NtGdiDdDDIQueryAdapterInfo( &desc
);
610 NTSTATUS WINAPI
wow64_NtGdiDdDDIQueryStatistics( UINT
*args
)
612 D3DKMT_QUERYSTATISTICS
*stats
= get_ptr( &args
);
614 return NtGdiDdDDIQueryStatistics( stats
);
617 NTSTATUS WINAPI
wow64_NtGdiDdDDIQueryVideoMemoryInfo( UINT
*args
)
619 struct _D3DKMT_QUERYVIDEOMEMORYINFO
622 D3DKMT_HANDLE hAdapter
;
623 D3DKMT_MEMORY_SEGMENT_GROUP MemorySegmentGroup
;
626 UINT64 CurrentReservation
;
627 UINT64 AvailableForReservation
;
628 UINT PhysicalAdapterIndex
;
629 } *desc32
= get_ptr( &args
);
630 D3DKMT_QUERYVIDEOMEMORYINFO desc
;
633 if (!desc32
) return STATUS_INVALID_PARAMETER
;
634 desc
.hProcess
= LongToHandle( desc32
->hProcess
);
635 desc
.hAdapter
= desc32
->hAdapter
;
636 desc
.MemorySegmentGroup
= desc32
->MemorySegmentGroup
;
637 desc
.PhysicalAdapterIndex
= desc32
->PhysicalAdapterIndex
;
639 if (!(status
= NtGdiDdDDIQueryVideoMemoryInfo( &desc
)))
641 desc32
->Budget
= desc
.Budget
;
642 desc32
->CurrentUsage
= desc
.CurrentUsage
;
643 desc32
->CurrentReservation
= desc
.CurrentReservation
;
644 desc32
->AvailableForReservation
= desc
.AvailableForReservation
;
649 NTSTATUS WINAPI
wow64_NtGdiDdDDISetQueuedLimit( UINT
*args
)
651 D3DKMT_SETQUEUEDLIMIT
*desc
= get_ptr( &args
);
653 return NtGdiDdDDISetQueuedLimit( desc
);
656 NTSTATUS WINAPI
wow64_NtGdiDdDDISetVidPnSourceOwner( UINT
*args
)
660 D3DKMT_HANDLE hDevice
;
662 ULONG pVidPnSourceId
;
663 UINT VidPnSourceCount
;
664 } *desc32
= get_ptr( &args
);
665 D3DKMT_SETVIDPNSOURCEOWNER desc
;
667 if (!desc32
) return STATUS_INVALID_PARAMETER
;
668 desc
.hDevice
= desc32
->hDevice
;
669 desc
.pType
= UlongToPtr( desc32
->pType
);
670 desc
.pVidPnSourceId
= UlongToPtr( desc32
->pVidPnSourceId
);
671 desc
.VidPnSourceCount
= desc32
->VidPnSourceCount
;
673 return NtGdiDdDDISetVidPnSourceOwner( &desc
);
676 NTSTATUS WINAPI
wow64_NtGdiDeleteClientObj( UINT
*args
)
678 HGDIOBJ obj
= get_handle( &args
);
680 return NtGdiDeleteClientObj( obj
);
683 NTSTATUS WINAPI
wow64_NtGdiDeleteObjectApp( UINT
*args
)
685 HGDIOBJ obj
= get_handle( &args
);
687 return NtGdiDeleteObjectApp( obj
);
690 NTSTATUS WINAPI
wow64_NtGdiDescribePixelFormat( UINT
*args
)
692 HDC hdc
= get_handle( &args
);
693 INT format
= get_ulong( &args
);
694 UINT size
= get_ulong( &args
);
695 PIXELFORMATDESCRIPTOR
*descr
= get_ptr( &args
);
697 return NtGdiDescribePixelFormat( hdc
, format
, size
, descr
);
700 NTSTATUS WINAPI
wow64_NtGdiDoPalette( UINT
*args
)
702 HGDIOBJ handle
= get_handle( &args
);
703 WORD start
= get_ulong( &args
);
704 WORD count
= get_ulong( &args
);
705 void *entries
= get_ptr( &args
);
706 DWORD func
= get_ulong( &args
);
707 BOOL inbound
= get_ulong( &args
);
709 return NtGdiDoPalette( handle
, start
, count
, entries
, func
, inbound
);
712 NTSTATUS WINAPI
wow64_NtGdiDrawStream( UINT
*args
)
714 HDC hdc
= get_handle( &args
);
715 ULONG in
= get_ulong( &args
);
716 void *pvin
= get_ptr( &args
);
718 return NtGdiDrawStream( hdc
, in
, pvin
);
721 NTSTATUS WINAPI
wow64_NtGdiEllipse( UINT
*args
)
723 HDC hdc
= get_handle( &args
);
724 INT left
= get_ulong( &args
);
725 INT top
= get_ulong( &args
);
726 INT right
= get_ulong( &args
);
727 INT bottom
= get_ulong( &args
);
729 return NtGdiEllipse( hdc
, left
, top
, right
, bottom
);
732 NTSTATUS WINAPI
wow64_NtGdiEndDoc( UINT
*args
)
734 HDC hdc
= get_handle( &args
);
736 return NtGdiEndDoc( hdc
);
739 NTSTATUS WINAPI
wow64_NtGdiEndPage( UINT
*args
)
741 HDC hdc
= get_handle( &args
);
743 return NtGdiEndPage( hdc
);
746 NTSTATUS WINAPI
wow64_NtGdiEndPath( UINT
*args
)
748 HDC hdc
= get_handle( &args
);
750 return NtGdiEndPath( hdc
);
753 NTSTATUS WINAPI
wow64_NtGdiEnumFonts( UINT
*args
)
755 HDC hdc
= get_handle( &args
);
756 ULONG type
= get_ulong( &args
);
757 ULONG win32_compat
= get_ulong( &args
);
758 ULONG face_name_len
= get_ulong( &args
);
759 const WCHAR
*face_name
= get_ptr( &args
);
760 ULONG charset
= get_ulong( &args
);
761 ULONG
*count
= get_ptr( &args
);
762 void *buf
= get_ptr( &args
);
764 return NtGdiEnumFonts( hdc
, type
, win32_compat
, face_name_len
, face_name
, charset
, count
, buf
);
767 NTSTATUS WINAPI
wow64_NtGdiExcludeClipRect( UINT
*args
)
769 HDC hdc
= get_handle( &args
);
770 INT left
= get_ulong( &args
);
771 INT top
= get_ulong( &args
);
772 INT right
= get_ulong( &args
);
773 INT bottom
= get_ulong( &args
);
775 return NtGdiExcludeClipRect( hdc
, left
, top
, right
, bottom
);
778 NTSTATUS WINAPI
wow64_NtGdiEqualRgn( UINT
*args
)
780 HRGN hrgn1
= get_handle( &args
);
781 HRGN hrgn2
= get_handle( &args
);
783 return NtGdiEqualRgn( hrgn1
, hrgn2
);
786 NTSTATUS WINAPI
wow64_NtGdiExtCreatePen( UINT
*args
)
788 DWORD style
= get_ulong( &args
);
789 DWORD width
= get_ulong( &args
);
790 ULONG brush_style
= get_ulong( &args
);
791 ULONG color
= get_ulong( &args
);
792 ULONG_PTR client_hatch
= get_ulong( &args
);
793 ULONG_PTR hatch
= get_ulong( &args
);
794 DWORD style_count
= get_ulong( &args
);
795 const DWORD
*style_bits
= get_ptr( &args
);
796 ULONG dib_size
= get_ulong( &args
);
797 BOOL old_style
= get_ulong( &args
);
798 HBRUSH brush
= get_handle( &args
);
800 return HandleToUlong( NtGdiExtCreatePen( style
, width
, brush_style
, color
, client_hatch
,
801 hatch
, style_count
, style_bits
, dib_size
,
805 NTSTATUS WINAPI
wow64_NtGdiExtCreateRegion( UINT
*args
)
807 const XFORM
*xform
= get_ptr( &args
);
808 DWORD count
= get_ulong( &args
);
809 const RGNDATA
*data
= get_ptr( &args
);
811 return HandleToUlong( NtGdiExtCreateRegion( xform
, count
, data
));
814 NTSTATUS WINAPI
wow64_NtGdiExtEscape( UINT
*args
)
816 HDC hdc
= get_handle( &args
);
817 WCHAR
*driver
= get_ptr( &args
);
818 INT driver_id
= get_ulong( &args
);
819 INT escape
= get_ulong( &args
);
820 INT input_size
= get_ulong( &args
);
821 const char *input
= get_ptr( &args
);
822 INT output_size
= get_ulong( &args
);
823 char *output
= get_ptr( &args
);
825 return NtGdiExtEscape( hdc
, driver
, driver_id
, escape
, input_size
, input
, output_size
, output
);
828 NTSTATUS WINAPI
wow64_NtGdiExtFloodFill( UINT
*args
)
830 HDC hdc
= get_handle( &args
);
831 INT x
= get_ulong( &args
);
832 INT y
= get_ulong( &args
);
833 COLORREF color
= get_ulong( &args
);
834 UINT type
= get_ulong( &args
);
836 return NtGdiExtFloodFill( hdc
, x
, y
, color
, type
);
839 NTSTATUS WINAPI
wow64_NtGdiExtGetObjectW( UINT
*args
)
841 HGDIOBJ handle
= get_handle( &args
);
842 INT count
= get_ulong( &args
);
843 void *buffer
= get_ptr( &args
);
845 switch (gdi_handle_type( handle
))
847 case NTGDI_OBJ_BITMAP
:
849 BITMAP32
*bitmap32
= buffer
;
853 BITMAPINFOHEADER dsBmih
;
854 DWORD dsBitfields
[3];
863 if (count
< sizeof(*bitmap32
)) return 0;
864 count
= count
< sizeof(*dib32
) ? sizeof(BITMAP
) : sizeof(DIBSECTION
);
867 if (!(ret
= NtGdiExtGetObjectW( handle
, count
, buffer
? &dib
: NULL
))) return 0;
871 bitmap32
->bmType
= dib
.dsBm
.bmType
;
872 bitmap32
->bmWidth
= dib
.dsBm
.bmWidth
;
873 bitmap32
->bmHeight
= dib
.dsBm
.bmHeight
;
874 bitmap32
->bmWidthBytes
= dib
.dsBm
.bmWidthBytes
;
875 bitmap32
->bmPlanes
= dib
.dsBm
.bmPlanes
;
876 bitmap32
->bmBitsPixel
= dib
.dsBm
.bmBitsPixel
;
877 bitmap32
->bmBits
= PtrToUlong( dib
.dsBm
.bmBits
);
879 if (ret
!= sizeof(dib
)) return sizeof(*bitmap32
);
883 dib32
->dsBmih
= dib
.dsBmih
;
884 dib32
->dsBitfields
[0] = dib
.dsBitfields
[0];
885 dib32
->dsBitfields
[1] = dib
.dsBitfields
[1];
886 dib32
->dsBitfields
[2] = dib
.dsBitfields
[2];
887 dib32
->dshSection
= HandleToUlong( dib
.dshSection
);
888 dib32
->dsOffset
= dib
.dsOffset
;
890 return sizeof(*dib32
);
894 case NTGDI_OBJ_EXTPEN
:
896 EXTLOGPEN32
*pen32
= buffer
;
897 EXTLOGPEN
*pen
= NULL
;
899 if (count
== sizeof(LOGPEN
) || (buffer
&& !HIWORD( buffer
)))
900 return NtGdiExtGetObjectW( handle
, count
, buffer
);
902 if (pen32
&& count
&& !(pen
= Wow64AllocateTemp( count
+ sizeof(ULONG
) ))) return 0;
903 count
= NtGdiExtGetObjectW( handle
, count
+ sizeof(ULONG
), pen
);
905 if (count
== sizeof(LOGPEN
))
907 if (buffer
) memcpy( buffer
, pen
, count
);
913 pen32
->elpPenStyle
= pen
->elpPenStyle
;
914 pen32
->elpWidth
= pen
->elpWidth
;
915 pen32
->elpBrushStyle
= pen
->elpBrushStyle
;
916 pen32
->elpColor
= pen
->elpColor
;
917 pen32
->elpHatch
= pen
->elpHatch
;
918 pen32
->elpNumEntries
= pen
->elpNumEntries
;
920 count
-= FIELD_OFFSET( EXTLOGPEN
, elpStyleEntry
);
921 if (count
&& pen32
) memcpy( pen32
->elpStyleEntry
, pen
->elpStyleEntry
, count
);
922 count
+= FIELD_OFFSET( EXTLOGPEN32
, elpStyleEntry
);
928 return NtGdiExtGetObjectW( handle
, count
, buffer
);
932 NTSTATUS WINAPI
wow64_NtGdiExtSelectClipRgn( UINT
*args
)
934 HDC hdc
= get_handle( &args
);
935 HRGN region
= get_handle( &args
);
936 INT mode
= get_ulong( &args
);
938 return NtGdiExtSelectClipRgn( hdc
, region
, mode
);
941 NTSTATUS WINAPI
wow64_NtGdiExtTextOutW( UINT
*args
)
943 HDC hdc
= get_handle( &args
);
944 INT x
= get_ulong( &args
);
945 INT y
= get_ulong( &args
);
946 UINT flags
= get_ulong( &args
);
947 const RECT
*rect
= get_ptr( &args
);
948 const WCHAR
*str
= get_ptr( &args
);
949 UINT count
= get_ulong( &args
);
950 const INT
*dx
= get_ptr( &args
);
951 DWORD cp
= get_ulong( &args
);
953 return NtGdiExtTextOutW( hdc
, x
, y
, flags
, rect
, str
, count
, dx
, cp
);
956 NTSTATUS WINAPI
wow64_NtGdiFillPath( UINT
*args
)
958 HDC hdc
= get_handle( &args
);
960 return NtGdiFillPath( hdc
);
963 NTSTATUS WINAPI
wow64_NtGdiFillRgn( UINT
*args
)
965 HDC hdc
= get_handle( &args
);
966 HRGN hrgn
= get_handle( &args
);
967 HBRUSH hbrush
= get_handle( &args
);
969 return NtGdiFillRgn( hdc
, hrgn
, hbrush
);
972 NTSTATUS WINAPI
wow64_NtGdiFlattenPath( UINT
*args
)
974 HDC hdc
= get_handle( &args
);
976 return NtGdiFlattenPath( hdc
);
979 NTSTATUS WINAPI
wow64_NtGdiFlush( UINT
*args
)
984 NTSTATUS WINAPI
wow64_NtGdiFontIsLinked( UINT
*args
)
986 HDC hdc
= get_handle( &args
);
988 return NtGdiFontIsLinked( hdc
);
991 NTSTATUS WINAPI
wow64_NtGdiFrameRgn( UINT
*args
)
993 HDC hdc
= get_handle( &args
);
994 HRGN hrgn
= get_handle( &args
);
995 HBRUSH brush
= get_handle( &args
);
996 INT width
= get_ulong( &args
);
997 INT height
= get_ulong( &args
);
999 return NtGdiFrameRgn( hdc
, hrgn
, brush
, width
, height
);
1002 NTSTATUS WINAPI
wow64_NtGdiGetAndSetDCDword( UINT
*args
)
1004 HDC hdc
= get_handle( &args
);
1005 UINT method
= get_ulong( &args
);
1006 DWORD value
= get_ulong( &args
);
1007 DWORD
*result
= get_ptr( &args
);
1009 return NtGdiGetAndSetDCDword( hdc
, method
, value
, result
);
1012 NTSTATUS WINAPI
wow64_NtGdiGetAppClipBox( UINT
*args
)
1014 HDC hdc
= get_handle( &args
);
1015 RECT
*rect
= get_ptr( &args
);
1017 return NtGdiGetAppClipBox( hdc
, rect
);
1020 NTSTATUS WINAPI
wow64_NtGdiGetBitmapBits( UINT
*args
)
1022 HBITMAP bitmap
= get_handle( &args
);
1023 LONG count
= get_ulong( &args
);
1024 void *bits
= get_ptr( &args
);
1026 return NtGdiGetBitmapBits( bitmap
, count
, bits
);
1029 NTSTATUS WINAPI
wow64_NtGdiGetBitmapDimension( UINT
*args
)
1031 HBITMAP bitmap
= get_handle( &args
);
1032 SIZE
*size
= get_ptr( &args
);
1034 return NtGdiGetBitmapDimension( bitmap
, size
);
1037 NTSTATUS WINAPI
wow64_NtGdiGetBoundsRect( UINT
*args
)
1039 HDC hdc
= get_handle( &args
);
1040 RECT
*rect
= get_ptr( &args
);
1041 UINT flags
= get_ulong( &args
);
1043 return NtGdiGetBoundsRect( hdc
, rect
, flags
);
1046 NTSTATUS WINAPI
wow64_NtGdiGetCharABCWidthsW( UINT
*args
)
1048 HDC hdc
= get_handle( &args
);
1049 UINT first
= get_ulong( &args
);
1050 UINT last
= get_ulong( &args
);
1051 WCHAR
*chars
= get_ptr( &args
);
1052 ULONG flags
= get_ulong( &args
);
1053 void *buffer
= get_ptr( &args
);
1055 return NtGdiGetCharABCWidthsW( hdc
, first
, last
, chars
, flags
, buffer
);
1058 NTSTATUS WINAPI
wow64_NtGdiGetCharWidthW( UINT
*args
)
1060 HDC hdc
= get_handle( &args
);
1061 UINT first_char
= get_ulong( &args
);
1062 UINT last_char
= get_ulong( &args
);
1063 WCHAR
*chars
= get_ptr( &args
);
1064 ULONG flags
= get_ulong( &args
);
1065 void *buffer
= get_ptr( &args
);
1067 return NtGdiGetCharWidthW( hdc
, first_char
, last_char
, chars
, flags
, buffer
);
1070 NTSTATUS WINAPI
wow64_NtGdiGetCharWidthInfo( UINT
*args
)
1072 HDC hdc
= get_handle( &args
);
1073 struct char_width_info
*info
= get_ptr( &args
);
1075 return NtGdiGetCharWidthInfo( hdc
, info
);
1078 NTSTATUS WINAPI
wow64_NtGdiGetColorAdjustment( UINT
*args
)
1080 HDC hdc
= get_handle( &args
);
1081 COLORADJUSTMENT
*ca
= get_ptr( &args
);
1083 return NtGdiGetColorAdjustment( hdc
, ca
);
1086 NTSTATUS WINAPI
wow64_NtGdiGetDCDword( UINT
*args
)
1088 HDC hdc
= get_handle( &args
);
1089 UINT method
= get_ulong( &args
);
1090 DWORD
*result
= get_ptr( &args
);
1092 return NtGdiGetDCDword( hdc
, method
, result
);
1095 NTSTATUS WINAPI
wow64_NtGdiGetDCObject( UINT
*args
)
1097 HDC hdc
= get_handle( &args
);
1098 UINT type
= get_ulong( &args
);
1100 return HandleToUlong( NtGdiGetDCObject( hdc
, type
));
1103 NTSTATUS WINAPI
wow64_NtGdiGetDCPoint( UINT
*args
)
1105 HDC hdc
= get_handle( &args
);
1106 UINT method
= get_ulong( &args
);
1107 POINT
*result
= get_ptr( &args
);
1109 return NtGdiGetDCPoint( hdc
, method
, result
);
1112 NTSTATUS WINAPI
wow64_NtGdiGetDIBitsInternal( UINT
*args
)
1114 HDC hdc
= get_handle( &args
);
1115 HBITMAP hbitmap
= get_handle( &args
);
1116 UINT startscan
= get_ulong( &args
);
1117 UINT lines
= get_ulong( &args
);
1118 void *bits
= get_ptr( &args
);
1119 BITMAPINFO
*info
= get_ptr( &args
);
1120 UINT coloruse
= get_ulong( &args
);
1121 UINT max_bits
= get_ulong( &args
);
1122 UINT max_info
= get_ulong( &args
);
1124 return NtGdiGetDIBitsInternal( hdc
, hbitmap
, startscan
, lines
, bits
, info
, coloruse
,
1125 max_bits
, max_info
);
1128 NTSTATUS WINAPI
wow64_NtGdiGetDeviceCaps( UINT
*args
)
1130 HDC hdc
= get_handle( &args
);
1131 INT cap
= get_ulong( &args
);
1133 return NtGdiGetDeviceCaps( hdc
, cap
);
1136 NTSTATUS WINAPI
wow64_NtGdiGetDeviceGammaRamp( UINT
*args
)
1138 HDC hdc
= get_handle( &args
);
1139 void *ptr
= get_ptr( &args
);
1141 return NtGdiGetDeviceGammaRamp( hdc
, ptr
);
1144 NTSTATUS WINAPI
wow64_NtGdiGetFontData( UINT
*args
)
1146 HDC hdc
= get_handle( &args
);
1147 DWORD table
= get_ulong( &args
);
1148 DWORD offset
= get_ulong( &args
);
1149 void *buffer
= get_ptr( &args
);
1150 DWORD length
= get_ulong( &args
);
1152 return NtGdiGetFontData( hdc
, table
, offset
, buffer
, length
);
1155 NTSTATUS WINAPI
wow64_NtGdiGetFontFileData( UINT
*args
)
1157 DWORD instance_id
= get_ulong( &args
);
1158 DWORD file_index
= get_ulong( &args
);
1159 UINT64
*offset
= get_ptr( &args
);
1160 void *buff
= get_ptr( &args
);
1161 SIZE_T buff_size
= get_ulong( &args
);
1163 return NtGdiGetFontFileData( instance_id
, file_index
, offset
, buff
, buff_size
);
1166 NTSTATUS WINAPI
wow64_NtGdiGetFontFileInfo( UINT
*args
)
1168 DWORD instance_id
= get_ulong( &args
);
1169 DWORD file_index
= get_ulong( &args
);
1170 struct font_fileinfo
*info
= get_ptr( &args
);
1171 SIZE_T size
= get_ulong( &args
);
1172 ULONG
*needed32
= get_ptr( &args
);
1177 ret
= NtGdiGetFontFileInfo( instance_id
, file_index
, info
, size
, size_32to64( &needed
, needed32
));
1178 put_size( needed32
, needed
);
1182 NTSTATUS WINAPI
wow64_NtGdiGetFontUnicodeRanges( UINT
*args
)
1184 HDC hdc
= get_handle( &args
);
1185 GLYPHSET
*lpgs
= get_ptr( &args
);
1187 return NtGdiGetFontUnicodeRanges( hdc
, lpgs
);
1190 NTSTATUS WINAPI
wow64_NtGdiGetGlyphIndicesW( UINT
*args
)
1192 HDC hdc
= get_handle( &args
);
1193 const WCHAR
*str
= get_ptr( &args
);
1194 INT count
= get_ulong( &args
);
1195 WORD
*indices
= get_ptr( &args
);
1196 DWORD flags
= get_ulong( &args
);
1198 return NtGdiGetGlyphIndicesW( hdc
, str
, count
, indices
, flags
);
1201 NTSTATUS WINAPI
wow64_NtGdiGetGlyphOutline( UINT
*args
)
1203 HDC hdc
= get_handle( &args
);
1204 UINT ch
= get_ulong( &args
);
1205 UINT format
= get_ulong( &args
);
1206 GLYPHMETRICS
*metrics
= get_ptr( &args
);
1207 DWORD size
= get_ulong( &args
);
1208 void *buffer
= get_ptr( &args
);
1209 const MAT2
*mat2
= get_ptr( &args
);
1210 BOOL ignore_rotation
= get_ulong( &args
);
1212 return NtGdiGetGlyphOutline( hdc
, ch
, format
, metrics
, size
, buffer
, mat2
, ignore_rotation
);
1215 NTSTATUS WINAPI
wow64_NtGdiGetKerningPairs( UINT
*args
)
1217 HDC hdc
= get_handle( &args
);
1218 DWORD count
= get_ulong( &args
);
1219 KERNINGPAIR
*kern_pair
= get_ptr( &args
);
1221 return NtGdiGetKerningPairs( hdc
, count
, kern_pair
);
1224 NTSTATUS WINAPI
wow64_NtGdiGetNearestColor( UINT
*args
)
1226 HDC hdc
= get_handle( &args
);
1227 COLORREF color
= get_ulong( &args
);
1229 return NtGdiGetNearestColor( hdc
, color
);
1232 NTSTATUS WINAPI
wow64_NtGdiGetNearestPaletteIndex( UINT
*args
)
1234 HPALETTE hpalette
= get_handle( &args
);
1235 COLORREF color
= get_ulong( &args
);
1237 return NtGdiGetNearestPaletteIndex( hpalette
, color
);
1240 NTSTATUS WINAPI
wow64_NtGdiGetOutlineTextMetricsInternalW( UINT
*args
)
1242 HDC hdc
= get_handle( &args
);
1243 UINT size
= get_ulong( &args
);
1244 OUTLINETEXTMETRIC32
*otm32
= get_ptr( &args
);
1245 ULONG opts
= get_ulong( &args
);
1247 OUTLINETEXTMETRICW
*otm
, otm_buf
;
1249 static const size_t otm_size_diff
= sizeof(*otm
) - sizeof(*otm32
);
1256 else if (size
<= sizeof(*otm32
))
1258 size64
= sizeof(otm_buf
);
1263 size64
= size
+ otm_size_diff
;
1264 if (!(otm
= Wow64AllocateTemp( size64
))) return 0;
1267 if (!(ret
= NtGdiGetOutlineTextMetricsInternalW( hdc
, size64
, otm
, opts
))) return 0;
1271 OUTLINETEXTMETRIC32 out
;
1273 memcpy( &out
, otm
, FIELD_OFFSET( OUTLINETEXTMETRIC32
, otmpFamilyName
));
1274 if (out
.otmSize
>= sizeof(*otm
)) out
.otmSize
-= otm_size_diff
;
1276 if (!otm
->otmpFamilyName
) out
.otmpFamilyName
= 0;
1277 else out
.otmpFamilyName
= PtrToUlong( otm
->otmpFamilyName
) - otm_size_diff
;
1279 if (!otm
->otmpFaceName
) out
.otmpFaceName
= 0;
1280 else out
.otmpFaceName
= PtrToUlong( otm
->otmpFaceName
) - otm_size_diff
;
1282 if (!otm
->otmpStyleName
) out
.otmpStyleName
= 0;
1283 else out
.otmpStyleName
= PtrToUlong( otm
->otmpStyleName
) - otm_size_diff
;
1285 if (!otm
->otmpFullName
) out
.otmpFullName
= 0;
1286 else out
.otmpFullName
= PtrToUlong( otm
->otmpFullName
) - otm_size_diff
;
1288 memcpy( otm32
, &out
, min( size
, sizeof(out
) ));
1289 if (ret
> sizeof(*otm
)) memcpy( otm32
+ 1, otm
+ 1, ret
- sizeof(*otm
) );
1292 return ret
>= sizeof(*otm
) ? ret
- otm_size_diff
: ret
;
1295 NTSTATUS WINAPI
wow64_NtGdiGetPath( UINT
*args
)
1297 HDC hdc
= get_handle( &args
);
1298 POINT
*points
= get_ptr( &args
);
1299 BYTE
*types
= get_ptr( &args
);
1300 INT size
= get_ulong( &args
);
1302 return NtGdiGetPath( hdc
, points
, types
, size
);
1305 NTSTATUS WINAPI
wow64_NtGdiGetPixel( UINT
*args
)
1307 HDC hdc
= get_handle( &args
);
1308 INT x
= get_ulong( &args
);
1309 INT y
= get_ulong( &args
);
1311 return NtGdiGetPixel( hdc
, x
, y
);
1314 NTSTATUS WINAPI
wow64_NtGdiGetRandomRgn( UINT
*args
)
1316 HDC hdc
= get_handle( &args
);
1317 HRGN region
= get_handle( &args
);
1318 INT code
= get_ulong( &args
);
1320 return NtGdiGetRandomRgn( hdc
, region
, code
);
1323 NTSTATUS WINAPI
wow64_NtGdiGetRasterizerCaps( UINT
*args
)
1325 RASTERIZER_STATUS
*status
= get_ptr( &args
);
1326 UINT size
= get_ulong( &args
);
1328 return NtGdiGetRasterizerCaps( status
, size
);
1331 NTSTATUS WINAPI
wow64_NtGdiGetRealizationInfo( UINT
*args
)
1333 HDC hdc
= get_handle( &args
);
1334 struct font_realization_info
*info
= get_ptr( &args
);
1336 return NtGdiGetRealizationInfo( hdc
, info
);
1339 NTSTATUS WINAPI
wow64_NtGdiGetRegionData( UINT
*args
)
1341 HRGN hrgn
= get_ptr( &args
);
1342 DWORD count
= get_ulong( &args
);
1343 RGNDATA
*data
= get_ptr( &args
);
1345 return NtGdiGetRegionData( hrgn
, count
, data
);
1348 NTSTATUS WINAPI
wow64_NtGdiGetTextCharsetInfo( UINT
*args
)
1350 HDC hdc
= get_ptr( &args
);
1351 FONTSIGNATURE
*fs
= get_ptr( &args
);
1352 DWORD flags
= get_ulong( &args
);
1354 return NtGdiGetTextCharsetInfo( hdc
, fs
, flags
);
1357 NTSTATUS WINAPI
wow64_NtGdiGetTextExtentExW( UINT
*args
)
1359 HDC hdc
= get_handle( &args
);
1360 const WCHAR
*str
= get_ptr( &args
);
1361 INT count
= get_ulong( &args
);
1362 INT max_ext
= get_ulong( &args
);
1363 INT
*nfit
= get_ptr( &args
);
1364 INT
*dxs
= get_ptr( &args
);
1365 SIZE
*size
= get_ptr( &args
);
1366 UINT flags
= get_ulong( &args
);
1368 return NtGdiGetTextExtentExW( hdc
, str
, count
, max_ext
, nfit
, dxs
, size
, flags
);
1371 NTSTATUS WINAPI
wow64_NtGdiGetTextFaceW( UINT
*args
)
1373 HDC hdc
= get_handle( &args
);
1374 INT count
= get_ulong( &args
);
1375 WCHAR
*name
= get_ptr( &args
);
1376 BOOL alias_name
= get_ulong( &args
);
1378 return NtGdiGetTextFaceW( hdc
, count
, name
, alias_name
);
1381 NTSTATUS WINAPI
wow64_NtGdiGetTextMetricsW( UINT
*args
)
1383 HDC hdc
= get_handle( &args
);
1384 TEXTMETRICW
*metrics
= get_ptr( &args
);
1385 ULONG flags
= get_ulong( &args
);
1387 return NtGdiGetTextMetricsW( hdc
, metrics
, flags
);
1390 NTSTATUS WINAPI
wow64_NtGdiGradientFill( UINT
*args
)
1392 HDC hdc
= get_handle( &args
);
1393 TRIVERTEX
*vert_array
= get_ptr( &args
);
1394 ULONG nvert
= get_ulong( &args
);
1395 void *grad_array
= get_ptr( &args
);
1396 ULONG ngrad
= get_ulong( &args
);
1397 ULONG mode
= get_ulong( &args
);
1399 return NtGdiGradientFill( hdc
, vert_array
, nvert
, grad_array
, ngrad
, mode
);
1402 NTSTATUS WINAPI
wow64_NtGdiIcmBrushInfo( UINT
*args
)
1404 HDC hdc
= get_handle( &args
);
1405 HBRUSH handle
= get_handle( &args
);
1406 BITMAPINFO
*info
= get_ptr( &args
);
1407 void *bits
= get_ptr( &args
);
1408 ULONG
*bits_size
= get_ptr( &args
);
1409 UINT
*usage
= get_ptr( &args
);
1410 BOOL
*unk
= get_ptr( &args
);
1411 UINT mode
= get_ulong( &args
);
1413 return NtGdiIcmBrushInfo( hdc
, handle
, info
, bits
, bits_size
, usage
, unk
, mode
);
1416 NTSTATUS WINAPI
wow64_NtGdiInvertRgn( UINT
*args
)
1418 HDC hdc
= get_handle( &args
);
1419 HRGN hrgn
= get_handle( &args
);
1421 return NtGdiInvertRgn( hdc
, hrgn
);
1424 NTSTATUS WINAPI
wow64_NtGdiLineTo( UINT
*args
)
1426 HDC hdc
= get_handle( &args
);
1427 INT x
= get_ulong( &args
);
1428 INT y
= get_ulong( &args
);
1430 return NtGdiLineTo( hdc
, x
, y
);
1433 NTSTATUS WINAPI
wow64_NtGdiMaskBlt( UINT
*args
)
1435 HDC hdc
= get_handle( &args
);
1436 INT x_dst
= get_ulong( &args
);
1437 INT y_dst
= get_ulong( &args
);
1438 INT width_dst
= get_ulong( &args
);
1439 INT height_dst
= get_ulong( &args
);
1440 HDC hdc_src
= get_handle( &args
);
1441 INT x_src
= get_ulong( &args
);
1442 INT y_src
= get_ulong( &args
);
1443 HBITMAP mask
= get_handle( &args
);
1444 INT x_mask
= get_ulong( &args
);
1445 INT y_mask
= get_ulong( &args
);
1446 DWORD rop
= get_ulong( &args
);
1447 DWORD bk_color
= get_ulong( &args
);
1449 return NtGdiMaskBlt( hdc
, x_dst
, y_dst
, width_dst
, height_dst
, hdc_src
,
1450 x_src
, y_src
, mask
, x_mask
, y_mask
, rop
, bk_color
);
1453 NTSTATUS WINAPI
wow64_NtGdiModifyWorldTransform( UINT
*args
)
1455 HDC hdc
= get_handle( &args
);
1456 const XFORM
*xform
= get_ptr( &args
);
1457 DWORD mode
= get_ulong( &args
);
1459 return NtGdiModifyWorldTransform( hdc
, xform
, mode
);
1462 NTSTATUS WINAPI
wow64_NtGdiMoveTo( UINT
*args
)
1464 HDC hdc
= get_handle( &args
);
1465 INT x
= get_ulong( &args
);
1466 INT y
= get_ulong( &args
);
1467 POINT
*pt
= get_ptr( &args
);
1469 return NtGdiMoveTo( hdc
, x
, y
, pt
);
1472 NTSTATUS WINAPI
wow64_NtGdiPolyDraw( UINT
*args
)
1474 HDC hdc
= get_handle( &args
);
1475 const POINT
*points
= get_ptr( &args
);
1476 const BYTE
*types
= get_ptr( &args
);
1477 DWORD count
= get_ulong( &args
);
1479 return NtGdiPolyDraw( hdc
, points
, types
, count
);
1482 NTSTATUS WINAPI
wow64_NtGdiPolyPolyDraw( UINT
*args
)
1484 HDC hdc
= get_handle( &args
);
1485 const POINT
*points
= get_ptr( &args
);
1486 const ULONG
*counts
= get_ptr( &args
);
1487 DWORD count
= get_ulong( &args
);
1488 UINT function
= get_ulong( &args
);
1490 return NtGdiPolyPolyDraw( hdc
, points
, counts
, count
, function
);
1493 NTSTATUS WINAPI
wow64_NtGdiRectangle( UINT
*args
)
1495 HDC hdc
= get_handle( &args
);
1496 INT left
= get_ulong( &args
);
1497 INT top
= get_ulong( &args
);
1498 INT right
= get_ulong( &args
);
1499 INT bottom
= get_ulong( &args
);
1501 return NtGdiRectangle( hdc
, left
, top
, right
, bottom
);
1504 NTSTATUS WINAPI
wow64_NtGdiResetDC( UINT
*args
)
1506 HDC hdc
= get_handle( &args
);
1507 const DEVMODEW
*devmode
= get_ptr( &args
);
1508 BOOL
*banding
= get_ptr( &args
);
1509 DRIVER_INFO_2W
*driver_info
= get_ptr( &args
);
1510 void *dev
= get_ptr( &args
);
1512 return NtGdiResetDC( hdc
, devmode
, banding
, driver_info
, dev
);
1515 NTSTATUS WINAPI
wow64_NtGdiResizePalette( UINT
*args
)
1517 HPALETTE palette
= get_handle( &args
);
1518 UINT count
= get_ulong( &args
);
1520 return NtGdiResizePalette( palette
, count
);
1523 NTSTATUS WINAPI
wow64_NtGdiRestoreDC( UINT
*args
)
1525 HDC hdc
= get_handle( &args
);
1526 INT level
= get_ulong( &args
);
1528 return NtGdiRestoreDC( hdc
, level
);
1531 NTSTATUS WINAPI
wow64_NtGdiGetRgnBox( UINT
*args
)
1533 HRGN hrgn
= get_handle( &args
);
1534 RECT
*rect
= get_ptr( &args
);
1536 return NtGdiGetRgnBox( hrgn
, rect
);
1539 NTSTATUS WINAPI
wow64_NtGdiRoundRect( UINT
*args
)
1541 HDC hdc
= get_handle( &args
);
1542 INT left
= get_ulong( &args
);
1543 INT top
= get_ulong( &args
);
1544 INT right
= get_ulong( &args
);
1545 INT bottom
= get_ulong( &args
);
1546 INT ell_width
= get_ulong( &args
);
1547 INT ell_height
= get_ulong( &args
);
1549 return NtGdiRoundRect( hdc
, left
, top
, right
, bottom
, ell_width
, ell_height
);
1552 NTSTATUS WINAPI
wow64_NtGdiGetSpoolMessage( UINT
*args
)
1554 void *ptr1
= get_ptr( &args
);
1555 DWORD data2
= get_ulong( &args
);
1556 void *ptr3
= get_ptr( &args
);
1557 DWORD data4
= get_ulong( &args
);
1559 return NtGdiGetSpoolMessage( ptr1
, data2
, ptr3
, data4
);
1562 NTSTATUS WINAPI
wow64_NtGdiGetSystemPaletteUse( UINT
*args
)
1564 HDC hdc
= get_handle( &args
);
1566 return NtGdiGetSystemPaletteUse( hdc
);
1569 NTSTATUS WINAPI
wow64_NtGdiGetTransform( UINT
*args
)
1571 HDC hdc
= get_handle( &args
);
1572 DWORD which
= get_ulong( &args
);
1573 XFORM
*xform
= get_ptr( &args
);
1575 return NtGdiGetTransform( hdc
, which
, xform
);
1578 NTSTATUS WINAPI
wow64_NtGdiHfontCreate( UINT
*args
)
1580 const void *logfont
= get_ptr( &args
);
1581 ULONG unk2
= get_ulong( &args
);
1582 ULONG unk3
= get_ulong( &args
);
1583 ULONG unk4
= get_ulong( &args
);
1584 void *data
= get_ptr( &args
);
1586 return HandleToUlong( NtGdiHfontCreate( logfont
, unk2
, unk3
, unk4
, data
));
1589 NTSTATUS WINAPI
wow64_NtGdiInitSpool( UINT
*args
)
1591 return NtGdiInitSpool();
1594 NTSTATUS WINAPI
wow64_NtGdiIntersectClipRect( UINT
*args
)
1596 HDC hdc
= get_handle( &args
);
1597 INT left
= get_ulong( &args
);
1598 INT top
= get_ulong( &args
);
1599 INT right
= get_ulong( &args
);
1600 INT bottom
= get_ulong( &args
);
1602 return NtGdiIntersectClipRect( hdc
, left
, top
, right
, bottom
);
1605 NTSTATUS WINAPI
wow64_NtGdiOffsetClipRgn( UINT
*args
)
1607 HDC hdc
= get_handle( &args
);
1608 INT x
= get_ulong( &args
);
1609 INT y
= get_ulong( &args
);
1611 return NtGdiOffsetClipRgn( hdc
, x
, y
);
1614 NTSTATUS WINAPI
wow64_NtGdiOffsetRgn( UINT
*args
)
1616 HRGN hrgn
= get_handle( &args
);
1617 INT x
= get_ulong( &args
);
1618 INT y
= get_ulong( &args
);
1620 return NtGdiOffsetRgn( hrgn
, x
, y
);
1623 NTSTATUS WINAPI
wow64_NtGdiOpenDCW( UINT
*args
)
1625 UNICODE_STRING32
*device32
= get_ptr( &args
);
1626 const DEVMODEW
*devmode
= get_ptr( &args
);
1627 UNICODE_STRING32
*output32
= get_ptr( &args
);
1628 ULONG type
= get_ulong( &args
);
1629 BOOL is_display
= get_ulong( &args
);
1630 HANDLE hspool
= get_handle( &args
);
1631 DRIVER_INFO_2W
*driver_info
= get_ptr( &args
);
1632 void *pdev
= get_ptr( &args
);
1634 UNICODE_STRING device
, output
;
1635 HDC ret
= NtGdiOpenDCW( unicode_str_32to64( &device
, device32
), devmode
,
1636 unicode_str_32to64( &output
, output32
), type
,
1637 is_display
, hspool
, driver_info
, pdev
);
1638 return HandleToUlong( ret
);
1641 NTSTATUS WINAPI
wow64_NtGdiPatBlt( UINT
*args
)
1643 HDC hdc
= get_handle( &args
);
1644 INT left
= get_ulong( &args
);
1645 INT top
= get_ulong( &args
);
1646 INT width
= get_ulong( &args
);
1647 INT height
= get_ulong( &args
);
1648 DWORD rop
= get_ulong( &args
);
1650 return NtGdiPatBlt( hdc
, left
, top
, width
, height
, rop
);
1653 NTSTATUS WINAPI
wow64_NtGdiPathToRegion( UINT
*args
)
1655 HDC hdc
= get_handle( &args
);
1657 return HandleToUlong( NtGdiPathToRegion( hdc
));
1660 NTSTATUS WINAPI
wow64_NtGdiPlgBlt( UINT
*args
)
1662 HDC hdc
= get_handle( &args
);
1663 const POINT
*point
= get_ptr( &args
);
1664 HDC hdc_src
= get_handle( &args
);
1665 INT x_src
= get_ulong( &args
);
1666 INT y_src
= get_ulong( &args
);
1667 INT width
= get_ulong( &args
);
1668 INT height
= get_ulong( &args
);
1669 HBITMAP mask
= get_handle( &args
);
1670 INT x_mask
= get_ulong( &args
);
1671 INT y_mask
= get_ulong( &args
);
1672 DWORD bk_color
= get_ulong( &args
);
1674 return NtGdiPlgBlt( hdc
, point
, hdc_src
, x_src
, y_src
, width
, height
,
1675 mask
, x_mask
, y_mask
, bk_color
);
1678 NTSTATUS WINAPI
wow64_NtGdiPtInRegion( UINT
*args
)
1680 HRGN hrgn
= get_handle( &args
);
1681 INT x
= get_ulong( &args
);
1682 INT y
= get_ulong( &args
);
1684 return NtGdiPtInRegion( hrgn
, x
, y
);
1687 NTSTATUS WINAPI
wow64_NtGdiPtVisible( UINT
*args
)
1689 HDC hdc
= get_handle( &args
);
1690 INT x
= get_ulong( &args
);
1691 INT y
= get_ulong( &args
);
1693 return NtGdiPtVisible( hdc
, x
, y
);
1696 NTSTATUS WINAPI
wow64_NtGdiRectInRegion( UINT
*args
)
1698 HRGN hrgn
= get_handle( &args
);
1699 const RECT
*rect
= get_ptr( &args
);
1701 return NtGdiRectInRegion( hrgn
, rect
);
1704 NTSTATUS WINAPI
wow64_NtGdiRectVisible( UINT
*args
)
1706 HDC hdc
= get_handle( &args
);
1707 const RECT
*rect
= get_ptr( &args
);
1709 return NtGdiRectVisible( hdc
, rect
);
1712 NTSTATUS WINAPI
wow64_NtGdiRemoveFontMemResourceEx( UINT
*args
)
1714 HANDLE handle
= get_handle( &args
);
1716 return NtGdiRemoveFontMemResourceEx( handle
);
1719 NTSTATUS WINAPI
wow64_NtGdiRemoveFontResourceW( UINT
*args
)
1721 const WCHAR
*str
= get_ptr( &args
);
1722 ULONG size
= get_ulong( &args
);
1723 ULONG files
= get_ulong( &args
);
1724 DWORD flags
= get_ulong( &args
);
1725 DWORD tid
= get_ulong( &args
);
1726 void *dv
= get_ptr( &args
);
1728 return NtGdiRemoveFontResourceW( str
, size
, files
, flags
, tid
, dv
);
1731 NTSTATUS WINAPI
wow64_NtGdiSaveDC( UINT
*args
)
1733 HDC hdc
= get_handle( &args
);
1735 return NtGdiSaveDC( hdc
);
1738 NTSTATUS WINAPI
wow64_NtGdiScaleViewportExtEx( UINT
*args
)
1740 HDC hdc
= get_handle( &args
);
1741 INT x_num
= get_ulong( &args
);
1742 INT x_denom
= get_ulong( &args
);
1743 INT y_num
= get_ulong( &args
);
1744 INT y_denom
= get_ulong( &args
);
1745 SIZE
*size
= get_ptr( &args
);
1747 return NtGdiScaleViewportExtEx( hdc
, x_num
, x_denom
, y_num
, y_denom
, size
);
1750 NTSTATUS WINAPI
wow64_NtGdiScaleWindowExtEx( UINT
*args
)
1752 HDC hdc
= get_handle( &args
);
1753 INT x_num
= get_ulong( &args
);
1754 INT x_denom
= get_ulong( &args
);
1755 INT y_num
= get_ulong( &args
);
1756 INT y_denom
= get_ulong( &args
);
1757 SIZE
*size
= get_ptr( &args
);
1759 return NtGdiScaleWindowExtEx( hdc
, x_num
, x_denom
, y_num
, y_denom
, size
);
1762 NTSTATUS WINAPI
wow64_NtGdiSelectBitmap( UINT
*args
)
1764 HDC hdc
= get_handle( &args
);
1765 HGDIOBJ handle
= get_handle( &args
);
1767 return HandleToUlong( NtGdiSelectBitmap( hdc
, handle
));
1770 NTSTATUS WINAPI
wow64_NtGdiSelectBrush( UINT
*args
)
1772 HDC hdc
= get_handle( &args
);
1773 HGDIOBJ handle
= get_handle( &args
);
1775 return HandleToUlong( NtGdiSelectBrush( hdc
, handle
));
1778 NTSTATUS WINAPI
wow64_NtGdiSelectClipPath( UINT
*args
)
1780 HDC hdc
= get_handle( &args
);
1781 INT mode
= get_ulong( &args
);
1783 return NtGdiSelectClipPath( hdc
, mode
);
1786 NTSTATUS WINAPI
wow64_NtGdiSelectFont( UINT
*args
)
1788 HDC hdc
= get_handle( &args
);
1789 HGDIOBJ handle
= get_handle( &args
);
1791 return HandleToUlong( NtGdiSelectFont( hdc
, handle
));
1794 NTSTATUS WINAPI
wow64_NtGdiSelectPen( UINT
*args
)
1796 HDC hdc
= get_handle( &args
);
1797 HGDIOBJ handle
= get_handle( &args
);
1799 return HandleToUlong( NtGdiSelectPen( hdc
, handle
));
1802 NTSTATUS WINAPI
wow64_NtGdiSetBitmapBits( UINT
*args
)
1804 HBITMAP hbitmap
= get_handle( &args
);
1805 LONG count
= get_ulong( &args
);
1806 const void *bits
= get_ptr( &args
);
1808 return NtGdiSetBitmapBits( hbitmap
, count
, bits
);
1811 NTSTATUS WINAPI
wow64_NtGdiSetBitmapDimension( UINT
*args
)
1813 HBITMAP hbitmap
= get_handle( &args
);
1814 INT x
= get_ulong( &args
);
1815 INT y
= get_ulong( &args
);
1816 SIZE
*prev_size
= get_ptr( &args
);
1818 return NtGdiSetBitmapDimension( hbitmap
, x
, y
, prev_size
);
1821 NTSTATUS WINAPI
wow64_NtGdiSetBoundsRect( UINT
*args
)
1823 HDC hdc
= get_handle( &args
);
1824 const RECT
*rect
= get_ptr( &args
);
1825 UINT flags
= get_ulong( &args
);
1827 return NtGdiSetBoundsRect( hdc
, rect
, flags
);
1830 NTSTATUS WINAPI
wow64_NtGdiSetBrushOrg( UINT
*args
)
1832 HDC hdc
= get_handle( &args
);
1833 INT x
= get_ulong( &args
);
1834 INT y
= get_ulong( &args
);
1835 POINT
*prev_org
= get_ptr( &args
);
1837 return NtGdiSetBrushOrg( hdc
, x
, y
, prev_org
);
1840 NTSTATUS WINAPI
wow64_NtGdiSetColorAdjustment( UINT
*args
)
1842 HDC hdc
= get_handle( &args
);
1843 const COLORADJUSTMENT
*ca
= get_ptr( &args
);
1845 return NtGdiSetColorAdjustment( hdc
, ca
);
1848 NTSTATUS WINAPI
wow64_NtGdiSetDIBitsToDeviceInternal( UINT
*args
)
1850 HDC hdc
= get_handle( &args
);
1851 INT x_dst
= get_ulong( &args
);
1852 INT y_dst
= get_ulong( &args
);
1853 DWORD cx
= get_ulong( &args
);
1854 DWORD cy
= get_ulong( &args
);
1855 INT x_src
= get_ulong( &args
);
1856 INT y_src
= get_ulong( &args
);
1857 UINT startscan
= get_ulong( &args
);
1858 UINT lines
= get_ulong( &args
);
1859 const void *bits
= get_ptr( &args
);
1860 const BITMAPINFO
*bmi
= get_ptr( &args
);
1861 UINT coloruse
= get_ulong( &args
);
1862 UINT max_bits
= get_ulong( &args
);
1863 UINT max_info
= get_ulong( &args
);
1864 BOOL xform_coords
= get_ulong( &args
);
1865 HANDLE xform
= get_handle( &args
);
1867 return NtGdiSetDIBitsToDeviceInternal( hdc
, x_dst
, y_dst
, cx
, cy
, x_src
, y_src
,
1868 startscan
, lines
, bits
, bmi
, coloruse
,
1869 max_bits
, max_info
, xform_coords
, xform
);
1872 NTSTATUS WINAPI
wow64_NtGdiSetDeviceGammaRamp( UINT
*args
)
1874 HDC hdc
= get_handle( &args
);
1875 void *ptr
= get_ptr( &args
);
1877 return NtGdiSetDeviceGammaRamp( hdc
, ptr
);
1880 NTSTATUS WINAPI
wow64_NtGdiSetLayout( UINT
*args
)
1882 HDC hdc
= get_handle( &args
);
1883 LONG wox
= get_ulong( &args
);
1884 DWORD layout
= get_ulong( &args
);
1886 return NtGdiSetLayout( hdc
, wox
, layout
);
1889 NTSTATUS WINAPI
wow64_NtGdiSetMagicColors( UINT
*args
)
1891 HDC hdc
= get_handle( &args
);
1892 DWORD magic
= get_ulong( &args
);
1893 ULONG index
= get_ulong( &args
);
1895 return NtGdiSetMagicColors( hdc
, magic
, index
);
1898 NTSTATUS WINAPI
wow64_NtGdiSetMetaRgn( UINT
*args
)
1900 HDC hdc
= get_handle( &args
);
1902 return NtGdiSetMetaRgn( hdc
);
1905 NTSTATUS WINAPI
wow64_NtGdiSetPixel( UINT
*args
)
1907 HDC hdc
= get_handle( &args
);
1908 INT x
= get_ulong( &args
);
1909 INT y
= get_ulong( &args
);
1910 COLORREF color
= get_ulong( &args
);
1912 return NtGdiSetPixel( hdc
, x
, y
, color
);
1915 NTSTATUS WINAPI
wow64_NtGdiSetPixelFormat( UINT
*args
)
1917 HDC hdc
= get_handle( &args
);
1918 INT format
= get_ulong( &args
);
1920 return NtGdiSetPixelFormat( hdc
, format
);
1923 NTSTATUS WINAPI
wow64_NtGdiSetRectRgn( UINT
*args
)
1925 HRGN hrgn
= get_handle( &args
);
1926 INT left
= get_ulong( &args
);
1927 INT top
= get_ulong( &args
);
1928 INT right
= get_ulong( &args
);
1929 INT bottom
= get_ulong( &args
);
1931 return NtGdiSetRectRgn( hrgn
, left
, top
, right
, bottom
);
1934 NTSTATUS WINAPI
wow64_NtGdiSetSystemPaletteUse( UINT
*args
)
1936 HDC hdc
= get_handle( &args
);
1937 UINT use
= get_ulong( &args
);
1939 return NtGdiSetSystemPaletteUse( hdc
, use
);
1942 NTSTATUS WINAPI
wow64_NtGdiSetTextJustification( UINT
*args
)
1944 HDC hdc
= get_handle( &args
);
1945 INT extra
= get_ulong( &args
);
1946 INT breaks
= get_ulong( &args
);
1948 return NtGdiSetTextJustification( hdc
, extra
, breaks
);
1951 NTSTATUS WINAPI
wow64_NtGdiSetVirtualResolution( UINT
*args
)
1953 HDC hdc
= get_handle( &args
);
1954 DWORD horz_res
= get_ulong( &args
);
1955 DWORD vert_res
= get_ulong( &args
);
1956 DWORD horz_size
= get_ulong( &args
);
1957 DWORD vert_size
= get_ulong( &args
);
1959 return NtGdiSetVirtualResolution( hdc
, horz_res
, vert_res
, horz_size
, vert_size
);
1962 NTSTATUS WINAPI
wow64_NtGdiStartDoc( UINT
*args
)
1964 HDC hdc
= get_handle( &args
);
1972 } *doc32
= get_ptr( &args
);
1973 BOOL
*banding
= get_ptr( &args
);
1974 INT job
= get_ulong( &args
);
1977 doc
.cbSize
= sizeof(doc
);
1978 doc
.lpszDocName
= UlongToPtr( doc32
->lpszDocName
);
1979 doc
.lpszOutput
= UlongToPtr( doc32
->lpszOutput
);
1980 doc
.lpszDatatype
= UlongToPtr( doc32
->lpszDatatype
);
1981 doc
.fwType
= doc32
->fwType
;
1983 return NtGdiStartDoc( hdc
, &doc
, banding
, job
);
1986 NTSTATUS WINAPI
wow64_NtGdiStartPage( UINT
*args
)
1988 HDC hdc
= get_handle( &args
);
1990 return NtGdiStartPage( hdc
);
1993 NTSTATUS WINAPI
wow64_NtGdiStretchBlt( UINT
*args
)
1995 HDC hdc
= get_handle( &args
);
1996 INT x_dst
= get_ulong( &args
);
1997 INT y_dst
= get_ulong( &args
);
1998 INT width_dst
= get_ulong( &args
);
1999 INT height_dst
= get_ulong( &args
);
2000 HDC hdc_src
= get_handle( &args
);
2001 INT x_src
= get_ulong( &args
);
2002 INT y_src
= get_ulong( &args
);
2003 INT width_src
= get_ulong( &args
);
2004 INT height_src
= get_ulong( &args
);
2005 DWORD rop
= get_ulong( &args
);
2006 COLORREF bk_color
= get_ulong( &args
);
2008 return NtGdiStretchBlt( hdc
, x_dst
, y_dst
, width_dst
, height_dst
, hdc_src
,
2009 x_src
, y_src
, width_src
, height_src
, rop
, bk_color
);
2012 NTSTATUS WINAPI
wow64_NtGdiStretchDIBitsInternal( UINT
*args
)
2014 HDC hdc
= get_handle( &args
);
2015 INT x_dst
= get_ulong( &args
);
2016 INT y_dst
= get_ulong( &args
);
2017 INT width_dst
= get_ulong( &args
);
2018 INT height_dst
= get_ulong( &args
);
2019 INT x_src
= get_ulong( &args
);
2020 INT y_src
= get_ulong( &args
);
2021 INT width_src
= get_ulong( &args
);
2022 INT height_src
= get_ulong( &args
);
2023 const void *bits
= get_ptr( &args
);
2024 const BITMAPINFO
*bmi
= get_ptr( &args
);
2025 UINT coloruse
= get_ulong( &args
);
2026 DWORD rop
= get_ulong( &args
);
2027 UINT max_info
= get_ulong( &args
);
2028 UINT max_bits
= get_ulong( &args
);
2029 HANDLE xform
= get_handle( &args
);
2031 return NtGdiStretchDIBitsInternal( hdc
, x_dst
, y_dst
, width_dst
, height_dst
,
2032 x_src
, y_src
, width_src
, height_src
, bits
, bmi
,
2033 coloruse
, rop
, max_info
, max_bits
, xform
);
2036 NTSTATUS WINAPI
wow64_NtGdiStrokeAndFillPath( UINT
*args
)
2038 HDC hdc
= get_handle( &args
);
2040 return NtGdiStrokeAndFillPath( hdc
);
2043 NTSTATUS WINAPI
wow64_NtGdiStrokePath( UINT
*args
)
2045 HDC hdc
= get_handle( &args
);
2047 return NtGdiStrokePath( hdc
);
2050 NTSTATUS WINAPI
wow64_NtGdiSwapBuffers( UINT
*args
)
2052 HDC hdc
= get_handle( &args
);
2054 return NtGdiSwapBuffers( hdc
);
2057 NTSTATUS WINAPI
wow64_NtGdiTransparentBlt( UINT
*args
)
2059 HDC hdc
= get_handle( &args
);
2060 int x_dst
= get_ulong( &args
);
2061 int y_dst
= get_ulong( &args
);
2062 int width_dst
= get_ulong( &args
);
2063 int height_dst
= get_ulong( &args
);
2064 HDC hdc_src
= get_handle( &args
);
2065 int x_src
= get_ulong( &args
);
2066 int y_src
= get_ulong( &args
);
2067 int width_src
= get_ulong( &args
);
2068 int height_src
= get_ulong( &args
);
2069 UINT color
= get_ulong( &args
);
2071 return NtGdiTransparentBlt( hdc
, x_dst
, y_dst
, width_dst
, height_dst
, hdc_src
,
2072 x_src
, y_src
, width_src
, height_src
, color
);
2075 NTSTATUS WINAPI
wow64_NtGdiTransformPoints( UINT
*args
)
2077 HDC hdc
= get_handle( &args
);
2078 const POINT
*points_in
= get_ptr( &args
);
2079 POINT
*points_out
= get_ptr( &args
);
2080 INT count
= get_ulong( &args
);
2081 UINT mode
= get_ulong( &args
);
2083 return NtGdiTransformPoints( hdc
, points_in
, points_out
, count
, mode
);
2086 NTSTATUS WINAPI
wow64_NtGdiUnrealizeObject( UINT
*args
)
2088 HGDIOBJ obj
= get_handle( &args
);
2090 return NtGdiUnrealizeObject( obj
);
2093 NTSTATUS WINAPI
wow64_NtGdiUpdateColors( UINT
*args
)
2095 HDC hdc
= get_handle( &args
);
2097 return NtGdiUpdateColors( hdc
);
2100 NTSTATUS WINAPI
wow64_NtGdiWidenPath( UINT
*args
)
2102 HDC hdc
= get_handle( &args
);
2104 return NtGdiWidenPath( hdc
);
2107 NTSTATUS WINAPI
wow64___wine_get_icm_profile( UINT
*args
)
2109 HDC hdc
= get_handle( &args
);
2110 BOOL allow_default
= get_ulong( &args
);
2111 DWORD
*size
= get_ptr( &args
);
2112 WCHAR
*filename
= get_ptr( &args
);
2114 return __wine_get_icm_profile( hdc
, allow_default
, size
, filename
);
2117 NTSTATUS WINAPI
wow64___wine_get_file_outline_text_metric( UINT
*args
)
2119 const WCHAR
*path
= get_ptr( &args
);
2120 TEXTMETRICW
*otm
= get_ptr( &args
);
2121 UINT
*em_square
= get_ptr( &args
);
2122 WCHAR
*face_name
= get_ptr( &args
);
2124 return __wine_get_file_outline_text_metric( path
, otm
, em_square
, face_name
);