Rendering on the system console from a remote terminal-server session

From an application launched from a remote session, I need to render
graphics on the local server graphics.
Rendering I mean initially GDI but eventually I would like to be able to
render hardware accelerated opengl and direct3D.
While the task seems to be embarrassingly simple so far I couldn’t find
a way to achieve that… and desperately need help.

Here are some details:
First I need to admit that I’m new to Windows Display driver
architecture so hopefully I’m not too naive with my comments and
assumptions on the windows kernel.
During climbing my learning curve and experimenting I learned that the
display driver is swapped by the TS service by RDPDD which redirect
the rendering calls to the client. This is reflected through
EnumDisplayDevices(…) which hides the real device that I need to use.

My question is - What is the way (if there is any) to access the local
display device and create a DC to be used for GDI drawing?
A rephrase to that question would be if there is a way to share window
handlers between sessions. If there was a way, I could open a window in
session0 (by an helper service) and have the remotely launched process
to render to this window.

If there isn’t an off-the-box API way to access the local device, would
it make sense to write a display driver would replace RDPDD and pass
through/mirror the calls its get to RDPDD and the local driver as
required ?

Thanks in advance for any guidance, pointers or help in general
Jacky

No ways. Run the helper app on the local console, communicate to it from
another app running in TS session.


Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

“Jacky Romano” wrote in message news:xxxxx@ntdev…
> From an application launched from a remote session, I need to render
> graphics on the local server graphics.
> Rendering I mean initially GDI but eventually I would like to be able to
> render hardware accelerated opengl and direct3D.
> While the task seems to be embarrassingly simple so far I couldn’t find
> a way to achieve that… and desperately need help.
>
> Here are some details:
> First I need to admit that I’m new to Windows Display driver
> architecture so hopefully I’m not too naive with my comments and
> assumptions on the windows kernel.
> During climbing my learning curve and experimenting I learned that the
> display driver is swapped by the TS service by RDPDD which redirect
> the rendering calls to the client. This is reflected through
> EnumDisplayDevices(…) which hides the real device that I need to use.
>
> My question is - What is the way (if there is any) to access the local
> display device and create a DC to be used for GDI drawing?
> A rephrase to that question would be if there is a way to share window
> handlers between sessions. If there was a way, I could open a window in
> session0 (by an helper service) and have the remotely launched process
> to render to this window.
>
> If there isn’t an off-the-box API way to access the local device, would
> it make sense to write a display driver would replace RDPDD and pass
> through/mirror the calls its get to RDPDD and the local driver as
> required ?
>
> Thanks in advance for any guidance, pointers or help in general
> Jacky
>
>
>
>