2009-08-12 17 views
5

के लिए हैलडिस्प्लेस्ट्रिंग का उपयोग करके मैं कुछ समय पहले ऑनलाइन पढ़ रहा था कि आप एक कस्टम बीएसओडी बना सकते हैं। मुझे याद नहीं है, लेकिन मुझे पता है कि इसमें हैलडिस्प्लेस्ट्रिंग को कॉल करने के साथ कुछ था जो ब्लूस्क्रीन पर स्विच करेगा और एक संदेश प्रिंट करेगा। मैंने एक साधारण चालक से 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

आप उस फ़ंक्शन के साथ बीएसओडी नहीं दिखा सकते हैं, यह केवल लॉगिन स्क्रीन प्रकट होने से पहले बूटअप के दौरान टेक्स्ट प्रदर्शित करता है। यह link आपको कुछ जानकारी देना चाहिए।

5

ज़िप्पीवी, आप सही थे, और गलत भी। कॉलिंग हैलडिस्प्लेस्ट्रिंग कंप्यूटर को ब्लूस्क्रीन पर स्विच करने और टेक्स्ट प्रिंट करने का कारण नहीं बनती है, लेकिन यह कस्टम ब्लूस्क्रीन पर प्रारंभिक ब्लूस्क्रीन के बाद टेक्स्ट प्रिंट करेगी। यहां कुछ कोड है जो एक बार डीडीके द्वारा संकलित और ड्राइवर के रूप में चलाने के लिए एक ब्लूस्क्रीन और 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; 
} 

इन यहां इस्तेमाल किया कार्यों के सभी undocumented हैं और मैं उन्हें अपने आप को यह पता लगाने (और ReactOS स्रोत कोड में उनमें से 2 को देखने) के लिए इसलिए उन्हें बुला सावधान रहना था। आप इस कोड को विंडोज डीडीके के साथ संकलित कर सकते हैं और किसी भी पुराने ड्राइवर लोडर के साथ ड्राइवर लोड कर सकते हैं। आप रंग फ़ंक्शन पैरामीटर (किसी की मौत की ग्रीन स्क्रीन) को बदलकर पृष्ठभूमि और टेक्स्ट रंग बदल सकते हैं। मुझे लगता है कि वे एक आईआरबीजी (तीव्रता लाल ग्रीन ब्लू) प्रणाली का उपयोग करते हैं। यह भी याद रखें कि यह एक वास्तविक ब्लूस्क्रीन की तरह है और एकमात्र तरीका है कि मुझे पता है कि इससे कैसे छुटकारा पाना है कंप्यूटर को पुनरारंभ करना, इसलिए सावधान रहें और मज़े करें!

+0

तो ये वही कार्य हैं जो माइक्रोसॉफ्ट बीएसओडी बनाने के लिए उपयोग करता है? – ZippyV

+0

हां, लेकिन यह ब्लूस्क्रीन का केवल दृश्य हिस्सा है। – user37875

संबंधित मुद्दे