1

スレッドの優先順位を手動で設定する必要があります。これは。で行いGetProcessIdOfThreadます。残念ながら、サードパーティのライブラリでは、dllのトリックUse MFC in a Shared DLLに使用できるように、コードをビルドする必要があります。afx.h

GetProcessIdOfThreadなしのような機能をどのように使用できwindows.hますか?

私はインクルードしようとしましたWinBase.hが、これは多くのナンセンスなコンパイルエラーをスローします。

4

2 に答える 2

5

ダウンストリームリンカーの設定が正しければ、選択したプロジェクトヘッダーファイルに関数宣言を追加するだけです。

これが元の宣言ですWinBase.h

WINBASEAPI DWORD WINAPI GetProcessIdOfThread(HANDLE Thread);

を含めない場合Windows.h、その特定の宣言に必要な使用済みプリプロセッサマクロ/定義のほとんどを使用することはできません。CRTの静的ライブラリバージョンに対してリンクしている場合、これは同等の定義です。

unsigned long __stdcall GetProcessIdOfThread(void *Thread);

DLLバージョンのCRTに対してリンクしている場合は、宣言の前に__declspec(dllimport):を付ける必要があります。

__declspec(dllimport) unsigned long __stdcall GetProcessIdOfThread(void *Thread);
于 2013-01-25T20:58:01.197 に答える
4

別の.c(pp)ファイルにラッパー関数を配置することでこれにアプローチします。

 #include <windows.h>


 DWORD GetPidFromThread(HANDLE thread)
 {
     return GetProcessIdOfThread(thread);
 }

他のファイルでも使用できるいくつかのタイプを置き換える必要がある場合があります[そして、のプロトタイプでヘッダーファイルを作成しますDWORDが、少なくともこれらのビットを合理的に安全に分離できます。HANDLEGetPidFromThread

于 2013-01-25T21:11:16.967 に答える