0

私はプロトタイプで関数を持っています

DWORD WINAPI blah(LPVOID arg);

これは、スレッド化されたアプリの CreateThread で使用することを意図していました。

問題なく CreateThread で呼び出します。しかし、コードの別の場所では、blah(NULL) だけで通常どおり呼び出します。この部分になるとクラッシュします。これは、WINAPI の部分が __stdcall になり、そのような __stdcall 関数を呼び出すことができないためですか?

4

2 に答える 2

0

唯一の問題は、底から戻るのではなく、特にselfをblah()呼び出して終了する場合です。この呼び出しは、blah() が戻るときに を呼び出すように戻りアドレスを設定します。TerminateThread()CreateThreadTerminateThread

blah()にそのようなコードがない場合は、コードを調べて、失敗するスレッド固有の何かが何らかの形で行われているかどうかを確認する必要があります。率直に言って、コードが直接呼び出されないようにするスレッドになる可能性のあるコードを (TerminateThread() 以外に) 考えることはできません。

于 2010-08-08T19:11:32.387 に答える