RtlInitUnicodeString и перевод каретки..Собственно как?

Тема в разделе "WASM.BEGINNERS", создана пользователем coocky, 5 авг 2008.

  1. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Прошу прощения за тупость,первый раз пишу так называемое native приложение.
    Возник вопрос-есть такой код
    Код (Text):
    1. RtlInitUnicodeString(&filename,L"STATUS_OBJECT_NAME_COLLISION\n");
    2. NtDisplayString(&filename);
    Отлаживаю пока только в win32 режиме..
    Так вот после выполнения такого кода отладчик показывает мусор в filename.Buffer.
    Если сделать так
    Код (Text):
    1. RtlInitUnicodeString(&filename,L"STATUS_OBJECT_NAME_COLLISION");
    2. NtDisplayString(&filename);
    То все ОК.Скажите плз,как мне перевести каретку? :)
     
  2. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Ок.. Скажите тогда просто в RtlInitUnicodeString катит стандартный перевод \r\n ?
    Если да,то проблему буду решать дальше сам.
     
  3. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Объясняю, что делает RtlInitUnicodeString :
    1. В поле Buffer структуры UNICODE_STRING записывается адресс строки переданной во втором параметре.
    2. Поля MaximumLength и Length инициализируются количеством байт, занимаемым строкой БЕЗ последнего нулевого символа.
    Это значит, что некоторые отладчики, ничего не знающию о структуре UNICODE_STRING, могут неверно отобразить ее поле Buffer. Т.е. из-за отсуствия нулевого символа на конце, могут показать лишнее. Все стандартные символы \r \n ... и т.д. катят, так как они обрабатываются компилятором, а не операционной системой.
    Если это тебе не помогло, тогда вопрос к тебе. Каким отладчиком пользуешся?
     
  4. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
  5. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    О_о.. Реально без TCB-привилегии да ещё и в юзермоде заюзать NtDisplayString ???
     
  6. coocky

    coocky New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2007
    Сообщения:
    195
    Forever у меня VC++ 7.0
    Спасибо,обьяснения понял. Отладчик ,похоже,реально не видит. Ибо отображается в реальной работе нормально.
    гггг.А в чем проблема? Мне ж не надо созерцать вывод на экран!!
    Мне надо посмотреть, как идет работа, что в буферах находится и прочее..

    Пусть будет так, что б панику не вызывать у вас...
    Код (Text):
    1. RtlInitUnicodeString(&filename,L"STATUS_OBJECT_NAME_COLLISION");
    2. //NtDisplayString(&filename);