如何在web service 中检测系统硬件事件
-
Monday, April 23, 2012 4:58 AM
winForm中有个WndProc 方法,通过override它可以收到windows系统事件,比如usb接口的插拔等等。
现在我想在iis中部署的web service中也检测系统事件(usb接口设备的插拔),该如何实现,web service中没有WndProc 可以复写。
shan423
All Replies
-
Tuesday, April 24, 2012 6:34 AM
我倒是想問一下, 假設有辨法收到USB插拔等事件, web service要如何通知user? 你可以push嗎?
這些事用windows service寫一個查詢用的TCP/IP接口會比較合適.
-
Wednesday, April 25, 2012 2:14 AM
我们的web service中的每个方法都有一个全局布尔变量的检测,标示那个usb设备是否正常,如果不正常会在user端提示。现在我们的在web service端检测这个usb设备的办法是用一个timer 定时读取设备(读取方法 来自usb设备厂家提供的dll),不过这种办法有的时候会出问题,导致那个全局布尔变量被赋了false(意味着设备不正常,但此时设备并未拔出)。我怀疑和多线程读取该设备有关,但是不好调试,也不容易重现,都是很随机的出现过几次(而且同时访问时概率大)。
这个问题如果想在web service里处理有点头痛,我明白单独写个form或者service处理起来会容易点,不过需求上还不允许我这样做。
shan423
-
Wednesday, April 25, 2012 2:34 AM
用web service就是說你不需要即時更新狀態囉. 這樣的話倒不如在收到web service請求時用WinUSB API即時檢查目標USB設備的狀態, 這樣會比較準確. (廠家既然有提供, 就用廠家的吧.)
只在需要的功能上進行impersonation以提高權限也有助降低被外來攻擊入侵的機會.
要防止同時進行訪問, 用普遍多線程設的技巧(如Mutex)就可以了吧...
- Edited by cheong00 Wednesday, April 25, 2012 2:36 AM
- Edited by cheong00 Wednesday, April 25, 2012 2:40 AM
- Marked As Answer by LeoTangModerator Wednesday, May 02, 2012 7:22 AM