none
如何在web service 中检测系统硬件事件 RRS feed

  • 问题

  • winForm中有个WndProc 方法,通过override它可以收到windows系统事件,比如usb接口的插拔等等。

    现在我想在iis中部署的web service中也检测系统事件(usb接口设备的插拔),该如何实现,web service中没有WndProc 可以复写。


    shan423

    2012年4月23日 4:58

答案

  • 用web service就是說你不需要即時更新狀態囉. 這樣的話倒不如在收到web service請求時用WinUSB API即時檢查目標USB設備的狀態, 這樣會比較準確. (廠家既然有提供, 就用廠家的吧.)

    只在需要的功能上進行impersonation以提高權限也有助降低被外來攻擊入侵的機會.

    要防止同時進行訪問, 用普遍多線程設的技巧(如Mutex)就可以了吧...

    2012年4月25日 2:34

全部回复

  • 我倒是想問一下, 假設有辨法收到USB插拔等事件, web service要如何通知user? 你可以push嗎?

    這些事用windows service寫一個查詢用的TCP/IP接口會比較合適.

    2012年4月24日 6:34
  • 我们的web service中的每个方法都有一个全局布尔变量的检测,标示那个usb设备是否正常,如果不正常会在user端提示。现在我们的在web service端检测这个usb设备的办法是用一个timer 定时读取设备(读取方法 来自usb设备厂家提供的dll),不过这种办法有的时候会出问题,导致那个全局布尔变量被赋了false(意味着设备不正常,但此时设备并未拔出)。我怀疑和多线程读取该设备有关,但是不好调试,也不容易重现,都是很随机的出现过几次(而且同时访问时概率大)。

    这个问题如果想在web service里处理有点头痛,我明白单独写个form或者service处理起来会容易点,不过需求上还不允许我这样做。


    shan423

    2012年4月25日 2:14
  • 用web service就是說你不需要即時更新狀態囉. 這樣的話倒不如在收到web service請求時用WinUSB API即時檢查目標USB設備的狀態, 這樣會比較準確. (廠家既然有提供, 就用廠家的吧.)

    只在需要的功能上進行impersonation以提高權限也有助降低被外來攻擊入侵的機會.

    要防止同時進行訪問, 用普遍多線程設的技巧(如Mutex)就可以了吧...

    2012年4月25日 2:34