ReactOS  0.4.15-dev-4569-g032c50f
inbv.c File Reference
#include <ntoskrnl.h>
#include "inbv/logo.h"
Include dependency graph for inbv.c:

Go to the source code of this file.

Classes

struct  _INBV_PROGRESS_STATE
 
struct  _BT_PROGRESS_INDICATOR
 

Typedefs

typedef struct _INBV_PROGRESS_STATE INBV_PROGRESS_STATE
 
typedef struct _BT_PROGRESS_INDICATOR BT_PROGRESS_INDICATOR
 
typedef struct _BT_PROGRESS_INDICATORPBT_PROGRESS_INDICATOR
 

Functions

static PVOID FindBitmapResource (_In_ PLOADER_PARAMETER_BLOCK LoaderBlock, _In_ ULONG ResourceId)
 
PUCHAR NTAPI InbvGetResourceAddress (_In_ ULONG ResourceNumber)
 
BOOLEAN NTAPI InbvDriverInitialize (_In_ PLOADER_PARAMETER_BLOCK LoaderBlock, _In_ ULONG Count)
 
VOID NTAPI InbvAcquireLock (VOID)
 
VOID NTAPI InbvReleaseLock (VOID)
 
VOID NTAPI InbvEnableBootDriver (_In_ BOOLEAN Enable)
 
VOID NTAPI InbvAcquireDisplayOwnership (VOID)
 
VOID NTAPI InbvSetDisplayOwnership (_In_ BOOLEAN DisplayOwned)
 
BOOLEAN NTAPI InbvCheckDisplayOwnership (VOID)
 
INBV_DISPLAY_STATE NTAPI InbvGetDisplayState (VOID)
 
BOOLEAN NTAPI InbvDisplayString (_In_ PCHAR String)
 
BOOLEAN NTAPI InbvEnableDisplayString (_In_ BOOLEAN Enable)
 
VOID NTAPI InbvInstallDisplayStringFilter (_In_ INBV_DISPLAY_STRING_FILTER DisplayFilter)
 
BOOLEAN NTAPI InbvIsBootDriverInstalled (VOID)
 
VOID NTAPI InbvNotifyDisplayOwnershipLost (_In_ INBV_RESET_DISPLAY_PARAMETERS Callback)
 
BOOLEAN NTAPI InbvResetDisplay (VOID)
 
VOID NTAPI InbvSetScrollRegion (_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom)
 
VOID NTAPI InbvSetTextColor (_In_ ULONG Color)
 
VOID NTAPI InbvSolidColorFill (_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ ULONG Color)
 
VOID NTAPI InbvBitBlt (_In_ PUCHAR Buffer, _In_ ULONG X, _In_ ULONG Y)
 
VOID NTAPI InbvBufferToScreenBlt (_In_ PUCHAR Buffer, _In_ ULONG X, _In_ ULONG Y, _In_ ULONG Width, _In_ ULONG Height, _In_ ULONG Delta)
 
VOID NTAPI InbvScreenToBufferBlt (_Out_ PUCHAR Buffer, _In_ ULONG X, _In_ ULONG Y, _In_ ULONG Width, _In_ ULONG Height, _In_ ULONG Delta)
 
VOID NTAPI InbvSetProgressBarCoordinates (_In_ ULONG Left, _In_ ULONG Top)
 Sets the screen coordinates of the loading progress bar and enable it. More...
 
VOID NTAPI InbvIndicateProgress (VOID)
 Gives some progress feedback, without specifying any explicit number of progress steps or percentage. The corresponding percentage is derived from the progress indicator's current count, capped to the number of expected calls to be made to this function (default: 25, see InbvProgressIndicator.Expected). More...
 
VOID NTAPI InbvSetProgressBarSubset (_In_ ULONG Floor, _In_ ULONG Ceiling)
 Specifies a progress percentage sub-range. Further calls to InbvIndicateProgress() or InbvUpdateProgressBar() will update the progress percentage relative to this sub-range. In particular, the percentage provided to InbvUpdateProgressBar() is relative to this sub-range. More...
 
VOID NTAPI InbvUpdateProgressBar (_In_ ULONG Percentage)
 Updates the progress bar percentage, relative to the current percentage sub-range previously set by InbvSetProgressBarSubset(). More...
 
NTSTATUS NTAPI NtDisplayString (IN PUNICODE_STRING DisplayString)
 

Variables

static KSPIN_LOCK BootDriverLock
 
static KIRQL InbvOldIrql
 
static INBV_DISPLAY_STATE InbvDisplayState = INBV_DISPLAY_STATE_DISABLED
 
BOOLEAN InbvBootDriverInstalled = FALSE
 
static INBV_RESET_DISPLAY_PARAMETERS InbvResetDisplayParameters = NULL
 
static BOOLEAN InbvDisplayDebugStrings = FALSE
 
static INBV_DISPLAY_STRING_FILTER InbvDisplayFilter = NULL
 
ULONG ProgressBarLeft = 0
 
ULONG ProgressBarTop = 0
 
BOOLEAN ShowProgressBar = FALSE
 
static INBV_PROGRESS_STATE InbvProgressState
 
static BT_PROGRESS_INDICATOR InbvProgressIndicator = {0, 25, 0}
 
static ULONG ResourceCount = 0
 
static PUCHAR ResourceList [1+IDB_MAX_RESOURCE]
 
static ULONG InbvTerminalTextColor = 37
 
static ULONG InbvTerminalBkgdColor = 40
 

Typedef Documentation

◆ BT_PROGRESS_INDICATOR

◆ INBV_PROGRESS_STATE

◆ PBT_PROGRESS_INDICATOR

Function Documentation

◆ FindBitmapResource()

static PVOID FindBitmapResource ( _In_ PLOADER_PARAMETER_BLOCK  LoaderBlock,
_In_ ULONG  ResourceId 
)
static

Definition at line 97 of file inbv.c.

100 {
101  UNICODE_STRING UpString = RTL_CONSTANT_STRING(L"ntoskrnl.exe");
102  UNICODE_STRING MpString = RTL_CONSTANT_STRING(L"ntkrnlmp.exe");
103  PLIST_ENTRY NextEntry, ListHead;
104  PLDR_DATA_TABLE_ENTRY LdrEntry;
105  PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry;
106  LDR_RESOURCE_INFO ResourceInfo;
108  PVOID Data = NULL;
109 
110  /* Loop the driver list */
111  ListHead = &LoaderBlock->LoadOrderListHead;
112  NextEntry = ListHead->Flink;
113  while (NextEntry != ListHead)
114  {
115  /* Get the entry */
116  LdrEntry = CONTAINING_RECORD(NextEntry,
118  InLoadOrderLinks);
119 
120  /* Check for a match */
121  if (RtlEqualUnicodeString(&LdrEntry->BaseDllName, &UpString, TRUE) ||
122  RtlEqualUnicodeString(&LdrEntry->BaseDllName, &MpString, TRUE))
123  {
124  /* Break out */
125  break;
126  }
127  }
128 
129  /* Check if we found it */
130  if (NextEntry != ListHead)
131  {
132  /* Try to find the resource */
133  ResourceInfo.Type = 2; // RT_BITMAP;
134  ResourceInfo.Name = ResourceId;
135  ResourceInfo.Language = 0;
136  Status = LdrFindResource_U(LdrEntry->DllBase,
137  &ResourceInfo,
139  &ResourceDataEntry);
140  if (NT_SUCCESS(Status))
141  {
142  /* Access the resource */
143  ULONG Size = 0;
144  Status = LdrAccessResource(LdrEntry->DllBase,
145  ResourceDataEntry,
146  &Data,
147  &Size);
148  if ((Data) && (ResourceId < 3))
149  {
151  }
152  if (!NT_SUCCESS(Status)) Data = NULL;
153  }
154  }
155 
156  /* Return the pointer */
157  return Data;
158 }
#define TRUE
Definition: types.h:120
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG _In_opt_ PVOID Data
Definition: wdfdevice.h:4527
LONG NTSTATUS
Definition: precomp.h:26
ULONG_PTR KiBugCheckData[5]
Definition: bug.c:27
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
ULONG_PTR Type
Definition: ldrtypes.h:181
PVOID DllBase
Definition: btrfs_drv.h:1870
#define L(x)
Definition: ntvdm.h:50
ULONG_PTR Name
Definition: ldrtypes.h:182
Definition: pedump.c:457
NTSTATUS NTAPI LdrFindResource_U(_In_ PVOID BaseAddress, _In_ PLDR_RESOURCE_INFO ResourceInfo, _In_ ULONG Level, _Out_ PIMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
NTSTATUS NTAPI LdrAccessResource(_In_ PVOID BaseAddress, _In_ PIMAGE_RESOURCE_DATA_ENTRY ResourceDataEntry, _Out_opt_ PVOID *Resource, _Out_opt_ PULONG Size)
Status
Definition: gdiplustypes.h:24
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
Definition: btrfs_drv.h:1866
Definition: typedefs.h:119
#define RtlComputeCrc32
Definition: compat.h:669
#define RESOURCE_DATA_LEVEL
Definition: ldrtypes.h:33
UNICODE_STRING BaseDllName
Definition: ldrtypes.h:145
#define NULL
Definition: types.h:112
ULONG_PTR Language
Definition: ldrtypes.h:183
unsigned int ULONG
Definition: retypes.h:1
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
#define RTL_CONSTANT_STRING(s)
Definition: tunneltest.c:14

Referenced by BootAnimInitialize(), and InbvDriverInitialize().

◆ InbvAcquireDisplayOwnership()

VOID NTAPI InbvAcquireDisplayOwnership ( VOID  )

Definition at line 289 of file inbv.c.

290 {
291  /* Check if we have a callback and we're just acquiring it now */
294  {
295  /* Call the callback */
297  }
298 
299  /* Acquire the display */
301 }
static INBV_RESET_DISPLAY_PARAMETERS InbvResetDisplayParameters
Definition: inbv.c:40
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38

Referenced by HalHandleNMI(), HalReturnToFirmware(), KdpScreenAcquire(), KiDisplayBlueScreen(), and PopShutdownHandler().

◆ InbvAcquireLock()

VOID NTAPI InbvAcquireLock ( VOID  )

Definition at line 219 of file inbv.c.

220 {
221  KIRQL OldIrql;
222 
223  /* Check if we're at dispatch level or lower */
225  if (OldIrql <= DISPATCH_LEVEL)
226  {
227  /* Loop until the lock is free */
228  while (!KeTestSpinLock(&BootDriverLock));
229 
230  /* Raise IRQL to dispatch level */
232  }
233 
234  /* Acquire the lock */
237 }
#define KeGetCurrentIrql()
Definition: env_spec_w32.h:706
UCHAR KIRQL
Definition: env_spec_w32.h:591
BOOLEAN FASTCALL KeTestSpinLock(IN PKSPIN_LOCK SpinLock)
Definition: spinlock.c:475
static KIRQL InbvOldIrql
Definition: inbv.c:37
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
Definition: kefuncs.h:792
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
VOID FASTCALL KiAcquireSpinLock(IN PKSPIN_LOCK SpinLock)
Definition: spinlock.c:287
VOID NTAPI KeRaiseIrql(KIRQL NewIrql, PKIRQL OldIrql)
Definition: spinlock.c:27
static KSPIN_LOCK BootDriverLock
Definition: inbv.c:36

Referenced by BootAnimTickProgressBar(), BootLogoFadeIn(), DisplayBootBitmap(), FinalizeBootLogo(), InbvBitBlt(), InbvDisplayString(), InbvEnableBootDriver(), InbvNotifyDisplayOwnershipLost(), InbvRotationThread(), and InbvSolidColorFill().

◆ InbvBitBlt()

VOID NTAPI InbvBitBlt ( _In_ PUCHAR  Buffer,
_In_ ULONG  X,
_In_ ULONG  Y 
)

Definition at line 530 of file inbv.c.

534 {
535  /* Check if we're installed and we own it */
538  {
539  /* Acquire the lock */
540  InbvAcquireLock();
541 
542  /* Do the blit */
543  VidBitBlt(Buffer, X, Y);
544 
545  /* Release the lock */
546  InbvReleaseLock();
547  }
548 }
#define Y(I)
VOID NTAPI InbvReleaseLock(VOID)
Definition: inbv.c:241
VOID NTAPI InbvAcquireLock(VOID)
Definition: inbv.c:219
Definition: bufpool.h:45
VOID NTAPI VidBitBlt(_In_ PUCHAR Buffer, _In_ ULONG Left, _In_ ULONG Top)
Definition: common.c:470
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by BitBltPalette(), and PopShutdownHandler().

◆ InbvBufferToScreenBlt()

VOID NTAPI InbvBufferToScreenBlt ( _In_ PUCHAR  Buffer,
_In_ ULONG  X,
_In_ ULONG  Y,
_In_ ULONG  Width,
_In_ ULONG  Height,
_In_ ULONG  Delta 
)

Definition at line 552 of file inbv.c.

559 {
560  /* Check if we're installed and we own it */
563  {
564  /* Do the blit */
566  }
567 }
#define Y(I)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
Definition: font.h:124
_In_ HFONT _Out_ PUINT Height
Definition: font.h:124
Definition: bufpool.h:45
static ULONG Delta
Definition: xboxvideo.c:33
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
VOID NTAPI VidBufferToScreenBlt(_In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_ ULONG Delta)
Definition: common.c:452
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by DisplayBootBitmap().

◆ InbvCheckDisplayOwnership()

BOOLEAN NTAPI InbvCheckDisplayOwnership ( VOID  )

Definition at line 315 of file inbv.c.

316 {
317  /* Return if we own it or not */
319 }
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38

Referenced by InbvMonitorThread(), KdpScreenRelease(), and PopShutdownHandler().

◆ InbvDisplayString()

BOOLEAN NTAPI InbvDisplayString ( _In_ PCHAR  String)

Definition at line 331 of file inbv.c.

333 {
334  /* Make sure we own the display */
336  {
337  /* If we're not allowed, return success anyway */
338  if (!InbvDisplayDebugStrings) return TRUE;
339 
340  /* Check if a filter is installed */
342 
343  /* Acquire the lock */
344  InbvAcquireLock();
345 
346  /* Make sure we're installed and display the string */
348 
349  /* Print the string on the EMS port */
351  String,
352  strlen(String) + sizeof(ANSI_NULL),
353  NULL,
354  NULL);
355 
356  /* Release the lock */
357  InbvReleaseLock();
358 
359  /* All done */
360  return TRUE;
361  }
362 
363  /* We don't own it, fail */
364  return FALSE;
365 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define TRUE
Definition: types.h:120
unsigned char * PUCHAR
Definition: retypes.h:3
VOID NTAPI VidDisplayString(_In_z_ PUCHAR String)
Definition: common.c:374
NTSTATUS NTAPI HeadlessDispatch(IN HEADLESS_CMD Command, IN PVOID InputBuffer, IN SIZE_T InputBufferSize, OUT PVOID OutputBuffer, OUT PSIZE_T OutputBufferSize)
Definition: hdlsterm.c:570
VOID NTAPI InbvReleaseLock(VOID)
Definition: inbv.c:241
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2430
#define FALSE
Definition: types.h:117
#define ANSI_NULL
static BOOLEAN InbvDisplayDebugStrings
Definition: inbv.c:42
VOID NTAPI InbvAcquireLock(VOID)
Definition: inbv.c:219
static INBV_DISPLAY_STRING_FILTER InbvDisplayFilter
Definition: inbv.c:43
#define NULL
Definition: types.h:112
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by HalDisplayString(), HalHandleNMI(), KeBugCheckWithTf(), KeGetBugMessageText(), KiDisplayBlueScreen(), KiDumpParameterImages(), NtDisplayString(), Phase1InitializationDiscard(), and PopShutdownHandler().

◆ InbvDriverInitialize()

BOOLEAN NTAPI InbvDriverInitialize ( _In_ PLOADER_PARAMETER_BLOCK  LoaderBlock,
_In_ ULONG  Count 
)

Definition at line 175 of file inbv.c.

178 {
179  PCHAR CommandLine;
180  BOOLEAN ResetMode = FALSE; // By default do not reset the video mode
181  ULONG i;
182 
183  /* Quit if we're already installed */
184  if (InbvBootDriverInstalled) return TRUE;
185 
186  /* Initialize the lock and check the current display state */
189  {
190  /* Reset the video mode in case we do not have a custom boot logo */
191  CommandLine = (LoaderBlock->LoadOptions ? _strupr(LoaderBlock->LoadOptions) : NULL);
192  ResetMode = (CommandLine == NULL) || (strstr(CommandLine, "BOOTLOGO") == NULL);
193  }
194 
195  /* Initialize the video */
198  {
199  /* Find bitmap resources in the kernel */
201  for (i = 1; i <= ResourceCount; i++)
202  {
203  /* Do the lookup */
204  ResourceList[i] = FindBitmapResource(LoaderBlock, i);
205  }
206 
207  /* Set the progress bar ranges */
208  InbvSetProgressBarSubset(0, 100);
209 
210  // BootAnimInitialize(LoaderBlock, Count);
211  }
212 
213  /* Return install state */
215 }
signed char * PCHAR
Definition: retypes.h:7
#define TRUE
Definition: types.h:120
char * strstr(char *String1, char *String2)
Definition: utclib.c:653
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
Definition: wdfresource.h:304
static PVOID FindBitmapResource(_In_ PLOADER_PARAMETER_BLOCK LoaderBlock, _In_ ULONG ResourceId)
Definition: inbv.c:97
#define FALSE
Definition: types.h:117
FORCEINLINE VOID KeInitializeSpinLock(_Out_ PKSPIN_LOCK SpinLock)
Definition: kefuncs.h:240
unsigned char BOOLEAN
int Count
Definition: noreturn.cpp:7
VOID NTAPI InbvSetProgressBarSubset(_In_ ULONG Floor, _In_ ULONG Ceiling)
Specifies a progress percentage sub-range. Further calls to InbvIndicateProgress() or InbvUpdateProgr...
Definition: inbv.c:663
static ULONG ResourceCount
Definition: inbv.c:50
_CRTIMP char *__cdecl _strupr(_Inout_z_ char *_String)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
BOOLEAN NTAPI VidInitialize(_In_ BOOLEAN SetMode)
Definition: bootvid.c:184
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
#define min(a, b)
Definition: monoChain.cc:55
#define NULL
Definition: types.h:112
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
unsigned int ULONG
Definition: retypes.h:1
static KSPIN_LOCK BootDriverLock
Definition: inbv.c:36
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by Phase1InitializationDiscard().

◆ InbvEnableBootDriver()

VOID NTAPI InbvEnableBootDriver ( _In_ BOOLEAN  Enable)

Definition at line 257 of file inbv.c.

259 {
260  /* Check if we're installed */
262  {
263  /* Check for lost state */
265 
266  /* Acquire the lock */
267  InbvAcquireLock();
268 
269  /* Cleanup the screen if we own it */
271 
272  /* Set the new display state */
275 
276  /* Release the lock */
277  InbvReleaseLock();
278  }
279  else
280  {
281  /* Set the new display state */
284  }
285 }
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:140
VOID NTAPI InbvReleaseLock(VOID)
Definition: inbv.c:241
VOID NTAPI VidCleanUp(VOID)
Definition: bootvid.c:246
VOID NTAPI InbvAcquireLock(VOID)
Definition: inbv.c:219
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by Phase1InitializationDiscard().

◆ InbvEnableDisplayString()

BOOLEAN NTAPI InbvEnableDisplayString ( _In_ BOOLEAN  Enable)

Definition at line 369 of file inbv.c.

371 {
372  BOOLEAN OldSetting;
373 
374  /* Get the old setting */
375  OldSetting = InbvDisplayDebugStrings;
376 
377  /* Update it */
379 
380  /* Return the old setting */
381  return OldSetting;
382 }
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
Definition: ntddpcm.h:140
unsigned char BOOLEAN
static BOOLEAN InbvDisplayDebugStrings
Definition: inbv.c:42

Referenced by HalHandleNMI(), KdpScreenAcquire(), KiDisplayBlueScreen(), Phase1InitializationDiscard(), and PopShutdownHandler().

◆ InbvGetDisplayState()

INBV_DISPLAY_STATE NTAPI InbvGetDisplayState ( VOID  )

Definition at line 323 of file inbv.c.

324 {
325  /* Return the actual state */
326  return InbvDisplayState;
327 }
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38

Referenced by BootAnimTickProgressBar(), BootLogoFadeIn(), FinalizeBootLogo(), and InbvRotationThread().

◆ InbvGetResourceAddress()

PUCHAR NTAPI InbvGetResourceAddress ( _In_ ULONG  ResourceNumber)

Definition at line 162 of file inbv.c.

164 {
165  /* Validate the resource number */
166  if (ResourceNumber > ResourceCount) return NULL;
167 
168  /* Return the address */
169  return ResourceList[ResourceNumber];
170 }
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
Definition: wdfresource.h:304
static ULONG ResourceCount
Definition: inbv.c:50
#define NULL
Definition: types.h:112

Referenced by DisplayBootBitmap(), and PopShutdownHandler().

◆ InbvIndicateProgress()

VOID NTAPI InbvIndicateProgress ( VOID  )

Gives some progress feedback, without specifying any explicit number of progress steps or percentage. The corresponding percentage is derived from the progress indicator's current count, capped to the number of expected calls to be made to this function (default: 25, see InbvProgressIndicator.Expected).

Returns
None.

Definition at line 625 of file inbv.c.

626 {
627  ULONG Percentage;
628 
629  /* Increase progress */
631 
632  /* Compute the new percentage - Don't go over 100% */
633  Percentage = 100 * InbvProgressIndicator.Count /
635  Percentage = min(Percentage, 99);
636 
637  if (Percentage != InbvProgressIndicator.Percentage)
638  {
639  /* Percentage has changed, update the progress bar */
640  InbvProgressIndicator.Percentage = Percentage;
641  InbvUpdateProgressBar(Percentage);
642  }
643 }
static BT_PROGRESS_INDICATOR InbvProgressIndicator
Definition: inbv.c:48
VOID NTAPI InbvUpdateProgressBar(_In_ ULONG Percentage)
Updates the progress bar percentage, relative to the current percentage sub-range previously set by I...
Definition: inbv.c:689
#define min(a, b)
Definition: monoChain.cc:55
unsigned int ULONG
Definition: retypes.h:1

Referenced by IopInitializeBuiltinDriver(), and IopInitializeSystemDrivers().

◆ InbvInstallDisplayStringFilter()

VOID NTAPI InbvInstallDisplayStringFilter ( _In_ INBV_DISPLAY_STRING_FILTER  DisplayFilter)

Definition at line 386 of file inbv.c.

388 {
389  /* Save the filter */
391 }
static VOID NTAPI DisplayFilter(_Inout_ PCHAR *String)
Definition: bootanim.c:446
static INBV_DISPLAY_STRING_FILTER InbvDisplayFilter
Definition: inbv.c:43

Referenced by DisplayBootBitmap(), DisplayFilter(), HalHandleNMI(), KdpScreenAcquire(), and KiDisplayBlueScreen().

◆ InbvIsBootDriverInstalled()

BOOLEAN NTAPI InbvIsBootDriverInstalled ( VOID  )

Definition at line 395 of file inbv.c.

396 {
397  /* Return driver state */
399 }
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by HalHandleNMI(), KdpScreenAcquire(), KdpScreenRelease(), KiDisplayBlueScreen(), and PopShutdownHandler().

◆ InbvNotifyDisplayOwnershipLost()

VOID NTAPI InbvNotifyDisplayOwnershipLost ( _In_ INBV_RESET_DISPLAY_PARAMETERS  Callback)

Definition at line 403 of file inbv.c.

405 {
406  /* Check if we're installed */
408  {
409  /* Acquire the lock and cleanup if we own the screen */
410  InbvAcquireLock();
412 
413  /* Set the reset callback and display state */
416 
417  /* Release the lock */
418  InbvReleaseLock();
419  }
420  else
421  {
422  /* Set the reset callback and display state */
425  }
426 }
static INBV_RESET_DISPLAY_PARAMETERS InbvResetDisplayParameters
Definition: inbv.c:40
VOID NTAPI InbvReleaseLock(VOID)
Definition: inbv.c:241
VOID NTAPI VidCleanUp(VOID)
Definition: bootvid.c:246
VOID NTAPI InbvAcquireLock(VOID)
Definition: inbv.c:219
_In_ WDFINTERRUPT _In_ PFN_WDF_INTERRUPT_SYNCHRONIZE Callback
Definition: wdfinterrupt.h:456
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by InbvMonitorThread(), IntVideoPortInbvCleanup(), IntVideoPortInbvInitialize(), KdpScreenRelease(), Phase1InitializationDiscard(), ScrInbvCleanup(), and ScrInbvInitialize().

◆ InbvReleaseLock()

VOID NTAPI InbvReleaseLock ( VOID  )

Definition at line 241 of file inbv.c.

242 {
243  KIRQL OldIrql;
244 
245  /* Capture the old IRQL */
247 
248  /* Release the driver lock */
250 
251  /* If we were at dispatch level or lower, restore the old IRQL */
253 }
UCHAR KIRQL
Definition: env_spec_w32.h:591
static KIRQL InbvOldIrql
Definition: inbv.c:37
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
Definition: kefuncs.h:792
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
VOID FASTCALL KiReleaseSpinLock(IN PKSPIN_LOCK SpinLock)
Definition: spinlock.c:298
static KSPIN_LOCK BootDriverLock
Definition: inbv.c:36
VOID NTAPI KeLowerIrql(KIRQL NewIrql)
Definition: spinlock.c:39

Referenced by BootAnimTickProgressBar(), BootLogoFadeIn(), DisplayBootBitmap(), FinalizeBootLogo(), InbvBitBlt(), InbvDisplayString(), InbvEnableBootDriver(), InbvNotifyDisplayOwnershipLost(), InbvRotationThread(), and InbvSolidColorFill().

◆ InbvResetDisplay()

BOOLEAN NTAPI InbvResetDisplay ( VOID  )

Definition at line 430 of file inbv.c.

431 {
432  /* Check if we're installed and we own it */
435  {
436  /* Do the reset */
438  return TRUE;
439  }
440 
441  /* Nothing to reset */
442  return FALSE;
443 }
#define TRUE
Definition: types.h:120
VOID NTAPI VidResetDisplay(_In_ BOOLEAN HalReset)
Definition: bootvid.c:220
#define FALSE
Definition: types.h:117
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by HalHandleNMI(), KdpScreenAcquire(), KiDisplayBlueScreen(), and PopShutdownHandler().

◆ InbvScreenToBufferBlt()

VOID NTAPI InbvScreenToBufferBlt ( _Out_ PUCHAR  Buffer,
_In_ ULONG  X,
_In_ ULONG  Y,
_In_ ULONG  Width,
_In_ ULONG  Height,
_In_ ULONG  Delta 
)

Definition at line 571 of file inbv.c.

578 {
579  /* Check if we're installed and we own it */
582  {
583  /* Do the blit */
585  }
586 }
#define Y(I)
_In_ HFONT _Out_ PUINT _Out_ PUINT Width
Definition: font.h:124
_In_ HFONT _Out_ PUINT Height
Definition: font.h:124
Definition: bufpool.h:45
VOID NTAPI VidScreenToBufferBlt(_Out_writes_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_ ULONG Delta)
Definition: bootvid.c:257
static ULONG Delta
Definition: xboxvideo.c:33
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39

Referenced by DisplayBootBitmap().

◆ InbvSetDisplayOwnership()

VOID NTAPI InbvSetDisplayOwnership ( _In_ BOOLEAN  DisplayOwned)

Definition at line 305 of file inbv.c.

307 {
308  /* Set the new display state */
309  InbvDisplayState = DisplayOwned ? INBV_DISPLAY_STATE_OWNED :
311 }
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38

◆ InbvSetProgressBarCoordinates()

VOID NTAPI InbvSetProgressBarCoordinates ( _In_ ULONG  Left,
_In_ ULONG  Top 
)

Sets the screen coordinates of the loading progress bar and enable it.

Parameters
[in]Left
[in]TopThe left/top coordinates.
Returns
None.

Definition at line 600 of file inbv.c.

603 {
604  /* Update the coordinates */
605  ProgressBarLeft = Left;
607 
608  /* Enable the progress bar */
610 }
#define TRUE
Definition: types.h:120
ULONG ProgressBarLeft
Definition: inbv.c:45
ULONG ProgressBarTop
Definition: inbv.c:45
static LPHIST_ENTRY Top
Definition: history.c:53
BOOLEAN ShowProgressBar
Definition: inbv.c:46

Referenced by DisplayBootBitmap().

◆ InbvSetProgressBarSubset()

VOID NTAPI InbvSetProgressBarSubset ( _In_ ULONG  Floor,
_In_ ULONG  Ceiling 
)

Specifies a progress percentage sub-range. Further calls to InbvIndicateProgress() or InbvUpdateProgressBar() will update the progress percentage relative to this sub-range. In particular, the percentage provided to InbvUpdateProgressBar() is relative to this sub-range.

Parameters
[in]FloorThe lower bound percentage of the sub-range (default: 0).
[in]CeilingThe upper bound percentage of the sub-range (default: 100).
Returns
None.

Definition at line 663 of file inbv.c.

666 {
667  /* Sanity checks */
668  ASSERT(Floor < Ceiling);
669  ASSERT(Ceiling <= 100);
670 
671  /* Update the progress bar state */
672  InbvProgressState.Floor = Floor * 100;
673  InbvProgressState.Ceiling = Ceiling * 100;
674  InbvProgressState.Bias = Ceiling - Floor;
675 }
static INBV_PROGRESS_STATE InbvProgressState
Definition: inbv.c:47
#define ASSERT(a)
Definition: mode.c:44

Referenced by BootAnimInitialize(), InbvDriverInitialize(), and Phase1InitializationDiscard().

◆ InbvSetScrollRegion()

VOID NTAPI InbvSetScrollRegion ( _In_ ULONG  Left,
_In_ ULONG  Top,
_In_ ULONG  Right,
_In_ ULONG  Bottom 
)

Definition at line 447 of file inbv.c.

452 {
453  /* Just call bootvid */
454  VidSetScrollRegion(Left, Top, Right, Bottom);
455 }
static LPHIST_ENTRY Bottom
Definition: history.c:54
VOID NTAPI VidSetScrollRegion(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom)
Definition: common.c:348
static LPHIST_ENTRY Top
Definition: history.c:53

Referenced by DisplayBootBitmap(), HalHandleNMI(), KdpScreenAcquire(), KiDisplayBlueScreen(), and PopShutdownHandler().

◆ InbvSetTextColor()

VOID NTAPI InbvSetTextColor ( _In_ ULONG  Color)

Definition at line 459 of file inbv.c.

461 {
462  HEADLESS_CMD_SET_COLOR HeadlessSetColor;
463 
464  /* Set color for EMS port */
465 #ifdef INBV_HEADLESS_COLORS
466  InbvTerminalTextColor = 30 + CGA_TO_ANSI_COLOR(Color);
467 #else
469 #endif
470  HeadlessSetColor.TextColor = InbvTerminalTextColor;
471  HeadlessSetColor.BkgdColor = InbvTerminalBkgdColor;
473  &HeadlessSetColor,
474  sizeof(HeadlessSetColor),
475  NULL,
476  NULL);
477 
478  /* Update the text color */
480 }
static ULONG InbvTerminalTextColor
Definition: inbv.c:88
NTSTATUS NTAPI HeadlessDispatch(IN HEADLESS_CMD Command, IN PVOID InputBuffer, IN SIZE_T InputBufferSize, OUT PVOID OutputBuffer, OUT PSIZE_T OutputBufferSize)
Definition: hdlsterm.c:570
ULONG NTAPI VidSetTextColor(_In_ ULONG Color)
Definition: common.c:311
#define NULL
Definition: types.h:112
static ULONG InbvTerminalBkgdColor
Definition: inbv.c:89

Referenced by DisplayBootBitmap(), HalHandleNMI(), KdpScreenAcquire(), and KiDisplayBlueScreen().

◆ InbvSolidColorFill()

VOID NTAPI InbvSolidColorFill ( _In_ ULONG  Left,
_In_ ULONG  Top,
_In_ ULONG  Right,
_In_ ULONG  Bottom,
_In_ ULONG  Color 
)

Definition at line 484 of file inbv.c.

490 {
491  HEADLESS_CMD_SET_COLOR HeadlessSetColor;
492 
493  /* Make sure we own it */
495  {
496  /* Acquire the lock */
497  InbvAcquireLock();
498 
499  /* Check if we're installed */
501  {
502  /* Call bootvid */
503  VidSolidColorFill(Left, Top, Right, Bottom, (UCHAR)Color);
504  }
505 
506  /* Set color for EMS port and clear display */
507 #ifdef INBV_HEADLESS_COLORS
508  InbvTerminalBkgdColor = 40 + CGA_TO_ANSI_COLOR(Color);
509 #else
511 #endif
512  HeadlessSetColor.TextColor = InbvTerminalTextColor;
513  HeadlessSetColor.BkgdColor = InbvTerminalBkgdColor;
515  &HeadlessSetColor,
516  sizeof(HeadlessSetColor),
517  NULL,
518  NULL);
520  NULL, 0,
521  NULL, NULL);
522 
523  /* Release the lock */
524  InbvReleaseLock();
525  }
526 }
static ULONG InbvTerminalTextColor
Definition: inbv.c:88
NTSTATUS NTAPI HeadlessDispatch(IN HEADLESS_CMD Command, IN PVOID InputBuffer, IN SIZE_T InputBufferSize, OUT PVOID OutputBuffer, OUT PSIZE_T OutputBufferSize)
Definition: hdlsterm.c:570
VOID NTAPI InbvReleaseLock(VOID)
Definition: inbv.c:241
VOID NTAPI InbvAcquireLock(VOID)
Definition: inbv.c:219
VOID NTAPI VidSolidColorFill(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Right, _In_ ULONG Bottom, _In_ UCHAR Color)
Definition: bootvid.c:274
unsigned char UCHAR
Definition: xmlstorage.h:181
static LPHIST_ENTRY Bottom
Definition: history.c:54
#define NULL
Definition: types.h:112
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
static ULONG InbvTerminalBkgdColor
Definition: inbv.c:89
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39
static LPHIST_ENTRY Top
Definition: history.c:53

Referenced by DisplayBootBitmap(), HalHandleNMI(), KdpScreenAcquire(), KiDisplayBlueScreen(), and PopShutdownHandler().

◆ InbvUpdateProgressBar()

VOID NTAPI InbvUpdateProgressBar ( _In_ ULONG  Percentage)

Updates the progress bar percentage, relative to the current percentage sub-range previously set by InbvSetProgressBarSubset().

Parameters
[in]PercentageThe progress percentage, relative to the current sub-range.
Returns
None.

Definition at line 689 of file inbv.c.

691 {
692  ULONG TotalProgress;
693 
694  /* Make sure the progress bar is enabled, that we own and are installed */
695  if (ShowProgressBar &&
698  {
699  /* Compute the total progress and tick the progress bar */
700  TotalProgress = InbvProgressState.Floor + (Percentage * InbvProgressState.Bias);
701  // TotalProgress /= (100 * 100);
702 
703  BootAnimTickProgressBar(TotalProgress);
704  }
705 }
static INBV_PROGRESS_STATE InbvProgressState
Definition: inbv.c:47
VOID NTAPI BootAnimTickProgressBar(_In_ ULONG SubPercentTimes100)
Ticks the progress bar. Used by InbvUpdateProgressBar() and related.
Definition: bootanim.c:312
static INBV_DISPLAY_STATE InbvDisplayState
Definition: inbv.c:38
unsigned int ULONG
Definition: retypes.h:1
BOOLEAN InbvBootDriverInstalled
Definition: inbv.c:39
BOOLEAN ShowProgressBar
Definition: inbv.c:46

Referenced by InbvIndicateProgress(), and Phase1InitializationDiscard().

◆ NtDisplayString()

NTSTATUS NTAPI NtDisplayString ( IN PUNICODE_STRING  DisplayString)

Definition at line 709 of file inbv.c.

710 {
712  UNICODE_STRING CapturedString;
716 
717  PAGED_CODE();
718 
720 
721  /* We require the TCB privilege */
724 
725  /* Capture the string */
727  if (!NT_SUCCESS(Status))
728  return Status;
729 
730  /* Do not display the string if it is empty */
731  if (CapturedString.Length == 0 || CapturedString.Buffer == NULL)
732  {
734  goto Quit;
735  }
736 
737  /*
738  * Convert the string since INBV understands only ANSI/OEM. Allocate the
739  * string buffer in non-paged pool because INBV passes it down to BOOTVID.
740  * We cannot perform the allocation using RtlUnicodeStringToOemString()
741  * since its allocator uses PagedPool.
742  */
743  OemLength = RtlUnicodeStringToOemSize(&CapturedString);
744  if (OemLength > MAXUSHORT)
745  {
747  goto Quit;
748  }
749  RtlInitEmptyAnsiString((PANSI_STRING)&OemString, NULL, (USHORT)OemLength);
751  if (OemString.Buffer == NULL)
752  {
754  goto Quit;
755  }
756  Status = RtlUnicodeStringToOemString(&OemString, &CapturedString, FALSE);
757  if (!NT_SUCCESS(Status))
758  {
760  goto Quit;
761  }
762 
763  /* Display the string */
765 
766  /* Free the string buffer */
768 
770 
771 Quit:
772  /* Free the captured string */
773  ReleaseCapturedUnicodeString(&CapturedString, PreviousMode);
774 
775  return Status;
776 }
static __inline NTSTATUS ProbeAndCaptureUnicodeString(OUT PUNICODE_STRING Dest, IN KPROCESSOR_MODE CurrentMode, IN const UNICODE_STRING *UnsafeSrc)
Definition: probe.h:142
*BytesInOemString PCHAR OemString
Definition: rtlfuncs.h:1560
#define STATUS_PRIVILEGE_NOT_HELD
Definition: DriverTester.h:9
LONG NTSTATUS
Definition: precomp.h:26
KPROCESSOR_MODE NTAPI ExGetPreviousMode(VOID)
Definition: sysinfo.c:3063
STRING OEM_STRING
Definition: umtypes.h:203
#define TAG_OSTR
Definition: tag.h:142
#define FALSE
Definition: types.h:117
Status
Definition: gdiplustypes.h:24
static __inline VOID ReleaseCapturedUnicodeString(IN PUNICODE_STRING CapturedString, IN KPROCESSOR_MODE CurrentMode)
Definition: probe.h:239
_In_ KPROCESSOR_MODE PreviousMode
Definition: sefuncs.h:103
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
BOOLEAN NTAPI InbvDisplayString(_In_ PCHAR String)
Definition: inbv.c:331
CCHAR KPROCESSOR_MODE
Definition: ketypes.h:7
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
VOID DisplayString(LPWSTR Msg)
Definition: misc.c:211
const LUID SeTcbPrivilege
Definition: priv.c:26
#define STATUS_BUFFER_OVERFLOW
Definition: shellext.h:66
unsigned short USHORT
Definition: pedump.c:61
#define STATUS_NO_MEMORY
Definition: ntstatus.h:260
#define NULL
Definition: types.h:112
NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING *)
#define MAXUSHORT
Definition: typedefs.h:83
BOOLEAN NTAPI SeSinglePrivilegeCheck(_In_ LUID PrivilegeValue, _In_ KPROCESSOR_MODE PreviousMode)
Checks if a single privilege is present in the context of the calling thread.
Definition: priv.c:744
unsigned int ULONG
Definition: retypes.h:1
#define STATUS_SUCCESS
Definition: shellext.h:65
#define ExFreePoolWithTag(_P, _T)
Definition: module.h:1099
#define PAGED_CODE()

Variable Documentation

◆ BootDriverLock

KSPIN_LOCK BootDriverLock
static

Definition at line 36 of file inbv.c.

Referenced by InbvAcquireLock(), InbvDriverInitialize(), and InbvReleaseLock().

◆ InbvBootDriverInstalled

◆ InbvDisplayDebugStrings

BOOLEAN InbvDisplayDebugStrings = FALSE
static

Definition at line 42 of file inbv.c.

Referenced by InbvDisplayString(), and InbvEnableDisplayString().

◆ InbvDisplayFilter

INBV_DISPLAY_STRING_FILTER InbvDisplayFilter = NULL
static

Definition at line 43 of file inbv.c.

Referenced by InbvDisplayString(), and InbvInstallDisplayStringFilter().

◆ InbvDisplayState

◆ InbvOldIrql

KIRQL InbvOldIrql
static

Definition at line 37 of file inbv.c.

Referenced by InbvAcquireLock(), and InbvReleaseLock().

◆ InbvProgressIndicator

BT_PROGRESS_INDICATOR InbvProgressIndicator = {0, 25, 0}
static

Definition at line 48 of file inbv.c.

Referenced by InbvIndicateProgress().

◆ InbvProgressState

INBV_PROGRESS_STATE InbvProgressState
static

Definition at line 47 of file inbv.c.

Referenced by InbvSetProgressBarSubset(), and InbvUpdateProgressBar().

◆ InbvResetDisplayParameters

INBV_RESET_DISPLAY_PARAMETERS InbvResetDisplayParameters = NULL
static

Definition at line 40 of file inbv.c.

Referenced by InbvAcquireDisplayOwnership(), and InbvNotifyDisplayOwnershipLost().

◆ InbvTerminalBkgdColor

ULONG InbvTerminalBkgdColor = 40
static

Definition at line 89 of file inbv.c.

Referenced by InbvSetTextColor(), and InbvSolidColorFill().

◆ InbvTerminalTextColor

ULONG InbvTerminalTextColor = 37
static

Definition at line 88 of file inbv.c.

Referenced by InbvSetTextColor(), and InbvSolidColorFill().

◆ ProgressBarLeft

ULONG ProgressBarLeft = 0

◆ ProgressBarTop

ULONG ProgressBarTop = 0

◆ ResourceCount

◆ ResourceList

Definition at line 51 of file inbv.c.

◆ ShowProgressBar