~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The Inbv* and the Vid* functions from BOOTVID.DLL and NTOSKRNL.EXE are not documented, but they are similar. Some assumptions were drawn from the ezine 6 of the 29A group - Ratter's TAICHI-Virus. Here are my findings! (c) 2004 by -=Assarbad=- Published under the GPL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HAL functions: Inbv* --------------------------- // Allows to "prefilter" strings? void InbvInstallDisplayStringFilter( PVOID DisplayStringFilterProc // points presumably to some routine (prototype unknown!) ); // Checks wether the HAL owns the display? BOOLEAN InbvIsBootDriverInstalled(void); // Aquires the display ownership for the caller? void InbvAcquireDisplayOwnership(void); // Used by the HAL to reset the display into textmode for the BSOD ;) BOOLEAN InbvResetDisplay(void); // Fills portions of the screen (or the complete screen) with a given // color. It uses pixel as the unit!!! void InbvSolidColorFill( ULONG Left, // Meaning of the parameters should be clear ;) ULONG Top, ULONG Right, ULONG Bottom, DWORD Color ); // Shows an ASCII/ANSI string. Not yet test wether there's a difference // between OEM and normal ANSI string. BOOLEAN InbvDisplayString( PCHAR Str ); // Sets the text color for the next output operations. ULONG InbvSetTextColor( DWORD Color ); // Sets the portion of the screen which is being scrolled. This is how // Windows 2000 implements the nice "graphical" boot screen! // It uses pixel as the unit!!! void InbvSetScrollRegion( ULONG Left, // Meaning of the parameters should be clear ;) ULONG Top, ULONG Right, ULONG Bottom ); BOOLEAN InbvEnableDisplayString( BOOLEAN Enable ); --------------------------- BOOTVID functions: Vid* --------------------------- void VidSolidColorFill( ULONG Left, ULONG Top, ULONG Right, ULONG Bottom, DWORD Color ); void VidDisplayString( PCHAR Str ); void VidResetDisplay(void); BOOLEAN VidInitialize(BOOLEAN SetMode); void VidBitBlt( PBYTE Buffer, ULONG x, ULONG y ); void VidSetScrollRegion( ULONG Left, ULONG Top, ULONG Right, ULONG Bottom ); void VidCleanUp(void); void VidDisplayStringXY( PCHAR Str, ULONG X, ULONG Y, BOOLEAN NoBgColor ); ULONG VidSetTextColor( ULONG Color ); --------------------------- Maybe I missed some function, but I hope the parameters are correct?! Calling them using these prototypes worked find for me! One serious problem for me was the missing LIB file for the BOOTVID.DLL! I tried to create one using a custom .DEF-file and the LIB utility from MS, but it wouldn't work like this :-/ I will further investigate how exactly the Inbv* functions work. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~