наткнулся на использование ZwOpenFile - PullRequest
1 голос
/ 18 сентября 2010

Я должен открыть файл с помощью API ZwOpenFile.Это мое требование.Когда я задаю путь в параметре имени объекта.Я мог видеть поля Длина и максимальная длина в имени объекта.

Длина - это просто длина пути, и я обычно сохраняю максимальную длину в качестве значения длины.

Это работало в основном, но иногдане работает.В некоторых случаях я решал это через максимальная длина = длина * 2.Даже это вычисление не работает для нескольких других случаев.

Я очень озадачен вычислением значения Maximumlength.

Может ли кто-нибудь помочь.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2010

Посмотрите на определение структуры UNICODE_STRING: ссылка

Длина wcslen (str.Buffer) * sizeof (WCHAR) == * 2

Поле MaximumLength может иметь длину + sizeof (WCHAR) == длина + 2

ZwOpenFile не будет писать в эту строку, поэтому нам не нужно заботиться о емкости строки.

0 голосов
/ 18 сентября 2010

Изначально я преобразовал имя ntpath вручную с помощью / ?? /.это не сработало.

Затем я попытался сделать это, используя RTL_dospathnametontpathname_u, что дало мне строку в юникоде.Тогда это работает для моего случая.Кроме того, как и было предложено "Will A", для инициализации будет использоваться обычный rtlinitunitcodestring api.

Спасибо.

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