2012-04-06 26 views
2

Windowsでは、カーネルドライバは仮想アドレス範囲(MMProbeandLockPages)をバックアップするためにメモリを固定するなどの作業を実行できます。しかし、仮想アドレスが特定のプロセスに有効であることを実際に検証する方法は見つけられませんでした。言い換えれば、特定のプロセスのページテーブルに特定の仮想ページが含まれているかどうかをカーネルドライバが確認する方法はありますか?Windowsドライバはプロセスのページテーブルにアクセスできますか?

答えて

0

ドライバがプロセスのコンテキストで実行されていない場合は、まずKeStackAttachProcessを呼び出す必要があります。

次に、try/exceptブロック内でProbeForReadまたはProbForWriteを実行できます。たとえば、WinDDKサンプルのsrc \ general \ ioctl \ wdm \ sys \ sioctl.cにあるIOCTL_SIOCTL_METHOD_NEITHERの処理を参照してください。

+0

私は、そのアドレスが調査された時点で有効な可能性があるが、その後は無効になる可能性があることをドライバが心配する必要があると仮定します。 –

+0

ハリー・ジョンストン:そうです。読み取りまたは書き込みは同じtry/exceptブロック内になければならず、IRQLはPASSIVEでなければなりません。 – glagolig

関連する問題