(Consulta - Windows) ¿En que anillo está el buffer manejado por stdout?

Iniciado por class_OpenGL, 23 Diciembre 2015, 01:55 AM

0 Miembros y 1 Visitante están viendo este tema.

class_OpenGL

Hola, muy buenas. La duda es ¿dónde está el buffer de stdout? Por ejemplo, cuando llamamos a la función printf, lo que hacemos es copiar el buffer del parámetro de dicha función a otro buffer manejado por Windows. Entonces, ¿qué nivel de protección tiene?

Por si alguien anda despitadillo, me refiero a los anillos del modo protegido de los procesadores. He escuchado que suelen haber 4. El kernel se encuentra en el nivel 0, y las aplicaciones de usuario en el 3.

Lo pregunto por saber si puedo acceder a ese buffer directamente o está en el kernel, y por tanto solo se puede acceder a el por Windows y su API (o las librerías standard de los compiladores, aunque estas a su vez requieren a la API).

Gracias

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

fary

Hola,

Creo que no existe dicho buffer...  De todas maneras tienes las interrupciones para imprimir texto por consola pero te limitarias, ya que tu aplicación tendría que ser para 16 bits.

Puedes probar a ver si la API que imprime texto llama a alguna otra API de la NTDLL (segurisimo que si que llama a alguna).

Saludos.
Un byte a la izquierda.

class_OpenGL


Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

Arkangel_0x7C5

depende de la funcion, por ejemplo yo supongo que printf usa un bufer para crear la cadena final que luego se imprime y no se si puts usa uno o no. pero estos bufers estan a nivel de la libc. si tu llamas a writeConsole o a WriteFile no creo que haya buffer y si lo hay ese si esta dentro de el kernel ya que estas funciones se ejecutan en su mayor parte en el nucleo
Recuerda que la entrada y salida estandar son manejados como ficheros

Saludos