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

109 lines
2 KiB
C

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
Spupgcfg.h
Abstract:
Configuration routines for the upgrade case
Author:
Sunil Pai (sunilp) 18-Nov-1993
Revision History:
--*/
#pragma once
//
// data types
//
typedef struct {
PWSTR SectionName;
DWORD SectionFlags;
DWORD VerLow;
DWORD VerHigh;
} RootDevnodeSectionNamesType;
#define RootDevnodeSectionNamesType_NTUPG (0x0001)
#define RootDevnodeSectionNamesType_W9xUPG (0x0002)
#define RootDevnodeSectionNamesType_CLEAN (0x0004)
#define RootDevnodeSectionNamesType_ALL (0x0007)
//
// Public routines
//
NTSTATUS
SpUpgradeNTRegistry(
IN PVOID SifHandle,
IN HANDLE *HiveRootKeys,
IN LPCWSTR SetupSourceDevicePath,
IN LPCWSTR DirectoryOnSourceDevice,
IN HANDLE hKeyCCSet
);
BOOLEAN
SpHivesFromInfs(
IN PVOID SifHandle,
IN LPCWSTR SectionName,
IN LPCWSTR SourcePath1,
IN LPCWSTR SourcePath2, OPTIONAL
IN HANDLE SystemHiveRoot,
IN HANDLE SoftwareHiveRoot,
IN HANDLE DefaultUserHiveRoot,
IN HANDLE HKR
);
VOID
SpDeleteRootDevnodeKeys(
IN PVOID SifHandle,
IN HANDLE hKeyCCSet,
IN PWSTR DevicesToDelete,
IN RootDevnodeSectionNamesType *DeviceClassesToDelete
);
//
// Private routines
//
NTSTATUS
SppDeleteKeyRecursive(
HANDLE hKeyRoot,
PWSTR Key,
BOOLEAN ThisKeyToo
);
NTSTATUS
SppCopyKeyRecursive(
HANDLE hKeyRootSrc,
HANDLE hKeyRootDst,
PWSTR SrcKeyPath,
PWSTR DstKeyPath,
BOOLEAN CopyAlways,
BOOLEAN ApplyACLsAlways
);
//
// Callback routine for SpApplyFunctionToDeviceInstanceKeys
//
typedef VOID (*PSPP_INSTANCEKEY_CALLBACK_ROUTINE) (
IN HANDLE SetupInstanceKeyHandle,
IN HANDLE UpgradeInstanceKeyHandle,
IN BOOLEAN RootEnumerated,
IN OUT PVOID Context
);
VOID
SpApplyFunctionToDeviceInstanceKeys(
IN HANDLE hKeyCCSet,
IN PSPP_INSTANCEKEY_CALLBACK_ROUTINE InstanceKeyCallbackRoutine,
IN OUT PVOID Context
);