2012-06-25 3 views
0

Je deviens fou en essayant de comprendre comment résoudre cette tâche. Mon objectif est assez simple: copier un fichier sur la clé USB chaque fois qu'elle est insérée, puis relâcher la clé USB en éteignant la LED. Quelle est la meilleure façon de le résoudre?Détecter USB - Insérer/Supprimer - VB.NET sur Windows CE 6.0

1) Je trouve cet article

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

ou

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

mais je ne peux pas le traduire sur le projet VB.NET.

2) Ensuite, j'ai lu qu'il suffit d'utiliser RequestDeviceNotifications pour les périphériques en mode bloc. Mais comment puis-je faire cela dans VB.NET?

Je voudrais éviter OpenNetCF si possible.

Merci

Répondre

1

Puisque vous ne voulez pas "utiliser OpenNETCF", je suppose que vous ne voulez pas utiliser de bibliothèques ou de capacités non intégrées à la CF. Nous passerons l'argument de cette sottise et de la discussion sur la «valeur de votre temps» et considérerons cela comme une exigence.

Ce que vous devez faire est:

  1. Utilisez P/Invoke pour appeler CreateMsgQueue. Cela va vous rendre un Handle. P/Appelez RequestDeviceNotifications et transmettez-lui le handle retourné de # 1 ci-dessus avec le DEVCLASS GUID value pour les notifications de périphérique que vous voulez - probablement STORE_MOUNT_GUID. Encore une fois, ajouter StopDeviceNotifications pour l'exhaustivité est une bonne idée.
  2. À ce stade, vous recevrez un message dans la file d'attente chaque fois qu'une insertion ou une suppression se produit. Vous appelez alors ReadMsgQueue pour obtenir les données DEVDETAIL dans le message.
  3. Analysez le DEVDETAIL et consultez le membre fAttached.
+0

Je suis sûr que OpenNETCF est un excellent complément pour le framework compact, mais je développe une application à usage industriel qui devrait fonctionner 24/7 sans problèmes et j'ai déjà de nombreuses bibliothèques en dehors de CF. Vous savez que chaque ligne X de codes vous avez des erreurs Y et j'essaye d'éviter d'ajouter beaucoup d'autres choses si possible ... et cela m'a paru une fonctionnalité très basique et il semble "stupide"? pour moi, CF ne fournit pas un moyen facile de le faire. –

+0

Il y a un tas de choses pour lesquelles les FC ne fournissent pas la capacité (et qui était le principal moteur de création du SDF). Les étapes ci-dessus vous donneront les notifications que vous recherchez - et c'est vraiment la seule façon de le faire. Ce n'est pas aussi simple que vous l'auriez probablement espéré. – ctacke

+0

Oui, vous avez raison. Mais ... enfin, j'abandonne OpenNetCF. Il semble que les limites de CF sont si profondes et je ne peux pas prendre tout ce temps pour contourner toutes ces fonctionnalités ... Merci –

0

Il me prendrait un certain temps pour écrire que pour vous, vous aurez donc besoin de le faire vous-même. Commencez l'écriture du projet, recherchez les sous-programmes P/Invoke pour les appels dont vous avez besoin (par exemple FindFirstFile et CreateProcess). Sur SO, jetez un oeil à Storage Card Problem In windows mobile et How to register form for WM_DEVICECHANGE message in windows mobile.

Vous allez seulement être mort dans l'eau si vous ne trouvez pas un appel particulier que vous ne pouvez pas faire.

Lorsque vous travaillez sur votre projet, affichez (ou recherchez) les problèmes réels que vous rencontrez.

Sinon, il semble que vous demandiez à quelqu'un d'écrire le projet et de le lui remettre.

+0

Merci. Je ne demande pas à quelqu'un d'écrire du code pour moi, je cherche juste un tutoriel et/ou un extrait de code pour faire ça! –

Questions connexes