Tentando abrir o identificador de dispositivo de exibição para alterar o brilho no Windows XP usando C ++

Eu estou tentando escrever um código C ++ / WinAPI para alterar o brilho de um monitor. O código deve ser compatível com o Windows XP, portanto não posso usar APIs como o SetMonitorBrightness. Então eu pensei em experimentarIOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS mas eu não consigo nem pegar um dispositivo.

HANDLE hDevice = ::CreateFile(_T("\\\\.\\LCD"),
    GENERIC_READ | GENERIC_WRITE,
    FILE_SHARE_READ | FILE_SHARE_WRITE,
    NULL,
    OPEN_EXISTING,
    0, NULL);
if(hDevice != INVALID_HANDLE_VALUE)
{
    //Do work here

    ::CloseHandle(hDevice);
}
else
{
    nOSErr = ::GetLastError();
    //Get code 2
}

Eu tentei várias combinações de GENERIC_READ, GENERIC_WRITE e FILE_SHARE_READ, FILE_SHARE_WRITE sinalizadores mas sempre obter código de erro 2 quando CreateFile é chamado.

Então, o que estou fazendo de errado aqui?

questionAnswers(1)

yourAnswerToTheQuestion