2009-08-12 15 views
5

私は以前、どこかでオンラインであなたがカスタムBSODを作ることができると読んでいました。私はHalDisplayStringを呼び出すと、どこにブルースクリーンに切り替えてメッセージを印刷するかが分かっていました。単純なドライバからHalDisplayStringを呼び出してみましたが、何も起こりません。誰かが私を正しい方向に向けることができるかどうか疑問に思っていた。ここにドライバのコードがあります。HalDisplayStringを使って死のブルー画面を作る

#include "ntddk.h" 
#include "wdm.h" 
NTSYSAPI VOID NTAPI HalDisplayString(PCHAR String); 
NTSYSAPI VOID NTAPI NtDisplayString(PCHAR String); 
DRIVER_INITIALIZE DriverEntry; 
NTSTATUS DriverEntry( 
    __in struct _DRIVER_OBJECT *DriverObject, 
    __in PUNICODE_STRING RegistryPath 
    ) 
    { 

    HalDisplayString("Hello world!"); 
return 0; 
} 

ありがとうございます!

答えて

2

この機能でBSODを表示することはできません。起動時には、ログイン画面が表示される前にのみテキストが表示されます。このlinkは、いくつかの情報を提供する必要があります。

5

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)システムを使っていると思います。また、これは本当のブルースクリーンのようなものだと私はそれを取り除く方法を知っている唯一の方法は、コンピュータを再起動することですので、注意して楽しんでください!

+0

これは、MicrosoftがBSODを作成するのと同じ機能ですか? – ZippyV

+0

はい、これはブルースクリーンの視覚的な部分だけです。 – user37875

関連する問題