ユーザー空間から取得したプロセス ID (DWORD pid) で関数 PsLookupProcessByProcessId() を使用するにはどうすればよいですか?
別のアプリケーション (calc.exe など) のプロセス ID を取得するユーザー空間の C++ アプリケーションをコーディングし、DeviceIoControl を使用して、作成した構造体を介して pid をドライバーに正常に送信できます。
DbgPrint("PID received : %i", pInp->pid);
プロセスの正しい pid を出力します。しかし、行うとき:
PsLookupProcessByProcessId(pInp->pid, eProcess);
次の警告が表示されます。
C4022: 'PsLookupProcessByProcessId': 実パラメーター 1 のポインターが一致しません
警告はエラーとして扱われ、vs はコンパイルを許可しません。「PsLookupProcessByProcessId」のドキュメントを調べたところ、最初のパラメーターに「ハンドル」が必要であると書かれています。その場合、ユーザー空間アプリケーションから送信された DWORD pid を使用してハンドルを取得するにはどうすればよいでしょうか?