2011-08-13 12 views
0

私の主なプログラミング言語はC++ではないと言わざるを得ない、私は遭遇しなかった奇妙な問題があります。私は愚かな間違いを犯し、実現しないかもしれません。NtQueryInformationProcessはVisual Studio 2010で動作しません

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

GetCommandArgs.obj:エラーLNK2019:

_wmain機能で参照20 @未解決の外部シンボル _NtQueryInformationProcess私は、次のエラーメッセージが表示されます

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

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

答えて

4

これは仕様です。マイクロソフトは、法務省の和解を余儀なくされ、機能を文書化しなければならないことはあまり幸せではなかった。これは明らかにそれのためのMSDNの記事で綴られる:

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

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

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

最後の行は、実行する必要があることを示しています。最初の行は、なぜあなたがすべきでないのかを示しています。

+0

私はそれについて非常に幸せではありません:) – opc0de

+0

なぜですか?私はマイクロソフトがこのポリシーを有用な機能に使うので、私は幸せではないと言いました。 – opc0de

関連する問題