Можете ли вы получить информацию о графическом оборудовании из сервиса Windows с использованием C ++? - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь создать службу, которая будет использоваться для мониторинга клиентских компьютеров и предоставления обновлений, но часть службы сообщает об используемом оборудовании. В настоящее время у меня есть следующий код для получения информации о графическом процессоре, который работает при запуске в качестве приложения командной строки, но когда он работает как служба, информация не возвращается.

Я полагаю, что это связано с тем, что службы не имеют доступа к дисплею, но я не могу найти другие способы получения информации о графическом процессоре, которая будет работать из службы.

QByteArrayList GetGpuNames ()
{
    QByteArrayList list;

    IDirect3D9* d3dobject = Direct3DCreate9 ( D3D_SDK_VERSION );

    if ( !d3dobject )
        return list;

    D3DPRESENT_PARAMETERS d3dpresent;
    memset ( &d3dpresent , 0 , sizeof ( D3DPRESENT_PARAMETERS ) );
    d3dpresent.Windowed = TRUE;
    d3dpresent.SwapEffect = D3DSWAPEFFECT_DISCARD;
    UINT adaptercount = d3dobject->GetAdapterCount ();
    D3DADAPTER_IDENTIFIER9* adapters = ( D3DADAPTER_IDENTIFIER9* ) malloc ( sizeof ( D3DADAPTER_IDENTIFIER9 ) * adaptercount );

    for ( int i = 0; i < adaptercount; i++ )
    {
        d3dobject->GetAdapterIdentifier ( i , 0 , &( adapters [ i ] ) );
        list << QByteArray ( adapters [ i ].Description );
    }

    return list;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...