• No : 136
  • 公開日時 : 2007/03/01 03:00
  • 更新日時 : 2024/10/30 14:15
  • 印刷

COM10以上を指定するとポートがオープンできません。

・COM10以上を指定するとポートがオープンできません。
・COMポートのオープン処理(CreteFile()関数)でエラー(INVALID_HANDLE_VALUE等)が発生します。
 
カテゴリー : 

回答

  
関連情報:
 
 COM10以上のCOMポート番号をオープンする場合、CreateFile関数にて指定するCOMポート番号の指定を以下の様に記述する必要があります。
 「"\\.\COM○○" 」 → 「"\\\\.\\COM○○" 」 : ○○はCOMポートNo.
 
 この記述はCOM1~COM9の場合でも有効です。
 なお、本内容は弊社ドライバ仕様ではなく、OS側の仕様です。
 
 下記URLのMicrosoft社ページにおいて 『COM10 CreateFile』 で検索することで同情報の参照が可能です。
 https://support.microsoft.com/
 

 【例】COM10をオープンする場合:
  hDevice = CreateFile(
        "\\\\.\\COM10",                                   /* COMポート */
        GENERIC_READ | GENERIC_WRITE,        /* アクセスモード */
        0,                                                       /* 共有モード */
        NULL,                                                 /* セキュリティ記述子 */
        OPEN_EXISTING,                                /* 作成方法 */
        FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,             /* ファイル属性 */
        NULL);                                                /* コピーする属性付きファイルのハンドル */
 
  注)上記の 「"\\\\.\\COM10"」 はC言語仕様で明記されている「エスケープシーケンス」を含めた「文字列
   定数」の表記です。