альтернативы функциям PathCombine () и PathCchCombine () - PullRequest
0 голосов
/ 30 ноября 2018

Я кодирую для Windows 7 и Windows 10 и хочу иметь только один основной двоичный файл для моего приложения.

В этом приложении я хочу объединить путь и имя файла, чтобы все относительные спецификации путиустранены.Теперь я обнаружил, что при использовании функции PathCombine () я переносим, ​​но сама функция имеет возможность создать проблемы переполнения буфера при определенных условиях ввода.Для PathCchCombine () безопасность улучшена благодаря дополнительному параметру, предоставляющему размер буфера результатов, но он недоступен на первой упомянутой платформе (функция доступна только в Win8 или выше - возможно, с api-ms-win-core-path-l1-1-0.dll или просто Windows KernelBase.dll).

Как решить эту проблему, чтобы я мог хранить один двоичный файл, не нужно предоставлять дополнительные библиотеки DLL и при этом сохранять данные в буфереперерасход?Есть ли какая-нибудь альтернативная функция для Windows 7, которая мне просто пригодится?

1 Ответ

0 голосов
/ 30 ноября 2018

указанное решение:

Мне нужно использовать PathCombine (), потому что это единственная опция, которая работает на Win7.

Мне нужно предоставить буфер результатов MAX_PATH (чем меньше, тем рискованнее, тем большебесполезно).

Я должен признать, что даже если Win10 может поддерживать длину пути 32 КБ или более, не существует простого решения (например, одного вызова API), которое будет работать с любыми из определенных платформой ограничений и /или содержание определяется длиной результатов.- Существуют варианты функций (например, PathAllocCanonicalize), которые выполняют динамическое распределение, и, таким образом, вызывающей стороне не требуются предварительные знания, но все эти функции доступны только в Win8 или более поздних версиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...