Конкретно хочется разрешать/запрещать устройство, как это делается через devmgmt.msc Примерно так будет выглядеть код на Setup API: Код (Text): HDEVINFO hDevInfo; SP_PROPCHANGE_PARAMS stPropChangeParams= {sizeof(SP_CLASSINSTALL_HEADER)}; SP_DEVINFO_DATA stDevInfoData= {sizeof(SP_DEVINFO_DATA)}; PSP_DEVINFO_DATA pDevInfoData= &stDevInfoData; SP_DEVINSTALL_PARAMS stDevParams= {sizeof(SP_DEVINSTALL_PARAMS)}; int NewState; hDevInfo= SetupDiCreateDeviceInfoList(NULL, NULL); if(!hDevInfo || hDevInfo==INVALID_HANDLE_VALUE) { <ошибка...> } if(!SetupDiOpenDeviceInfo(hDevInfo, <Строковый идентификатор устройства>, NULL, 0, pDevInfoData)) { <ошибка...> } NewState= DICS_DISABLE; // или DICS_ENABLE stPropChangeParams.ClassInstallHeader.InstallFunction= DIF_PROPERTYCHANGE; stPropChangeParams.Scope= DICS_FLAG_GLOBAL; stPropChangeParams.StateChange= NewState; stPropChangeParams.HwProfile = 0; if(!SetupDiSetClassInstallParams(hDevInfo, pDevInfoData, (SP_CLASSINSTALL_HEADER*)&stPropChangeParams, sizeof(stPropChangeParams))) { <ошибка...> } stPropChangeParams.Scope= DICS_FLAG_CONFIGSPECIFIC; if(!SetupDiSetClassInstallParams(hDevInfo, pDevInfoData, (SP_CLASSINSTALL_HEADER*)&stPropChangeParams, sizeof(stPropChangeParams))) { <ошибка...> } if(!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfo, pDevInfoData)) { <ошибка...> } if(SetupDiGetDeviceInstallParams(hDevInfo, pDevInfoData, &stDevParams)) { if(stDevParams.Flags & (DI_NEEDRESTART|DI_NEEDREBOOT)) <требуется перезагрузка...> } Вопрос: как проделать примерно то же в native-приложении? Или в ring0 на крайний случай..