Я пытаюсь создать службу, которая будет использоваться для мониторинга клиентских компьютеров и предоставления обновлений, но часть службы сообщает об используемом оборудовании. В настоящее время у меня есть следующий код для получения информации о графическом процессоре, который работает при запуске в качестве приложения командной строки, но когда он работает как служба, информация не возвращается.
Я полагаю, что это связано с тем, что службы не имеют доступа к дисплею, но я не могу найти другие способы получения информации о графическом процессоре, которая будет работать из службы.
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;
}