diff --git a/lib/diagnostics_win.cpp b/lib/diagnostics_win.cpp index de0e494d5db7f8d080b0152037a17e70e947ba57..9e4224d0b6ddb88f82dfe2c9b73873f8f852f268 100644 --- a/lib/diagnostics_win.cpp +++ b/lib/diagnostics_win.cpp @@ -60,6 +60,11 @@ typedef NTSTATUS (WINAPI *tNTQSI)( PULONG ReturnLength ); +#ifdef __MINGW64__ +#define PTRASINT UINT64 +#else +#define PTRASINT DWORD +#endif // Look in the registry for the specified value user the BOINC diagnostics // hive. @@ -215,7 +220,7 @@ int diagnostics_finish_thread_list() { // Return a pointer to the thread entry. // -PBOINC_THREADLISTENTRY diagnostics_find_thread_entry(DWORD dwThreadId) { +PBOINC_THREADLISTENTRY diagnostics_find_thread_entry(PTRASINT dwThreadId) { PBOINC_THREADLISTENTRY pThread = NULL; UINT uiIndex = 0; size_t size = 0; @@ -311,7 +316,7 @@ int diagnostics_update_thread_list() { // Enumerate the threads for(uiSystemIndex = 0; uiSystemIndex < pProcesses->ThreadCount; uiSystemIndex++) { pThread = &pProcesses->Threads[uiSystemIndex]; - pThreadEntry = diagnostics_find_thread_entry((DWORD)pThread->ClientId.UniqueThread); + pThreadEntry = diagnostics_find_thread_entry((PTRASINT)pThread->ClientId.UniqueThread); if (pThreadEntry) { pThreadEntry->crash_kernel_time = (FLOAT)pThread->KernelTime.QuadPart; @@ -325,12 +330,12 @@ int diagnostics_update_thread_list() { hThread = OpenThread( THREAD_ALL_ACCESS, FALSE, - (DWORD)(pThread->ClientId.UniqueThread) + (PTRASINT)(pThread->ClientId.UniqueThread) ); pThreadEntry = new BOINC_THREADLISTENTRY; diagnostics_init_thread_entry(pThreadEntry); - pThreadEntry->thread_id = (DWORD)(pThread->ClientId.UniqueThread); + pThreadEntry->thread_id = (PTRASINT)(pThread->ClientId.UniqueThread); pThreadEntry->thread_handle = hThread; pThreadEntry->crash_kernel_time = (FLOAT)pThread->KernelTime.QuadPart; pThreadEntry->crash_user_time = (FLOAT)pThread->UserTime.QuadPart;