У меня уже нервов не хватает usOpenFileName юникод строка length длина строки , я приделываю ноль в конце так как уже отсюда идёт мусор. Код (Text): ... RtlInitUnicodeString(&usUpCase,usOpenFileName); usUpCase.Length = length/2; usUpCase.Buffer[usUpCase.Length] = (wchar_t)0; DbgPrint("FROM : %ws",usUpCase.Buffer); RtlUpcaseUnicodeString(&usFileName,&usUpCase,TRUE); DbgPrint("TO : %ws",usFileName.Buffer); .... DbgPrint Код (Text): FROM : Bootfont.bin TO : BOOTFO FROM : Bootfont.bin TO : BOOTFO FROM : CONFIG.SYS TO : CONFIO FROM : CONFIG.SYS TO : CONFIO FROM : CONFIG.SYS TO : CONFIO FROM : Documents and Settings TO : DOCUMENTS A?aA??????? FROM : Documents and Settings TO : DOCUMENTS A FROM : Documents and Settings TO : DOCUMENTS A?aA??????? FROM : driver TO : DRI??ANTS A FROM : driver TO : DRIUMENTS A?aA??????? FROM : driver
зачем так делаешь. Length - длина строки в байтах, а не в юникод-символах... без учета нуля например для строки L"Hello" Length = 10 Код полностью неверный. надо так: Код (Text): usUpCase.Length = length; usUpCase.Buffer[usUpCase.Length/2] = (wchar_t)0;
Код (Text): RtlInitUnicodeString(&usUpCase,usOpenFileName); usUpCase.Buffer[length/2] = (wchar_t)0; RtlInitUnicodeString(&usFileName,usOpenFileName); DbgPrint("FROM : %ws",usUpCase.Buffer); RtlUpcaseUnicodeString(&usFileName,&usUpCase,TRUE); usFileName.Length = length/2; usFileName.Buffer[usFileName.Length] = (wchar_t)0; DbgPrint("TO : %ws",usFileName.Buffer); тема закрыта
WIN32 оффтоп: Сынуля папу-программиста спросил: -Папа, а почему солнышко утром встает, а утром спать ложица? -Каждый день встает? -Да,пап -Каждый день спать ложица? -Да пап -Ради бога сынуля,ничего не трогай, пусть работает!