Maison >développement back-end >C++ >Comment puis-je activer ou désactiver des périphériques par programme dans Win32 et quelles sont les limitations ?

Comment puis-je activer ou désactiver des périphériques par programme dans Win32 et quelles sont les limitations ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-05 21:54:39510parcourir

How Can I Programmatically Enable or Disable Devices in Win32, and What are the Limitations?

Gestion programmatique des appareils dans Win32

Activation/désactivation des appareils

Windows fournit des API de la famille SetupDi pour gérer les appareils par programme, y compris leur activation et leur désactivation . Cependant, tous les appareils ne prennent pas en charge la désactivation de cette façon.

Problème de périphérique de souris

Dans le cas des périphériques de souris, le pilote de souris par défaut compatible PS/2 ne prend pas en charge la désactivation via les API SetupDi en raison aux préoccupations concernant la déstabilisation du matériel lors du détachement à chaud d'anciennes souris à l'aide de connecteurs PS/2.

Vérification de la désactivation Capacité

Pour déterminer si un appareil peut être désactivé à l'aide des API SetupDi, recherchez dans le Gestionnaire de périphériques une option « Désactiver ». Le cas échéant, vous pouvez utiliser les API SetupDi. En cas d'absence, vous vous retrouvez avec les options de communication IOCTL.

Code de désactivation d'un périphérique de souris

Si le pilote de votre souris prend en charge la désactivation via les API SetupDi, l'extrait de code suivant montre comment désactiver et réactiver -activez-le en utilisant C# et P/Invoke :

public static void EnableMouse(bool enable)
{
    Guid mouseGuid = new Guid("{4d36e96f-e325-11ce-bfc1-08002be10318}");
    string instancePath = @"ACPI\PNP0F03&3688D3F&0";
    DeviceHelper.SetDeviceEnabled(mouseGuid, instancePath, enable);
}

À l'aide de DeviceHelper Bibliothèque

Pour simplifier la tâche, vous pouvez utiliser la bibliothèque DeviceHelper à partir du bloc de code fourni. Il expose une méthode SetDeviceEnabled qui prend en entrée le GUID de la classe, l'ID de l'instance et l'indicateur d'activation/désactivation.

Contraintes

  • Notez qu'IndexOutOfRangeException peut se produire lors de l'utilisation de GetIndexOfInstance si le GUID de la classe ou l'ID d'instance est incorrect.
  • Pour éviter l'erreur SetupAPI "InWow64", assurez-vous que votre application cible la plate-forme 64 bits sur Windows 64 bits.
  • De plus, tenez compte des débordements arithmétiques de pointeurs potentiels dans votre application 64 bits.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn