windows-nt/Source/XPSP1/NT/base/ntsetup/setexts/ocmdeb.h
2020-09-26 16:20:57 +08:00

572 lines
13 KiB
C

// This header can go away once the types in oc.h are fixed to support
// ansi and unicode at the same time.
#ifndef UNICODE
#define POC_FILL_IN_SETUP_DATA_PROC_W ULONG_PTR
#endif
typedef struct _deb_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;
} deb_OCM_CLIENT_CALLBACKSW, *deb_POCM_CLIENT_CALLBACKSW;
typedef struct _deb_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;
} deb_OCM_CLIENT_CALLBACKSA, *deb_POCM_CLIENT_CALLBACKSA;
typedef struct _deb_OPTIONAL_COMPONENTA {
//
// String id of name of inf file in the OC Manager's
// InfListStringTable string table. If -1, then
// the subcomponent does not appear on the OC page.
//
LONG InfStringId;
//
// Backpointer to top level component
//
LONG TopLevelStringId;
//
// String id of parent component, -1 if none.
//
LONG ParentStringId;
//
// String id of first child, -1 if none.
//
LONG FirstChildStringId;
//
// Count of children.
//
UINT ChildrenCount;
//
// String id of next sibling, -1 if none.
//
LONG NextSiblingStringId;
//
// String ids of needs and needed by.
//
PLONG NeedsStringIds;
UINT NeedsCount;
PLONG NeededByStringIds;
UINT NeededByCount;
// String ids of exclude and excluded by
PLONG ExcludeStringIds;
UINT ExcludeCount;
PLONG ExcludedByStringIds;
UINT ExcludedByCount;
//
// Misc flags.
//
UINT InternalFlags;
//
// Approximation of required disk space.
//
LONGLONG SizeApproximation;
//
// Icon index of the component.
// -1 means we're supposed to get it from the component itself.
// -2 means we're supposed to use IconDll and IconResource
//
UINT IconIndex;
CHAR IconDll[MAX_PATH];
CHAR IconResource[50];
//
// Selection state (SELSTATE_xxx constants).
//
UINT SelectionState;
UINT OriginalSelectionState;
// Installation Flag as obtained from the inf
UINT InstalledState;
//
// Mode bits.
//
UINT ModeBits;
//
// Human-readable stuff describing the component.
//
CHAR Description[MAXOCDESC];
CHAR Tip[MAXOCTIP];
//
// From here down, stuff is meaningful only for top-level components.
//
//
// Stuff describing the OC's installation DLL and how to call it.
//
CHAR InstallationDllName[MAX_PATH];
CHAR InterfaceFunctionName[MAX_PATH];
HMODULE InstallationDll;
POCSETUPPROC InstallationRoutine;
//
// Version of the OC Manager to which this component was written.
//
UINT ExpectedVersion;
// this flag indicates whether the subcomponent was intialialized
BOOL Exists;
//
// Flags: ANSI/Unicode, etc.
//
UINT Flags;
} deb_OPTIONAL_COMPONENTA, *deb_POPTIONAL_COMPONENTA;
//
// locale info
//
typedef struct _deb_LOCALEA {
LCID lcid;
CHAR DecimalSeparator[4];
} deb_LOCALEA, *deb_PLOCALEA;
//
// Define structure corresponding to an instance of the OC Manager.
// This is actually somewhat broken, in that this actually closely corresponds
// to a master OC INF, and we might want to consider breaking out the string
// tables into another structure, so we can more easily achieve a unified
// namespace if we have multiple master OC INFs at play simultaneously.
//
typedef struct _deb_OC_MANAGERA {
//
// Callbacks into OC Manaer client.
//
deb_OCM_CLIENT_CALLBACKSA Callbacks;
//
// Handle of Master OC INF.
//
HINF MasterOcInf;
//
// unattended inf handle
//
HINF UnattendedInf;
//
// Master OC Inf file, and unattended file
//
CHAR MasterOcInfPath[MAX_PATH];
CHAR UnattendedInfPath[MAX_PATH];
// we run from whatever directory the master inf is in
CHAR SourceDir[MAX_PATH];
//
// Name of "suite" -- in other words, a shortname that
// is unique to the master OC inf that this structure represents.
// We base it on the name of the master OC inf itself.
//
CHAR SuiteName[MAX_PATH];
//
// page titles
//
CHAR SetupPageTitle[MAX_PATH];
// window title
CHAR WindowTitle[MAX_PATH];
//
// List of per-component OC INFs currently loaded.
// Each inf's name is in the string table and the extra data
// for each is an OC_INF structure.
//
PVOID InfListStringTable;
//
// String table for names of all components and subcomponents.
// Extra data for each is an OPTIONAL_COMPONENT structure.
//
PVOID ComponentStringTable;
//
// pointer to OcSetupPage structure so we can free this data
// if the user cancels before we get to the wizard page.
//
PVOID OcSetupPage;
//
// Setup mode (custom, typical, etc)
//
UINT SetupMode;
//
// List of top-level optional component string IDs.
// This is necessary because we need to preserve ordering
// from the master OC Inf.
//
UINT TopLevelOcCount;
PLONG TopLevelOcStringIds;
UINT TopLevelParentOcCount;
PLONG TopLevelParentOcStringIds;
//
// Are there subcomponents on the details page?
//
BOOL SubComponentsPresent;
//
// Each element in this array points to an array that
// gives ordering for querying wizard pages from the optional components.
//
PLONG WizardPagesOrder[WizPagesTypeMax];
//
// Subkey relative to szPrivateDataRoot where private
// data for components plugged into the OC will live.
// 2 8-char DWORD representations plus a separator and nul.
//
CHAR PrivateDataSubkey[18];
HKEY hKeyPrivateData;
HKEY hKeyPrivateDataRoot;
//
// If we are completing installation, this item is the window handle
// of the progress text control.
//
HWND ProgressTextWindow;
//
// String id of component currently processing an interface routine.
// -1 means the OC manager is not currently processing one.
//
LONG CurrentComponentStringId;
// Component Ids of aborted components
LONG *AbortedComponentIds;
UINT AbortedCount;
//
// Various flags
//
UINT InternalFlags;
//
// setup data
//
SETUP_DATA SetupData;
} deb_OC_MANAGERA, *deb_POC_MANAGERA;
typedef struct _deb_OPTIONAL_COMPONENTW {
//
// String id of name of inf file in the OC Manager's
// InfListStringTable string table. If -1, then
// the subcomponent does not appear on the OC page.
//
LONG InfStringId;
//
// Backpointer to top level component
//
LONG TopLevelStringId;
//
// String id of parent component, -1 if none.
//
LONG ParentStringId;
//
// String id of first child, -1 if none.
//
LONG FirstChildStringId;
//
// Count of children.
//
UINT ChildrenCount;
//
// String id of next sibling, -1 if none.
//
LONG NextSiblingStringId;
//
// String ids of needs and needed by.
//
PLONG NeedsStringIds;
UINT NeedsCount;
PLONG NeededByStringIds;
UINT NeededByCount;
// String ids of exclude and excluded by
PLONG ExcludeStringIds;
UINT ExcludeCount;
PLONG ExcludedByStringIds;
UINT ExcludedByCount;
//
// Misc flags.
//
UINT InternalFlags;
//
// Approximation of required disk space.
//
LONGLONG SizeApproximation;
//
// Icon index of the component.
// -1 means we're supposed to get it from the component itself.
// -2 means we're supposed to use IconDll and IconResource
//
UINT IconIndex;
WCHAR IconDll[MAX_PATH];
WCHAR IconResource[50];
//
// Selection state (SELSTATE_xxx constants).
//
UINT SelectionState;
UINT OriginalSelectionState;
// Installation Flag as obtained from the inf
UINT InstalledState;
//
// Mode bits.
//
UINT ModeBits;
//
// Human-readable stuff describing the component.
//
WCHAR Description[MAXOCDESC];
WCHAR Tip[MAXOCTIP];
//
// From here down, stuff is meaningful only for top-level components.
//
//
// Stuff describing the OC's installation DLL and how to call it.
//
WCHAR InstallationDllName[MAX_PATH];
CHAR InterfaceFunctionName[MAX_PATH];
HMODULE InstallationDll;
POCSETUPPROC InstallationRoutine;
//
// Version of the OC Manager to which this component was written.
//
UINT ExpectedVersion;
// this flag indicates whether the subcomponent was intialialized
BOOL Exists;
//
// Flags: ANSI/Unicode, etc.
//
UINT Flags;
} deb_OPTIONAL_COMPONENTW, *deb_POPTIONAL_COMPONENTW;
//
// locale info
//
typedef struct _deb_LOCALEW {
LCID lcid;
WCHAR DecimalSeparator[4];
} deb_LOCALEW, *deb_PLOCALEW;
//
// Define structure corresponding to an instance of the OC Manager.
// This is actually somewhat broken, in that this actually closely corresponds
// to a master OC INF, and we might want to consider breaking out the string
// tables into another structure, so we can more easily achieve a unified
// namespace if we have multiple master OC INFs at play simultaneously.
//
typedef struct _deb_OC_MANAGERW {
//
// Callbacks into OC Manaer client.
//
deb_OCM_CLIENT_CALLBACKSW Callbacks;
//
// Handle of Master OC INF.
//
HINF MasterOcInf;
//
// unattended inf handle
//
HINF UnattendedInf;
//
// Master OC Inf file, and unattended file
//
WCHAR MasterOcInfPath[MAX_PATH];
WCHAR UnattendedInfPath[MAX_PATH];
// we run from whatever directory the master inf is in
WCHAR SourceDir[MAX_PATH];
//
// Name of "suite" -- in other words, a shortname that
// is unique to the master OC inf that this structure represents.
// We base it on the name of the master OC inf itself.
//
WCHAR SuiteName[MAX_PATH];
//
// page titles
//
WCHAR SetupPageTitle[MAX_PATH];
// window title
WCHAR WindowTitle[MAX_PATH];
//
// List of per-component OC INFs currently loaded.
// Each inf's name is in the string table and the extra data
// for each is an OC_INF structure.
//
PVOID InfListStringTable;
//
// String table for names of all components and subcomponents.
// Extra data for each is an OPTIONAL_COMPONENT structure.
//
PVOID ComponentStringTable;
//
// pointer to OcSetupPage structure so we can free this data
// if the user cancels before we get to the wizard page.
//
PVOID OcSetupPage;
//
// Setup mode (custom, typical, etc)
//
UINT SetupMode;
//
// List of top-level optional component string IDs.
// This is necessary because we need to preserve ordering
// from the master OC Inf.
//
UINT TopLevelOcCount;
PLONG TopLevelOcStringIds;
UINT TopLevelParentOcCount;
PLONG TopLevelParentOcStringIds;
//
// Are there subcomponents on the details page?
//
BOOL SubComponentsPresent;
//
// Each element in this array points to an array that
// gives ordering for querying wizard pages from the optional components.
//
PLONG WizardPagesOrder[WizPagesTypeMax];
//
// Subkey relative to szPrivateDataRoot where private
// data for components plugged into the OC will live.
// 2 8-char DWORD representations plus a separator and nul.
//
WCHAR PrivateDataSubkey[18];
HKEY hKeyPrivateData;
HKEY hKeyPrivateDataRoot;
//
// If we are completing installation, this item is the window handle
// of the progress text control.
//
HWND ProgressTextWindow;
//
// String id of component currently processing an interface routine.
// -1 means the OC manager is not currently processing one.
//
LONG CurrentComponentStringId;
// Component Ids of aborted components
LONG *AbortedComponentIds;
int AbortedCount;
//
// Various flags
//
UINT InternalFlags;
//
// setup data
//
SETUP_DATAW SetupData;
} deb_OC_MANAGERW, *deb_POC_MANAGERW;