XLsoft Corporation/エクセルソフト株式会社
英語 日本語 中国語 韓国語
WinDriver は PCI / USB / ISA ベースのデバイスドライバを簡単に短期間に作成するためのデバイスドライバ開発ツールキットです。
WinDriver ドライバ開発 WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
.
.FAQ
.
. サイト マップ
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
. 関連リンク
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
WinDriver, ドライバ, デバイスドライバ, ドライバ開発, Windows ドライバ, Linux ドライバ, PCI ドライバ, USB ドライバ, DDK, カーネル, ハードウェア テスト, デバッガ−, デバッグ, KernelDriver, Hardware Debugger, Go-HotSwap, USB On-The-Go (OTG) Stack, USB Remote NDIS Stack, USB Host Stack, USB Device Stack
.

Tip: このページで探している回答が見つからない場合、古い FAQ の内容を探している場合、テクニカル ドキュメントおよび旧バージョンの FAQ を参照してください。

.
一般的な問題

. 価格およびライセンスの問題

. テクニカル情報 - WinDriver

. テクニカル情報 - KernelDriver

. Kernel PlugIn の問題

. Windows の問題

. WindowsCE の問題

. Linux の問題

. Solaris の問題

. DriverBuilder の問題 (VxWorks)

.
. PLX の問題

. Altera の問題

. USB の問題

. Cardbus の問題

. Parallel/Serial の問題

. 割り込みの問題

. DMA の問題

質問

一般的な問題

* 参考: テクニカル ドキュメント - 一般的な問題

価格とライセンスの問題

* 参考: テクニカル ドキュメント - ライセンスと配布の問題

テクニカル情報 - WinDriver

* 参考: テクニカル ドキュメント - WinDriver

テクニカル情報 - KernelDriver

* 参考: テクニカル ドキュメント - KernelDriver

Kernel PlugIn の問題

* 参考: テクニカル ドキュメント - KernelPlugIn

Windows の問題

* 参考: テクニカル ドキュメント - Windows

Windows CE の問題

* 参考: テクニカル ドキュメント - Windows CE

Linux の問題

* 参考: テクニカル ドキュメント - Linux

Solaris の問題

* 参考: テクニカル ドキュメント - Solaris

DriverBuilder の問題 (VxWorks)

* 参考: テクニカル ドキュメント - DriverBuilder & VxWorks

PLX の問題

* 参考: テクニカル ドキュメント - PLX

Altera の問題

* 参考: テクニカル ドキュメント - Altera

USB の問題

* 参考: テクニカル ドキュメント - USB

CardBus の問題

* 参考: テクニカル ドキュメント - CardBus

Parallel/Serial の問題

* 参考: テクニカル ドキュメント - Serial と Parallel ポート

Interrupt の問題

* 参考: テクニカル ドキュメント - 割り込み

DMA の問題

* 参考: テクニカル ドキュメント - DMA

一般的な問題

WinDriver を使用すると、 カーネル モードでプログラムをする必要はありません。 よって、私は実際にはドライバを作成していないのでしょうか?
デバイス ドライバとは、ハードウェアをコントロールするソフトウェア モジュールです。現在のオペレーティング システムには、このソフトウェア モジュールが多くの場合カーネル モード (ring 0) に存在します。 ただし、WinDriver を使用すると、WinDriver の低レベルなカーネル ドライバ (windrvr6.sys/vxd/o または windrvr.sys/vxd/o - OS および WinDriver のバージョンによって異なります) を使用して、このコードをユーザー モードで記述できます。 したがって、ドライバ開発の知識を必要としません [WinDriver アーキテクチャを参照してください]。
WinDriver にはまた、Kernel PlugIn 機能があり、ユーザー モードで開発したコードをカーネル モードに移行することができます (PCI/ISA の場合)。
作成したドライバがユーザー モードまたはカーネル モードのいずれかとしても、 そのコードはハードウェアをコントロールするので、それはドライバと言うことができます。

WinDriver を購入すると、自分自身でデバイス ドライバを開発する必要はありませんか?
WinDriver を使用すると、次の利点があります:

  • コスト削減 - 開発工数を 90% 削減

  • 信頼性 - WinDriver は、数千項目に及ぶテストを実施しています。また市場で多く使用されているプラットフォームでデバッグを行っております。そのため、開発時間を短縮できるだけでなく、デバッグの時間も削減できます。

  • 市場性 - WinDriver は、現在のマーケットに適応してるので、WinDriver を使用すれば、大幅に開発時間を短縮できます。

  • 柔軟性 - WinDriver は、Windows Server 2003、XP、2000、NT 4.0、Me、98 および Linux、Solaris、Windows CE および VxWorks に対応しています。 - たとえ 1 つのプラットフォームに対してのみドライバが必要でも、WinDriver を使用すれば、他のプラットフォームでも動作させることが可能です [各ハードウェアのタイプ (PCI/ISA/USB) に対する対応する OS に関しては、テクニカル ドキュメント #4 を参照してください]。

  • 安定性 - WinDriver を使用すると、OS のカーネルを意識する必要はありません。 WinDriver のカーネル モジュールが、ハードウェアとのトランザクションをすげて行います。 この方法でカーネル モードのドライバ (Jungo の経験豊富なエンジニアが開発) を実現します。このドライバは、ほとんど全ての利用可能な OS/プラットフォーム/BIOS の組合せでテストを行っているので、高い安定性があります。

デバイス ドライバの開発またはカーネル プログラミングの経験は必要ですか?
いいえ、必要ありません。WinDriver を使用すると、ユーザー モードでデバイス ドライバのコーディングを行います。 WinDriver は、WinDriver API を実装する低レベルなカーネル モード ドライバ (windrvr6.sys/vxd/o または windrvr.sys/vxd/o - OS および WinDriver のバージョンによって異なります) を提供しています (WinDriver アーキテクチャ を参照してください)。従って、お好きな開発環境を使用して、ユーザー モードでドライバをプログラムおよびデバッグ でき、さらにデバイス ドライバの開発時間を大幅に削減できます。

推奨する開発ステップ:

  1. DriverWizard (WinDriver/wizard/wdwizard) を開きます。[Windows の場合、Windows のスタート アップ メニューから DriverWizard を起動します (スタート --> プログラム --> WinDriver --> DriverWizard) またはデスクトップから ショートカット アイコンをクリックします]。

  2. グラフィカルな Wizard を使用して、コードを1行も記述せずに、 ハードウェアを簡単に診断します。PCI/ISA の場合 - ハードウェア リソース (メモリ/IO/レジスタ) を read/write し、 割り込みを listen します。 USB の場合 - パイプへデータを転送し、デバイスのリセットなどをします。

  3. ツールバーから "Generate Code" オプションを選択、または "Next>>" ボタンを押下します。対象とするコンパイラを選択し、DriverWizard が対象のデバイスのドライバ アプリケーションの雛型を生成します。生成されたコードには、WinDriver の API を使用して、検出および定義した対象のハードウェアにアクセスする便利な構造体および関数があります。

    DriverWizard を使用して、C、Delphi (Pascal) または Visual Basic のコードを生成できます [現在、WinDriver USB v6.00 から、Delphi のコード生成は対応していません]。DriverWizard はまた、32 ビット コンパイラ (MSDEV、Borland C++ Builder および Borland Delphi) の makefiles とビルド環境を生成します。

    WinDriver のサンプルを雛型として、ドライバの開発を行えます。特に、拡張サポートを行っている PLX、Altera、Cypress などのハードウェア用のサンプルを各ディレクトリ以下にサンプルを用意しています。拡張サポートを行っている PCI および USB のチップセットに関しては、WinDriver のユーザー マニュアルを参照してください。汎用的なサンプルは、WinDriver/samples (C)、WinDriver/vb/samples (Visual Basic) および WinDriver/delphi/samples (Delphi/Pascal) ディレクトリ以下にあります。

  4. マニュアルやヘルプを使用して、生成された診断コードを編集したり、対象のハードウェアに対して、必要に応じて、機能を追加を行います。

    WinDriver のユーザー マニュアルとヘルプ ファイルは、WinDriver/docs ディレクトリ以下にあります。また、Windows の場合、スタート アップ メニューからアクセスできます。弊社、Web サイトにて日本語マニュアルを用意しています。

  5. 32 ビット コンパイラを使用して、コードをコンパイルおよびビルドします。

終了!

購入前に製品の評価をできますか?
はい。 弊社では、WinDriver と KernelDriver ツールキットの両方のフル機能を備えた評価版を用意しています。 評価版は弊社 Web サイトよりダウンロード可能です。評価版の制限に関しては、WinDriver のユーザー マニュアルおよびテクニカル ドキュメント #9 を参照してください。

WinDriver は完全に後方互換性がありますか?
はい。 WinDriver のすべてのバージョンは完全に後方互換性があります。
例: WinDriver v4.32 でコンパイルしたコードは、v4.32 の windrvr.sys/vxd ファイルと v5.05 のファイルを置き換えれば、リコンパイルせずに動作します (Windows 98/Me/2000/XP での PCI/USB ハードウェアの場合、新しいバージョンの DriverWizard で登録したデバイスの INF ファイルを置き換える必要もあります)。
ただし、v6.00 で、低レベルなカーネル モジュールの名前を "windrvr6" ("windrvr" の代わりに) に変更しました。従って、WinDriver の以前のバージョン (v5.22 およびそれ以前) で開発したコードを使用するには、まず新しいバージョンのヘッダ ファイルでコードをリビルドする必要があります (テクニカル ドキュメント #116 を参照してください)。後方互換性があるので、古い API をサポートしていますが、強化および修正を行った新しいバージョンを機能をフルに使用するには、常に新しい API を使用することを推奨します。

VxWorks 用のツールはありますか?
DriverBuilder for VxWorks と言う VxWorks 用の WinDriver ツールキットがあります。以下の BSPs (Board Support Packages) をサポートします:

  • Intel x86 CPU とすべての Intel x86 BSP (pc486.pcPentium/pcPentiumPro)
  • PPC 821/860 と MBX821/860
  • PPC 750 (IBM PPC 604) と MCP750

DriverBuilder は、Tornado II 環境用にデザインされています。
DriverBuilder for VxWorks のセットアップおよびインストール手順は、インストール手順 - DriverBuilder を参照してください。

質問/問い合せはできますか?
ご質問/お問合せは、お問合せはフォームより承っております。 お問合せの際には、製品名、バージョン番号、ライセンス コード、OS、氏名、会社名、Email アドレス、電話番号および質問内容を明記の上、送信ボタンを押下してください。

製品に関する問題をお問合せの際には、現象の詳細情報、操作手順、どのステップで現象が発生したか、エラーの内容 (エラー メッセージが表示される場合はその内容) をご報告ください。

以下の情報を明記してください:

  1. 一般情報:
    • ご使用の OS: 例、Windows NT 4.0 SP5、Windows 98 SE、Windows 2000 SP1、Windows CE v2.11、RedHat Linux 7.2 kernel version 2.2.14-20

    • ご使用の WinDriver のバージョン: 例、6.00、5.22、5.05、4.31

    • Debug Monitor ユーティリティ (wddebug_gui、または wddebug) のバージョン情報を含むすべての出力内容: Debug Monitor を起動し、デバッグ レベルを 'Trace' に設定し、問題を再現し、Debug Monitor の出力内容をご提供ください (バージョン情報を含む全てのログ)。

  2. ライセンス の問題: Debug Monitor のログに加え、ソフトウェアを購入時に取得した license registration string が正確に登録されているかご確認ください。また、開発環境のコンピュータの registration code をご確認ください。開発環境のコンピュータの DriverWizard を起動して、[Licensing Information] ウィンドウを開き、File --> Register WinDriver で、license registration string を確認できます。

  3. PCI に関する問題: Debug Monitor のログに加え、pci_dump ユーティリティ プログラム (WinDriver/util ディレクトリ以下にあります) のログ、および対象のカードの vendor ID および device ID をご報告ください。

  4. インストール に関する問題: Debug Monitor のログに加え、実際に実行したインストール手順 (どのファイルをどのディレクトリにコピーし、また wdreg ユーティリティの使用方法および INF ファイルのインストールなど) および各ステップの実行結果、エラーメッセージの内容 (表示される場合) などをご報告ください。Plug-and-Play Windows プラットフォーム (Windows Server 2003/XP/2k/Me/98) の場合、 インストールした PC の <WINDIR>\setupapi.log ファイルをご提供ください。

40日ほど前に Windows PC に WinDriver をインストールしました。再度、製品を評価したいのですが、評価期間終了のメッセージが表示されます。アンインストールしてリインストールしても駄目でした。
評価版の期間延長は、お問合せフォームよりお問合せください。 WinDriver/KernelDriver のツールキットの評価版の制限に関しては、WinDriver のユーザー マニュアルおよびテクニカル ドキュメント #9 を参照してください。

USB ポートがついた Microsoft Side Winder のドライバが必要です。そのドライバを提供していますか?
Jungo 社では、デバイス ドライバの記述を行うツールキットを提供しています。既製品のドライバは提供していません。既製品のドライバに関しては、以下のページのリストを参照してください: http://www.jungo.com/resource_index4.html

WinDriver のアンインストール方法を教えてください。
コンピュータから WinDriver を完全にアンインストールする方法は、以下のサイト「アンインストール手順」 を参照してください。注意: Web 上のアンインストール手順は最新の WinDriver のバージョンを対象としています。古いバージョンをご使用の場合は、WinDriver のユーザー マニュアルの関連する章を参照してください。

戻る

価格とライセンスの問題

WinDriver のライセンスの購入方法?
弊社ショッピング ページからご購入いただけます。製品購入申込書に必要な情報を記入して、郵送または FAX にてお送りください。

ライセンスを購入時に他に何が同封されますか?
WinDriver の製品版をご購入いただくと、ライセンス コードの発行、ユーザー マニュアルおよび 2 ヶ月間のインストールおよびドライバの配布に関するサポートおよび無償アップグレードがご提供されます。

2ヵ月後、テクニカル サポートおよび無償アップグレードを受けれますか?
2ヶ月間のサポートおよび無償アップグレードが終了後、テクニカル サポートおよびアップグレードを受けるには、年間サポート プラン SSP (サポート サブスクリプション プラン) を購入する必要があります。弊社ショッピング ページよりお申し込みください。製品購入申込書に必要な情報を記入して、 郵送または FAX にてお送りください。
SSP に関する詳細情報は、価格一覧ページを参照してください。価格一覧ページにも記載してありますが、サポート期間中に SSP を更新すると新規でご購入するよりも非常にお買い得となっております (2ヶ月間の無償サポート期間も含みます)。 SSP をご購入後、技術的な問い合せの際には、有償サポート フォームよりお問合せください。お問合せの際は FAQ を参照してください。

WinDriver で開発したドライバは、配布数に制限はありますか? また、ロイヤリティ料は掛かりますか?
ライセンスを購入後は、WinDriver を使用して開発したドライバはお客様自身のドライバとなります。ライセンスはドライバ開発用に発行されます。作成した実行ファイル EXE/DLL ファイルは無料で無制限に配布できます。ライセンス料は掛かりません。WinDriver/KernelDriver を使用して、ドライバ開発キットを作成した場合は例外です。 WinDriver/KernelDriver のヘッダ ファイルまたは license registration string を配布することはできないので、第 3 者は WinDriver/KernelDriver を使用したドライバを開発できません。詳細は、WinDriver のユーザー マニュアルのドライバの配布を参照してください。

WinDriver の評価版を登録後、 WinDriver で作成したアプリケーション (評価版で動作) は、DriverWizard を起動するまで、動作しません。PC を再起動後、DriverWizard を起動するまで、再びプログラムは動作しません。WinDriver のサンプル プログラムも同様です。何が悪いのでしょうか?
WinDriver/KernelDriver の登録版を使用する際には、コードに license registration string を登録する必要があります。

登録したツールキットの DriverWizard で生成されたコードには、license registration string が含まれます (コードを生成する前に Wizard で license registration string を登録する必要があります)。ただし、評価版を使用中に DriverWizard を使用してコードを生成した場合、または WinDriver/KernelDriver のサンプル コードを使用する場合、そのコードに license registration string を登録する必要があります [WinDriver v5.20 以降、DriverWizard の評価版で生成されたコードは、デモ用の license string が登録されるので、登録版の license registration string に置き換える必要があります]。

メモ, DriverWizard でライセンスの登録が完了後、DriverWizard のすべてのセッションは自動的にライセンスが有効になります。

コードから license registration string を登録する方法は、WinDriver のユーザー マニュアル WD_License() API の説明を参照してください [WinDriver/KernelDriver v5.05b またはそれ以前をご使用の場合、各バージョンの WinDriver/redist/register/register.txt または KernelDriver/redist/register/register.txt registration ファイルを参照してください]。

コード中で、WD_Open() 関数を呼んだ後に直ぐに、WD_License() 関数を呼んで、その他の WinDriver API 関数を呼びます。

WinDriver を使用してドライバを開発しましたが、そのドライバは開発環境でしか動作しません。開発環境以外のマシンにドライバを配布する方法を教えてください。
WinDriver/KernelDriver をインストールすると、そのマシンのみが開発マシンとなるようにDriverWizard などをロックします (どの PC でも DriverWizard を使用できる WinDriver のフローティング ライセンスを除いて)。コードを記述しビルド後、そのドライバをインストールし起動します。WinDriver/KernelDriver を使用して作成したデバイス ドライバは、無制限にロイヤリティ無料で配布できますが、ドライバ開発ツールキットとして配布することはできません (FAQ を参照してください)。
WinDriver/KernelDriver を使用して開発したドライバの配布方法は、WinDriver/KernelDriver のユーザー マニュアルおよびテクニカル ドキュメントの関連項目ライセンスと配布セクションを参照してください。ドライバの配布を行う前に、コードに license registration string が登録されていることをご確認ください。ユーザー マニュアルおよび関連する以下の FAQ を参照してください: #reg1 および #lfc19

戻る

テクニカル情報 - WinDriver

Debug Monitor ユーティリティとは? 起動方法は? 'Trace' モードとは?
The Debug Monitor ユーティリティ (別名 Monitor Debug Messages - 以前のバージョン) - wddebug_gui (グラフィック バージョン) または wddebug (非グラフィック バージョン)、 WinDriver/KernelDriver util ディレクトリ以下にあります - は、WinDriver のカーネル モジュールから詳細なデバッグ情報のログを採取するアプリケーション プログラムです。このユーティリティの使用方法に関しては、テクニカル ドキュメント #12 (wddebug_gui) またはテクニカル ドキュメント #13 を参照してください (wddebug - グラフィックをサポートしていない OS 用、Linux、Solaris および Windows CE はテクニカル ドキュメント #13 を参照、VxWorks はテクニカル ドキュメント #14 を参照してください)。

注意: Debug Monitor はまた、WinDriver のモジュールをインストールした対象の PC 上でも起動します。WinDriver/KernelDriver のツールキットをインストールしていない対象の PC で使用することができます。たとえば、お客様の PC で問題が発生した場合に、デバッグ プログラムを起動することができます。詳細は、FAQ を参照してください。

作成したアプリケーションを起動するとシステムがクラッシュします。よって、Debug Monitor ログにデバッグ情報を取得できません。システムがクラッシュする際に、他にデバッグ情報を取得する方法はありますでしょうか?
はい。テクニカル ドキュメント #44 の説明のとおり、Debug Monitor からデバッグ情報をカーネル デバッガへ送信することができます。
Windows の場合、ハング/クラッシュの場合に、デバッグ情報を保存するには、他の PC にカーネル デバッガをインストールし、この PC と開発環境 PC 間でデバッグ セッションを確立する必要があります。
Linux の場合、再起動後、デバッグ ログ /var/log/messages を検索してください。

WinDriver を使用して、どのように正確なタイマーを実装しますか?
WinDriver は、正確な sleep タイムを取る API を提供します (1 microseconds resolution) - WD_Sleep().

デフォルトでは、WD_Sleep()busy sleep を実行します。

non-busy sleep を実行する必要がある場合:

  • ~17,000 milliseconds resolution で十分な場合、WD_SLEEP 構造体の dwOptions フィールドの SLEEP_NON_BUSY フラグを設定してください。non-busy sleep を実行するために WD_Sleep() に渡します。
    または標準的な OS の sleep 関数 (例、Sleep()WaitForSingleObject() など) を使用してください。標準的な OS の sleep 関数を使用するのではなく、WD_Sleep() を使用すると、コードの互換性が保たれます。

  • より高い resolution が必要な場合、Win95 の VTD (Virtual Timer Device) を使用して、Kernel PlugIn アプリケーションを記述できます。タイマーを実行するコードがカーネル モードのコードであることは問題です。ユーザー モードからカーネル モードへデータを転送するようにコードを記述する必要があります。そして、カーネル モードからユーザー モードへ結果を元に戻す必要があります。

MSVC++ を使用して、簡単にコードをデバッグできますか?
はい! 記述したデバイス ドライバのコードは、通常の Win32 ユーザー モードで起動します。従って、MSVC++ を使用して、コードをコンパイルおよびデバッグできます。
WinDriver/KernelDriver を使用して記述したドライバ コードのデバッグに関する詳細情報は、テクニカル ドキュメント #19 を参照してください。

ISA カード用に 20 以上の 'hardware items' (I/O、メモリおよび割り込みなど) を定義する必要があります。この場合、windrvr.h ヘッダ ファイルの WD_CARD_ITEMS の値が増加しました (WD_CARD_ITEMS WD_ITEMS 構造体の配列として、WD_CARD 構造体の Item メンバー を定義したため)。 しかし、現在 WD_CardRegister() は動作しません。何故でしょうか?
対象のカードの WD_CARD_ITEMS items よりも多く定義する必要がある場合 (現在、windrvr.h ファイルの WD_CARD_ITEMS の定義によると 20 items です)、コード中で、WD_CARD_ITEMS の値は編集しないでください。代わりに、コードから WD_CardRegister() を呼んでください。[WD_CardRegister() の単一の呼び出しで、対象のカードのすべてのリソースをロックする必要はありません]。代わりに、複数のメモリ/IO アドレス範囲を単一の BAR 定義へグループ化することを検討してください。つまり、全体のリソース item count がデフォルトの 20 items の制限を越えません。

windrvr.h の定義は一切、変更しないでください。期待した結果を得られず、問題が発生する場合があります。

WinDriver の登録版をインストールしましたが、Jungo から提供されたサンプル プログラム (PCI Bus Diagnostics、Parallel Port Sample など) が動作しません。何が問題でしょうか?
サンプル プログラムは評価版として記述されています (評価期間中はライセンス無しで配布および使用できます)。ソース コードを編集して、コードから license registration string を登録できます - FAQ を参照してください。

作成した WD_Transfer() メモリ転送ルーティンの処理が非常に遅いです。速度を上げることはできますか?
WD_CardRegister() in:
cardReg.Card.Item[i].I.Mem.dwUserDirectAddress で返される適切なメモリ範囲のベース物理アドレスの仮想ユーザー モードのマッピングを使用して、 WD_Transfer() への呼び出しをダイレクト メモリ アクセスに置き換えることができます。
('i' は、WD_ITEMS 'Item' 配列のメモリ ベース アドレスの index 番号を表します)。
WinDriver のユーザー マニュアル (関数レファレンスの WD_CardRegister() の説明と「パフォーマンスの向上」の章を参照してください) およびテクニカル ドキュメント #74#17 を参照してください。テクニカル ドキュメント #17 には、WinDriver を使用したドライバのパフォーマンスの別の向上方法を紹介しています。

WinDriver を使用して、マルチメディア用のドライバ、特に MIDI ドライバを作成できますか?
はい! Midi ドライバは DRV ファイルです (実際には、標準的な DLL ファイルです)。 WinDriver を使用して、ハードウェアへのアクセスの呼び出しを実行できます (I/O、 メモリおよび割り込み)。

一般的に、MIDI ドライバには2つのパートがあります: 一つはユーザー モード DRV ファイルで、MIDI ドライバ用の Microsoft が定義した出力 API です。二つ目が、ハードウェアへアクセスするカーネル モード SYS (WinNT/2K/XP) または VxD (Win95/98) ファイルです。 DRV ユーザー モード ファイルは、SYS/VxD カーネル モードを呼んで、ハードウェアへのアクセスを実行します。

WinDriver を使用すると、二つ目の実装を行う必要がありません。カーネル モード ドライバを生成する必要はありません。既成の windrvr6.sys/vxd カーネル ドライバを使用して(または以前のバージョンでは "windrvr")、WinDriver の API を実装します。記述する必要があるのは、ユーザー モードの DRV ファイルです。 これでユーザー モードで完全にコードを記述し、デバッグできます。

作成したドライバを対象のマシンにインストールしましたが、開発環境用のマシンでは発生しなかった問題が発生します。開発環境用のマシンと同様に対象のマシン上でも Debug Monitor ユーティリティを起動することができますか?
WinDriver (および KernelDriver) の Debug Monitor ユーティリティはどのマシンでも起動します (開発マシンにのみロック ダウンされる WinDriver DriverWizard ユーティリティとは違い)。このため、開発マシンの WinDriver/util ディレクトリから wddebug_gui ファイル (または wddebug - 非グラフィカルなプラットフォームの場合) を対象のマシンにコピーして、起動できます。Debug Monitor ユーティリティに関する詳細情報は、WinDriver のユーザー マニュアルと次の FAQ とテクニカル ドキュメント: テクニカル ドキュメント #12 (wddebug_gui)、テクニカル ドキュメント #13 (wddebug - Linux/Solaris/Windows CE) およびテクニカル ドキュメント #14 (wddebug.out - VxWorks) を参照してください。

戻る

テクニカル情報 - KernelDriver

KernelDriver と WinDriver の Kernel PlugIn の違いは何ですか?
KernelDriver キットと WinDriver の Kernel PlugIn 機能で、カーネルで直接コードを実装でき、*.sys/vxd/o カーネル ドライバを開発できます。ただし、Kernel PlugIn を使用して作成したドライバは、スタンドアロンではありません - Kernel PlugIn を有効にするユーザー モード アプリケーションとのみ動作します。KernelDriver ツールキットでは、フル機能を持った、スタンドアロンなカーネル モードのデバイス ドライバを作成できます (注意: ただしこのドライバを使用するには、windrvr.sys/vxd/o ドライバ モジュールを追加します)。

KernelDriver ツールキットは、カーネルで全体を実装する必要がある標準ドライバの開発を行う際に使用されます (ネットワークやディスク ドライブなど)。ドライバのパフォーマンスを向上する場合、ただし標準ドライバを開発する必要がない場合、WinDriver と Kernel PlugIn 機能を使用します。
テクニカル ドキュメント #3 を参照して、対象のデバイスのドライバの開発の仕様にあうツールを選択してください。

KernelDriver を使用して、Windows ドライバを開発する場合、他のツールは必要ですか?
Microsoft 社の DDK が必要です。DDK の入手方法は Microsoft 社にお問合せください。また、Microsoft 社の Developer's Studio などの Win32 コンパイラも必要です。

KernelDriver ソフトウェアをインストールしましたが、プロジェクト ファイル KernelDriver\samples\simple\simple.dsw をビルドすると以下のエラーが発生します:
  C:\Program Files\KernelDriver\include\kd.h(35):
  Could not find the filentddk.h.
  The following environment variables were not
  found: $(BASEDIR)

何が必要でしょうか?

対象の OS の適切な Windows DDK ライブラリをインストールし、インストール先を指定するために BASEDIR 環境変数を設定する必要があります (例、C:\DDK)。コントロール パネル (例、Windows 2000 の場合: コントロール パネル --> システム --> 詳細 --> 環境設定) またはコマンド ラインのいずれかで設定します (例: set basedir=c:\DDK コマンド ラインから MSDEV をコンパイルまたは起動する際)。
VxD ドライバの場合、DDKROOT 環境変数を設定します。

KernelDriver v5.05b およびそれ以前を使用してる場合、Windows NT、2000 および XP では NT DDK を使用し、Windows 95、98 および Me では Windows 95 DDK を使用してください。 または、生成されたコードをビルドするには、生成されたプロジェクトで、DDK ファイルへのパスを修正する必要があります。 [たとえば、以下を参考にしてください: $(BASEDIR)/inc$(BASEDIR)/inc/ddk に修正します。また、$(DDKROOT)/inc32$(DDKROOT)/inc/win98 に修正します]。 大きな変更は、\sys\c\msdev5\xxx_driver.dsp または \vxd\msdev5\xxx_driver.dsp です。

KernelDriver のサンプルをビルドできません。以下のエラーが発生します:
    LINK: fatal error LNK1181:
    Cannot open input file "d:/program.obj"

何故でしょうか?

"Program Files" ディレクトリに KernelDriver または DDK のいずれかをインストールした場合に、このエラーが表示されます。Linker オプションで DDK および KernelDriver のパスを指定します。ファイル パスに "Program Files" ディレクトリを含む場合、Linker はファイル パスに空白 (スペース) を認識できず、ビルド中にエラーが発生します。

解決策としては、ディレクトリに DOS 名に対応したファイル パスを指定してください (空白、スペースを含まない)。次のように MS-DOS コマンド プロンプト ウィンドウでコマンドを実行して、名前を検索してください: 'DIR /x'

注意: DDK ライブラリのパスを BASEDIR/DDKROOT 環境変数から取得します。BASEDIR/DDKROOT の値を DDK をインストールしたディレクトリの DOS 名に変更する必要があります。

MSDEV Studio を使用して、KernelDriver のサンプルをビルドすると、以下のビルド エラーが発生します:
c:\project\exe\vrpd_call_driver.c(268):
fatal error C1010: unexpected end of file while
looking for pre compiled header directive ...

何が必要でしょうか?

pre-compiled ヘッダを使用する際に、Visual Studio コンパイラは、以下の行を検索するまですべてのソース コードを無視します: #include "stdafx.h"

この問題を解決するには、以下の一つを実行します:

  • プロジェクトに追加した各ファイルの最初の行に #include "stdafx.h" を追加します。

  • pre-compiled ヘッダ オプションを使用しません (Project -->Settings --> C/C++ --> 'Precompiled Headers' category --> choose: 'Not using precompiled headers')。

戻る

Kernel PlugIn の問題

Kernel PlugIn は無料ですか? 使用するのにライセンスは必要ですか?
Kernel PlugIn は、WinDriver ツールキットに付属されています。
追加のライセンスを購入する必要はありません。

Kernel PlugIn のプロジェクトをビルドするのに Microsoft の DDK は必要ですか?
Kernel PlugIn を使用して、SYS ドライバ (Windows XP/2k/NT または Windows Me/98 の場合) を開発する場合、SYS ファイルをリンクするために WinNT/2000/XP DDK の ntoskrnl.lib ファイルが必要です。そのため対象の OS に Microsoft 社の DDK をインストールする必要があります。Microsoft 社の DDK ライブラリに関する詳細情報は以下を参照してください: http://www.microsoft.com/whdc/devtools/ddk/default.mspx
[注意: DDK を使用して、Kernel PlugIn ドライバをビルドするには、BASEDIR または DDKROOT 環境変数を設定する必要があります。WinDriver のユーザー マニュアルおよび FAQ を参照してください]。
Kernel PlugIn を使用して、VxD ドライバ (Windows 98/Me) を作成する場合には、ドライバをビルドするために Microsoft 社の DDK をインストールする必要はありません。ただし、作成した Kernel PlugIn アプリケーションに DDK 関数を呼び出しを追加する場合には、必要です。[注意: OS 独自の DDK 関数を使用すると、ドライバの互換性が損なわれます]。

1 秒間 (一般的に) に期待できる割り込みの回数はいくつですか?
WinDriver の Kernel PlugIn 機能を使用すると、割り込みを一つもミスせずに、1 秒間に 100,000 以上の割り込みを処理できます。
Kernel PlugIn 割り込み処理コードのサンプルでは、DriverWizard を使用して、デバイスのコードを生成 (PCI デバイスの場合、コードを生成する前に Winzard で割り込みをクリアするためにデータを定義します) するか、カーネルでの ISA の割り込み処理のサンプル Kernel PlugIn KPTEST コード - WinDriver\kerplug\kermode\kptest.c - を参照にします。

ユーザー モードでは、1 秒間におよそ 5,000-10,000 の割り込みを処理できます。しかし、Windows は Real Time OS ではないので、割り込みをミスする可能性があります (ただし、割り込みをミスした際に、ミスした回数を WinDriver はお知らせします)。

WinDriver を使用した割り込み処理の説明は、テクニカル ドキュメント #48 を参照してください。

ドライバ コードは常に物理メモリ内でロックされますか?
はい。

カーネルでロックされたメモリをどのように割り当てますか (Kernel PlugIn 割り込みルーティン内から使用可能)?
WinDriver は、カーネル モードのメモリの割り当てに malloc() および free() を実装します (テクニカル ドキュメント #34 を参照してください)。割り当てたメモリをロックするので、Kernel PlugIn 割り込みルーティンでこのメモリを使用することもできます。
ユーザー モードおよび Kernel PlugIn アプリケーション間でメモリを共有することもできます。テクニカル ドキュメント #41 を参照してください。

Kernel PlugIn で割り込みを処理する際に、ユーザー モードで割り込みハンドラーを削除することはできますか?
はい - ユーザー モードの割り込みハンドラー ルーティンを削除することができます。
また、Kernel PlugIn で割り込み処理のいくつかを実装でき、そして残りのいくつかをユーザー モードで実装できます。KP_IntAtDpc() の戻り値が、ユーザー モードの割り込みハンドラー ルーティンを実行する回数となります。

Kernel PlugIn 機能を使用して、VxD または SYS ドライバ ファイルを作成できますか?
Kernel PlugIn を使用して、add-on VxD/SYS/o カーネル ドライバ (OS によって異なります) を作成して、必要に応じて WinDriver の機能を拡張します。作成した Kernel PlugIn ドライバは、スタンド アロンではありません - 有効にするユーザー モードのドライバとのみ動作します。スタンド アロンのカーネル ドライバを作成するには、KernelDriver ツールキットを使用します (次の FAQ を参考にしてください: http://www.jungo.com/support/faq.html#IKD)。
[注意: WinDriver の Kernel PlugIn 機能または KernelDriver ツール キットを使用する際には、windrvr6.sys/vxd/o または windrvr.sys/vxd/o ドライバ モジュールをインストールする必要があります (OS および WinDriver/KernelDriver のバージョンによって異なります)]。

WinDbg などのカーネル デバッガを使用して、参照することができる Kernel PlugIn からのデバッグ情報をどのように出力しますか?
WinDriver の Debug Monitor ユーティリティのデバッグ情報をカーネル デバッガへ送信することができます - テクニカル ドキュメント #44 を参照してください。WinDriver の WD_DebugAdd() API (v5.03 およびそれ以降) を使用して、Kernel PlugIn (またはユーザー モード) のコードから Debug Monitor へデバッグ メッセージを出力できます (必要に応じて、カーネル デバッガへ直接情報を送信することもできます)。ユーザー モードまたは Kernel PlugIn 関数内から WD_DebugAdd() を呼びことができます (KP_IntAtIrql() も含まれます)。
Kernel PlugIn コードの内側から KdPrint() (Windows NT/2K/XP の場合) または DbgPrint() (Windows 98/Me/NT/2K/XP の場合) の呼び出しを追加することもできます。DDK 関数は、カーネル デバッガで出力内容を参照することができます。

作成したアプリケーションの close 処理で PC がハングします。 WD_IntDisable() で失敗しています。何が原因でしょうか? Kernel PlugIn を使用して、割り込みを処理しています。
この現象は、Kernel PlugIn から割り込みを有効にし、割り込みを無効にするためにユーザー モードから同時に WD_IntDisable() を呼ぶ際に起きます。割り込みが有効 (Kernel PlugIn から有効にした) だったので、WD_IntDisable() で割り込みを無効にできず、WD_IntDisable() への戻りを待っている間に PC がハングします。

有効な解決策としては、アトミック操作として WD_IntDisable() を呼びます。それによって、Kernel PlugIn 割り込みルーティンが割り込みを有効にする前に割り込みの無効に成功します。

WinDriver の Kernel PlugIn 機能と KernelDriver ツールキットの違いは何でしょうか?
FAQ を参照してください。

Kernel に Kernel PlugIn モジュールを挿入すると (insmod を使用)、多くの unresolved symbols エラーが発生します。
FAQ を参照してください。

SYS/VxD ファイルに新しい関数を記述する場合、 __cdecl を使用して宣言する必要がありますか?
いいえ。WinDriver が使用する callback のみが __cdecl として宣言する必要があります。

戻る

Windows の問題

WinDriver v4.32 を使用して、Windows 2000 マシン (Service Pack 1) で PCI 割り込みの処理ができません。PC がクラッシュ/ハングする場合もあります。
WinDriver v4.32 以前のバージョンは、Windows 2000 SP1 をサポートしていません (テクニカル ドキュメント #50 を参照してください)。WinDriver の最新バージョンにアップグレードしてください (弊社 Web サイトからからダウンロード可能です)。WinDriver は常に修正/強化を図っております。常に最新のバージョンをご使用いただくことを推奨いたします。

Windows 2000 マシンに WinDriver v3.0 をインストールしました。マシンを再起動すると、起動する度にマシンがクラッシュします。
WinDriver v4.30 から Windows 2000 OS をサポートしました。
WinDriver v4.33 から Windows 2000 Service Pack 1 をサポートし、WinDriver v5.05b から Windows 2000 Service Pack 3 をサポートしました。WinDriver のバージョンと対応する OS に関しては、テクニカル ドキュメント #50 を参照してください。

WDM デバイス ドライバとは何ですか? また、WinDriver は WDM をサポートしていますか?
デバイス ドライバを記述する際は、開発者は、Win 9X および Win NTX 用にデバイス ドライバを別々に記述する必要があります。Windows 98、Me、2000 および XP プラットフォーム間で入力デバイスへアクセスするコードを統一するために、Microsoft 社は、クロス プラットフォーム オペレーティング システム サポートを開発しました。この新しいサポートをWindows Driver Model または WDM と言います。WDM は、Windows NT ドライバ モデルをベースとし、Plug and Play およびパワー マネージメントのサポートを修正し、多くのマルチメディア デバイス タイプの使用され、USB や 1394 デバイスなどの他の多くのデバイス タイプに使用されています。
WinDriver v5.20 以降、WinDriver の API を実装する windrvr.sys カーネル モジュールが (v6.00 以降では、windrvr6.sys ) フル WDM ドライバとなります。

注意: WDM を Windows 98、Me、2000 および XP で共有します。Windows 95 および Windows NT 4.0 は、WDM にサポートされていません。ただし、WinDriver は、Windows 98、Me、2000 および XP および Windows NT 4.0 でのクロス プラットフォーム サポートを提供します。また同様に、その他のオペレーティング システム - Windows CE、Linux、 Solaris (PCI/ISA の場合) および VxWorks (PCI/ISA の場合) に対しても同様です。

Windows 98 マシンの WINDOWS\SYSTEM\VMM32windrvr.vxd をコピーし、ドライバをインストールするために次のように入力します: 'wdreg install' (WinDriver v5.05 を使用して)。そして再起動しアプリケーションを起動しましたが、ドライバは動作しません。次のメッセージが表示されます "Failed opening WinDriver device"。
Windows 98/Me では、VxD カーネル ドライバ - windrvr.vxd (または v6.00 以降では windrvr6.vxd ) および SYS カーネル ドライバ windrvr.sys (または v6.00 以降では、windrvr6.sys) ドライバ ファイルの両方を提供します。Windows 98/Me は、両方のドライバ タイプをサポートします。

デフォルトでは、Windows 98/Me では、'wdreg install' (v5.05b) で、windrvr.sys ドライバをインストールします。
よって、このインストール シンタックスを使用する際には、windrvr.sysWindows\system32\drivers ディレクトリにコピーする必要があります。

Windows 98/Me で windrvr.vxd ドライバ ファイルを使用する場合、インストール コマンドで、次のように -vxd フラグを使用する必要があります: 'wdreg -vxd install'.

注意: WinDriver v6.00 以降では、インストール コマンドのシンタックスが変更されました。また Windows98/Me のインストール ユーティリティが wdreg16.exe になりました。

Windows 98 で、windrvr.vxd を使用すると、パフォーマンス モニタの CPU 使用率の値が 100% となります。何故ですか?
これは Windows 98 パフォーマンス モニタのバグです。心配しないでください。windrvr.vxd (または windrvr6.vxd - 最新のバージョン) は、実際にはフルに CPU を使用していません。複数のアプリケーションを起動し、WinDriver を起動して、CPU 使用率が 100% となっていても、これらのアプリケーションのパフォーマンスに影響を及ぼしていないことを確認してください。windrvr.vxd (/windrvr6.vxd) の代わりに windrvr.sys (または windrvr6.sys) を使用する際には、この問題は発生しません。

Windows XP マシンに WinDriver で作成したドライバをインストールしました。 Windows が以下のメッセージを表示します:
"   The software you are installing for this hardware has not
    passed Windows Logo Testing ... and may impair or destabilize
    the correct operation of your system...
"
(インストールしようとしてるソフトウェアは、Windows XP との互換性を検証する Windows ロゴ テストに合格していません)
これは問題でしょうか? メッセージを表示させない方法はありますか?

このメッセージは、実際にはエラー メッセージではありません。また、ドライバのインストールに問題があるわけでもありません。このドライバが、Microsoft 社の WHQL (Windows Hardware Quality Labs) のテストおよびデジタル署名を受けていないことを Windows XP が示すためにこのメッセージを表示しています。

このメッセージを消すには、Microsft 社に問合せし、デジタル署名を取得してください。詳細は、次の項目を参照してください。

WinDriver は、Microsoft のデジタ署名を取得していますか? WinDrive で開発したドライバでデジタル署名を取得するには?
WinDriver は、WHQL に完全に準拠します。WinDriver for Windows を使用して開発したドライバを Microsoft 社の WHQL (Windows Hardware Quality Labs) のテストに申請し、ドライバに Microsoft 社のデジタル署名を取得することができます。WinDriver ベースのドライバで、既に Microsoft 社からデジタル署名の取得に成功したユーザー様が数多くいます。
Microsoft 社の WHQL テストおよび WHQL 認定の取得方法に関する詳細は、次の Microsoft 社の Web サイトを参照してください: http://www.microsoft.com/whdc/whql/default.mspx

戻る

Windows CE の問題

Windows CE 用のデバッグ ユーティリティはありますか?
はい - Windows CE 上でも Debug Monitor ユーティリティを使用できます。
詳細情報は、テクニカル ドキュメント #13 を参照してください。

CE NDIS ドライバを作成しています。CE IP スタックと talk します。
作成したドライバから NIC ハードウェアにアクセスする必要があります。WinDriver で実現可能ですか?

はい。 Windows CE では、NDIS ドライバを含むデバイス ドライバは、DLL です。よって、NDIS ネットワーク ドライバは Windows CE API を使用して、ハードウェアと talk します。

Windows CE のシリアル ポートの NDIS ドライバを作成してます。WinDriver で実現可能ですか?
はい。 Windows CE では、NDIS ドライバを含むデバイス ドライバは、DLL です。よって、NDIS ネットワーク ドライバは Windows CE API を使用して、ハードウェアと talk します。

戻る

Linux の問題

Kernel に Kernel PlugIn モジュールを挿入すると (insmod を使用)、多くの unresolved symbols エラーが発生します。
まず初めに、'insmod' windrvr6.o (または windrvr.o - v5.22 またはそれ以前の場合) をご確認ください。Kernel PlugIn モジュールは、windrvr6.o (以前のバージョンはwindrvr.o) に依存します。
Kernel PlugIn ドライバのビルド方法は、テクニカル ドキュメント #62 を参照してください。

WD503REG.ZIP ファイルを解凍し、パスワードを入力しましたが、インストールが途中で止まり、以下のエラー メッセージが表示されます:
[root@localhost register]# unzip WD503REG.ZIP Archive: WD503REG.ZIP
skipping: register.txt encrypted (not supported)
skipping: windrvr.a encrypted (not supported)

何が悪いのでしょうか?

WinDriver のパッケージには、暗号化をサポートする unzip ユーティリティがあります。WinDriver/util ディレクトリ以下にあります。インストール ファイルを展開するには、以下のように実行します:
[root@localhost register]# ../../util/unzip WD503REG.ZIP.

Linux にカーネル バッファを割り当てようとし、100KB バッファの割り当てはできますが、150KB の割り当てはできません。何が必要でしょうか?
これは Linux カーネルの制限事項です。デフォルトでは、カーネル バッファの割り当てに最大 128KB 割り当てることができます。ただし、カーネルをリコンパイルしてより大きいサイズにすることは可能です。また、可能にするパスもあります。詳細は、テクニカル ドキュメント #64 を参照してください。

戻る

Solaris の問題

Sparc マシンで Solaris 8 を起動しています。すべての PCI カードを検出できません。WinDriver で検出されるカードもあります。
Sparc では、ルート ハブに2つの PCI バスがあります。WinDriver は現在、33Mhz * 33MB バスのみに対応しています [参考 テクニカル ドキュメント #66]。
問題を解決するには、検出されないカードを、上記の仕様に合う他の PCI スロットに移動します。

問題

DriverBuilder の問題 (VxWorks)

VxWorks の DriverBuilder のデバッグ ユーティリティはありますか?
はい - VxWorks 用に Debug Monitor ユーティリティを使用できます - wddebug.out - 詳細は、テクニカル ドキュメント #14 を参照ください。

Tornado II が起動してる Windows NT 開発ワークステーションに DriverBuilder をインストールしました。 次のステップは何ですか?
インストール手順 (VxWorks) を参照してください (WinDriver のユーザー マニュアルも参照してください)。DriverBuilder のインストール手順が記載されています。

インストールガイドに従って DriverBuilder をインストールしましたが pci_diag_main を起動すると、次の unresolved メッセージが表示されます: PCI_ReadPCIReg, PCI_WritePCIReg, PCI_DetectCardElements ...
Jungo のサンプル PCI ライブラリにユーティリティ関数があります。プロジェクトに C のファイルを追加し忘れてます。ソース ファイル pci_lib.c (or pci_diag_lib.c) を 参照し、プロジェクトに必要かどうか確認してください。

DriverBuilder を使用して、BSP (Board Support Package) を開発できますか?
いいえ。DriverBuilder は、デバイス ドライバを記述するためのツールです。BSP (Board Support Package) を開発するツールではありません。

戻る

PLX の問題

Windows NT 4.0 マシンで PLX 9050 診断プログラムを使用して、シリアル EEPROM を read する際に、PCI バスをスキャンしてるようだが、シリアル EEPROM にアクセスする際に、常に 0xFFFFFFFF を read します。PLX ローカル レジスタを read する際にも、同じ現象が発生します。
BIOS から Plug and Play 機能を無効にしてください。
Plug and Play ではない Windows NT の多くの場合、起動後、正確にカードを初期化しない場合があります。

戻る

Altera の問題

Altera の Byte Blaster ケーブルを使用して、ボードへ FPGA 設定ファイルをダウンロードしました。WinDriver Altera 診断プログラムを起動したが、期待した Alteta アイテムを検出できませんでした。FPGA へ PCI コアをダウンロードし、OS を再起動すると、BAR が 0 になりました。OS も割り込みを検出できません。
以下の考えられる原因があります:
  • Altera Core で、BARs をアドレスに HardWire します。これは、PCI 関数にアドレス空間を手動で割り当てることを意味しています。BARs を 0x00000000 に HardWire し、対象の PCI Core を使用してる場合、有効なビット パラメータの HardWire BAR の有効なビット 5:0 を 0 に設定する必要があります。これは、Core によっていかなる BARs hardwiring を無効にします。Altera 社の報告では、Master-Target Core を使用してる場合、BAR hardwiring を使用しています。

  • Altera Core ではまた、拡張 ROM を有効にする機能があります - たとえば、pci_t32 (PCI ターゲット 32 ビット Core) を使用する Altera PCI Development ボード。ボードが拡張 ROM を持っていないとしても、デフォルトで Core は拡張 ROM を有効にします。 OS は、拡張 ROM を使用して、ブート Core を実行します。拡張 ROM を無効にするには、拡張 ROM BAR を 0x00000000 に設定し、有効なビット パラメータのビット 7 (拡張 ROM で有効) を 0 に設定する必要があります。

戻る

USB の問題

DriverWizard で USB デバイスを選択する際に、次のエラー メッセージが表示されます: " Failed locking device. ".
このエラー メッセージの原因として、以下が考えられます:

  • Plug-and-Play (PnP) システム (Windows 98/Me/2000/XP) で、WinDriver v5.05 またはそれ以前を使用してる場合、Windows' PnP マネージャが、対象のデバイスの PnP ドライバとして wdpnp.sys (または wdusb.sys - WinDriver の以前のバージョン) を指定していることをご確認ください - テクニカル ドキュメント #90 を参照してください。[WinDriver v5.20 以降、INF ファイルをインストールせずに、対象の USB デバイスにアクセスしようとすると、対象のデバイスの INF ファイルをインストールするように DriverWizard がお知らせします。v5.2X の INF ファイルは、そのデバイスが windrvr.sys と動作するように登録します。v6.00 以降の INF ファイルは、デバイスが windrvr6.sys と動作するように登録します]。

  • ドライバが他の DriverWizard のセッションまたは WinDriver のアプリケーションにロックされていないかご確認ください。

  • 問題が解決されない場合、Debug Monitor ユーティリティ (wddebug_gui.exe) の出力内容を確認して、エラー メッセージの原因を検証してください。

WinDriver USB (4.3x, 4.4x, 5.0x) を使用し、DriverWizard を使用して作成した INF ファイルで wdusb.sys/wdpnp.sys をインストールしました。 デバイスを抜く際に、Windows が次のメッセージを表示します: Unsafe removal of device. 対処方法を教えてください。
WinDriver v5.03 またはそれ以降にアップグレードしてください。新しい wdpnp.sys ドライバ ファイルでこの問題が解決されます (以前は wdusb.sys)
v5.20 では、windrvr.syswdpnp.sys を一つの windrvr.sys ドライバ ファイルに纏めました。v6.00 では、ドライバ名を windrvr6.sys に変更しました。

戻る

CardBus の問題

WinDriver は、PCI ドライバを使用したラップトップの CardBus スロットをサポートしてますか?
はい。WinDriver PCI ツールキットおよび API を使用して、CardBus ドライバを開発します。詳細は、テクニカル ドキュメント #94 を参照してください。

注意: Plug-and-Play (PnP) オペレーティング システムでは、WinDriver で対象のデバイスを処理するには、対象のデバイスの INF ファイルを生成しインストールする必要があります (DriverWizard を使用して、INF ファイルを作成できます)。INF ファイルは、対象のデバイスが windrvr6.sys と動作するように登録します (v5.2X の場合 windrvr.sys、以前のバージョンの場合 wdpnp.sys/wdusb.sys )。

戻る

Parallel / Serial Port の