|
|
 |
| Doc ID: |
45 |
| 製品: |
WinDriver |
| Version: |
-- |
COPY_TO_USER_OR_KERNEL および COPY_FROM_USER_OR_KERNEL とは何ですか?また、いつ使用しますか? |
COPY_TO_USER_OR_KERNEL および COPY_FROM_USER_OR_KERNEL マクロは、Kernel PlugIn 内からユーザー モードのメモリ アドレスにアクセスする際に、ユーザー モードのメモリ アドレスから/へデータ (必要に応じて) をコピーするのに使用されます。データをコピーすることによって、たとえユーザー モード プロセスのコンテキストが、IO オペレーションの最中に変更しても、ユーザー モードのアドレスを正常に使用することができます。これは特に長いオペレーション (ユーザー モード プロセスのコンテキストの変更) には最適です。
[コピーを行うのにマクロを使用することで、対応するすべての OS の汎用的な解決策となります]。
KP_IntAtIrql() または KP_IntAtDpc() 関数ないからユーザー モード データへアクセスする場合、これらの関数を実行する前に、先ず、Kernel PlugIn の変数にデータをコピーしてください。
WinDriver\include\kpstdlib.h ヘッダ ファイルに、COPY_TO_USER_OR_KERNEL および COPY_FROM_USER_OR_KERNEL マクロを定義します。
COPY_TO_USER_OR_KERNEL マクロを使用した例、サンプルの kptest.c ファイル (WinDriver\kerplug\kptest\kermode ディレクトリ以下) の KP_Call() の実装を参照してください。または、DriverWizard で生成した \kerplug\kp_xxx.c ファイル (WinDriver v5.20 以降) の KP_XXX_Call() の実装を参照してください
ユーザー モードと Kernel PlugIn ルーティン (例、KpIntAtIrql() および KpIntAtDpc()) 間のデータ バッファの共有に関しては、テクニカル ドキュメント #41 を参照してください。 |
|
|