#c #winapi #visual-c #unicode-string #wchar-t
#c #winapi #visual-c #unicode-строка #wchar-t
Вопрос:
Есть ли лучший способ глубокого копирования клонирования UNICODE_STRING
?
Это то, что я пробовал.
int main()
{
//This is what I have.
UNICODE_STRING oldString = RTL_UNICODE_STRING("This is test string."); //ignore macro RTL_UNICODE_STRING
//Some madeup things.
std::wstring middleManString(oldString.Buffer, oldString.Length/sizeof(UNICODE_NULL));
//This is what I am seeking.
UNICODE_STRING newString;
NTSTATUS status = RtlCreateUnicodeString(amp;newString, middleManString.c_str());
return 0;
}
Комментарии:
1. RtlDuplicateUnicodeString
2. @Mayur »
UNICODE_STRING
не завершается нулем » — это может быть, но не обязательно , поэтому я сказал, ЕСЛИ. Я никогда не понимал, почему Microsoft не создала функцию инициализации, которая принимает длину в качестве входных данных.3. @Mayur посмотрите в ntifs.h . также что неясно в этом api? в выделите память для строки и скопируйте существующую. константы для объявленных флагов. также посмотрите codemachine.com/article_ten_kernel_apis.html
4. @Mayur Microsoft не документирует
RtlDuplicateUnicodeString()
, но поиск в Google показывает некоторые сторонние ссылки на него.5. microsoft объявляет
RtlDuplicateUnicodeString
в ntfs.h