1

私の主なプログラミング言語は C++ ではなく Delphi であり、愚かな間違いを犯し、それに気付かない可能性があることを言及しなければならない前に、私は遭遇しなかった奇妙な問題を抱えています。

私は次のコードを持っています:

ULONG myret;
PROCESS_BASIC_INFORMATION PRC;
...
NtQueryInformationProcess(hProcess,ProcessBasicInformation,(PVOID)(&PRC),sizeof(PROCESS_BASIC_INFORMATION),(PULONG)(&myret));
...

次のエラー メッセージが表示されます。

GetCommandArgs.obj : エラー LNK2019: 関数 _wmain で参照されている未解決の外部シンボル _NtQueryInformationProcess@20

何が問題ですか ?どうもありがとう。

4

1 に答える 1

7

これは仕様によるものです。Microsoft は、司法省の和解によって強制された機能を文書化する必要があることにあまり満足していませんでした。それについては、MSDNの記事で明確に説明されています。

NtQueryInformationProcess 関数とそれが返す構造は、オペレーティング システムの内部にあり、Windows のリリースごとに変更される可能性があります。アプリケーションの互換性を維持するには、代わりに ProcessInformationClass パラメータの説明に記載されているパブリック関数を使用することをお勧めします。

NtQueryInformationProcess を使用する場合は、実行時の動的リンクを通じて関数にアクセスします。これにより、関数がオペレーティング システムから変更または削除された場合に、コードが適切に応答する機会が得られます。ただし、署名の変更は検出できない場合があります。

この関数には関連するインポート ライブラリがありません。Ntdll.dll に動的にリンクするには、LoadLibrary および GetProcAddress 関数を使用する必要があります。

最後の行は、何をしなければならないかを示しています。最初の行は、なぜそうすべきでないかを示しています。

于 2011-08-13T17:13:21.223 に答える