|
|
 |
| Doc ID: |
74 |
| 製品: |
WinDriver |
| Version: |
-- |
WinDriver を使用して PCI カードのメモリにどのようにアクセスできますか? |
WD_PciScanCards() を使用して、接続してるカードのスロットを見つけてください。
WD_PciGetCardInfo() を呼び出して、カードの情報を取得します。
この情報には、Plug & Play システムでカード用に選択されたメモリ範囲が含まれます。
WD_CardRegister() を呼び出して、メモリ範囲をインストールし、それをカーネルとユーザー モードの両方のバーチャル アドレス スペースにマップします。
物理アドレスのユーザー モード マップを使用することによって、ユーザー モード アプリケーションからでも直接メモリにアクセスできます。
物理アドレスは、cardReg.Card.Item[i].I.Mem.dwUserDirectAddr の、WD_CardRegister() で返されます。(i は、配列 Item のメモリ範囲のインデックス番号を現しています)
またはカーネルでメモリにアクセスするには、メモリのカーネル モード マップを渡すことによって、ユーザー モード アプリケーションからでも直接メモリにアクセスできます。
WinDriver\samples\pci_diag ディレクトリにサンプルがあるので参照してください。また、PCI カード用に DriverWizard で生成した診断コードも参照してください。
WinDriver の API 関数についての説明は、ユーザー マニュアルを参照してください。
[メモ: Kernel PlugIn プロジェクトからカーネルで直接メモリにアクセスするには、物理メモリ アドレスのカーネル モード マップを使用する必要があります。
物理メモリ アドレスは、cardReg.Card.Item[i].I.Mem.dwTransAddr の、WD_CardRegister() で返されます。その場合、ユーザー モード アプリケーションから直接メモリにアクセスするのにユーザー モード マップは使用できません]。 |
|
|