Информация об изменениях

Сообщение Re[2]: Удалить устройство и обновить конфигурацию оборудован от 08.10.2018 11:06

Изменено 10.10.2018 5:54 _agg

Re[2]: Удалить устройство и обновить конфигурацию оборудования
Все оказалось проще чем я думал, обновление конфигурации оборудования получилось довольно простое:
static bool RescanDevicesPlugAndPlayUpdate(){    
    bool ret_val(false);
    HMACHINE machineHandle(NULL);
    DEVINST devRoot;
    CONFIGRET ret(NULL);
    if ((ret = CM_Connect_Machine(NULL, &machineHandle)) == CR_SUCCESS) {
        do{
            if ((ret = CM_Locate_DevNode_Ex(&devRoot, NULL, CM_LOCATE_DEVNODE_NORMAL, machineHandle)) == CR_SUCCESS) {
                ret = CM_Reenumerate_DevNode_Ex(devRoot, 0, machineHandle);                
            }
            else break;
        } while (0);    
        if (ret == CR_SUCCESS)
            ret_val = true;
        CM_Disconnect_Machine(machineHandle);
    }
    return ret_val;
}
Re[2]: Удалить устройство и обновить конфигурацию оборудован
Все оказалось проще чем я думал, обновление конфигурации оборудования получилось довольно простое:
bool RescanDevicesPlugAndPlayUpdate(CString &err_msg){    
    bool ret_val(false);
    HMACHINE machineHandle(NULL);
    DEVINST devRoot;
    CONFIGRET ret(NULL);
    if ((ret = CM_Connect_Machine(NULL, &machineHandle)) == CR_SUCCESS) {
        if ((ret = CM_Locate_DevNode_Ex(&devRoot, NULL, CM_LOCATE_DEVNODE_NORMAL, machineHandle)) == CR_SUCCESS) {
            if ((ret = CM_Reenumerate_DevNode_Ex(devRoot, 0, machineHandle)) != CR_SUCCESS){
                err_msg.Format(_T("CM_Reenumerate_DevNode_Ex error:0x%x"), ret);
            }
        }else
            err_msg.Format(_T("CM_Locate_DevNode_Ex error:0x%x"), ret);
        if (ret == CR_SUCCESS)
            ret_val = true;        
        
        CM_Disconnect_Machine(machineHandle);
    }
    else err_msg.Format(_T("CM_Connect_Machine error:0x%x"),ret);
    return ret_val;
}