Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 1
Регистрация: 13.08.2010
Сообщений: 73

Функции для определения железа

07.05.2011, 16:39. Показов 2861. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
привет всем в очередной раз ),никто не подскажет мне какие есть ф-и для определения например мамки или аудиокарты,да и прочего железа?
или проще уже через реестр?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2011, 16:39
Ответы с готовыми решениями:

Составить блок схему к готовому коду определения области определения функции
Program Project2; var x,y: real; begin writeln('Введите значение х'); write('х='); readln(x); if x < 0.1*pi then y :=...

Создание функции для определения скидки
Необходимо написать функцию, которая в зависимости от стоимости покупки определяет скидку. Не представляю, как это можно сделать на T-SQL....

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

10
 Аватар для Vlad_AVS
1273 / 466 / 9
Регистрация: 20.04.2011
Сообщений: 2,013
07.05.2011, 17:02
everest

Добавлено через 3 минуты
System Analyser

Описание: Shareware. System Analyser - это программа, которая определяет все оборудование на вашем компьютере. Она предоставляет вам полную информацию об: Bios Video CD-Rom IEEE 1284 ASPI/CAM IRQ Network AGP DVD Modem PCI DMA Dos Monitor Lpt Fax PCMCIA Cmos Drives Partitions Rs232 ISDN PnP Y2K Cache IDE Mouse Sound APM Windows Memory ATAPI Keyboard SCSI DMI ESCD SATA Blue-ray Disk PCI Express SPD CPU/FPU ..etc.. Работает с Win 3.1, Win 95/98/ME, (Win NT/2000/XP)
0
1 / 1 / 1
Регистрация: 13.08.2010
Сообщений: 73
07.05.2011, 17:02  [ТС]
DDDDD мне нужны функции ,а не программы
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
07.05.2011, 21:54
Цитата Сообщение от x3mAL Посмотреть сообщение
привет всем в очередной раз ),никто не подскажет мне какие есть ф-и для определения например мамки или аудиокарты,да и прочего железа?
или проще уже через реестр?
DeviceIoControl, самый простой способ.
1
1 / 1 / 1
Регистрация: 13.08.2010
Сообщений: 73
08.05.2011, 17:43  [ТС]
он то простой, а вот как получить хэндл устройства? )
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
08.05.2011, 22:04
Хэндл можно получить через обчный CreateFile. Указатель на группу устройств получишь через соответствующие GUID (отрывок из функции):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
HDEVINFO hDevInfo = SetupDiGetClassDevsEx(&GUID_DEVICE_BATTERY, NULL, NULL, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE, 0, (LPCTSTR)NULL, NULL);
    if(INVALID_HANDLE_VALUE == hDevInfo) return false;
    
    SP_DEVICE_INTERFACE_DATA did;
    did.cbSize = sizeof(SP_INTERFACE_DEVICE_DATA);
    SetupDiEnumDeviceInterfaces(hDevInfo, 0, &GUID_DEVICE_BATTERY, 0, &did);
    if(ERROR_NO_MORE_ITEMS == GetLastError()) return false;
    
    DWORD dwRequired;
    BOOL bResult = SetupDiGetDeviceInterfaceDetail(hDevInfo, &did, NULL, 0, &dwRequired, NULL);
    if(!bResult && ERROR_INSUFFICIENT_BUFFER != GetLastError()) return false;
    
    PSP_DEVICE_INTERFACE_DETAIL_DATA pdidd;
    pdidd = (PSP_DEVICE_INTERFACE_DETAIL_DATA)LocalAlloc(LPTR, dwRequired);
    if(!pdidd) return false;
    
    pdidd->cbSize = sizeof(*pdidd);
    bResult = SetupDiGetDeviceInterfaceDetail(hDevInfo, &did, pdidd, dwRequired, &dwRequired, NULL);
    if(!bResult) return false;
    
    hBattery = CreateFile(pdidd->DevicePath, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
    if(INVALID_HANDLE_VALUE == hBattery) return false;
    
    DWORD dwWait;
    DWORD dwOut;
    bResult = DeviceIoControl(hBattery, IOCTL_BATTERY_QUERY_TAG, &dwWait, sizeof(dwWait), &BatteryQueryInfo.BatteryTag, sizeof(BatteryQueryInfo.BatteryTag), &dwOut, NULL);
    if(!bResult) return false;
    
    LocalFree(pdidd);
    SetupDiDestroyDeviceInfoList(hDevInfo);
1
1 / 1 / 1
Регистрация: 13.08.2010
Сообщений: 73
09.05.2011, 11:27  [ТС]
спасибо конечно,но можно поподробней ,что тут происходит?
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
09.05.2011, 11:50
Иэх... В первой строке получаем указатель на набор данных устройства класса "батарея", установленных в настоящий момент в системе. В следующем "блоке" мы перечисляем все интерфейсы этого класса. Первым вызовом SetupDiGetDeviceInterfaceDetail() мы запрашиваем требуемый размер буфера для получения расширенной информации об интерфейсе. Вторым вызовом мы, соответственно, уже получаем саму информацию, получая своеобразный виртуальный путь к устройству, который впоследствии и передаем в CreateFile() для получения конкретно указателя на само устройство. DeviceIoControl() здесь приведен чисто для примера, формат команд/параметров, передаваемых этой функции напрямую зависит от опрашиваемого устройства. Иначе говоря, ты же не будешь, например, пытаться отформатировать диск звуковой карты
В последних двух строчках освобождаем память и "закрываем" перечисление. Все.
Используя необходимые комбинации параметров, можно получить информацию о любом устройстве или классе устройств. Собственно класс задается параметром, который здесь фигурирует как GUID_DEVICE_BATTERY.
Вроде бы доступно объяснил. За дополнительной информацией прошу в MSDN.
1
1 / 1 / 1
Регистрация: 13.08.2010
Сообщений: 73
10.05.2011, 14:53  [ТС]
т.е насколько я понял если банально поменять класс GUID_DEVICE_BATTERY на какой ,то другой то будет то же самое ,только с другим устройством?
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
10.05.2011, 15:20
Цитата Сообщение от x3mAL Посмотреть сообщение
т.е насколько я понял если банально поменять класс GUID_DEVICE_BATTERY на какой ,то другой то будет то же самое ,только с другим устройством?
Да. Только не с другим устройством, а классом устройств. До некоторой "экзотики" так не доберешься, но имеющегося списка хватает с избытком, обычно.
0
1 / 1 / 1
Регистрация: 13.08.2010
Сообщений: 73
10.05.2011, 17:07  [ТС]
а есть список классов?бо шото гугл мне не захотел раскрыть правду на этот вопрос...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2011, 17:07
Помогаю со студенческими работами здесь

Инструкция определения функции и выражение определения функции
Всем добрый вечер. Задался вопрос, чем собственно отличается инструкция определения функции от выражения определения функции? Ведь на...

Составить программу для определения значения функции Y
Составить программу для определения значения функции Y. Для вычисления значения аргумента х следует использовать функцию пользователя:

Составить программу для определения значения функции
Составить программу для определения значения функции у(x). Предусмотреть вывод сообщения о том, по какой ветви происходило вычисление...

Составить программу для определения значения функции
Составить программу для определения значения функции у(x). Предусмотреть вывод сообщения о том, по какой ветви происходило вычисление...

Составить программу для определения значения функции
Составить программу для определения значения функции у(x). Предусмотреть вывод сообщения о том, по какой ветви происходило вычисление...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru