windows-nt/Source/XPSP1/NT/public/internal/base/inc/ocmgrlib.h

342 lines
6.9 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
ocmgrlib.h
Abstract:
Header file for Optional Component Manager common library.
Author:
Ted Miller (tedm) 13-Sep-1996
Revision History:
--*/
//
// debugging text output flag. this can go away once we figure out a way to log information
// when called from sysocmgr other than popping up UI in the user's face
//
#define OcErrTrace 0x20000000
//
// Default icon index, in case we couldn't find the specified one or
// a component's INF doesn't specify one. It's a little diamond in
// a generic gray.
//
#define DEFAULT_ICON_INDEX 11
//
// Maximum string lengths.
//
#define MAXOCDESC 150
#define MAXOCTIP 200
#define MAXOCIFLAG 512
//
// Maximum number of needs (subcomps that are needed by a subcomp).
//
//#define MAX_NEEDS 10
//
// Indices for selection states.
//
#define SELSTATE_NO 0
#define SELSTATE_PARTIAL 1
#define SELSTATE_YES 2
#define SELSTATE_INIT 666
//
// Structure used with OcCreateOcPage
//
typedef struct _OC_PAGE_CONTROLS {
//
// Dialog template info.
//
HMODULE TemplateModule;
LPCTSTR TemplateResource;
//
// Ids for various controls.
//
UINT ListBox;
UINT DetailsButton;
UINT TipText;
UINT ResetButton;
UINT InstalledCountText;
UINT SpaceNeededText;
UINT SpaceAvailableText;
UINT InstructionsText;
UINT HeaderText;
UINT SubheaderText;
UINT ComponentHeaderText;
} OC_PAGE_CONTROLS, *POC_PAGE_CONTROLS;
//
// Structure used with OcCreateSetupPage
//
typedef struct _SETUP_PAGE_CONTROLS {
//
// Dialog template info.
//
HMODULE TemplateModule;
LPCTSTR TemplateResource;
//
// Progress bar and progress text.
//
UINT ProgressBar;
UINT ProgressLabel;
UINT ProgressText;
//
// Animation for external install program
//
UINT AnimationControl;
UINT AnimationResource;
BOOL ForceExternalProgressIndicator;
BOOL AllowCancel;
// title and description
UINT HeaderText;
UINT SubheaderText;
} SETUP_PAGE_CONTROLS, *PSETUP_PAGE_CONTROLS;
//
// Flags for OcInitialize
//
#define OCINIT_FORCENEWINF 0x00000001
#define OCINIT_KILLSUBCOMPS 0x00000002
#define OCINIT_RUNQUIET 0x00000004
#define OCINIT_LANGUAGEAWARE 0x00000008
// for calling pOcQueryOrSetNewInf and OcComponentState
typedef enum {
infQuery = 0,
infSet,
infReset
};
//
// Routines that must be provided by whoever links to
// the OC Manager common library. These are the routines that 'cement'
// the OC Manager into a particular environment.
//
typedef
VOID
(WINAPI *POC_FILL_IN_SETUP_DATA_PROC_A)(
OUT PSETUP_DATAA SetupData
);
typedef
VOID
(WINAPI *POC_FILL_IN_SETUP_DATA_PROC_W)(
OUT PSETUP_DATAW SetupData
);
typedef
INT
(WINAPIV *POC_LOG_ERROR)(
IN OcErrorLevel Level,
IN LPCTSTR FormatString,
...
);
typedef
VOID
(WINAPI *POC_SET_REBOOT_PROC)(
VOID
);
typedef
HWND
(WINAPI *POC_SHOWHIDEWIZARDPAGE)(
IN BOOL bShow
);
typedef
LRESULT
(WINAPI *POC_BILLBOARD_PROGRESS_CALLBACK)(
IN UINT Msg,
IN WPARAM wParam,
IN LPARAM lParam
);
typedef
VOID
(WINAPI *POC_BILLBOARD_SET_PROGRESS_TEXT_W)(
IN PWSTR Text
);
typedef
VOID
(WINAPI *POC_BILLBOARD_SET_PROGRESS_TEXT_A)(
IN PSTR Text
);
typedef
VOID
(WINAPI *POC_SETUP_PERF_DATA)(
IN PWSTR FileName,
IN ULONG LineNumber,
IN PWSTR TagStr,
IN PWSTR FormatStr,
...
);
typedef struct _OCM_CLIENT_CALLBACKSA {
//
// Routine to fill in the setup data structure that provides info
// about the environment in which the OC Manager is running.
//
POC_FILL_IN_SETUP_DATA_PROC_A FillInSetupDataA;
//
// Routine to log an error.
//
POC_LOG_ERROR LogError;
//
// Routine to indicate need to reboot
//
POC_SET_REBOOT_PROC SetReboot;
//
// Routine to tell the wizard to show or hide
// Only has effect if the billboard is shown
//
POC_SHOWHIDEWIZARDPAGE ShowHideWizardPage;
//
// Routine to call into to the the progress feedback
// to the billboard.
//
POC_BILLBOARD_PROGRESS_CALLBACK BillboardProgressCallback;
//
// Routine which tells setup what string to display for the progress bar.
//
POC_BILLBOARD_SET_PROGRESS_TEXT_A BillBoardSetProgressText;
POC_SETUP_PERF_DATA SetupPerfData;
} OCM_CLIENT_CALLBACKSA, *POCM_CLIENT_CALLBACKSA;
typedef struct _OCM_CLIENT_CALLBACKSW {
//
// Routine to fill in the setup data structure that provides info
// about the environment in which the OC Manager is running.
//
POC_FILL_IN_SETUP_DATA_PROC_A FillInSetupDataA;
//
// Routine to log an error.
//
POC_LOG_ERROR LogError;
//
// Routine to indicate need to reboot
//
POC_SET_REBOOT_PROC SetReboot;
POC_FILL_IN_SETUP_DATA_PROC_W FillInSetupDataW;
//
// Routine to tell the wizard to show or hide
// Only has effect if the billboard is shown
//
POC_SHOWHIDEWIZARDPAGE ShowHideWizardPage;
//
// Routine to call into to the the progress feedback
// to the billboard.
//
POC_BILLBOARD_PROGRESS_CALLBACK BillboardProgressCallback;
//
// Routine which tells setup what string to display for the progress bar.
//
POC_BILLBOARD_SET_PROGRESS_TEXT_W BillBoardSetProgressText;
POC_SETUP_PERF_DATA SetupPerfData;
} OCM_CLIENT_CALLBACKSW, *POCM_CLIENT_CALLBACKSW;
#ifndef UNICODE // ansi
typedef OCM_CLIENT_CALLBACKSA OCM_CLIENT_CALLBACKS;
typedef POCM_CLIENT_CALLBACKSA POCM_CLIENT_CALLBACKS;
#else // unicode
typedef OCM_CLIENT_CALLBACKSW OCM_CLIENT_CALLBACKS;
typedef POCM_CLIENT_CALLBACKSW POCM_CLIENT_CALLBACKS;
#endif
//
// Routines that are provided by the OC Manager common library.
//
PVOID
OcInitialize(
IN POCM_CLIENT_CALLBACKS Callbacks,
IN LPCTSTR MasterOcInfName,
IN UINT Flags,
OUT PBOOL ShowError,
IN PVOID Log
);
VOID
OcTerminate(
IN OUT PVOID *OcManagerContext
);
UINT
OcGetWizardPages(
IN PVOID OcManagerContext,
OUT PSETUP_REQUEST_PAGES Pages[WizPagesTypeMax]
);
HPROPSHEETPAGE
OcCreateOcPage(
IN PVOID OcManagerContext,
IN POC_PAGE_CONTROLS WizardPageControlsInfo,
IN POC_PAGE_CONTROLS DetailsPageControlsInfo
);
HPROPSHEETPAGE
OcCreateSetupPage(
IN PVOID OcManagerContext,
IN PSETUP_PAGE_CONTROLS ControlsInfo
);
VOID
OcRememberWizardDialogHandle(
IN PVOID OcManagerContext,
IN HWND DialogHandle
);
BOOL
OcSubComponentsPresent(
IN PVOID OcManagerContext
);
UINT
OcComponentState(
LPCTSTR component,
UINT operation,
DWORD *val
);
#define OcSetComponentState(a,b) OcComponentState(a,infSet,b)
#define OcGetComponentState(a,b) OcComponentState(a,infQuery,b)