全部使用 setupapi.dll 裡的函式
使用方法
ilist_hardwareinfo = zgke.sysinfo.hardwareclass.gethardwaretable();
datagridview1.datasource = _hardwareinfo;
for (int i = 0; i != _hardwareinfo.count; i++)
}下面是全部的類
using system;
using system.collections.generic;
using system.text;
using system.runtime.interopservices;
namespace zgke.sysinfo
public enum spdrp
public enum dics
public enum dif
[structlayout(layoutkind.sequential)]
public class sp_devinfo_data
;[structlayout(layoutkind.sequential)]
public class sp_propchange_params
;[structlayout(layoutkind.sequential)]
public class sp_classinstall_header
;///
/// 獲取裝置的名稱和id
///
///
public static ilistgethardwaretable()
setupdidestroydeviceinfolist(_mainintptr);
return _returnlist;
}public class hardwareinfo
}///
/// 裝置guid
///
public guid classguid }
public hardwareinfo(string p_devicename, guid p_classguid, int p_size, int p_devinst, ulong p_reserved)
///
/// 設定狀態
///
public void setenabled(bool p_enabled)
i++;
}setupdidestroydeviceinfolist(_mainintptr);
}private void sethardwareenabled(intptr m_mainintptr, bool p_enabled, sp_devinfo_data p_devinfodata)
_hardwareparams.classinstallheader.cbsize = marshal.sizeof(typeof(sp_classinstall_header));
_hardwareparams.classinstallheader.installfunction = (int)dif.dif_propertychange;
_hardwareparams.statechange = (int)dics.dics_enable;
_hardwareparams.scope = (int)dics.dics_flag_configspecific;
_hardwareparams.hwprofile = 0;
}intptr _sethardwareparamsintptr = marshal.allochglobal(marshal.sizeof(_hardwareparams));
marshal.structuretoptr(_hardwareparams, _sethardwareparamsintptr, true);
intptr _setdevinfodataintptr = marshal.allochglobal(marshal.sizeof(p_devinfodata));
marshal.structuretoptr(p_devinfodata, _setdevinfodataintptr, true);
setupdisetclassinstallparams(m_mainintptr, _setdevinfodataintptr, _sethardwareparamsintptr, marshal.sizeof(typeof(sp_propchange_params)));
setupdicallclassinstaller(dif.dif_propertychange, m_mainintptr, _setdevinfodataintptr);}}
}}
Windows平台C 啟用和禁用裝置
在windows平台上有一套setupdi系列api可以獲取所有的硬體裝置,以及對其進行操作。現在我來主要說一下對指定裝置的啟用和禁用操作。首先說明一下,我的專案是個mfc對話方塊程式,我自己定義了乙個結構體用來存放相關的裝置資訊 typedef struct tagdeviceinfo else ...
禁用USB儲存裝置
隨著u盤 行動硬碟等usb儲存裝置的普及,usb介面帶來的安全隱患日益引起使用者的重視。尤其是在需要防洩密的公司中,usb介面是機要檔案被內部竊取的重要通道。禁用和唯讀usb介面有以下兩種辦法 1.在bios中關閉usb裝置。只能禁用,不能設定成辦讀。2.通過修改登錄檔的方式。將usbstor服務的...
掛載硬體裝置
我們在用慣了windows 系統後總覺得一切都是理所當然的,平時把u 盤插入到電腦後也從來沒有考慮過windows 系統做了哪些事情,才使得我們可以訪問這個u 盤的。接下來會逐一學習在linux 系統中掛載和解除安裝儲存裝置的方法,以便更好地了解linux 系統新增硬體裝置的工作原理和流程。在拿到一...