2009-04-28 7 views
1

Je travaille actuellement sur un projet qui utilise une carte radio PCMCIA propriétaire pour communiquer avec certains périphériques sans fil. J'ai actuellement un processus d'arrière-plan qui gère la lecture des données vers et depuis la carte et le stocke pour le traitement, mais j'aimerais pouvoir éteindre l'alimentation de la carte lorsque mon application n'est pas en cours d'exécution. J'ai fait quelques recherches, et bien que WMI supporte évidemment le profil CIM_PCMCIAController dans son implémentation WIN32_PCMCIAController, les fonctions SetPowerState() et Reset() ne sont pas implémentées. Est-ce que quelqu'un sait d'une manière (avec ou sans WMI) pour contrôler l'état d'alimentation de l'emplacement? Je dois être capable de programmer à la fois la mise hors tension et la mise sous tension de la fente ou de la carte.Contrôle de l'alimentation de la fente/carte PCMCIA

Modifier

Plusieurs personnes que j'ai parlé ont suggéré d'ajouter une fonction à la carte qui faciliterait cela. Malheureusement, modifier la carte pour fournir ce genre de fonctionnalité n'est vraiment pas une option pour le moment.

Edit 2

J'ai confirmé que le dispositif ne se présente dans le Gestionnaire de périphériques sous « cartes multifonction » catégorie, bien que ni la désactivation de l'appareil ni le contrôleur PCMCIA lui-même d'ici a un effet sur la puissance de la carte.

Répondre

1

Vraisemblablement, le périphérique possède ses propres pilotes et affiche dans le Gestionnaire de périphériques.

Dans ce cas, vous pouvez désactiver le périphérique en appelant devcon (équivalent en ligne de commande du Gestionnaire de périphériques) depuis votre programme. Cela permettrait aux fenêtres de fermer l'appareil.

devcon disable. Voir l'exemple n ° 31 pour un exemple d'arrêt du périphérique par un identifiant de périphérique spécifique. Est-ce que je vais sur la droite, ou est-ce que j'ai mal interprété votre question?

+0

Les pilotes de périphérique créent deux ports COM virtuels. Je sais que ces ports apparaissent dans le gestionnaire de périphériques, mais je ne suis pas sûr que la carte le fasse elle-même. Je vais devoir vérifier lundi. –

+0

Ok. Faites le nous savoir lundi. Si ce n'est pas le cas, le port de la carte est-il contrôlé par un chipset spécialisé ou est-il connecté directement au south-bridge? Parce que vous pourriez essayer de monter sur ces contrôleurs pour couper l'alimentation du port. –

+0

@Ali: Si c'est quelque chose qui changerait de machine à machine (c'est-à-dire spécifique à la machine plutôt qu'à la carte), cela ne fonctionnera pas car cela doit être une solution générique pour n'importe quel ordinateur portable avec la carte il. –

1

Je suis curieux, mais est-ce que l'utilisation du bouton «Retirer le périphérique en toute sécurité ...» met le périphérique hors tension, assez pour répondre à vos besoins?

Si cela fonctionne, vous pouvez enregistrer et désinscrire par programme l'appareil via l'API de Microsoft. Voici une page qui montre quelques fonctions qui pourraient être utiles pour ce scénario: http://msdn.microsoft.com/en-us/library/aa363234(VS.85).aspx

+0

Merci, je vais donner une chance à cette suggestion dès que je serai de retour au travail lundi (je n'ai pas la carte à la maison avec moi). –

+0

Je ne sais pas pourquoi, mais il ne me laissera pas supprimer mon commentaire précédent ... l'appareil lui-même n'apparaît pas dans la boîte de dialogue "Safely remove hardware". Le périphérique lui-même ne s'affiche pas dans le Gestionnaire de périphériques (bien que je vérifierai cela lundi), seulement les deux ports COM virtuels qu'il crée. –

+0

Message original mis à jour ... l'appareil apparaît dans le gestionnaire de périphériques, mais le désactiver n'a aucun effet sur l'état de l'alimentation. –