を使用してスレッドに構造を渡そうとしてい CreateThread()
ますが、これが私の構造です:
struct Secure
{
int UID;
LPVOID MainClass;
};
そして、これが私が呼び出す方法ですCreateThread()
Secure m_Secure = {Room->g_User[PlayerNumber].UID,this};
CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)SecureThread,&m_Secure,NULL,NULL);
最初のものは整数で、2番目のものは現在のクラスへのポインタです。
そして、ここに私のスレッドがあり、ここに問題があると思います
HRESULT WINAPI SecureThread(LPVOID Param)
{
int UID = -1, UserNumber, i;
Secure* m_Secure = (Secure*)Param;
UID = m_Secure->UID;
CGGCBotDlg *h_MainClass = (CGGCBotDlg*)m_Secure->MainClass;
if (UID == -1) return 0;
Sleep(25000);
for (i = 0; i < TOTAL_CLIENTS; i++)
{
if (h_MainClass->Room->g_User[i].UID == UID)
{
UserNumber = i;
break;
}
}
if( h_MainClass->Room->g_User[UserNumber].IsFree == false && h_MainClass->Room->g_User[UserNumber].Secured == false)
h_MainClass->Room->Kick(h_MainClass->Room->g_User[UserNumber].UID,"Didn't Authorized");
return 0;
}
このスレッドが作成されるたびに、プログラムがクラッシュします。例外は次のとおりです。
First-chance exception at 0x00EC3548 in GGCRoomServer.exe: 0xC0000005: Access violation reading location 0x5D00009C.
Unhandled exception at 0x00EC3548 in GGCRoomServer.exe: 0xC0000005: Access violation reading location 0x5D00009C.