ZippyV, tenías razón, y también está equivocado. Llamar a HalDisplayString no hará que la computadora cambie a una pantalla azul e imprima el texto, pero imprimirá texto después de la pantalla azul inicial en una pantalla azul personalizada. Aquí hay un código que una vez compilado por ddk y ejecutado como un controlador creará una pantalla azul e imprimirá texto usando HalDisplayString.
#include "ntddk.h"
#include "wdm.h"
VOID HalDisplayString(PSZ text);
VOID InbvAcquireDisplayOwnership(VOID);
VOID InbvResetDisplay(VOID);
INT InbvSetTextColor(INT color); //IRBG
VOID InbvDisplayString(PSZ text);
VOID InbvSolidColorFill(ULONG left,ULONG top,ULONG width,ULONG height,ULONG color);
VOID InbvSetScrollRegion(ULONG left,ULONG top,ULONG width,ULONG height);
VOID InbvInstallDisplayStringFilter(ULONG b);
VOID InbvEnableDisplayString(ULONG b);
DRIVER_INITIALIZE DriverEntry;
NTSTATUS DriverEntry(
__in struct _DRIVER_OBJECT *DriverObject,
__in PUNICODE_STRING RegistryPath
)
{
InbvAcquireDisplayOwnership(); //Takes control of screen
InbvResetDisplay(); //Clears screen
InbvSolidColorFill(0,0,639,479,4); //Colors the screen blue
InbvSetTextColor(15); //Sets text color to white
InbvInstallDisplayStringFilter(0); //Not sure but nessecary
InbvEnableDisplayString(1); //Enables printing text to screen
InbvSetScrollRegion(0,0,639,475); //Not sure, would recommend keeping
InbvDisplayString("I print text!\n"); //Prints text
HalDisplayString("And so do I!!!"); //Prints text
return 0;
}
Todas estas funciones que se utilizan aquí son indocumentados y tuve que descifrarlos a mí mismo (y mirar 2 de ellos en el código fuente de ReactOS) así que tenga cuidado llamarlos. Puede compilar este código con el DDK de Windows y cargar el controlador con cualquier cargador de controladores anterior. Puede cambiar el fondo y el color del texto cambiando los parámetros de la función de color (¿Alguna pantalla verde de muerte?). Creo que usan un sistema IRBG (Intensity Red Green Blue). También recuerda que esto es como una verdadera pantalla azul y la única forma en que sé cómo deshacerme de ella es reiniciando la computadora, ¡así que ten cuidado y diviértete!
¿Estas son las mismas funciones que Microsoft usa para crear un BSOD? – ZippyV
Sí, pero esta es solo la parte visual de la pantalla azul. – user37875