342 lines
6.9 KiB
C
342 lines
6.9 KiB
C
/*++
|
|
|
|
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)
|
|
|