Зависит от вашего определения действительного. Разработчики этого API не собирались делать это, но если он работает, он работает ™. Эти диалоги, вероятно, больше не изменят свой внутренний дизайн, так как у Microsoft есть достаточно проблем с совместимостью приложений в этой области, и в Vista + эти диалоги были заменены API на основе COM.
Я бы порекомендовал сохранить адрес вашего буфера в lCustData
также до вызова функции Open / Save и изменять только этот буфер. Диалог теоретически может использовать свой собственный буфер в некоторых местах, и вам может не хватить места, чтобы что-то написать в них, и невозможно определить их размер.
На практике, похоже, нет проблем играть с буфером за спиной Windows. В прошлом я даже заменял реальный адрес буфера новым большим блоком памяти при реализации поддержки выбора нескольких файлов.