DDC Communication from within background service

Hi,

we need to do DDC communication with a display when no user is logged in.
So, we decided to create a Windows service, but we didn’t find any DDC API that works from a background service.

Did we miss something?
How can this be done?

Cheers,

Kurt

I think that services are prohibited from displaying any UI from Vista up.

Even if you will check the “Allow to interact with the desktop”, then the service will still be unable to do this, and will log the red event on each start instead.

To customize the logon screens, there were always some logon UI plugins. In some older days of pre-Vista, they were called “GINA DLLs”, in Vista+ there is a new architecture for this.


Maxim S. Shatskih
Microsoft MVP on File System And Storage
xxxxx@storagecraft.com
http://www.storagecraft.com

wrote in message news:xxxxx@ntdev…
> Hi,
>
> we need to do DDC communication with a display when no user is logged in.
> So, we decided to create a Windows service, but we didn’t find any DDC API that works from a background service.
>
> Did we miss something?
> How can this be done?
>
> Cheers,
>
> Kurt
>

Hi Maxim,

we don’t want to display any UI, just do DDC (I2C) communication.
All APIs we have found so far, need a graphical context to be able to do this.
So, my question is: is it possible to do DDC/I2C communication with a display from within a background service? Is there any existing API we can use? Or must we create a kernel driver?

Cheers,

Kurt

I think it is still possible to cheat and grab winlogon’s UI context from a
service, and that will give you access to the DDC apis.

Mark Roddy

On Wed, Sep 23, 2015 at 5:07 AM, wrote:

> Hi Maxim,
>
> we don’t want to display any UI, just do DDC (I2C) communication.
> All APIs we have found so far, need a graphical context to be able to do
> this.
> So, my question is: is it possible to do DDC/I2C communication with a
> display from within a background service? Is there any existing API we can
> use? Or must we create a kernel driver?
>
> Cheers,
>
> Kurt
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>

Well, that is exactly what we have done :slight_smile:
But this is quite ‘hacky’ (and in fact quite a security hole IMHO; e.g. we can just draw on the login screen, which opens some ‘interesting’ opportunities of course).
We use some undocumented APIs, but we don’t feel comfortable with this.
It would be much nicer/safer/cleaner if we could just do I2C communication without the need of a graphical context.
Are there any other possibilities to achieve this? E.g. through a kernel driver?

Cheers,

Kurt

On 23 Sep 2015, at 16:10, Mark Roddy > wrote:

I think it is still possible to cheat and grab winlogon’s UI context from a service, and that will give you access to the DDC apis.

Mark Roddy

On Wed, Sep 23, 2015 at 5:07 AM, > wrote:
Hi Maxim,

we don’t want to display any UI, just do DDC (I2C) communication.
All APIs we have found so far, need a graphical context to be able to do this.
So, my question is: is it possible to do DDC/I2C communication with a display from within a background service? Is there any existing API we can use? Or must we create a kernel driver?

Cheers,

Kurt


NTDEV is sponsored by OSR

Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev

OSR is HIRING!! See http://www.osr.com/careers

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

— NTDEV is sponsored by OSR Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev OSR is HIRING!! See http://www.osr.com/careers For our schedule of WDF, WDM, debugging and other seminars visit: http://www.osr.com/seminars To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
This message is subject to the following terms and conditions: MAIL DISCLAIMERhttp:</http:>

Pattyn, Kurt wrote:

Well, that is exactly what we have done :slight_smile:
But this is quite ‘hacky’ (and in fact quite a security hole IMHO;
e.g. we can just draw on the login screen, which opens some
‘interesting’ opportunities of course).
We use some undocumented APIs, but we don’t feel comfortable with this.
It would be much nicer/safer/cleaner if we could just do I2C
communication without the need of a graphical context.
Are there any other possibilities to achieve this? E.g. through a
kernel driver?

No. The DDC channel belongs to the graphics driver, and graphics is
nominally a user-mode concept.

Nicomsoft has a solution, but I suspect it uses the same backdoor that
you do:
http://www.nicomsoft.com/products/i2c/


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

So, the *only* way to do DDC (I2C) communication with a display from a background service, is by ‘hijacking’ the logon session?

That is the only way I could find. The intention was to not allow this at
all, so be aware that this method could disappear.

Mark Roddy

On Mon, Oct 5, 2015 at 8:10 AM, wrote:

> So, the only way to do DDC (I2C) communication with a display from a
> background service, is by ‘hijacking’ the logon session?
>
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list at: http://www.osronline.com/showlists.cfm?list=ntdev
>
> OSR is HIRING!! See http://www.osr.com/careers
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>