Size: a a a

2020 July 15

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
ну, Костя, я соглашусь, но С - это ассемблер считай, не до жиру
Ну вот кажется, что если вместо LPVOID написано HWND жизнь хоть немного налаживается
источник

s

std::slavik in supapro.cxx
🎄🎊 R 🎅 Tb| ✡️ 🎊🎄
А лэйаут структуры в стандарте определяется?
источник

AS

Anatoly Shirokov in supapro.cxx
Constantine Drozdov
Ну вот кажется, что если вместо LPVOID написано HWND жизнь хоть немного налаживается
WINAPI-же давно реальные указатели на внутренние структуры не выпускают наружу. Там некие HANDLE
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
WINAPI-же давно реальные указатели на внутренние структуры не выпускают наружу. Там некие HANDLE
Мне казалось, что HWND это настоящий указатель на класс (правда, не плюсовый), но я не дизасмил это всё
источник

s

std::slavik in supapro.cxx
что такое не плюсовый класс
источник

CD

Constantine Drozdov in supapro.cxx
То есть это прямо вот такой же пример
источник

AS

Anatoly Shirokov in supapro.cxx
Constantine Drozdov
Мне казалось, что HWND это настоящий указатель на класс (правда, не плюсовый), но я не дизасмил это всё
Когда умельцы стали лазить во внутрянку по этому void*, это быстро прекратилось
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
Когда умельцы стали лазить во внутрянку по этому void*, это быстро прекратилось
А какая разница? Аргументы все равно проверять после перехода за барьеры
источник

AS

Anatoly Shirokov in supapro.cxx
Constantine Drozdov
А какая разница? Аргументы все равно проверять после перехода за барьеры
Ну как какая разница? Не имея реального указателя на структуру, ты ничего не сможешь нарушить во внутреннем состоянии. Имеешь только HANDLE, который внутри является неким ID в хештаблице на реальную структуру данных
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
Ну как какая разница? Не имея реального указателя на структуру, ты ничего не сможешь нарушить во внутреннем состоянии. Имеешь только HANDLE, который внутри является неким ID в хештаблице на реальную структуру данных
Так можно страницу не отдать пользовательскому коду, если это не кэши юзермода
источник

CD

Constantine Drozdov in supapro.cxx
Не очень понятно, в чём разница защищать хештаблицу и защищать данные по выданному указателю
источник

s

std::slavik in supapro.cxx
Constantine Drozdov
Ошибки компиляции при проверке типов слишком значимы даже для си
ну я везде где пишу void* - как правило знаю что делаю
источник

s

std::slavik in supapro.cxx
и помню все места в проекте где так делаю
источник

АК

Александр Караев... in supapro.cxx
Constantine Drozdov
Не очень понятно, в чём разница защищать хештаблицу и защищать данные по выданному указателю
До хештаблицы сложнее добраться
источник

CD

Constantine Drozdov in supapro.cxx
Александр Караев
До хештаблицы сложнее добраться
Такая же незамапленная страница же
источник

s

std::slavik in supapro.cxx
и еще эти места тестами обернуты
источник

CD

Constantine Drozdov in supapro.cxx
std::slavik
ну я везде где пишу void* - как правило знаю что делаю
А вы пробовали не писать void* никогда?
источник

CD

Constantine Drozdov in supapro.cxx
Это вообще-то возможно :)
источник

АК

Александр Караев... in supapro.cxx
Constantine Drozdov
Такая же незамапленная страница же
Ну вот что тебе проще - посмотреть память по данному тебе указателю или пойти реверсить функции, чтобы найти хештаблицу (и восстановить её структуру)?
источник

s

std::slavik in supapro.cxx
Constantine Drozdov
А вы пробовали не писать void* никогда?
_p_out_buf[0] = static_cast<int16_t *>(static_cast<void *>(_ext_mem.allocate(2 * kAudioBlockSizeWords * 1)));
я наоборот порой использую void* чтобы не использовать reinterpret_cast)
источник