Может есть в толстом и старом x86/x86-64 асм инструкция, которая симулирует запись по адресу без самой записи и генерит исключение если адрес не записываемый
Вобщем нужен быстрый и потокобезопасный аналог такого вот
bool IsWritablePtr(PVOID p)
{
__try
{
*(volatile char *) p = *(volatile char *) p
}__except(1)
{
return false;
}
return true;
}
Проблема описанного кода в том что он не потокобезопасный. Использование атомарных инструкций с lock-ом возможно решит эту проблему, но ударит по перфомансу..