locked
Windows 10 IoT Core 環境の COM ポートの割り当てについて RRS feed

  • 全般的な情報交換

  • こんにちは、WDK サポートチームです。

    今回は、Windows 10 IoT Core 環境の COM ポートの割り当てについてご案内します。

     

    現象

    Windows 10 IoT Core 環境では COM ポートを作成するデバイス (: USB-Serial 変換ケーブル) に対してポート番号 (COM1, COM2, ) は自動的に割り当てられません。

     

    原因

    デスクトップ版 Windows 10 とは異なり、Windows 10 IoT Core では COM ポート番号を管理するクラスインストーラー (msports.dll) とポート番号を取得するための API 群が省略されております。

    このため、COM ポートを作成するデバイスを接続しても COM ポート名は自動的には割り当てられず、シンボリックリンク名 (COM1, COM2, ) を使用するアプリケーションからアクセスできません。

     

    解決方法

    原則として、ご利用いただいているデバイス用のドライバ側で対応いただく必要があり、空いている COM ポートの番号を調べて IoCreateSymbolicLink 関数にて COMポートへのシンボリックリンクを作成する実装が必要となります。

    ただし、デバイス毎に対応状況が異なることが予想されるため、正常にデバイスが認識されない場合は、ご利用のデバイスの提供元様へ一度お問い合わせくださいますようお願いいたします。

     

    なお、デスクトップ版の Windows 10 環境ではクラスドライバ (msports.dll) が空いている COM ポート番号を割り当て、デバイス毎のレジストリへ書き込みますので、ドライバ側で空きポートを調べる処理は必要ありませんでした。

    このようなドライバでは下記のレジストリを参照する動作となっている可能性が高いため、手動でレジストリ値 “PortName” を追加することにより、ドライバ側でポート番号が作成され、正常に動作する場合がございますのでお試しください。

     

    レジストリキー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_****&PID_****\********\Device Parameters

    レジストリの名前: PortName

    レジストリの型: REG_SZ

    : COM2

    *** の部分はご利用の環境によって異なります。

    ※ポート番号 (上記の例では COM2) は、任意の未使用ポートを設定してください。

     

     

    Symptoms

    On a Windows 10 IoT Core, COM port numbers (e.g. COM1, COM2, ...) are not automatically assigned to devices that add COM ports (e.g. USB-Serial converters).

     

    Cause

    Unlike desktop versions of Windows 10, Windows 10 IoT Core omits the ports class installer (msports.dll) that provides COM port numbers and APIs for obtaining port numbers.

    Therefore, when you connect a device that adds a COM port, the COM port name is not automatically assigned and cannot be accessed by applications that access the port via symbolic link names (COM1, COM2, ...).

     

    Resolution

    The driver for the device must be capable of selecting unused port name and creating a symbolic link name to a COM port.

    How this is implemented is depends on the device.

    Please contact the manufacturer of your device for assistance when your device is not recognized.

     

    Some drivers may work by manually adding the registry value ‘PortName’ under ‘Device Parameters’ key.

    You can try this as workaround.

     

    Registry Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_****&PID_****\********\Device Parameters

    Value name: PortName

    Data type: REG_SZ

    Value data: COM2

    Note: *** represents your device

    Note: You need to choose unused COM port number on your system



    2019年6月28日 2:59
    所有者