ホームページ > バックエンド開発 > C++ > Win32 でデバイスをプログラムで有効または無効にする方法と制限事項は何ですか?

Win32 でデバイスをプログラムで有効または無効にする方法と制限事項は何ですか?

Linda Hamilton
リリース: 2025-01-05 21:54:39
オリジナル
561 人が閲覧しました

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

Win32 でのプログラムによるデバイス管理

デバイスの有効化/無効化

Windows には、デバイスの有効化と無効化などをプログラムで管理するための SetupDi ファミリの API が用意されています。 。ただし、すべてのデバイスがこの方法での無効化をサポートしているわけではありません。

マウス デバイスの問題

マウス デバイスの場合、デフォルトの PS/2 互換マウス ドライバーは SetupDi API による無効化をサポートしていません。 PS/2 コネクタを使用して実際の古いマウスをホットデタッチするときにハードウェアが不安定になることを懸念しています。

無効を確認しています機能

SetupDi API を使用してデバイスを無効にできるかどうかを判断するには、デバイス マネージャーで「無効」オプションを確認します。存在する場合は、SetupDi API を使用できます。存在しない場合は、IOCTL 通信オプションが残ります。

マウス デバイスを無効にするコード

マウス ドライバーが SetupDi API による無効化をサポートしている場合、次のコード スニペットは無効化および再設定する方法を示しています。 -C# と 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);
}
ログイン後にコピー

DeviceHelper を使用するLibrary

タスクを簡素化するために、提供されたコード ブロックから DeviceHelper ライブラリを使用できます。これは、クラス GUID、インスタンス ID、および有効/無効フラグを入力として受け取る SetDeviceEnabled メソッドを公開します。

Constraints

  • クラス GUID の場合、GetIndexOfInstance を使用すると IndexOutOfRangeException が発生する可能性があることに注意してください。またはインスタンス ID が間違っています。
  • 回避するにはSetupAPI エラー「InWow64」。アプリケーションが 64 ビット Windows 上の 64 ビット プラットフォームをターゲットにしていることを確認してください。
  • さらに、64 ビット アプリケーションでポインタ演算オーバーフローが発生する可能性があることを考慮してください。

以上がWin32 でデバイスをプログラムで有効または無効にする方法と制限事項は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート