SetupDiGetDeviceRegistryProperty, где то ошибка

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

09 дек 2015, 11:45

Код: Выделить всё

ProcessorClass=SetupDiGetClassDevs(&GUID_DEVCLASS_PROCESSOR, NULL, NULL, DIGCF_PRESENT);
ZeroMemory(&Processor, sizeof(Processor));
Processor.cbSize=sizeof(Processor);\
SetupDiEnumDeviceInfo(ProcessorClass, 0, &Processor);
SetupDiGetDeviceRegistryProperty(ProcessorClass, &Processor, SPDRP_DEVICEDESC, NULL, NULL, 0, &ProcessorModelSize);
SetupDiGetDeviceRegistryProperty(ProcessorClass, &Processor, SPDRP_MFG       , NULL, NULL, 0, &ProcessorFirmSize );
ProcessorModel=new (std::nothrow) wchar_t [ProcessorModelSize];
ProcessorFirm=new (std::nothrow) wchar_t [ProcessorFirmSize];
SetupDiGetDeviceRegistryProperty(ProcessorClass, &Processor, SPDRP_DEVICEDESC, NULL, (BYTE*)ProcessorModel, ProcessorModelSize, NULL);
SetupDiGetDeviceRegistryProperty(ProcessorClass, &Processor, SPDRP_MFG       , NULL, (BYTE*)ProcessorFirm , ProcessorFirmSize , NULL);
Log<<L"<Индекс>"<<Count<<L"</Индекс>"<<std::endl;
Log<<L"<Модель>"; Log<<ProcessorModel; Log<<L"</Модель>"<<std::endl;
Log<<L"<Фирма>" ; Log<<ProcessorFirm ; Log<<L"</Фирма>"<<std::endl;
Вместо Inter(R) Pentium(R) CPU J2900 @ 2.41GHz выводит просто Intel процессор.

Код: Выделить всё

VideoCardClass=SetupDiGetClassDevs(&GUID_DEVCLASS_VideoCard, NULL, NULL, DIGCF_PRESENT);
ZeroMemory(&VideoCard, sizeof(VideoCard));
VideoCard.cbSize=sizeof(VideoCard);\
SetupDiEnumDeviceInfo(VideoCardClass, 0, &VideoCard);
SetupDiGetDeviceRegistryProperty(VideoCardClass, &VideoCard, SPDRP_DEVICEDESC, NULL, NULL, 0, &VideoCardModelSize);
SetupDiGetDeviceRegistryProperty(VideoCardClass, &VideoCard, SPDRP_MFG       , NULL, NULL, 0, &VideoCardFirmSize );
VideoCardModel=new (std::nothrow) wchar_t [VideoCardModelSize];
VideoCardFirm=new (std::nothrow) wchar_t [VideoCardFirmSize];
SetupDiGetDeviceRegistryProperty(VideoCardClass, &VideoCard, SPDRP_DEVICEDESC, NULL, (BYTE*)VideoCardModel, VideoCardModelSize, NULL);
SetupDiGetDeviceRegistryProperty(VideoCardClass, &VideoCard, SPDRP_MFG       , NULL, (BYTE*)VideoCardFirm , VideoCardFirmSize , NULL);
Log<<L"<Индекс>"<<Count<<L"</Индекс>"<<std::endl;
Log<<L"<Модель>"; Log<<VideoCardModel; Log<<L"</Модель>"<<std::endl;
Log<<L"<Фирма>" ; Log<<VideoCardFirm ; Log<<L"</Фирма>"<<std::endl;
выводит правильно NVIDIA GeForce 800A . Что я делаю не так? Как получить не описание устройства, а полное имя устройства?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ответить