mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 14:37:45 +00:00
[SETUPLIB][USETUP] Add support for setup error handling.
This commit is contained in:
parent
64e217e97c
commit
f894631472
|
@ -675,6 +675,10 @@ InitializeSetup(
|
|||
// pSetupData->LayoutList = NULL;
|
||||
// pSetupData->LanguageList = NULL;
|
||||
|
||||
/* Initialize error handling */
|
||||
pSetupData->LastErrorNumber = ERROR_SUCCESS;
|
||||
pSetupData->ErrorRoutine = NULL;
|
||||
|
||||
/* Initialize global unicode strings */
|
||||
RtlInitUnicodeString(&pSetupData->SourcePath, NULL);
|
||||
RtlInitUnicodeString(&pSetupData->SourceRootPath, NULL);
|
||||
|
|
|
@ -58,8 +58,15 @@ extern HANDLE ProcessHeap;
|
|||
|
||||
struct _USETUP_DATA;
|
||||
|
||||
typedef VOID
|
||||
(__cdecl *PSETUP_ERROR_ROUTINE)(IN struct _USETUP_DATA*, ...);
|
||||
|
||||
typedef struct _USETUP_DATA
|
||||
{
|
||||
/* Error handling *****/
|
||||
ERROR_NUMBER LastErrorNumber;
|
||||
PSETUP_ERROR_ROUTINE ErrorRoutine;
|
||||
|
||||
/* Setup INFs *****/
|
||||
HINF SetupInf;
|
||||
|
||||
|
|
|
@ -3481,6 +3481,29 @@ InstallDirectoryPage(PINPUT_RECORD Ir)
|
|||
}
|
||||
|
||||
|
||||
// PSETUP_ERROR_ROUTINE
|
||||
static VOID
|
||||
__cdecl
|
||||
USetupErrorRoutine(
|
||||
IN PUSETUP_DATA pSetupData,
|
||||
...)
|
||||
{
|
||||
INPUT_RECORD Ir;
|
||||
va_list arg_ptr;
|
||||
|
||||
va_start(arg_ptr, pSetupData);
|
||||
|
||||
if (pSetupData->LastErrorNumber >= ERROR_SUCCESS &&
|
||||
pSetupData->LastErrorNumber < ERROR_LAST_ERROR_CODE)
|
||||
{
|
||||
// Note: the "POPUP_WAIT_ENTER" actually depends on the LastErrorNumber...
|
||||
MUIDisplayErrorV(pSetupData->LastErrorNumber, &Ir, POPUP_WAIT_ENTER, arg_ptr);
|
||||
}
|
||||
|
||||
va_end(arg_ptr);
|
||||
}
|
||||
|
||||
|
||||
static BOOLEAN
|
||||
AddSectionToCopyQueueCab(HINF InfFile,
|
||||
PCWSTR SectionName,
|
||||
|
@ -5001,6 +5024,7 @@ RunUSetup(VOID)
|
|||
|
||||
/* Initialize Setup, phase 0 */
|
||||
InitializeSetup(&USetupData, 0);
|
||||
USetupData.ErrorRoutine = USetupErrorRoutine;
|
||||
|
||||
/* Hide the cursor */
|
||||
CONSOLE_SetCursorType(TRUE, FALSE);
|
||||
|
|
Loading…
Reference in a new issue