------------+-----------+----------------------------------------------------------- 日付 |バージョン |内容 ============+===========+=========================================================== 2005/03/23 |2.0.0.0 |新規作成 ------------+-----------+----------------------------------------------------------- 2005/09/07 |2.0.0.5 |・レジストリの設定により、WriteFileの非同期/同期の動作を切り | | 替えることができるように変更 ------------+-----------+----------------------------------------------------------- 2005/09/09 |2.0.0.6 |・INFファイルに指定が無い場合Bulk-IN/OUTでペイロードサイズを | | 使用するように変更 | |・EP3の使用/未使用をレジストリの値で判断する機能を追加 | |・レジストリの設定により、ボーレート設定のチェックを行わない | | 機能を追加 | |・ベンダーリクエストを汎用的に行えるように変更 | |・パイプのオープン方法のバリエーションを追加 | |・ポートオープン中にUSBケーブルが抜き差しされても、ポートク | | ローズ後の再オープンでエラーとならないように変更 ------------+-----------+----------------------------------------------------------- 2005/09/12 |2.0.0.7 |・複合デバイスを意識して、インターフェイス選択の条件を指定 | | するように変更 ------------+-----------+----------------------------------------------------------- 2005/09/13 |2.0.0.8 |・送信キャンセル時に未送信データ数を減算していなかった不具合 | | 修正 ------------+-----------+----------------------------------------------------------- 2005/09/26 |2.0.0.9 |・複合デバイスでInterfaceNumber=0でしか認識しない不具合を | | 修正 ------------+-----------+----------------------------------------------------------- 2005/09/29 |2.0.0.10 |・2.0.0.6の時に「ポートオープン中にUSBケーブルが抜き差しされても、ポートク | | ローズ後の再オープンでエラーとならないように変更」したつもりが | | 実は直っていなかった不具合修正 | |・キャンセルスピンロックを2重に取得する不具合を修正 ------------+-----------+----------------------------------------------------------- 2005/12/09 |2.0.0.11 |・INFファイルの設定項目追加 | | インターフェイス選択用の判断材料を追加 | |・パワーマネージメントの処理を見直し ------------+-----------+----------------------------------------------------------- 2005/12/28 |2.0.0.12 |・ベンダーリクエスト(コントロールIN)でデータを受信できない | | 不具合を修正 ------------+-----------+----------------------------------------------------------- 2005/12/28 |2.0.0.13 |・バルク転送キャンセル時にパイプリセットを発行するようにした。 | |・スピンロックを保持した状態でIoCompleteRequestを呼び出さないように修正 ------------+-----------+----------------------------------------------------------- 2006/01/14 |2.0.0.14 |・USBドライバをWin98DDKでビルドできるようにした。 | | Win98DDKでは定義されていないAPIがあるため、 | | _WIN32_WINNT == 0x400の場合に代替のAPIで置き換えるようにした。 | |・2.0.0.6からWin98でポートオープンできないようになってしまったため、 | | 修正。 ------------+-----------+----------------------------------------------------------- 2006/01/14 |2.0.0.15 |以下の問題を修正 | |・MaxPacketSizeの送信でNULLパケットが出ない | |・WriteFile時にSOF毎に1回のOUTしか出ない | |・レジューム時に必ずベンダーリクエストが出てしまう ------------+-----------+----------------------------------------------------------- 2006/06/30 |2.0.0.16 |・USBドライバで行っていたNULLパケット送出処理をポートドライ | | バで行うように変更。 | |・TxAsync!=0の場合、スピンロックを2重にロックしていた処理を | | 修正 ------------+-----------+----------------------------------------------------------- 2006/07/24 | |ユーザーズマニュアル「6.1 EP0のデータフォーマット」に | |抜けていたベンダーリクエスト2項目に関する記述を追加 | | 6.1.3 SET_XON_XOFF_CHR | | 6.1.5 SET_ERR_CHR ------------+-----------+----------------------------------------------------------- 2006/09/15 | |<> | |USB(sys) ver. 2.0.0.16 | |VCM(sys) ver. 2.0.1.4 | |・USBドライバ側でNULLパケットを送信しない。(ポートドライバ側でNULLを送る) | |・EP3の使用・未使用をディスクリプタで判断する。(INFではなく) | |・FlushFileBuffersに対応する。 | |<> | |USB(sys) ver. 2.0.0.16 | |VCM(sys) ver. 2.0.1.4 | |VCM(vxd) ver. 2.0.0.16 | |・USBドライバ側でNULLパケットを送信しない。(ポートドライバ側でNULLを送る) | |・EP3の使用・未使用をディスクリプタで判断する。(INFではなく) ------------+-----------+----------------------------------------------------------- 2006/09/22 | |<> | |USB(sys) ver. 2.0.0.17 | |VCM(sys) ver. 2.0.1.5 | |・サスペンド時に受信処理が実行中の場合、サスペンドできない不具合を修正 | | サスペンド時にI/O要求をキャンセルする処理を追加 ------------+-----------+----------------------------------------------------------- 2006/10/10 | |<> | |USB(sys) ver. 2.0.0.17 | |VCM(sys) ver. 2.0.1.6 | |・ポートをオープンしていない状態でサスペンド→レジュームすると、 | | オープンしてもIN要求が出ない不具合を修正 ------------+-----------+----------------------------------------------------------- 2006/10/31 |2.0.2.0 |<> | |USB(sys) ver.2.0.2.0 | |VCM(sys) ver.2.0.2.0 | |・.NET2.0 SerialPort::Openメソッドが失敗する問題を修正 | |・送信時のキャンセル・タイムアウト処理を見直し ------------+-----------+----------------------------------------------------------- 2006/11/08 |2.0.2.1 |<> | |USB(sys) ver.2.0.2.1 | |VCM(sys) ver.2.0.2.1 | |・デバイスがBulk-OUTにNAK応答している状態でサスペンドできない問題を修正 ------------+-----------+----------------------------------------------------------- 2007/01/23 |2.0.2.2 |<> | |USB(sys) ver.2.0.2.2 | |VCM(sys) ver.2.0.2.2 | |usbioctl.hがシステムヘッダの名前と競合し、WDKでのビルドができなかった。 | |usbioctl.h --> libioctl.hと名前を変更し、バージョンをアップした。 | |<> | |WDKでx64用ドライバを生成。 ------------+-----------+----------------------------------------------------------- 2007/04/08 |2.0.2.4 |<> | |USB(sys) ver.2.0.2.4 | |・DTMでBugCheck 0xC9となる問題を修正 ------------+-----------+----------------------------------------------------------- 2007/04/12 |2.0.2.4 |<> | |VCOM(sys) ver.2.0.2.4 | |・ReadIntervalTimeoutのデフォルト値を修正 | |・WriteTotalTimeoutConstantを正常に取得できない不具合を修正 ------------+-----------+----------------------------------------------------------- 2007/05/10 |2.0.2.5 |USB(sys) ver.2.0.2.5 | |・パイプ名からエンドポイントディスクリプタのインデックス番号を取得する際の不具合を修正 ------------+-----------+----------------------------------------------------------- 2007/10/08 | 2.0.2.6 |VCOM(sys) ver.2.0.2.6 | |・ポートオープン中のUSBケーブル抜き差し対応 | | デバイスマネージャの表示で!マークが付かない。 | | ポートクローズ後、再オープン可能。 ------------+-----------+----------------------------------------------------------- 2008/11/28 | 2.0.2.6 |USB ver.2.0.2.6 | |・下記問題を修正 | | Windows 2000 SP4において、Driver Verifier機能を有効にした状態で、 | | デバイスマネージャ上から、USBドライバの「ドライバ更新」を実施すると | | bug check 0xc9が発生する | |・下記問題を修正 | | AddDevice()ルーチンで呼び出している、wdmpnp.c:WDM_QueryCapabilities()関数 | | (1) IRP_MN_QUERY_CAPABILITIESのパラメータ未初期化 | | (2) IoStatus.Status未初期化 | | (3) ペンディング時のエラーコード ------------+-----------+----------------------------------------------------------- 2009/04/07 | 2.0.2.7 |USB ver.2.0.2.6 | | VCOM ver.2.0.2.7 | |・.NET環境での(FileStreamクラスを使用できない)不具合修正 ------------+-----------+----------------------------------------------------------- 2009/04/07 | 2.0.2.8 |USB ver. 2.0.2.8 | |・WDM_QueryCapabilitiesをPAGEDコードセクションに配置 | |・不要な自動変数の定義を削除 | |・バッファオーバーランのチェック追加 | |VCOM ver. 2.0.2.8 | |・完了ルーチンの戻り値を宣言していなかったのを修正 | |・バッファオーバーランのチェック追加 | |・NULLポインタを参照する可能性のある個所を修正 | | IoCreateDeviceがSTATUS_OBJECT_NAME_EXISTSかSTATUS_OBJECT_NAME_COLLISIONでエラー終了した場合 ------------+-----------+----------------------------------------------------------- 2009/10/27 | 2.0.2.9 | VCOM ver.2.0.2.9 | |・IOCTL_SERIAL_GET_CHARS時のIRP->IoStatus.Informationの設定が間違っていたので修正 ------------+-----------+----------------------------------------------------------- 2010/01/13 | 2.0.2.10 | VCOM ver.2.0.2.10 | | ・ver.2.0.2.8 の"NULLポインタを..."の修正の仕方がまずく、 | | オープン時に抜き挿ししたあとに、ポートをクローズして再度オープンした時に | | オープンできなくなっていたのを修正 | | INFファイル | | ・Versionを更新 ------------+-----------+----------------------------------------------------------- 2010/07/27 | 2.0.2.11 | [vcom] | | バッファリング送信IRPキューへのIRP登録時のミスを修正 ------------+-----------+----------------------------------------------------------- 2010/10/14 | 2.0.2.12 | [vcom] ver.2.0.2.12 | | [usb] ver.2.0.2.9 | | ベンダーリクエストのrecipientをInterfaceに変更 | | また、SETUPのwIndexをインターフェイス番号に設定 ------------+-----------+----------------------------------------------------------- 2011/07/28 | 2.0.2.13 | [vcom] ver.2.0.2.13 | | ・Windows 7 Driver Verifier有効("保留中のI/O要求を強制する"オプション)時BSODとなる問題を修正 | | ・Windows 7 Driver Verifier有効時、ポートオープン中のサスペンド→レジュームでBSOD発生する問題を修正。 | | ・eventSpinLockの初期化忘れ修正 ------------+-----------+----------------------------------------------------------- 2012/09/20 | 2.0.2.14 | USBドライバのI/O Control Code定義のFunctionコードが、 | | マイクロソフト予約コードとなっている仕様違反を修正 ------------+-----------+----------------------------------------------------------- 2012/10/16 | 2.0.2.15 | vrcom/win2k | | 受信タイムアウトを設定した状態で、タイムアウト発生前に | | USBケーブルを抜くとBSoDとなる不具合を修正 | | rxTimeoutTimerのキャンセルし忘れが原因 ------------+-----------+----------------------------------------------------------- 2013/02/21 | 2.0.2.16 | ==== | | HCK(Windows 8)で"Concurrne Hardware And Operating System(CHAOS) Test (Certification)"がFailする問題を修正。 | | ■現象 | | IRP_MN_QUERY_REMOVE_DEVICEが完了しないため、テストが進行しない。 | | カーネルデバッガでリモートホストPCと接続している場合は、10分のタイムアウトでBSoDとなる。 | | ■原因 | | (1) IRP_MJ_CREATEでオープン処理、ポーリング開始 | | (2) IRP_MJ_PNP, IPR_MN_QUERY_REMOVE_DEVICEが発行される | | → USBファンクションドライバがRemoveDeviceRequestedフラグをセットする。 | | その後、未完了のIRPが無くなるのを待つ | | (3) IRP_MJ_CLEANUP発行 | | 仮想COMフィルタドライバがパイプアボートを要求する | | USBファンクションドライバはRemoveDeviceRequestedフラグがセットされているため、要求を却下する。 | | → パイプアボート要求はバスドライバに届かない。 | | ポーリング要求が完了しない。(デバイス側は、送るデータが無い限りNAK応答するので) | | → (2)の待ちが完了しない | | ■対策 | | (2)で待ちに入る前にパイプアボート処理をバスドライバに投げる処理を追加。 | | ==== | | ETW有効化、prefast対策 | | ==== | | イベントトレースを利用したロギング用のバッチファイルなどを追加。 | | トレースログを採取するのに logman を使用することで、ターゲットPCに余計なソフトをコピーする必要がない。 ------------+-----------+----------------------------------------------------------- 2014/01/12 | 2.0.2.17 |共通事項 | | ・ビルド環境更新 | | ドライバビルド環境を、WDK6000 -> WDK7.1.0(7600.16385.1) へ移行。 | | ・Windows 98関連ファイル削除 | | ・ドライバフォルダ構成変更(WIN2K -> x86, wlh_amd64 -> x64) | | ・WDK 7.1.0(7600.16385.1)付属 PREFast指摘事項対応 | |USBドライバ | | ・kb200977: PRB: You cannot set MaximumTransferSize for a USB composite device. への対策。 | | コンポジットデバイスの親ドライバとしてUsbHub.sysがロードされた場合、 | | URB_FUNCTION_SELECT_CONFIGURATION 要求時のMaximumTransferSize変更が失敗する。 | | ※ Intel(R) 7 Series/C216チップセット内蔵のUSBコントローラで同じ症状が発生する。 | | 対策として、URB_FUNCTION_SELECT_INTERFACE 要求にて設定変更を確実に行うよう変更した。 | | ・AddDeviceルーチンのエラー処理修正 | | 通常動作時には問題ないが、メモリ不足などの理由でカーネルAPIがエラーとなった時にリソース解放もれや | | ブルー・スクリーンとなる問題があった為修正。 | |VCOMドライバ | | ・IRP_MN_SURPRISE_REMOVAL処理とVrcomWaitOnMask()処理が輻輳した時に、WaitCommEvent()関数がブロックされたままとなる問題に対応 | | ・受信タイムアウト無しの設定で、ReadFile() APIコール中にUSB切断が発生すると、 | | ReadFile() APIがブロックされたままとなる問題に対応。WaitCommEvent() APIも同様の動作となるので修正。 | | ・CancelWaitOnMask()関数変更。イベント待ちIRP(eventIrp)をSTATUS_CANCELLEDで完了するように修正。 | | ・AddDeviceルーチンのエラー処理修正 | | 通常動作時には問題ないが、メモリ不足などの理由でカーネルAPIがエラーとなった時にリソース解放もれや | | ブルー・スクリーンとなる問題があった。 | | ・IRP_MN_START_DEVICE 処理時、下位ドライバ処理の完了を同期的に待つが、完了ルーチン内でIRPの保留マークを行っていたが、 | | 不要な処理なので削除。 | | ・WaitCommEvent()関数で、EV_RX80FULL イベントが検出できない問題へ対応 ------------+-----------+----------------------------------------------------------- 2014/07/14 | 2.0.2.18 |共通事項 | | ・変換モジュール ver1に対応 | | infファイル UsbComConverterの設定で、変換モジュールと標準品をソフトウェアで切り替える | | ・prefastに対応 ------------+-----------+----------------------------------------------------------- 2015/07/16 | 2.0.2.19 |UsbDeviceExtension の NULL ポインタチェックが無い箇所があったため、チェックをするように修正した。 ------------+-----------+----------------------------------------------------------- 2015/12/26 | 2.0.2.20 |TeraTerm での通信中のサスペンド→レジューム後に、通信できない問題を修正。 | |Windows 10に対応 ------------+-----------+---------------+----------------------------------------------------------- 2016/03/22 | 2.0.2.21 |ドライバディスク構成変更 | | Microsoft社の Driver Signing Submissionサービス利用によるデジタル署名付与を考慮し、 | | Windows 10向けのドライバディスクと、他OS向けドライバディスクを分離。 | | ・Windows 10向け : Win10/ | | ・Windows 7, 8, 8.1向け: Win7_8_8.1/ | |Windows Vistaをインストール対象外に変更 | | infファイルを変更し、Windows Vistaをインストール対象外へ変更。 ------------+-----------+---------------+----------------------------------------------------------- 2017/03/09 | 2.0.3.0 |・USB Selective Suspend機能の追加 | |・コンパイルスイッチ・レジストリでUSB Selective Suspend機能を無効にできるように変更 | |・オープン/リード/クローズを繰り返していると、CloseHandleでブロックされる問題の修正 | |・ポーリング停止中にPurgeCommを実行しても、ポーリングが再開しない問題の修正 | |・静的コード解析の指摘事項を修正 | |・オープン/クローズを繰り返し中にサスペンドすると、ブルースクリーンが発生する問題の修正 | |・オープン/クローズを繰り返し中にサスペンドすると、CloseHandleでブロックされる問題の修正 | |・オープン/クローズを繰り返していると、フリーズする問題を修正 | |・静的解析ツールの指摘事項を修正 ------------+-----------+-----------------------------------------------------------