32 0, {0,0,0,0}, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
59 BYTE *pjMskLine, *pjMskCurrent;
60 BYTE fjMaskBit0, fjMaskBit;
63 ULONG PatternWidth = 0, PatternHeight = 0;
64 LONG PatternX0 = 0, PatternX = 0, PatternY = 0;
65 LONG SrcX = 0, SrcY = 0;
69 DWORD fgndRop, bkgndRop;
80 if (
pbo &&
pbo->iSolidColor == 0xFFFFFFFF)
102 fjMaskBit0 = 0x80 >> (
pptlMask->x & 0x07);
113 SrcY = pptlSource->
y;
114 SrcX = pptlSource->
x;
122 PatternY += PatternHeight;
127 PatternX0 += PatternWidth;
129 PatternX = PatternX0;
133 Pattern =
pbo ?
pbo->iSolidColor : 0;
138 pjMskCurrent = pjMskLine;
139 fjMaskBit = fjMaskBit0;
143 Rop4 = (*pjMskCurrent & fjMaskBit) ? fgndRop : bkgndRop;
148 Pattern = fnPattern_GetPixel(
psoPattern, PatternX, PatternY);
150 PatternX %= PatternWidth;
158 fnSrc_GetPixel(psoSource, SrcX, SrcY));
164 Dest = fnDest_GetPixel(psoDest,
x,
y);
166 fnDest_PutPixel(psoDest,
173 fjMaskBit =
_rotr8(fjMaskBit, 1);
174 pjMskCurrent += (fjMaskBit >> 7);
180 PatternY %= PatternHeight;
181 PatternX = PatternX0;
186 SrcX = pptlSource->
x;
266 DPRINT(
"CallDibBitBlt: BltInfo.DestRect: (%d,%d)-(%d,%d)\n",
320 return EngBitBlt(psoTrg,
psoSrc,
psoMask,
pco,
pxlo, &rclTrg, &ptlSrc, &ptlMask,
pbo, &ptlBrush, Rop4);
356 BOOL UsesSource, UsesMask;
357 POINTL AdjustedBrushOrigin;
359 BOOLEAN bTopToBottom, bLeftToRight;
370 bLeftToRight =
FALSE;
379 bTopToBottom =
FALSE;
393 DPRINT(
"EngBitBlt: prclTrg: (%d,%d)-(%d,%d)\n",
396 DPRINT(
"EngBitBlt: OutputRect: (%d,%d)-(%d,%d)\n",
409 if (InputPoint.
x < 0)
411 OutputRect.
left -= InputPoint.
x;
414 if (InputPoint.
y < 0)
416 OutputRect.
top -= InputPoint.
y;
419 if (
psoSrc->sizlBitmap.cx < InputPoint.
x +
423 psoSrc->sizlBitmap.cx - InputPoint.
x;
425 if (
psoSrc->sizlBitmap.cy < InputPoint.
y +
429 psoSrc->sizlBitmap.cy - InputPoint.
y;
432 InputRect.
left = InputPoint.
x;
434 InputRect.
top = InputPoint.
y;
441 InputPoint.
x = InputPoint.
y = 0;
450 if (OutputRect.
left <
pco->rclBounds.left)
452 InputRect.
left +=
pco->rclBounds.left - OutputRect.
left;
453 InputPoint.
x +=
pco->rclBounds.left - OutputRect.
left;
454 OutputRect.
left =
pco->rclBounds.left;
456 if (
pco->rclBounds.right < OutputRect.
right)
459 OutputRect.
right =
pco->rclBounds.right;
461 if (OutputRect.
top <
pco->rclBounds.top)
463 InputRect.
top +=
pco->rclBounds.top - OutputRect.
top;
464 InputPoint.
y +=
pco->rclBounds.top - OutputRect.
top;
465 OutputRect.
top =
pco->rclBounds.top;
467 if (
pco->rclBounds.bottom < OutputRect.
bottom)
470 OutputRect.
bottom =
pco->rclBounds.bottom;
476 if (OutputRect.
right <= OutputRect.
left ||
491 AdjustedBrushOrigin.
x = 0;
492 AdjustedBrushOrigin.
y = 0;
502 clippingType =
pco->iDComplexity;
524 if (
pbo &&
pbo->iSolidColor == 0xFFFFFFFF)
535 switch (clippingType)
541 lTmp = OutputRect.
left;
543 OutputRect.
right = lTmp;
548 lTmp = OutputRect.
top;
553 Ret = (*BltRectFunc)(OutputObj,
561 &AdjustedBrushOrigin,
566 ClipRect.
left =
pco->rclBounds.left;
567 ClipRect.
right =
pco->rclBounds.right;
568 ClipRect.
top =
pco->rclBounds.top;
575 AdjustedBrushOrigin.x = BrushOrigin->x + CombinedRect.
left - OutputRect.left;
576 AdjustedBrushOrigin.y = BrushOrigin->y + CombinedRect.
top - OutputRect.top;
579 Pt.
x = InputPoint.x + CombinedRect.
left - OutputRect.left;
580 Pt.
y = InputPoint.y + CombinedRect.
top - OutputRect.top;
581 Ret = (*BltRectFunc)(OutputObj,
589 &AdjustedBrushOrigin,
595 if (OutputObj == InputObj)
597 if (OutputRect.top < InputPoint.y)
599 Direction = OutputRect.left < InputPoint.x ?
604 Direction = OutputRect.left < InputPoint.x ?
618 for (
i = 0;
i < RectEnum.c;
i++)
620 ClipRect.
left = RectEnum.arcl[
i].left;
621 ClipRect.
right = RectEnum.arcl[
i].right;
622 ClipRect.
top = RectEnum.arcl[
i].top;
623 ClipRect.
bottom = RectEnum.arcl[
i].bottom;
629 AdjustedBrushOrigin.x = BrushOrigin->x + CombinedRect.
left - OutputRect.left;
630 AdjustedBrushOrigin.y = BrushOrigin->y + CombinedRect.
top - OutputRect.top;
633 Pt.
x = InputPoint.x + CombinedRect.
left - OutputRect.left;
634 Pt.
y = InputPoint.y + CombinedRect.
top - OutputRect.top;
635 Ret = (*BltRectFunc)(OutputObj,
643 &AdjustedBrushOrigin,
678 BOOLEAN bTopToBottom, bLeftToRight;
736 rclClipped.
top += (rclSrcClipped.
top - rclSrc.
top);
764 DPRINT1(
"Need to copy to standard bitmap format!\n");
784 lTmp = rclClipped.
left;
786 rclClipped.
right = lTmp;
791 lTmp = rclClipped.
top;
796 DPRINT(
"About to call EngBitBlt: rclClipped: (%d,%d)-(%d,%d)\n",
799 bResult = pfnBitBlt(psoTrg,
835 ULONG Background, BrushColor, NewColor;
852 for (
j = 0;
j <
dy;
j++)
855 for (
i = 0;
i <
dx;
i++)
920 POINTL AdjustedBrushOrigin;
939 OutputRect = *DestRect;
940 if (
NULL != ClipRegion)
969 InputPoint.
x = InputRect.
left + Translate.
x;
970 InputPoint.
y = InputRect.
top + Translate.
y;
980 if (!
IntEngEnter(&EnterLeaveDest, psoDest, &OutputRect,
FALSE, &Translate, &psoOutput))
986 OutputRect.
left = DestRect->
left + Translate.
x;
988 OutputRect.
top = DestRect->
top + Translate.
y;
993 AdjustedBrushOrigin.
x = BrushOrigin->
x + Translate.
x;
994 AdjustedBrushOrigin.
y = BrushOrigin->
y + Translate.
y;
997 AdjustedBrushOrigin = Translate;
1007 switch (clippingType)
1011 Ret =
AlphaBltMask(psoOutput,
NULL , psoInput, DestColorTranslation, SourceColorTranslation,
1012 &OutputRect,
NULL, &InputPoint,
pbo, &AdjustedBrushOrigin);
1014 Ret =
BltMask(psoOutput,
NULL, psoInput, DestColorTranslation,
1015 &OutputRect,
NULL, &InputPoint,
pbo, &AdjustedBrushOrigin,
1026 Pt.
x = InputPoint.
x + CombinedRect.
left - OutputRect.
left;
1027 Pt.
y = InputPoint.
y + CombinedRect.
top - OutputRect.
top;
1030 Ret =
AlphaBltMask(psoOutput,
NULL, psoInput, DestColorTranslation, SourceColorTranslation,
1031 &CombinedRect,
NULL, &Pt,
pbo, &AdjustedBrushOrigin);
1035 Ret =
BltMask(psoOutput,
NULL, psoInput, DestColorTranslation,
1042 if (psoOutput == psoInput)
1044 if (OutputRect.
top < InputPoint.
y)
1062 for (
i = 0;
i < RectEnum.c;
i++)
1064 ClipRect.
left = RectEnum.arcl[
i].left + Translate.
x;
1065 ClipRect.
right = RectEnum.arcl[
i].right + Translate.
x;
1066 ClipRect.
top = RectEnum.arcl[
i].top + Translate.
y;
1067 ClipRect.
bottom = RectEnum.arcl[
i].bottom + Translate.
y;
1070 Pt.
x = InputPoint.
x + CombinedRect.
left - OutputRect.
left;
1071 Pt.
y = InputPoint.
y + CombinedRect.
top - OutputRect.
top;
1075 DestColorTranslation,
1076 SourceColorTranslation,
1077 &CombinedRect,
NULL, &Pt,
pbo,
1078 &AdjustedBrushOrigin) && Ret;
1083 DestColorTranslation, &CombinedRect,
NULL,
1084 &Pt,
pbo, &AdjustedBrushOrigin,
1178 psoDest->iBitmapFormat,
1183 if (psurfTemp ==
NULL)
#define R3_OPINDEX_SRCCOPY
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
BOOL APIENTRY IntEngEnter(PINTENG_ENTER_LEAVE EnterLeave, SURFOBJ *psoDest, RECTL *DestRect, BOOL ReadOnly, POINTL *Translate, SURFOBJ **ppsoOutput)
BOOL APIENTRY IntEngLeave(PINTENG_ENTER_LEAVE EnterLeave)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
#define BRUSHOBJ_psoPattern(pbo)
#define BRUSHOBJ_psoMask(pbo)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define EXCEPTION_EXECUTE_HANDLER
#define ROP4_USES_DEST(Rop4)
#define ROP4_USES_PATTERN(Rop4)
#define ROP4_USES_MASK(Rop4)
#define IS_VALID_ROP4(rop)
#define ROP4_USES_SOURCE(Rop4)
_Check_return_ unsigned char __cdecl _rotr8(_In_ unsigned char _Value, _In_ unsigned char _Shift)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
_Out_opt_ int _Out_opt_ int * cy
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
PFN_DIB_BitBlt DIB_BitBltSrcCopy
PFN_DIB_PutPixel DIB_PutPixel
PFN_DIB_BitBlt DIB_BitBlt
PFN_DIB_GetPixel DIB_GetPixel
PFN_DIB_ColorFill DIB_ColorFill
XLATEOBJ * XlateSourceToDest
#define RtlCopyMemory(Destination, Source, Length)
#define CONTAINING_RECORD(address, type, field)
WDF_EXTERN_C_START typedef _In_ WDFDEVICE _In_ WDFCONTEXT _In_ WDF_DMA_DIRECTION Direction
BOOL(APIENTRY * PBLTRECTFUNC)(SURFOBJ *OutputObj, SURFOBJ *InputObj, SURFOBJ *Mask, XLATEOBJ *ColorTranslation, RECTL *OutputRect, POINTL *InputPoint, POINTL *MaskOrigin, BRUSHOBJ *Brush, POINTL *BrushOrigin, ROP4 Rop4)
ULONG DIB_DoRop(ULONG Rop, ULONG Dest, ULONG Source, ULONG Pattern)
DIB_FUNCTIONS DibFunctionsForBitmapFormat[]
#define DIB_GetSource(SourceSurf, sx, sy, ColorTranslation)
ULONG(* PFN_DIB_GetPixel)(SURFOBJ *, LONG, LONG)
VOID(* PFN_DIB_PutPixel)(SURFOBJ *, LONG, LONG, ULONG)
static BOOLEAN APIENTRY AlphaBltMask(SURFOBJ *psoDest, SURFOBJ *psoSource, SURFOBJ *psoMask, XLATEOBJ *pxloRGB2Dest, XLATEOBJ *pxloBrush, RECTL *prclDest, POINTL *pptlSource, POINTL *pptlMask, BRUSHOBJ *pbo, POINTL *pptlBrush)
BOOL APIENTRY EngBitBlt(_Inout_ SURFOBJ *psoTrg, _In_opt_ SURFOBJ *psoSrc, _In_opt_ SURFOBJ *psoMask, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ RECTL *prclTrg, _In_opt_ POINTL *pptlSrc, _In_opt_ POINTL *pptlMask, _In_opt_ BRUSHOBJ *pbo, _In_opt_ POINTL *pptlBrush, _In_ ROP4 rop4)
BOOL APIENTRY IntEngBitBlt(SURFOBJ *psoTrg, SURFOBJ *psoSrc, SURFOBJ *psoMask, CLIPOBJ *pco, XLATEOBJ *pxlo, RECTL *prclTrg, POINTL *pptlSrc, POINTL *pptlMask, BRUSHOBJ *pbo, POINTL *pptlBrush, ROP4 Rop4)
static BOOLEAN APIENTRY BltMask(SURFOBJ *psoDest, SURFOBJ *psoSource, SURFOBJ *psoMask, XLATEOBJ *ColorTranslation, RECTL *prclDest, POINTL *pptlSource, POINTL *pptlMask, BRUSHOBJ *pbo, POINTL *pptlBrush, ROP4 Rop4)
static BOOLEAN APIENTRY CallDibBitBlt(SURFOBJ *OutputObj, SURFOBJ *InputObj, SURFOBJ *Mask, XLATEOBJ *ColorTranslation, RECTL *OutputRect, POINTL *InputPoint, POINTL *MaskOrigin, BRUSHOBJ *pbo, POINTL *BrushOrigin, ROP4 Rop4)
BOOL APIENTRY IntEngMaskBlt(_Inout_ SURFOBJ *psoDest, _In_ SURFOBJ *psoMask, _In_ CLIPOBJ *pco, _In_ XLATEOBJ *pxloDest, _In_ XLATEOBJ *pxloSource, _In_ RECTL *prclDest, _In_ POINTL *pptlMask, _In_ BRUSHOBJ *pbo, _In_ POINTL *pptlBrushOrg)
static BOOLEAN APIENTRY BltPatCopy(SURFOBJ *Dest, SURFOBJ *Source, SURFOBJ *Mask, XLATEOBJ *ColorTranslation, RECTL *DestRect, POINTL *SourcePoint, POINTL *MaskPoint, BRUSHOBJ *pbo, POINTL *BrushPoint, DWORD Rop4)
static BOOL APIENTRY EngMaskBitBlt(SURFOBJ *psoDest, SURFOBJ *psoMask, CLIPOBJ *ClipRegion, XLATEOBJ *DestColorTranslation, XLATEOBJ *SourceColorTranslation, RECTL *DestRect, POINTL *pptlMask, BRUSHOBJ *pbo, POINTL *BrushOrigin)
BOOL APIENTRY NtGdiEngBitBlt(IN SURFOBJ *psoTrg, IN SURFOBJ *psoSrc, IN SURFOBJ *psoMask, IN CLIPOBJ *pco, IN XLATEOBJ *pxlo, IN RECTL *prclTrg, IN POINTL *pptlSrc, IN POINTL *pptlMask, IN BRUSHOBJ *pbo, IN POINTL *pptlBrush, IN ROP4 Rop4)
PSURFACE NTAPI SURFACE_AllocSurface(_In_ USHORT iType, _In_ ULONG cx, _In_ ULONG cy, _In_ ULONG iFormat, _In_ ULONG fjBitmap, _In_opt_ ULONG cjWidth, _In_opt_ ULONG cjBufSize, _In_opt_ PVOID pvBits)
#define GDIDEVFUNCS(SurfObj)
VOID NTAPI GDIOBJ_vDeleteObject(POBJ pobj)
VOID FASTCALL RECTL_vMakeWellOrdered(_Inout_ RECTL *prcl)
BOOL FASTCALL RECTL_bIntersectRect(_Out_ RECTL *prclDst, _In_ const RECTL *prcl1, _In_ const RECTL *prcl2)
FORCEINLINE BOOL RECTL_bClipRectBySize(_Out_ RECTL *prclDst, _In_ const RECTL *prclSrc, _In_ const SIZEL *pszl)
_Inout_ SURFOBJ _In_opt_ SURFOBJ * psoPattern
FN_DrvBitBlt * PFN_DrvBitBlt
ENGAPI ULONG APIENTRY XLATEOBJ_iXlate(_In_ XLATEOBJ *pxlo, _In_ ULONG iColor)
ENGAPI BOOL APIENTRY CLIPOBJ_bEnum(_In_ CLIPOBJ *pco, _In_ ULONG cj, _Out_bytecap_(cj) ULONG *pul)
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL * prclTrg
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ _In_opt_ POINTL _In_ ROP4 rop4
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ _In_opt_ POINTL * pptlBrush
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ * pxlo
_In_opt_ SURFOBJ _In_opt_ SURFOBJ * psoMask
ENGAPI BOOL APIENTRY EngCopyBits(_In_ SURFOBJ *psoDest, _In_ SURFOBJ *psoSrc, _In_opt_ CLIPOBJ *pco, _In_opt_ XLATEOBJ *pxlo, _In_ __in_data_source(USER_MODE) RECTL *prclDest, _In_ __in_data_source(USER_MODE) POINTL *pptlSrc)
ENGAPI ULONG APIENTRY CLIPOBJ_cEnumStart(_Inout_ CLIPOBJ *pco, _In_ BOOL bAll, _In_ ULONG iType, _In_ ULONG iDirection, _In_ ULONG cLimit)
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL * pptlSrc
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL _In_opt_ BRUSHOBJ * pbo
_In_opt_ SURFOBJ _In_opt_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL _In_opt_ POINTL _In_opt_ POINTL * pptlMask
_In_ PATHOBJ _In_ CLIPOBJ _In_ BRUSHOBJ _In_ POINTL * pptlBrushOrg
_In_ SURFOBJ _In_ CLIPOBJ _In_opt_ XLATEOBJ _In_ RECTL * prclDest
_In_ SURFOBJ _In_ CLIPOBJ * pco
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO