Прошу прощения за тупость,первый раз пишу так называемое native приложение. Возник вопрос-есть такой код Код (Text): RtlInitUnicodeString(&filename,L"STATUS_OBJECT_NAME_COLLISION\n"); NtDisplayString(&filename); Отлаживаю пока только в win32 режиме.. Так вот после выполнения такого кода отладчик показывает мусор в filename.Buffer. Если сделать так Код (Text): RtlInitUnicodeString(&filename,L"STATUS_OBJECT_NAME_COLLISION"); NtDisplayString(&filename); То все ОК.Скажите плз,как мне перевести каретку?
Ок.. Скажите тогда просто в RtlInitUnicodeString катит стандартный перевод \r\n ? Если да,то проблему буду решать дальше сам.
Объясняю, что делает RtlInitUnicodeString : 1. В поле Buffer структуры UNICODE_STRING записывается адресс строки переданной во втором параметре. 2. Поля MaximumLength и Length инициализируются количеством байт, занимаемым строкой БЕЗ последнего нулевого символа. Это значит, что некоторые отладчики, ничего не знающию о структуре UNICODE_STRING, могут неверно отобразить ее поле Buffer. Т.е. из-за отсуствия нулевого символа на конце, могут показать лишнее. Все стандартные символы \r \n ... и т.д. катят, так как они обрабатываются компилятором, а не операционной системой. Если это тебе не помогло, тогда вопрос к тебе. Каким отладчиком пользуешся?
Forever у меня VC++ 7.0 Спасибо,обьяснения понял. Отладчик ,похоже,реально не видит. Ибо отображается в реальной работе нормально. гггг.А в чем проблема? Мне ж не надо созерцать вывод на экран!! Мне надо посмотреть, как идет работа, что в буферах находится и прочее.. Пусть будет так, что б панику не вызывать у вас... Код (Text): RtlInitUnicodeString(&filename,L"STATUS_OBJECT_NAME_COLLISION"); //NtDisplayString(&filename);