ZippyV、あなたは正しく、間違っていました。 HalDisplayStringを呼び出しても、コンピュータはブルースクリーンに切り替えてテキストを印刷することはありませんが、カスタムブルースクリーンの最初のブルースクリーンの後にテキストが印刷されます。次に、ddkによってコンパイルされ、ドライバーとして実行されるコードは、HaldisplayStringを使用してbluescreenとテキストを作成するコードです。
#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;
}
ここで使用されるこれらの機能のすべてが文書化されていないで、私は自分自身をそれらを把握(とReactOSのソースコードでそれらの2を見て)ので、それらを呼び出すように注意しなければなりませんでした。このコードをWindows DDKでコンパイルし、古いドライバローダでドライバをロードすることができます。あなたは色の関数のパラメータ(死の誰の緑の画面ですか?)を変更することによって、背景とテキストの色を変更することができます。 IRBG(Intensity Red Green Blue)システムを使っていると思います。また、これは本当のブルースクリーンのようなものだと私はそれを取り除く方法を知っている唯一の方法は、コンピュータを再起動することですので、注意して楽しんでください!
これは、MicrosoftがBSODを作成するのと同じ機能ですか? – ZippyV
はい、これはブルースクリーンの視覚的な部分だけです。 – user37875