Как создать одну UNICODE_STRING из другой UNICODE_STRING

#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