setThreadAffinityMask() - Арифметическая операция привела к переполнению из-за слишком большого значения маски (тип данных маски - uintptr)

Я использую setThreadAffinityMask(currentThread, (uIntPtr)mask) для соответствия потоков в приложении. Первоначально я помещаю значение маски в UInt64, а после этого при вызове выше функции setThreadAffinityMask я преобразую UInt64 в UIntPtr (согласно https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-setthreadaffinitymask)

Когда значение маски равно "4294967296" или "больше 2^31", выдается ошибка "Арифметическая операция привела к переполнению". В C# нет ничего похожего на UIntptr64 или 32. Хотя это простая проблема с типом данных, но она не может определить правильный тип данных для хранения этого длинного значения MASK. Пожалуйста помоги.

0 ответов

Другие вопросы по тегам