PCI Expressボード用にDMAを行うためのWDMデバイスドライバを作っています。 DMAを行うには物理アドレスが必要になります。PCI(e)のバスに出てくるアドレスは物理アドレスだからです。しかし、Windowsのプログラミングで用いられるのは仮想アドレスなので、少々面倒な手続きを経て物理アドレスに変換しなければなりません。 NTドライバのころは、MmGetPhysicalAddress()という関数があって、任意の仮想アドレスに対応する物理アドレスを簡単に知ることができました。DMA用のバッファはMmAllocateContiguousMemory()を使って物理メモリ上の連続する領域を確保し、MmGetPhysicalAddress()でその先頭の物理アドレスを得て、DMAの転送先として使うという方法が用いられていました。TECH-Iの「PCIデバッグライブラリ」などでもそのよ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く