Hi!

On Tue, Jun 2, 2009 at 6:55 AM, Timo Kreuzer <[email protected]> wrote:
> This looks like ultra-hax. Can you explain why this should be correct?
> It would mean DrvSetPixelFormat would be passed a SURFACE rather than a
> SURFOBJ.
>
I updated the wiki about this. We Are doing it wrong if any of the
three pointers point at the BASEOBJECT of the handle structure and not
at "+0x10" SURFOBJ surfobj.....

pdc->dclevel.pSurface;
pdc->pSurfInfo;
ppdev->pSurface;

typedef struct _SURFACE
{                            // Win XP
    BASEOBJECT BaseObject;   // 0x000
    SURFOBJ    surfobj;      // 0x010 <---- above three pointers are set here!
    XDCOBJ *   pdcoAA;       // 0x044
    FLONG      flags;        // 0x048
......
......

Based on DC types one of the pointer is always zero and they toggle
between each other, ppdev->pSurface is always set.

> [email protected] schrieb:
>> Author: jimtabor
>> Date: Tue Jun  2 10:50:36 2009
>> New Revision: 41250
>>
>> URL: http://svn.reactos.org/svn/reactos?rev=41250&view=rev
>> Log:
>> - Hax-implement NtGdiSetPixelFormat and add a support function UserGethWnd 
>> with some code cleanup.
>>
>> Modified:
>> [...]
>> +  /*
>> +     Based on some rules! InfoDC to DC or, based on wiki information!
>> +     All pointers, it's a "must be!", (CONTAINING_RECORD +10h = SURFOBJ), 
>> the
>> +     pointer will start at SURFOBJ of the SURFACE structure.
>> +   */

This is a hack, I'm not sure what to do if the other is zero~ My notes
are very spotty...

>> +     pso = (SURFOBJ *)pdc->dclevel.pSurface;
>> +     if (!pso) pso = pdc->pSurfInfo;
>> +     if (!pso) pso = ppdev->pSurface;
>> +  }
>> +
>> +  if (ppdev->flFlags & PDEV_META_DEVICE)
>> +  {
>> +     UNIMPLEMENTED;
>> +     goto Exit;
>> +  }
>> +
>> +  if (ppdev->DriverFunctions.SetPixelFormat)
>> +  {
>> +     Ret = ppdev->DriverFunctions.SetPixelFormat(
>> +                                                pso,
>> +                                                ipfd,
>> +                                                hWnd);
>> +  }
>>
>
Thanks,
James
_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to