一部のコードを 64 ビットに移植しようとしていますが、スレッドアドレス識別子_beginthreadex
が32 ビットであり、関数から64 ビットアドレスunsigned int
識別子を送受信できないようです。
uintptr_t _beginthreadex( // NATIVE CODE
void *security,
unsigned stack_size,
unsigned ( __stdcall *start_address )( void * ),
void *arglist,
unsigned initflag,
unsigned *thrdaddr // <-- 32-bit address
);
MSDN のドキュメントを確認しましたが、関数の 64 ビット バージョンは見つかりませんでした。間違ったヘッダーやプロセッサごとのフラグを含めているのでしょうか、それとも 64 ビットアドレス識別子を持つスレッドを作成する別の方法がありますか?
アップデート
ドキュメントには、thrdaddr
パラメーターが 32 ビットであると記載されています。
スレダドル
Points to a 32-bit variable that receives the thread identifier. Might be NULL, in which case it is not used.