Получение всех устройств в системе - C#

Узнай цену своей работы

Формулировка задачи:

Все что показывет Device Manager (включая скрытые устройства) можно посмотреть так:
bool EnumerateDeviceCallback(DEVINST device_inst)
{
    char driver_name[MAX_PATH];
    unsigned long len = MAX_PATH;
    CONFIGRET cr = CM_Get_DevNode_Registry_Property(device_inst, CM_DRP_DRIVER, NULL, driver_name, &len, 0);
    
    if(cr == CR_SUCCESS) {
        char device_desc[MAX_PATH];
        unsigned long len = MAX_PATH;
        cr =CM_Get_DevNode_Registry_Property(device_inst, CM_DRP_DEVICEDESC, NULL, device_desc, &len, 0);
 
        if(cr == CR_SUCCESS)
            printf("\n%s", device_desc);
    }
 
    return FALSE;
}
 
DEVINST EnumerateDeviceTree(DEVINST device_inst, bool (*callback)(DEVINST))
{
    bool res = callback(device_inst);
    if(!res) {
        DEVINST device_ret = { 0 };
        DEVINST device_next = device_inst;
        while(CM_Get_Child(&device_next, device_next, 0) == CR_SUCCESS) {
            EnumerateDeviceTree(device_next, callback);
            
            device_ret = device_next;
            while(CM_Get_Sibling(&device_ret, device_ret, 0) == CR_SUCCESS)
                EnumerateDeviceTree(device_ret, callback);
                
        }
 
        return 0;
    }
    else 
        return device_inst;
}
 
int main(int argc, char* argv[])
{
    DEVINST device_root = { 0 };
    CONFIGRET cr = CM_Locate_DevNode(&device_root, NULL, 0);
 
    if(cr == CR_SUCCESS) 
        EnumerateDeviceTree(device_root, EnumerateDeviceCallback);
        
    return 0;
}
Этот код вообще на C# написан? Может кто переделать на С# чтобы работал?

Решение задачи: «Получение всех устройств в системе»

textual
Листинг программы
label1.Text += driverName.ToString() + Environment.NewLine;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы