|
|
/*++
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)
|