テクニカル ドキュメント #59



Doc ID: 59
製品: WinDriver
Version:  --

PCI カード上のメモリ 32MB にアクセスできません。WD_CardRegister () 関数がメモリのロックに失敗します。カード上のメモリ 16MB にアクセスする場合、エラーは発生しません。

indows NT/2k/XP では、ページ テーブル エントリの数をレジストリに設定します。大きなメモリ バファにアクセスする場合、SystemPages レジストリ エントリの値を増やすことによって、レジストリのページ テーブル エントリの数を増やす必要があります:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ Session Manager\Memory Management\SystemPages
[REGEDIT.EXE を使用して、レジストリ エディタを開きます。
終了後、変更した内容を有効にするために再起動します]。

設定する値はおおよそ次のように設定します:
<利用可能なメモリ> / 2K + <アプリケーションの残りに十分なページ>.

ページ テーブル エントリの数には 0x100000 を設定してください。ほとんどの用途には十分なはずです。

別の方法としては、少量のメモリーをロック ダウンすることです。
そうするために、WD_CardRegister () 関数への呼出しの前で、WD_PciGetCardInfo() 関数 (pciCard.Card で) からの戻り値 WD_CARD 構造体を編集します。特に、関連するメモリ項目の card.Item[i].I.Mem.dwPhysicalAddr および card.Item[i].I.Mem.dwBytes の値を小さいアドレス範囲に定義するように変更します。