ZippyV, vous aviez raison, et aussi faux. Si vous appelez HalDisplayString, l'ordinateur ne passera pas à l'écran bleu et n'imprimera pas le texte, mais il imprimera du texte après l'écran bleu initial sur un écran bleu personnalisé. Voici un code qui, une fois compilé par le ddk et lancé en tant que pilote, créera un écran bleu et affichera du texte en utilisant 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;
}
Toutes ces fonctions utilisées ici sont sans papier et je devais les comprendre moi-même (et regarder deux d'entre eux dans le code source de ReactOS) alors soyez prudent de les appeler. Vous pouvez compiler ce code avec les fenêtres DDK et charger le pilote avec n'importe quel ancien chargeur de pilote. Vous pouvez changer l'arrière-plan et la couleur du texte en changeant les paramètres de la fonction de couleur (écran vert de la mort n'importe qui?). Je pense qu'ils utilisent un système IRBG (Intensity Red Green Blue). Rappelez-vous aussi que c'est comme un véritable écran bleu et que la seule façon de m'en débarrasser est de redémarrer l'ordinateur, alors faites attention et amusez-vous!
Donc, ce sont les mêmes fonctions que Microsoft utilise pour créer un BSOD? – ZippyV
Oui, mais ce n'est que la partie visuelle du bluescreen. – user37875