2012-06-25 81 views
0

我變得瘋了試圖找出如何解決這個任務。我的目標非常簡單,每次插入USB記憶棒時都會複製一個文件,然後釋放USB記憶棒以關閉LED。解決問題的最佳方法是什麼?檢測USB - 插入/刪除 - 在Windows CE 6.0上的VB.NET

1)我發現這篇文章

http://geekswithblogs.net/BruceEitman/archive/2008/06/13/windows-ce-monitoring-for-disk-insertion-to-add-support-for.aspx

http://geekswithblogs.net/BruceEitman/archive/2008/06/13/windows-ce-monitoring-for-disk-insertion-to-add-support-for.aspx

,但我不能在VB.NET項目它翻譯。

2)然後我讀了這是足夠使用RequestDeviceNotifications塊設備。但是我怎麼能在VB.NET中做到這一點?

我想盡可能避免OpenNetCF。

謝謝

回答

1

由於您不想「使用OpenNETCF」,因此我假設您不想使用任何未內置到CF中的庫或功能。我們將跳過這種愚蠢的論點和「時間價值」討論,並將其作爲一項要求。

你需要做的是:

  1. 使用P/Invoke來調用CreateMsgQueue。這會給你一個句柄。您可能還想完成CloseMsgQueue以及完整性
  2. P/Invoke RequestDeviceNotifications並將您從上面#1返回的句柄以及DEVCLASS GUID value傳遞給您需要的設備通知 - 可能是STORE_MOUNT_GUID。同樣,爲了完整性添加StopDeviceNotifications是個好主意。
  3. 此時,只要插入或刪除發生,您就會在隊列中收到消息。然後您撥打ReadMsgQueue以獲取消息中的DEVDETAIL數據。
  4. 解析DEVDETAIL並查看fAttached成員。
+0

我確信OpenNETCF是一個緊湊框架的優秀附加組件,但是我正在開發一個工業應用程序,該應用程序應該24/7全天候運行而不會出現問題,並且我已經擁有了許多CF之外的庫。你知道每行X代碼都有Y錯誤,如果可能的話,我儘量避免添加很多其他的東西......這對我來說是一個非常基本的功能,它看起來「愚蠢?」。對我來說,CF並沒有提供一個簡單的方法來做到這一點。 –

+0

CF有一些東西無法提供這些功能(並且這是創建SDF的主要驅動因素)。上述步驟將爲您提供您之後的通知 - 而且這是實現這一目標的唯一方法。這並不像你可能希望的那麼簡單。 – ctacke

+0

是的,你說得對。但是......最後我放棄了OpenNetCF。看起來CF的限制太深了,我無法全部解決所有這些功能......謝謝 –

0

它會帶我一段時間來寫你,所以你必須要做到這一點你自己。

開始編寫項目,找到所需呼叫的P/Invoke例程(如FindFirstFileCreateProcess)。在SO上,看看Storage Card Problem In windows mobileHow to register form for WM_DEVICECHANGE message in windows mobile

如果你找不到一個你不能做的特殊呼叫,你只會死在水裏。

在您完成項目時,發佈(或搜索)您遇到的實際問題。

否則,這聽起來像你在問某人寫這個項目並把它交給你。

+0

謝謝。我並沒有要求某人爲我編寫代碼,只是尋找教程和/或代碼片段來完成這些工作! –