C 禁用 硬體裝置

2021-05-02 02:29:44 字數 2334 閱讀 5042

全部使用 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 系統新增硬體裝置的工作原理和流程。在拿到一...