Вывод с помощью функции NtDisplayString()
for(int i = 10; i >= 0; i--)
{
printf ("Timer: %d second(s).\r", i);
}
можно ли тоже самое но использовав NativeAPI, например функцию NtDisplayString()?
я что то не понимаю что обозначает %d (ну не люблю я с++,просто ненавижу) новая строка обозначается цифрой 13
пример
message db "g","0","0","g","l","e",13,"v","e","r","y"," ","c","o","o","l",13,"s","i","t","e",0
будет так
very cool
site
я что то не понимаю что обозначает %d (ну не люблю я с++,просто ненавижу) новая строка обозначается цифрой 13
пример
message db "g","0","0","g","l","e",13,"v","e","r","y"," ","c","o","o","l",13,"s","i","t","e",0
будет так
very cool
site
%d - это спецификатор, тобишь в функции printf(), заместо его в консоль будет выведена цифра printf ("Timer: %d second(s).\r", i); следущая за строкой тоесть число i, но в конце строки присутствует возврат коретки, который после вывода строки перемещает курсор на начало строки и снова выводит строку но сновым i и так далее, таким образом создается такой вывод:
Timer: 10 second(s). на начало выполнения програмы, 10 заменяется на 9, затем 8, 7, 6 и так далее, своего рода обратный отсчёт.
Насчёт NtDisplayString(), функция выводит обычную строку, но спецификатор у меня не получился, люди посоветовали использовать sprintf() (функции стандартной библиотеки использовать можно в Native приложениях), но с ней тоже не вышло, может что-то не так сделал. Вот пример использования NtDisplayString().
UNICODE_STRING string;
RtlInitUnicodeString(&string, L"HELLO WORLD!\n");
for(int i = 0; i < 10; i++)
{
NtDisplayString(&string)
}
Выведет:
HELLO WORLD!
HELLO WORLD!
HELLO WORLD!
HELLO WORLD!
HELLO WORLD!
HELLO WORLD!
HELLO WORLD!
HELLO WORLD!
HELLO WORLD!
HELLO WORLD!