QT 檢測USB插拔

2021-07-28 19:43:12 字數 1121 閱讀 4614

#include

#include

#include

#include

#include

第一步:定義usb的guid (全域性唯一識別符號)

static const guid guid_devinte***ce_list =

},// guid_devinte***ce_disk

},// guid_devinte***ce_hid,

},// guid_ndis_lan_class

} guid_devinte***ce_comport

// },

guid_devinte***ce_serenum_bus_enumerator

// },

guid_devinte***ce_parallel

// },

guid_devinte***ce_parclass

// }

};第二步:註冊裝置通知到視窗

//註冊插拔事件

hdevnotify hdevnotify;

dev_broadcast_deviceinte***ce notifacationfiler;

zeromemory(¬ifacationfiler, sizeof(dev_broadcast_deviceinte***ce));

notifacationfiler.dbcc_size = sizeof(dev_broadcast_deviceinte***ce);

notifacationfiler.dbcc_devicetype = dbt_devtyp_deviceinte***ce;

for (int i = 0; i < sizeof(guid_devinte***ce_list) / sizeof(guid); i++)

//else

}第三步:重寫nativeevent()

const msg *msg = reinterpret_cast(message);

if (msg->message == wm_devicechange)

}return false;

如果無法識別插拔,可以將注釋開啟

補充:qt4 遷移到qt5 winevent代替為nativeevent

MFC檢測USB熱插拔

在網上找了很久,發現這個方法還是可以實現的,但是必須要知道usb裝置的guid,我準備寫下來留作以便以後查詢 bool cxxdlg ondevicechange uint neventtype,dword dwdata break case dbt devicearrival break defa...

QT 監聽USB熱插拔事件

過濾windows的事件訊息,其中wm devicechange是裝置發生變化時的windows發給各個程式的事件訊息,再通過wparam判斷是裝置插入 dbt devicearrival 還是拔出 dbt deviceremovecomplete 在qt中新增兩個檔案。usb listener.c...

USB插拔監測

參考 pf netlink socket 監測核心裝置插拔事件 udev 參考 linux的檔案系統是非同步的,也就是說寫乙個檔案不是立刻儲存到介質 硬碟,u盤等 中,而是存到緩衝區內,等積累到一定程度再一起儲存到介質中。如果沒有umount就非法拔出u盤,程式是不知道的,fopen,fwrite等...